Download your WhatsApp Contacts

You can now use the WhatsApp messenger on your Mac or Windows PC provided you have the WhatsApp app running on a mobile phone that is not an iPhone. Go to web.whatsapp.com on your desktop, scan the QR code on the screen with WhatsApp on your phone and you can instantly send or receive messages to any of your WhatsApp contacts from the computer.

WhatsApp supports desktop notifications in Google Chrome so you can read your messages even if the WhatsApp web app is open in some background tab. The other benefit is that you can send pictures from your desktop or the DSLR SD card without having to transfer the bulky file to your mobile. There’s no support for sending audio or video files though. The other limitation is that your mobile phone should be connected to the Internet for you to use WhatsApp on the web.

WhatsApp Address Book

If you right-click on the profile picture of any WhatsApp contact, you’ll get a link that looks something like this;

https://web.whatsapp.com/pp?t=s&u=919760008596

Here the blue string represents the phone number of your contact with the country code while the red string (t=s) represents the size of the picture thumbnail. If you replace t=s in the URL with t=l, you’ll get the bigger version profile picture of that contact.

Save your WhatsApp Address Book Locally

The WhatsApp app on your mobile phone does not offer an option to download the profile images nor is there an option to export your WhatsApp Contacts for uploading into other address books like Google Contacts or LinkedIn. However, the contacts data can be easily extracted, or rather scraped, from the WhatsApp website in less than a minute with the help of a bookmarklet.

WhatsApp Contacts

To get started, drag the WhatsApp bookmarklet to the toolbar of your Google Chrome. Next open web.whatsapp.com on your computer, link it to your mobile phone and click the bookmarklet in the toolbar. You can either choose to have a CSV list of your WhatsApp contacts or create a print-ready addressbook of your WhatsApp network. This will have the high-res profiles pictures, the names and the telephone numbers of all your contacts.

The WhatsApp image URLs are session-based and thus cannot be shared. You can however press Ctrl+S or Cmd+S on Mac to download the entire web page created by the bookmarklet and it will permanently download the profile pictures to your computer as well.

The WhatsApps app UI itself is written in React, a JS library from Facebook. If you are curious to know how the bookmarklet works, see the annotated version.


The story, Download your WhatsApp Contacts, was originally published at Digital Inspiration by Amit Agarwal on 24/01/2015 under Bookmarklets, WhatsApp, Internet.

Find How Many “Eggs” Follow you on Twitter

When you join Twitter, it sets your profile picture as a colored egg but for people to take you seriously, you replace that egg with your face. This is the first rule of the Twitter book but some users aren’t paying attention. Maybe they are too lazy to change the avatar, maybe they want to stay anonymous or maybe they are bots and fake users created by spammers who “sell” Twitter followers.

Twitter Eggs

This week, I set out to count the number of eggs that follow me on Twitter and results were surprising. It turned that out of the 53k users who follow me, around 15% of the followers have eggs as their avatars. Most of these “egg” profiles have never tweeted, their Twitter bio is empty and they have followers in single digit. All big hints that these profile are boosting your “follower” count but not actually reading your tweets.

You can click here to see the full Twitter eggs report.

Know your Egg Followers on Twitter

If you are curious to know how many eggs follow you on Twitter, here’s a Google Script that will help. It will read your Twitter followers and if any of them have eggs as a profile picture, it will log an entry into a Google Spreadsheet. Here’s how you can get started:

  1. Click here to copy the Google Script in your Google Drive.
  2. Replace amit@labnol.org with your own email address (the report will be sent here) and labnol with your own Twitter handle.
  3. Go to the Run menu and choose Step 1 – Authorize. The script will ask for certain permissions and you need to choose Accept  at the authorization prompt. If you get any oAuth error at this point, just run the Step 1 again and it should work.
  4. Open the Run menu again and choose Step 2 – Run to initialize the script. That’s it.

You can now close the Google Script window. The script runs in the background and it will send you an email once it has extracted all the eggs from your Twitter account.

Google Script for Twitter

This is an open-source Google script that connect to the Twitter API, fetches the followers, finds the eggs and appends the data to a spreadsheet.

Thou shalt not have an egg image as your default avatar in Twitter.

Wondering how the script finds the egg profiles? No, it doesn’t do any magic image matching, it merely looks at the URL of the Twitter avatar – it there’s the word “default” in the URL, it means the underlying image is that of an egg. Simple.


The story, Find How Many “Eggs” Follow you on Twitter, was originally published at Digital Inspiration by Amit Agarwal on 21/01/2015 under Twitter, Internet.

There’s a Game Hidden inside your Google Chrome, It works on Android too!

Chrome Game in Android

Google Chrome users are probably familiar with the T-Rex dinosaur that shows up when your computer is not connected to the Internet. The T-rex had short arms and therefore lot of things were out of its reach. Chrome, like that dinosaur, too is having trouble reaching the Internet.

What’s even more interesting is that the offline dinosaur in Chrome is also a game. Press the space bar to activate and your Chrome tab will quickly turn into a moderately addictive game. The T-Rex will run and your mission is to prevent it from bumping into the saguaros.

The game is written in JavaScript and you can find the complete source code in the Chromium repository. Thanks Codepo8 for the discovery.

And it’s not just about Chrome for desktop, the dinosaur game is available in Chrome for Android as well. Switch to airplane mode and give it a shot. The only difference is that instead of the space bar, you need to tap on the screen to jump / fly the dinosaur.

Chrome Offline Dinosaur


The story, There’s a Game Hidden inside your Google Chrome, It works on Android too!, was originally published at Digital Inspiration by Amit Agarwal on 19/01/2015 under Games, Google Chrome, Software.

Lost your Phone? You Can Still Retrieve its IMEI Number

Your mobile phone has a globally unique number associated with it, called the IMEI number, that uniquely identifies your device within the mobile network. If your phone gets lost or is stolen, you would need to provide this IMEI number to the law enforcement agencies and the telecom operator for them to blacklist your device and prevent anyone else from using your phone on their wireless network.

As you probably know, it is relatively easy to find the IMEI number of your mobile phone. While there are apps that will help you retrieve this number with a tap, you don’t really need one. Just open the phone dialer, call *#06# and the IMEI number will be displayed on the phone’s screen. Alternatively, you can open device Settings – About Phone – Status and long-press the IMEI number to copy it to the clipboard.

If you have however lost your phone but did not record the IMEI number beforehand, you can still retrieve the number from your Google Account.

IMEI Number - Mobile Phone

Just go to google.com/settings, sign-in with your Google account and expand the Android tab. Here you will see of all Android devices that are connected to your Google Account and it will list the IMEI number of your phone as well.

In the case of iPhone, the IMEI number is printed on the box itself. And if nothing works, trace the phone’s receipt – the vendor may have written the IMEI number o the phone on it at the time of sale.


The story, Lost your Phone? You Can Still Retrieve its IMEI Number, was originally published at Digital Inspiration by Amit Agarwal on 19/01/2015 under Android, Software.

How to Return Apps Purchased from the Mac App Store

If you have accidentally purchased an app from the Mac App Store, or if the app isn’t functioning as expected, or if you are experiencing technical issues with an app, you can request a refund from Apple. Not every app downloaded from the Mac App store may be eligible for refunds but for others, if you have a good case, you can return the app and your credit card charges will be reversed.

For some reason, the procedure for returning apps to the Mac App Store isn’t straight forward so here’s an illustrated guide that will walk you through the entire process step-by-step. It will only apply to app purchases made in the last 90 days.

How to Request Refunds for Mac Apps

Step 1: Click this special link – phobos.apple.com/purchasehistory – and it open your app purchase history directly inside iTunes. Alternately, open iTunes on your Mac and choose Store -> View Account. Next click See All under the Purchase History section to see all your recent app purchases.

Report a Problem to Apple

This is confusing but you have to open iTunes to see a list of your past purchases. The App Store will also show your purchase history but you won’t be able to return apps through the App Store.

Step 2: Click the Report a Problem link available against all your recent app purchases. If the Mac app is not listed in your recent purchased list, click the little grey arrow to expand the order that contains your app and click the Report a Problem link against that app that you are looking to refund.

Describe the issue with the app

Step 3: When you do that, it will redirect you the reportaproblem.apple.com website and here you have to specify the reason for requesting a refund for the app. You are more likely to choose “I didn’t authorize the purchase” or “Item functions but doesn’t work as expected” and describe the exact issue you are experiencing with the app.

Request Refund for the App

Also see: How to Refund iOS Apps

If the app is eligible for an immediate refund, you’ll see a “Request Refund” button right away and the refund will be processed in 5 to 7 days. In case not,  someone from the Apple support team will contact you within 48 hours via the email address associated with this Apple ID to resolve your request.

Mac App Store - Refund Issued


The story, How to Return Apps Purchased from the Mac App Store, was originally published at Digital Inspiration by Amit Agarwal on 14/01/2015 under Apple Mac, Software.

Run a Poll on Twitter with Google Forms

Twitter, unlike Google Plus, does not offer a native polling solution so you have to rely on an external service to run a quick poll or even a quiz with your Twitter followers. You’ll create a poll on a service like Polldaddy or WuFoo and tweet the link, your followers can click the link and take the poll.

That’s how most polls are conducted on Twitter but the person has to leave the Twitter website in order to answer your poll. Wouldn’t it be better if there were a way to embed a live poll in the tweet itself that people can answer inline, much like subscribing to newsletters, without leaving the Twitter ecosystem?

Twitter Polls

Embed Polls in your Tweet

Well, that is possible, sort of, with Google Forms. When you tweet a link to a Google Form, Twitter embeds the actual form when the tweet is expanded. People can interact with the form and submit while staying on Twitter.

See this live example of a tweet that embeds a poll hosted on Google Forms – you can answer it within the tweet itself.

There’s no trick here except that you should keep the poll really short. That’s because Twitter will only display a question or two in the expanded tweet and most people will thus not be able to figure out how to navigate to the other hidden questions. (hint: Use the TAB key)

Also, while designing the Google Form, choose a theme with smaller fonts and set the description text as blank so that the actual questions are clearly visible in the expanded tweet. You can instead put the description in your tweet.


The story, Run a Poll on Twitter with Google Forms, was originally published at Digital Inspiration by Amit Agarwal on 14/01/2015 under Google Forms, Polls, Twitter, Internet.

The Best Screen Recorder for Android 5

With Android L, you can easily record high resolution videos of your phone or tablet’s screen without having to root the device. Android Kitkat too allowed screen recording but with Lollipop, the process has become almost as easy as recording screencasts on your desktop – you launch an app (there are several alternatives to choose from), hit the record button and everything that’s on your screen, including touches, will be captured as a MPEG-4 video.

Record Android Screen

The Perfect Screen Recorder for Android

A quick search on the Google Play store returns a dozen Android apps that support screen recording for Android v5 or later.

Some apps are free while others are paid but they mostly offer a similar set of features. You can record the screen as well the on-screen touches so the viewer has a better idea about how you are interacting with the apps. They can record the external microphone audio but none of the apps I tried allowed recording of internal system audio. Maybe that is a limitation of the Android platform.

The most popular option is Mirror that will not only record your Android screen but it can also mirror your phone on to your desktop using AllCast Receiver, a free app for Chrome. There are no complicated settings to choose from, the recording is smooth but the big downside is that the app adds a fairly big watermark and you do not have option to disable it.

Shou.TV is another app than can record and also live cast your phone screen to the desktop without the watermark. It is the only app that can save the video in multiple formats including MKV, AVI and MOV. There’s however a definite lag when casting the screen on the desktop that makes it less usable.

iLos and the screen recorders from Rivulus and Misty let you record the Android screen in multiple resolution including 1280×720 and 1920×1080 pixels at 30 frames per second. The recorded screencast can display touches, there are no ads and you can record videos of unlimited length. These apps do however add their icons in the notification window while the recording is in progress.

Another app in the category is SCR that offers a unique feature – it can add the picture-in-picture effect to your screencasts. That means it can use the front camera of your phone and overlay a live video of yourself on the screencast. The app is freemium and you need to upgrade to remove the watermark or to increase your screencast length which is limited to 3 minutes.

I also enjoyed using Rec. that has a very clean interface and allows you save your settings as separate presets. You can turn off the screen and it will stop the current recording session. You do however need to upgrade to show the screen touches and for recording the microphone audio.

This screencast video was recorded on an mobile phone running Android v5+ and rendered as an animated GIF

This screencast video was recorded on a mobile phone running Android 5.0.1 and rendered as an animated GIF

To conclude, as you may have noticed, most of the screen capture programs for Android are very similar and it is thus difficult to pick an absolute winner. Still, if I were to choose one, my vote would go to the Unlimited Recorder for creating screencast movies and Mirror for mirroring the Android screen on to the desktop.


The story, The Best Screen Recorder for Android 5, was originally published at Digital Inspiration by Amit Agarwal on 12/01/2015 under Android, Screencasting, Software.

My Online Income Report – November 2014

It’s only been a couple of weeks since I posted October’s income report, but I guess that’s what happens when I write these reports much later than I should.

November was perhaps my busiest month of the year – having nothing to do with actual work. :) My wife and I finally tied the knot after nearly 11 years together.  Our wedding was a destination wedding, taking place in Playa del Carmen, Mexico.  It was a beautiful wedding and an all-around great time.  Now facing winter in Chicago, I really wish I could go back.

Now, back to reality.

As 2014 comes to an end, I’m left with yet another income report that probably isn’t going to surprise anyone.  After all, it’s been at least 6 months since I’ve actually done any work with my online business.  Sometime soon, I’ll write a full reflection on 2014 and talk about what’s to come in 2015.  I genuinely miss blogging, but I haven’t yet figured out what’s next for me online.

Now, for the income report….

Freelance Writing Income

  • None!

Other Article-Related Income:

InfoBarrel

  • Revenue Sharing: $2.16
  • Amazon: $0.00

Total Writing Income: $2.16

Lending Club

Lending Club, as I’ve written about many times, is one of my favorite online passive income sources, because I believe it’s my only source of truly passive income. What I mean by this is, once you select your investments (which only takes a few minutes), you sit back and collect the monthly payments which include a repayment of your initial investment + a relatively high rate of interest.

Now that I’m done saving for a house and wedding, I’m going to start getting back into investing some serious money into Lending Club and other similar passive investments online.  I’ll be writing more about these in the future, because I believe they can be a strong foundation for any passive income portfolio.

If you’re interested – here’s the strategy I have used to select my investments. It’s pretty simple, as you’ll find.


Here are the statistics for this past month:

  • Annualized rate of return: 6.06% (+.02% from the previous month)
  • Number of loans: 216 (+1 from previous month)

If you’re interested in trying Lending Club, you can sign up with this link and get a free account. Investments can be made for as little as $25. I am an affiliate for Lending Club, so if you have any questions about it, I’d be more than happy to answer them in the comments (or feel free to contact me by e-mail).

Prosper

Prosper.com is another site where I invest, which is a social lending platform very similar to Lending Club.


Here are the statistics for this past month:

  • Annualized rate of return: 14.25% (-.19% from last month)
  • Number of loans: 6 (no change from the previous month).

It may seem that I’m doing much better here compared to Lending Club, but that’s somewhat misleading. Because I only invest in 6 loans (vs. 216 at Lending Club), and none of them have defaulted, my rate of return % is going to be very high.

I think I still prefer Lending Club to Prosper, only because you have more flexibility in choosing investments, and there is more transparency overall. I don’t think there’s anything wrong with investing on both platforms though; I will continue to do so.

If you’re interested, you can create a Prosper account here.

Here’s a summary of my niche site earnings:

  • Amazon: $4.50
  • Media.net: $27.51
  • Chitika: $0.00
  • InfoLinks: $0.00
  • Commission Junction: $0.00
  • Total: $32.01

The Daily Interview

Undisclosed Authority Site

  • Media.net: $0.53
  • Indeed.com: $0.00
  • Total: $0.53

Slow Carb Diet Experiments

  • Amazon: $2.73
  • Media.net: $0.36
  • Total: $3.09

Total Authority Site Earnings: $10.12

Here’s the breakdown for affiliate and other income earned during the month. [Note: This income comes from other sites not discussed/listed above, including affiliate sales generated through this blog.]

Total Misc. Affiliate Earnings: $392.07

Income Summary

Here’s a summary of November’s earnings, organized by category:

  • Freelance Writing: $2.16
  • Niche Sites: $32.01
  • Authority Sites: $10.12
  • Misc. Affiliate Income: $392.07

Grand Total for November: $436.36 (+$34.16 from October)

No big changes from the past few months, but as usual, I will point out that this income is essentially 100% passive.  Until I become active in my business again, I don’t anticipate these amounts changing much (although they could go down.)

These were my top 5 most popular blog posts in November based on number of views:

1) 142+ Ways to Make Money Online

2) Is CashCrate Legit? Here’s My CashCrate Review

3) My Online Income Report – October 2014

4) How to Make $2,000 Per Month Writing for InfoBarrel

5) How I Make Money with Lending Club (My Investing Strategy)

How did your online business do in 2014? Any big plans for 2015? Leave a comment below, and also, Happy New Year! :)

If you enjoyed this income report, subscribe to the RSS feed (if you haven’t already) so that you don’t miss any future updates.

Also, follow me on Twitter and say hi!

-------------

Thanks for subscribing to my feed! For more great content, check out my Muse Creation Newletter for tips, tricks, and ideas that I won't share on my blog.

Also, follow me on Twitter!

Thanks again!

My Online Income Report – November 2014

Things You Should Do After Installing WordPress

It takes two easy steps to install WordPress but you should tweak some of the default settings to further optimize the performance and also improve the security of your WordPress website.

Wordpress Optimization Guide

Optimize your WordPress Installation

These suggestions are only applicable to self-hosted WordPress.org sites and not WordPress.com blogs. Also, I assume that you are running WordPress on Apache under Linux. Let’s get started:

1. Move out the media upload folder

WordPress store all your uploaded images and files in the wp-content/uploads folder. You should however move this folder outside the main WordPress folder, preferably on a sub-domain. Thus your WordPress backups will be more manageable (the uploaded files and themes can be backed up separately) and, most important, serving images from a different domain will allow parallel downloads in the browser improving the page loading time.

Open your wp-config.php file and add the following lines to change the location of the wp-content folder. You may also deselect the option – “Organize my uploads into month- and year-based folders.”

define( 'WP_CONTENT_URL', 'http://files.domain.com/media' );
define( 'WP_CONTENT_DIR', $_SERVER['HOME'] . '/files.domain.com/media' );

2. Remove unnecessary meta tags from WordPress header

If you look at the HTML source code of your WordPress site, you will find a couple of meta tags in the header that aren’t really required. For instance, the version of WordPress software running on your server can be easily retrieved by looking at your source header.

<meta name="generator" content="WordPress 4.1" />

This information is a good hint to WordPress hackers who are looking to target blogs that are using the older and less secure versions of WordPress software. To completely remove the version number and other non-essential meta-data from your WordPress header, add this snippet to the functions.php file found in your WordPress themes folder.

  remove_action( 'wp_head', 'wp_generator' ) ;
  remove_action( 'wp_head', 'wlwmanifest_link' ) ;
  remove_action( 'wp_head', 'rsd_link' ) ;

3. Prevent people from browsing your folders

Since you would not like anyone to browse your WordPress files and folders using the explorer view in web browsers, add the following line to your .htaccess file that exists in your WordPress installation directory.

Options All -Indexes

Also make sure that there’s a blank index.php in the wp-content/themes and wp-content/plugins folder of your WordPress directory.

4. Disable HTML in WordPress comments

The comment box in WordPress allows commenters to use HTML tags and they can even add hyperlinks in their comment. The comments have rel=nofollow but if you would like to completely disallow HTML in WordPress comments, add this snippet to your functions.php file.

add_filter( 'pre_comment_content', 'wp_specialchars' );

5. Turn off Post Revisions in WordPress

WordPress includes a helpful document revisions feature to help you track changes to post edits and you can also revert to any previous version of your blog posts. Post revisions do however increase the size of your WordPress wp_posts table as each revision means an additional row.

To disable post revisions in WordPress, open the wp-config.php file in your WordPress directory and add the following line:

define( 'WP_POST_REVISIONS', false);

Alternatively, if you would like to retain the Post Revisions functionality, you may just limit the number of posts revisions that WordPress stores in the MySQL database. Add this line to the wp-config file to only store the recent 3 edits.

define( 'WP_POST_REVISIONS', 3);

6. Change the Post Auto-Save Interval

When you are editing a blog post inside the WordPress editor, it will auto-save your drafts as-you-type and this will help in recovering your work in case the browser crashes. The drafts are saved every minute but you can change the default duration to say 120 seconds (or 2 minutes) by adding a line to your wp-config.php file.

define( 'AUTOSAVE_INTERVAL', 120 );

7. Hide the non-essential WordPress RSS Feeds

Your WordPress installation generates multiple RSS Feeds – the blog feed, article feeds, comments feed, category feeds, archive feeds, etc. – and these are auto-discoverable as they are included in the HTML header of your blog pages using the <link> meta tag. If you just want to publicize your main RSS feed and remove the other feeds from the , add a line to your functions.php file:

remove_action( 'wp_head', 'feed_links', 2 );
remove_action( 'wp_head', 'feed_links_extra', 3 );

8. Maintain a Single RSS Feed, Redirect Others

In the previous step, we simply removed the RSS feeds from printing inside the site header but the RSS feeds still exist. If you would like to have only one RSS feed served through FeedBurner and disable all the other feeds, add this to your .htaccess file. Do remember to replace the feed URL with your own.

<IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteCond %{HTTP_USER_AGENT} !^.*(FeedBurner|FeedValidator) [NC]
 RewriteRule ^feed/?.*$ http://feeds.labnol.org/labnol [L,NC,R=301]
</IfModule>

9. Disable WordPress Login Hints

When you type a non-existent username or an incorrect password while logging into WordPress, it will provide a very detailed error message telling you exactly whether your username is wrong or the password doesn’t match. That could offer an hint to people who are trying to break into your WordPress blog but, fortunately, we can disable the login warnings.

function no_wordpress_errors(){
  return 'GET OFF MY LAWN !! RIGHT NOW !!';
}
add_filter( 'login_errors', 'no_wordpress_errors' );

10. Enable 2-factor Authentication

This is highly recommended. If someone gets hold of your WordPress credentials, they will still need your mobile phone to get into your WordPress dashboard.

Unlike Dropbox or Google, 2-step authentication isn’t part of WordPress but you can always use the Authy plugin to enable 2-factor authentication.

11. Change the Permalink Structure

Do not use the default Permalink structure of WordPress since it is bad for SEO. Go to Options -> Permalinks inside your WordPress dashboard and change your WordPress Permalink structure to something like:

Option 1. /%post_id%/%postname%
Option 2. /%category%/%postname%/%post_id%/

12. Add Favicon and Touch Icons

Your WordPress theme may not even include references to the favicon (favicon.ico) or the Apple touch icons but web browsers and feed readers may still request them from your server. It’s always better to serve a file than returning a 404.

First, create a 16×16 favicon.ico and a 144×144 apple-touch.png file and upload them to the home directory of your blog. Then add this line to your .htaccess to redirect all apple touch icon requests to that particular file.

RedirectMatch 301 /apple-touch-icon(.*)?.png http://example.com/apple-touch.png

13. Disallow Indexing of WordPress scripts

You want Google and other search engines to crawl and index your blog pages but not the various PHP files of your WordPress installation. Open the robots.txt file in your WordPress home directory and add these lines to block the bots from indexing the backend stuff of WordPress.

User-agent: *
Disallow: /wp-admin/
Disallow: /wp-includes/
Disallow: /wp-content/plugins/
Disallow: /wp-content/themes/
Disallow: /feed/
Disallow: */feed/

14. Make the Admin a Subscriber

If your WordPress username is “admin,” create a new user and grant them administrator privileges. Now logout out of WordPress, log in as the new user and change the privilege of the user “admin” from Administrator to Subscriber.

You may even consider deleting the user “admin” and transfer any existing posts /pages to the new user. This is important for security reasons because you don’t want anyone to guess the username that has administrator privileges to your WordPress installation.

15. Hide XML Sitemaps from Search Engines

XML Sitemaps will help search engines better crawl your site but you don’t want search engines to actually show your sitemap in search results pages. Add this to your .htaccess to prevent indexing of XML sitemaps.

<IfModule mod_rewrite.c>
 <Files sitemap.xml>
  Header set X-Robots-Tag "noindex"
 </Files>
</IfModule>

16. Do Not Use WordPress search

Make sure your site search is powered by Google Custom Search and do not use the built-in search feature of WordPress. WordPress search returns less relevant results and the other advantage is that it will reduce strain on your WordPress server /database since the search queries will be handled through Google.

Alternatively, if you plan to continue with WordPress built-in search, use the Nice Search plugin. It creates better permalinks for your WordPress search pages (/search/tutorials vs /?s=tutorials).

17. Password Protect the wp-admin Directory

You can easily add another layer of security to your WordPress installation by password protecting the wp-admin directory. You’ll however have to remember two sets of credentials for logging into WordPress – your WordPress password and the password that is protecting the wp-admin directory.

18. Log 404 Errors in Google Analytics

404 errors are a missed opportunity. You can use events in Google Analytics to log your 404 errors including details about the referring site that is pointing to that 404 page of your site. Add this snippet in your 404.php file.

<? if (is_404()) { ?>
 _gaq.push(['_trackEvent', '404',
              document.location.pathname + document.location.search,
              document.referrer, 0, true]);
<? } ?>

19. Delete Unused Themes & WordPress plugins

The unused plugins and themes won’t affect the performance of your WordPress website but the aim should be to have as little executable code as possible on our server. Thus deactivate and delete the stuff that you no longer need.

20. Stop WordPress from Guessing URLs

WordPress has a strange habit of guessing URLs and it does make mistakes in most cases. Let me explain. If a user request labnol.org/hello URL but if that page doesn’t exist, WordPress may redirect that user to labnol.org/hello-world just because the URLs have some common words.

If you would like WordPress to stop guessing URLs and instead issue a 404 Not Found error for missing pages, put this snippet in the functions.php file:

add_filter('redirect_canonical', 'stop_guessing');
function stop_guessing($url) {
 if (is_404()) {
   return false;
 }
 return $url;
}

21. Set Expiry Headers for Static Content

The static files hosted on your WordPress website – like images, CSS and JavaScript- won’t change often and thus you may set Expire Headers for them so that the files get cached on the user’s browser. Thus, on subsequent visits, your site will load relatively faster as the JS and CSS files would be fetched from the local cache.

Refer to the HTML5 Boilerplate for details on setting up expiry and compression headers for performance. If you are using a caching plugin like W3 Total Cache, the cache control is managed by the plugin itself.

ExpiresActive On
ExpiresByType image/gif "access plus 30 days"
ExpiresByType image/jpeg "access plus 30 days"
ExpiresByType image/png "access plus 30 days"
ExpiresByType text/css "access plus 1 week"
ExpiresByType text/javascript "access plus 1 week"

23. Improve WordPress Security

I have discussed WordPress security in detail earlier. The gist is that you should add secret keys to your wp_config.php file, install a file monitoring plugin (like Sucuri or WordFence), change the WordPress table prefix and also limit login attempts to prevent brute force attacks.

24. Disable File Editing inside WordPress

When you are logged into your WordPress dashboard as an admin, you can easily edit any of the PHP files associated with your WordPress plugins and themes. If you would like to remove the file editing functionality (one missing semicolon can take down your WordPress site), add this line to your wp-config.php file:

define( 'DISALLOW_FILE_EDIT', true );

25. Remove extra Query Parameters from URLs

If the web address of your WordPress site is abc.com, people can still reach your site if they add a few query parameters to the URL. For instance, abc.com/?utm=ga or abc.com/?ref=feedly are, technically speaking, completely different URLs but will work just fine.

This is bad because it dilutes your link equity (SEO) and, in an ideal situation, you would like all URLs to point to the canonical version. Add this little snippet to your .htaccess file and it will strip the unnecessary query parameters from all incoming requests.

<IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteCond %{QUERY_STRING} !=""
 RewriteCond %{QUERY_STRING} !^p=.*
 RewriteCond %{QUERY_STRING} !^s=.*
 RewriteCond %{REQUEST_URI} !^/wp-admin.*
 RewriteRule ^(.*)$ /$1? [R=301,L]
</IfModule>

26. Remove the Admin Bar

This is an annoying feature of WordPress – it adds an admin bar on top of all pages and that is visible to all users who are logged into their WordPress.com accounts. This can however be removed by adding a line to your functions.php file.

add_filter('show_admin_bar', '__return_false');

27. Deal with Ad Blockers

Some of your blog readers may be using ad-blocking software to block ad serving from your site. You can serve alternate content like a list of your popular WordPress posts or embed a YouTube video instead.

28. Add Branding to your RSS Feed

You can easily add your brand logo to all articles in the RSS feed. And since these are served from your server, you can serve a different image for sites that are plagairising your content by republishing your feed. Add this to your functions.php file.

function add_rss_logo($content) {
  if(is_feed()) {
    $content .= "<hr><a href='blog_url'><img src='logo_url'/></a>";
  }
  return $content;
}
add_filter('the_content', 'add_rss_logo');
add_filter('the_excerpt_rss', 'add_rss_logo');

29. Install the Essential Plugins

Here’s a comprehensive list of WordPress plugins that I use and recommend.

30. Stay logged in for a longer period

If you check the “Remember Me” option, WordPress will keep you logged in for 2 week. If you are only logging into WordPress from a personal computer, you can easily extend the expiry date of the authorization login cookie by adding this to your functions.php file.

add_filter( 'auth_cookie_expiration', 'stay_logged_in_for_1_year' );
function stay_logged_in_for_1_year( $expire ) {
  return 31556926; // 1 year in seconds
}

Also see: Linux Commands for WordPress 


The story, Things You Should Do After Installing WordPress, was originally published at Digital Inspiration by Amit Agarwal on 23/12/2014 under WordPress, Internet.

How to Write a Successful Blog

In 2004, I left the corporate world and started this tech and how-to blog called Digital Inspiration. I have been blogging for more than 10 years now and lot of things have changed in these years.

Back then, there were few blogs, there was no Twitter or Facebook and the only way people could subscribe to a blog was through RSS or email newsletters. Bloggers maintained Blogrolls and Linkrolls and would generously link to other blogs. Google search results were a collection of 10 blue links and getting a slot on the front page wasn’t so difficult.

I am no expert at blogging but probably the only advantage I enjoy is that I have been in the business for longer than most. There are no secrets or magic wand that brings success in the world of blogging but I think it is combination of good luck, hard work and consistency. In one of my recent interview with Lifehacker, they asked me how I work and my answer was “enthusiastically” and “diligently”. I enjoy what I do, I do not see this as work, I am always thinking about ways to improve, to learn and I look forward to working on labnol.org every morning. I think this attitude has helped me keep going all these years.

Blogging Tips and Advice

Here I share some of my learnings and blogging tips that will probably help take your blog to the next level. The video also available on YouTube. Let’s get started.

1. If you are on Blogger or Tumblr or another blogging platform, do your blog a favor and move to WordPress. The process isn’t complicated and will definitely help you in the long run, especially from the search perspective. Blogger is powerful and easy-to-use but the big drawback is that it blocks everything from bots that’s not a post. The other concern is that Blogger is a Google product and they have killed products mercilessly in the past even when they had a substantial user base. Remember Google Reader?

2. They say content is king but other than content, you need to develop a good and interesting writing style to attract a global audience. Good writing is a gift that comes naturally to some of us but if you happen to be in the other half, get some books.  The Elements of Style,  Stephen King’s On Writing, and On Writing Well offer good advice on writing. Compose the drafts in a proper editor – use Word, Google Docs or Poetica – they will highlight all the typos and grammatical errors that otherwise convey a bad impression. You can also get a style guide from The New York Times or the Associated Press and they’ll help you develop a consistent writing style. These guides have accepted writing rules for journalism and you can apply them to your own writing style as well.

3. Do not imitate someone’s style. You have your own personal style and your readers are following you because they love your style. You need not imitate someone nor you have to write as if you are writing for a news agency. Make your writing personal.

4. The most important part of a blog post is the headline and suddenly everyone is trying to do Buzzfeed style headlines. “This is why the Apple watch is not round.”  “You’ll never believe what Facebook will unveil next.” With such headlines, you raise the expectation level of the audience and when they read the actual article, they are often disappointed. Go for boring headlines that may not be cute or clever but accurate. Your readers should be able to guess what the article is all about by looking at the headline itself.

Also see: Create Good and Effective Web Content

5. There’s lot of noise in the blogging world and there’s a mad rush to report something new. Take a step back back and think – are you really adding any value or just contributing to the echo chamber? It is probably the job of the mainstream blogs to publish news as it happens but for the rest of us, blog only when you have something interesting to say. You won’t lose much if you aren’t among the first few to report something.

6. Just say no to guest blogging. Yes, it would help raise your profile if you manage to write for a reputed and authoritative site but 99% of the guest blogging is done with the sole purpose of gaining links and that’s just waste effort. Also, as your website grows popular, you’ll find the big sites approaching you to for permission to republish your stuff. They will promise you eyeballs in return for your content but that won’t actually happen – people will just read your content on their site and move.

7. Always use a good images or screenshots with your blog posts. This helps for two reasons – one, when people share your content on social sites, your story may stand out in the crowded news feed because of that image thumbnail. You can use images to draw the visitor’s attention to any part on the story that you want to emphasize and if you are articles are long, images can work as visual breakpoints. And it goes with saying that you should only use free images that are in the public domain or under Creative Commons.

8. Search is definitely import but none of us really know how Google works. They have 200+ factors that decide the ranks of pages and we only know about a few of them. The fact is as long as long as you have the basics right, the cream will automatically rise to the top. Here are a few things that I would suggest as far as SEO is concerned.

  1. Read the webmaster guidelines from Google and Bing to know the do’s and don’ts for SEO. Follow the refresher course at Webmaster Academy and then read this starter guide (PDF) from Google.
  2. Have an HTML sitemap so that all your pages are no more than 2-3 levels deep from the homepage.
  3. When writing blog posts, always organize your content under sub-headings, use anchored headings (similar to Wikipedia) and your images should have titles and captions.
  4. Interlink your content so both human visitors and search bots can find the gold hiding in your archives.
  5. The post excerpt is important because it will also show up in the search snippets and social sites where your articles will be shared. Do no auto-generate the excerpt, write it on your own.
  6. Keep track of all the missing resources on your website (404 errors) and either fix them or redirect them to something related on your site. Xenu is a good tool to find outdated links on your website.
  7. Use breadcrumb menus because that will help the search bots understand the organization of content on your site.
  8. Focus on typography because the reading experience matters. You can use Google Fonts like Open Sans and Roboto that look good on both mobile and desktops.
  9. Any page on your site has two parts – the main content (your article) and common content (sidebar, navigation, footer area, etc). As far as possible, the main content should be above any common content in the HTML source.
  10. Make sure that your web design is responsive and that your site passes the mobile-friendly test. Work on improving your site speed score, load ads asynchronously and remove all the bells and whistles (like JavaScript widgets) from your pages. See: Optimize your WordPress.

9. Do not use an RSS to Email service to prepare your daily / weekly email newsletters. Instead, spend some time and create your email newsletters manually. Alway put a summary in the email subject – this will vastly improve the open rate of your email newsletter.

10. Think of the reader first and the revenue later. Advertising is important but if you only focus on the commercials, it will be difficult to build a loyal audience. AdSense, BuySellAds, BlogAds are good ad networks but stay away from the networks that allow scam ads. Remember, you are responsible for what ads are shown to visitors on your website.

Also see: How Bloggers Make Money on the Internet

11. Good and useful content will spread on its own but, occasionally, you can also pitch other bloggers in your niche. The other set of people who you can help spread the word are your blog commentators and people who have previously shared your stories on social sites. They love your blog and will happily evangelize your content.

12. Your “about” page is your chance to convert a new visitor into a regular one. Show off your best stuff,  link to your popular stories, make it easy for people to subscribe to your content and include mentions in the mainstream media – this will make your bio more credible to someone who doesn’t know you.

13. Lists, or listicles as they are better known in the world of blogging, are the easiest way to generate traffic. They are easier to scan and hence people enjoy reading them. Lists are easier to create too but if all you do is publish lists based blog posts, that may have an opposite effect.

14. This is your personal preference but I suggest you keep updating your old articles so that they stay relevant and up to date. If something is useless, it can be  removed permanently. For instance, I had a few Orkut related posts on my blog. They were relevant when I wrote them but now that Orkut is gone, I got rid of them and directed all the juice to something related but more relevant.

15. Google is no longer sharing the search queries with you but the internal search data, that you can grab from Google Analytics and Google Custom Search, will help you understand what kind of solutions are people looking for on your website. You can then go a step further. Use the annotations feature of CSE to automatically highlight important pages in your internal search results.

16. If you are new, you can attract attention of other website owners by linking to them – your blog posts will show up in their traffic logs, they may check out your blog and help spread the word among their audience. Like the BBC, You can also add depth to your posts by linking to other sites that have written on the same topic but may have a different perspective. A web page that cites source and links to research may also be seen as more authoritative and trustworthy by search engines.

17. Page views give an ego boost the more important metrics are the returning visitor count, the bounce rate and the amount of time that people are spending on individual pages. If they are landing on a page and leaving in a split-second, you should to diagnose the reason – maybe they aren’t finding the information on the page, maybe the title does not accurately tell what the page is all about, maybe your site is slow or the typography is to be blamed.

18. Plagiarism is  a problem and will continue to be. You can get the content removed through DMCA but, unless a popular site has done it, I would not worry too much about plagiarism. Instead, that energy can be focussed on creating more content.

19. In all these years, I have tried to harness various channels and I think that also helped in the growth of the blog. I have written an ebook for the Kindle, I have a YouTube channel, I do a podcast on iTunes which is essentially my YouTube videos in downloadable format, I curate on Flipboard, I upload my slides on Slideshare and have Chrome apps for the blog. Only a few hundred thousand people probably know about my website but these channels are known to millions of Internet users. It thus helps to have a presence there.

20. Everyone can have a blog but what separates you other blogs is your expertise in the field, your writing skills and most important credibility. The editorial should be complete separate from the business side of the blog. Be transparent and abide by the journalists code of ethics, much like the team at The Verge and ReCode.

Also see: 25 Tips for Tech Startups


The story, How to Write a Successful Blog, was originally published at Digital Inspiration by Amit Agarwal on 22/12/2014 under Blogging, WordPress, Blogging.