Make International Phone Calls from your Mobile even without the Internet

How do you make international calls from your mobile phone? Mobile carriers often charge exorbitant rates for international phone calls but you can Internet based services like Skype or Google Hangouts and call any landline or cell phone number in the world for a low per minute fee.

All you need is a mobile phone connected to a Wi-Fi hotspot and some credit balance in your account for making the phone call. You can use these VoIP apps when travelling overseas as well and make significant savings for both domestic and international calls.

Now consider a scenario where you have a mobile phone but there’s no Wi-Fi around and the 3G/4G services are either slow or unavailable. Would you still be able to place calls through any of these apps? The answer is obviously in the negative but there’s at least one app that has figured out a unique solution to this common problem.

The app, known as Ringo, lets you make international calls from your mobile phone but “without” requiring the Internet. It does so by cleverly converting your request to dial an international number into a local number.

Let’s say you are trying to call someone in Singapore from India. When you make a call through Ringo, the app will internally dial a local number in India. At the other end in Singapore, it will again make a local call to the desired number and will connect these two calls using their own infrastructure. This process is transparent to the end users though it make few seconds extra to initiate the call.

International Call Rates – Comparison

Here’s a chart comparing the voice calling rates (in cents per minute) for all the popular voice calling apps. Ringo not only allows you make international phone calls without 3G or WiFi but it is cost-effective too.

Skype Viber Ringo
Callback
Ringo
Wifi
Google
Hangouts
USA 2.3 1.9 1.2 0.2 Free
India 1.5 2.2 1.9 0.9 1.0
UK 2.3 5.9 1.4 0.4 3.0
Russia 2.3 7.9 12.5 11.6 12
Brazil 3 19 3.6 2.6 6.0
China 2 1.3 1.6 0.6 1.0
Singapore 2.3 1.9 1.4 0.4 2.0

 

In my testing, I found the voice quality good and the app automatically figures out all the international numbers in your phonebook.  Also when open a contact inside Ringo, it will show their current local time and this little detail does help save a trip to Google.

Is Ringo a replacement for Skype or Google Hangouts? Well, yes and no. With Ringo, you do not need the Internet to make phone calls but you still need a local number. In the case of Skype, you do not need a local number but you have to be connected to the Internet. Also, Ringo is mobile only while Skype lets you call telephone numbers from Mac and Windows PCs as well.

Ringo is available for Android, iPhone and Windows Phone.


The story, Make International Phone Calls from your Mobile even without the Internet, was originally published at Digital Inspiration by Amit Agarwal on 18/05/2015 under Skype, Internet.

Add Related Posts to WordPress with Jetpack but without the Extra Baggage

It is recommended that you include Related Posts on your blog pages as they help decrease the bounce rate of your site and are good from the SEO perspective. That’s because when you publish a new article, the old content, that was previously hiding in the archives, shows up in the list of related posts and thus gets fresh exposure to both human visitors and search engines.

Matt Cutts, in 2010 when Google search results were a collection of 10 blue links, recommended using related posts and the advice is still relevant today in the age on Penguins and Pandas.

YARPP, short for Yet Another Related Posts Plugin, is the most popular plugin in the WordPress repository for display related articles but it does put lot of strain on your WordPress database server. All the related posts calculations are done using complex SQL queries on your WordPress database and that can affect your website’s performance.

Jetpack, the official WordPress plugins from the makers of WordPress, now includes Related Posts functionality and it is a better alternative to YARPP for one simple reason – Jetpack runs the algorithms to compute related posts in the cloud and thus put no additional load on your server. Through the WordPress plugin, your website makes an API call to Jetpack which in turn returns a list of posts related to the current post.

WordPress Related Posts

Jetpack Related Posts for WordPress

I’ve obviously replaced YARPP with Jetpack for displaying related posts on labnol.org but there’s something I was not too happy about Jetpack. It adds a number of JavaScript and CSS files to the website’s header for rendering the related posts. This in turn increases the weight of the page but, fortunately, there’s a way around that.

<?php

/* Jetpack Related Posts */

/* This is required to remove the CSS and JS enqueued in the header */
function jetpackme_no_related_posts( $options ) {
    if ( is_single() ) {
        $options['enabled'] = false;
    }
    return $options;
}

add_filter( 'jetpack_relatedposts_filter_options', 'jetpackme_no_related_posts' );

/* Create shortcode for displaying related posts anywhere in the post */
function labnol_related_shortcode( $atts ) {

    $related_posts = "";

    if ( class_exists( 'Jetpack_RelatedPosts' ) && method_exists( 'Jetpack_RelatedPosts', 'init_raw' ) ) {

        $related = Jetpack_RelatedPosts::init_raw()
            ->set_query_name( 'jetpackme-shortcode' )
            ->get_for_post_id(
                get_the_ID(),
                array( 'size' => 5 ) // How many related posts?
            );

        if ( $related ) {

            foreach ( $related as $result ) {
                $related_post = get_post( $result[ 'id' ] );
                $url = get_permalink($related_post->ID);
                $title = $related_post->post_title;
                $related_posts .= "<li><a href='" . $url . "'>$title</a></li>";
            }
            $related_posts = '<ol>' . $related_posts . '</ol>';
        }

    }

    return $related_posts;
}

/* Create a new shortcode for Jetpack related posts */
add_shortcode( 'labnol_related', 'labnol_related_shortcode' );

/* Do not load the one-big Jetpack concatenated CSS file */
add_filter('jetpack_implode_frontend_css', '__return_false');

/* Dequeue the default styles and jQuery for Jetpack module */
function add_labnol_scripts() {
    if (!is_admin()) {
        wp_dequeue_script('jetpack-related_posts');
        wp_dequeue_style('jetpack-related_posts');
    }
}

add_action("wp_enqueue_scripts", "add_labnol_scripts", 20);

?>

You can use the Related Posts module of Jetpack but without adding extra baggage to your website. Assuming that the Jetpack plugin is already installed on your website, activate the Related Posts module and then paste this code inside the functions.php file of your WordPress theme.

What we have done so far is dequeued all the extra CSS and JS files that are normally added to the site by Jetpack and we’ve also created a WordPress shortcode that will let us include the Related Post module anywhere on the page (and not limit us to the end or start of an article).

You can also set the number of related posts to display in line #27.

Next open the file where you wish to display related posts, most likely the single.php or loop.php file in the WordPress theme folder, and add this line.

<?php echo do_shortcode( '[labnol_related]' ); ?>

You should also check this page on the Jetpack website for more technical details on how to customize the related posts module of Jetpack.

One more thing. If you have only recently enabled Related Posts for Jetpack, the related posts may not show up on your website because it may take some time for Jetpack servers to index your site.


The story, Add Related Posts to WordPress with Jetpack but without the Extra Baggage, was originally published at Digital Inspiration by Amit Agarwal on 16/05/2015 under WordPress, Internet.

How to Monetize Google Maps on your Website with AdSense Ads

You have been using Google AdSense ads to monetize the content of your website but did you know that you can also use the same AdSense program to also monetize any Google Maps that are embedded on your web pages. You can embed a Google Map and AdSense ads will be automatically served inside the map that will either be contextually relevant to the content of the page or targeted based on the location of the visitors.

The Google Maps block embedded below contains a rectangular AdSense ad unit placed near the top-center area of the map. Where Am I is another example of a website that embeds Google Maps with ads.

AdSense Ads for Embedded Google Maps

Google Maps offers you an easy option to embed maps onto your website but the default embed code does not allow monetization. You’ll have build the map on your own using the Google Maps API to enable advertising and this isn’t difficult either. Let me show you in few easy step.

To get started, go to the Google AdSense website and create a new ad unit. You can choose the default color scheme for the ad unit (white background) and pick responsive for the size. The latter doesn’t matter though as the ad unit will automatically fit inside the container map.

Next, copy-paste the following Google Maps embed code anywhere in your web template.

<div id="google-maps" style="width:500px; height:500px;"></div>

<script src="https://maps.googleapis.com/maps/api/js?v=3.exp">
 </script>
<script src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js">
 </script>

<script>

  function showGoogleMaps() {

    var mapOptions = {
      center: new google.maps.LatLng(38.8977, -77.036),
      zoom: 5
    };

    var map = new google.maps.Map(
      document.getElementById('google-maps'), mapOptions);

    var ad = '<ins class="adsbygoogle" 
              style="display:inline-block;width:300px;height:100px" 
              data-ad-client="ca-pub-xxxx" 
              data-ad-slot="yyyy"></ins>';

    var adNode = document.createElement('div');
    adNode.innerHTML = ad;

    map.controls[google.maps.ControlPosition.TOP_CENTER].push(adNode);

    google.maps.event.addListenerOnce(map, 'tilesloaded', function() {
      (adsbygoogle = window.adsbygoogle || []).push({});
    });

  }

  google.maps.event.addDomListener(window, 'load', showGoogleMaps);

</script>

You can replace the height and width of the Google Maps in line #1 to fit your website layout while the latitude and longitude of the place needs to be replaced in line #11. Finally, xxxx and yyyy in the embed code should be replaced with your AdSense Publisher ID and the Ad Slot ID respectively. You can find these values in the embed code generated by AdSense.

If you are ready to fiddle with the JavaScript, you can even more option to customize the embedded map.

Google Maps with AdSense Ads

For instance, you can easily change the position of the AdSense ad unit inside Google Maps from TOP_CENTER (line #28) to BOTTOM_CENTER or something else.

Similarly, you can change the default view of the embedded map from Roadmap to Satellite or Hybrid. The various controls inside the Google map – like the street view Pegman, the zoom slider, the pan control – can be easily hidden or moved to a different position by setting the corresponding properties inside the mapOptions object.

Also see: Embed Google Maps Street View

<script>

  var mapOptions = {

    // Center the map on this address
    center: new google.maps.LatLng(38.8977, -77.036),

    // Set the initial zoom level
    zoom: 14,

    // Hide the slider to control the zoom levels
    zoomControl: false,

    // Hide the controls to pan the map
    panControl: false,

    // Display the street view peg but in a different position
    streetViewControl: true,
    streetViewControlOptions: {
      position: google.maps.ControlPosition.BOTTOM_CENTER
    },

    // Allow visit to switch to Satellite view and back
    mapTypeControl: true,

    // Set the default type of the map to Roadmap 
    mapTypeId: google.maps.MapTypeId.ROADMAP

  };

</script>

The story, How to Monetize Google Maps on your Website with AdSense Ads, was originally published at Digital Inspiration by Amit Agarwal on 16/05/2015 under Google AdSense, Google Maps, Internet.

Send Personalized Tweets & DMs in Bulk from a Google Spreadsheet

Introducing Twitter Merge, a new Twitter app that will help you send personalized tweets and direct messages (or DMs) to multiple Twitter users in one-go. You create a template for the tweet, specify a list of Twitter users and the app will take care of the rest. The Twitter Merge app, like Gmail Mail Merge, also runs inside a Google Spreadsheet but instead of emails, this one allows you to send customized tweets and DMs in bulk.

Let me share a scenario where such an app may be useful.

Say you are a brand and you are trying to organize meetings with Twitter users in various cities on different dates. You want to send them invites on Twitter but it would take just too much effort to compose the tweets or DMs manually. You thus create an invite template and add the Twitter user names in a Google Sheet. The Twitter Merge app, using that template, will send a personalized tweet (or DM) to every handle listed in the sheet automatically.

Here’s a sample Tweet template and the corresponding tweets / DMs generated from the template.

Personlized Tweets

To create a Twitter template, write a tweet in notepad (or any text editor) and replace the words that will be different in each tweet with {{variables}}. For instance, if you are write a tweet with customized name and city, your template will read something like “hello {{first name}} from {{city name}}” while the “First Name” and “City Name” will be columns in your Google Spreadsheet.

Bulk Send Tweets & Direct Messages

Follow these steps to get started:

    1. Click here to copy the Twitter Merge spreadsheet in your Google Drive.
    2. Add new columns to the sheet so that you have one for every variable that exists in your tweet template. The column names should be the same as the variable name though the case doesn’t matter.
    3. Fill the spreadsheet with one or more rows. Add the Twitter screen names in the “Twitter User” column while keeping the “Tweet” and “Status” columns as blank.
    4. Go to the Twitter Merge menu at the top and choose Authorize. This is required because you need to allow the Spreadsheet to send tweets on our behalf.
    5. From the same menu, choose Configure and paste the text of your tweet template. You also need to specify whether the tweets are be sent as DMs or public tweets. Save the configuration.

We are almost done now.

The “Tweet” column will display the actual text that will be sent and you have an option to manually edit that text. Choose Send tweets from the Twitter menu and the app will send the customized tweets to all the listed Twitter users. The following video (link) will also guide you through the process.

Also see: Archive Twitter Search Results in Google sheets.

Later, if you wish to send more tweets or DMs, you can just repeat from step 2 onwards.  Also, if the “Status” column for a tweet is set as “SENT”, the app will skip sending a tweet to that particular Twitter user.

Internally, there’s a Google Script running that transforms your template into actual tweets using data from the row and it then connects to the Twitter API to send the tweets. Give it a try and do share your feedback in the comments section below.


The story, Send Personalized Tweets & DMs in Bulk from a Google Spreadsheet, was originally published at Digital Inspiration by Amit Agarwal on 13/05/2015 under Google Docs, Twitter, Internet.

Login to your WordPress Website without Typing the Password

As is common knowledge, two-factor authentication is necessary for increasing the security of WordPress websites. Once enabled, you’ll need a one-time password generated on your phone, in addition to your existing WordPress username and password, to log into the website. WordPress has not included 2-factor authentication in the core yet but there are WordPress plugins that will easily add this layer of security to your website.

The only downside of adding 2-factor authentication is that you need to type a few extra digits on the login screen before you are allowed in. And if you have a handful of WordPress websites to manage, this can be a bit time consuming.

This week I discovered Clef and it will completely changes the way you log into your WordPress websites. With Clef installed, you can log into your website by simply waving the mobile phone at the computer screen. Clef also secures your site with 2-factor authentication but you don’t have to type any username or password nor do you have to wait for the one-time tokens.

It almost feels like magic. Watch this short demo to understand how Clef works.

A video posted by Amit Agarwal (@labnol) on

Login into WordPress Automatically

Getting started is easy. You install the Clef plugin on your website (it is available in the official WordPress plugin repository) and download the Clef app on your mobile phone. The app is available for both iPhone and Android phones.

Clef will replace the default login screen of your WordPress website with an animation that resembles a moving wave. You scan this “wave” with the Clef app on your phone and voila! You are logged in instantly. You don’t have to remember passwords and this will even work if your phone is not connected to the Internet.

One more thing. You can use Clef to log into your WordPress website from the mobile browser as well. In this case, you don’t have to scan the “wave” but you’ll be automatically redirected to the Clef app on the phone and it will log you in. It can’t get any simpler than this.

Also: Google 2-Factor Authentication with USB Key

And if you ever lose your mobile phone, you can also always deactivate your device by paying a visit to getclef.com/lost. Do not fret because you can still get into your Clef enabled WordPress website with the old school method – your username and password.


The story, Login to your WordPress Website without Typing the Password, was originally published at Digital Inspiration by Amit Agarwal on 07/05/2015 under Password, Security, WordPress, Internet.

Essential Apps and Utilities for your Mac

Whether you are a new Mac user or seasoned veteran looking to do more, here’s a collection of essential Mac apps & utilities that you must download on your computer. These apps, most of them are free and created by third-party developers, will help you get more productive and do things that are otherwise not possible on your Mac.

Best Mac Apps and Utilities


The story, Essential Apps and Utilities for your Mac, was originally published at Digital Inspiration by Amit Agarwal on 01/05/2015 under Apple Mac, Software.

Your Mobile Phone can Detect Earthquakes

Was it just you or did the ground really shake? Your iPhone, iPad and most newer mobile phones can work as basic seismometers, the same instrument that is used to measure the magnitude of earthquakes and volcanoes. You don’t need to install any apps, just the built-in web browser would suffice.

OK, try this. Launch Google Chrome or the Safari browser on your mobile phone (or tablet) and then open this page. You should see a continuously moving waveform but if you slightly shake or tilt your mobile device,  simulating seismic activity, the graph will capture these movements in real-time much like a seismograph.

The seismic intensity will vary depending on how vigorously (or slowly) you are shaking the phone (see the following screenshot) and will also change based on the orientation of the device. And you’ll be surprised to learn that this basic seismograph is written using simple JavaScript.

earthquake seismograph

Most newer mobile devices have built-in accelerometers and gyroscopes and as you move the physical hardware, the changes in the orientation of the device and acceleration are detected by the browser which are then mapped into the seismograph.

The orientation and motion data are in turn captured by the HTML5 DeviceOrientation and DeviceMotion events of the browser. This works mostly on mobile devices but if you are using Google Chrome on the desktop, you can turn on the Accelerator option under Sensors inside Chrome Dev Tools to simulate motion.

Update: The code was originally published on isthisanearthquake.com in 2011 but the domain is no longer available. A mirror is located on ctrlq.org.


The story, Your Mobile Phone can Detect Earthquakes, was originally published at Digital Inspiration by Amit Agarwal on 25/04/2015 under JavaScript, Internet.

Protect your Google Accounts with a USB Security Key

Most big-name web services like Gmail, Microsoft, Evernote, WordPress and Dropbox now support 2-step authentication to improve the security of your online accounts. Once you enable two-factor authentication, a malicious person will not be able to log into your online account even if they know the password – they’ll need access to your mobile phone as well to get in.

The verification codes required for logging into a 2-step enabled account can be generated either using a mobile app – like Authy or Google Authenticator – or you can have them sent to your mobile phone via a text message or a voice call. The latter option however will not work if the mobile phone associated with your account is outside the coverage area (like when you are in a foreign country).

There’s another option that makes the process of logging into a 2-factor enabled account Google less cumbersome. Instead of generating the verification codes on a mobile phone,  you can use a hardware based authenticator that can be inserted into a USB port on your computer and you’ll be signed-in automatically without having to hand-type the digits. 

The option works for both Google and Google Apps accounts and you don’t even need the mobile phone – watch video demo.

Google 2-factor Authentication Simplified

I am using the least-expensive Yubico key though there are more options to choose from. The first stop is to associate the USB security key with your Google Account. Go to myaccount.google.com, click on 2-step verification and then switch to the Security Keys tab. Here click the Register Device button and then insert the USB key into the computer to attach it to your account.

Once registered, you can use your USB security key to log into your Google Account from any other desktop or laptop computer without requiring the mobile phone. Simply open the Google login page, type in your username & password, click the Sign-in button and then insert the USB key. The lights will blink on the device, you need to tap it once and it will instantly log you into the account.

The USB security keys require no software and they are compatible with Windows, Mac, Chrome OS and Linux computers. They need no batteries, they are tiny like a regular USB thumb drive but also rigid. You can also associate multiple Google Accounts with the same USB key which can be a huge timesaver for some users.

USB Security Keys make 2-factor authentication painless but you can only use them inside Google Chrome on desktop and laptop computers. You’ll still have to rely on SMS messages, or the authenticator app, for logging into Google on your mobile phones or in browsers like Firefox and Opera (download video).

USB Security Key for Google Accounts


The story, Protect your Google Accounts with a USB Security Key, was originally published at Digital Inspiration by Amit Agarwal on 21/04/2015 under Google, Security, Internet.

Always Block Google from Accessing your Site’s Search Results

If you are using Google Custom Search or another site search service on your website, make sure that the search results pages – like the one available here – are not accessible to Googlebot. This is necessary else spam domains can create serious problems for your website for no fault of yours.

Few days ago, I got an automatically generated email from Google Webmaster Tools saying that Googlebot is having trouble indexing my website labnol.org as it found a large number of new URLs. The message said:

Googlebot encountered extremely large numbers of links on your site. This may indicate a problem with your site’s URL structure… As a result Googlebot may consume much more bandwidth than necessary, or may be unable to completely index all of the content on your site.

This was a worrying signal because it meant that tons of new pages have been added to the website without my knowledge. I logged into Webmaster Tools and, as expected, there were thousands of pages that were in the crawling queue of Google.

Here’s what happened.

Some spam domains had suddenly started linking to the search page of my website using search queries in Chinese language that obviously returned no search results. Each search link is technically considered a separate web page – as they they have unique addresses – and hence the Googlebot was trying to crawl them all thinking they are different pages.

External Domains blocked with robots.txt

Because thousands of such fake links were generated in a short span of time, Googlebot assumed that these many pages have been suddenly added to the site and hence a warning message was flagged.

There are two solutions to the problem.

I can either get Google to not crawl links found on spam domains, something which is obviously not possible, or I can prevent the Googlebot from indexing these non-existent search pages on my website. The latter is possible so I fired up my VIM editor, opened the robots.txt file and added this line at the top. You’ll find this file in the root folder of your website.

User-agent: *
Disallow: /?s=*

Block Search pages from Google with robots.txt

The directive essentially prevents Googlebot, and any other search engine bot, from indexing links that have the “s” parameter the URL query string. If your site uses “q” or “search” or something else for the search variable, you may have to replace “s” with that variable.

The other option is to add the NOINDEX meta tag but that won’t have been an effective solution as Google would still have to crawl the page before deciding not to index it. Also, this is a WordPress specific issue because the Blogger robots.txt already blocks search engines from crawling the results pages.

Related: CSS for Google Custom Search

Soft 404 Errors - Google Webmaster Tools


The story, Always Block Google from Accessing your Site’s Search Results, was originally published at Digital Inspiration by Amit Agarwal on 15/04/2015 under SEO, WordPress, Internet.

Host your Podcasts on Google Drive for Free

If you are looking to publish your own audio or video podcasts, you’ll need to rent space on a public web server to host the MP3 or MP4 files of your podcast. When someone subscribes to your podcast feed in iTunes, or another podcasting app, the podcast media files will download from this server to the user’s computer or mobile phone.

Where do you host the podcast files? If you have signed up for a web hosting account, you can use the rented space to host the podcast files else you may consider using Google Drive – it is free, you can host both audio and video podcast files and there are no known bandwidth restrictions.

Google Drive for Podcast Hosting

Free Podcast Hosting on Google Drive

Google Drive offers web hosting and you can make use of this feature to host to host your own podcast show in two minutes.

Essentially, what we will do is create a new folder in Google Drive to store the podcast files and then make this folder public so anyone on the web can download episode files stored in this Google Drive folder. Any audio or video file that you upload to this Google Drive folder will have a public URL that you can use in your Podcast XML feed for publishing on iTunes.

  1. Click here and authorize the Google Script so that it can create a new public folder in your Google Drive for hosting the files.
  2. You’ll now be provide a link to the new Google Drive folder. Open the link and upload one or more podcast files – see sample folder.
  3. Next follow step #2 of the wizard and you should see a list of the uploaded podcast files and their public URLs like in this example. Copy-paste the file URLs in your iTunes RSS feed.

The podcasts will be served from googledrive.com.

Other than podcast episodes, you may also upload art work, logos and other image files that may be required for submitting your Podcast into the iTunes store.

Also see: How to Publish your own Podcast

Podcasts Files URLs on Google Drive

If you have created a podcast folder in Google Drive already and only need the URLs of the files for adding to your podcast RSS feed, here’s the trick. Make a note of the folder ID of podcast folder in Google Drive and add to the URL below (replace XYZ with your folder ID). Do make sure that privacy of your Google Drive folder is “anyone with a link can view” for people to be able to access your podcasts.

https://script.google.com/macros/s/AKfycbwLWQN93b13R5EBXetnDhc_NzUFg1Vyo5eAVN_0rsR_199uMYFG/exec?folderID=XYZ

The story, Host your Podcasts on Google Drive for Free, was originally published at Digital Inspiration by Amit Agarwal on 11/04/2015 under Google Drive, Podcasts, Internet.