<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>vijayjoshi.org &#187; Google</title>
	<atom:link href="http://www.vijayjoshi.org/tag/google/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.vijayjoshi.org</link>
	<description>php &#124; javascript &#124; ajax &#124; and all things web</description>
	<lastBuildDate>Sun, 20 Nov 2011 15:24:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>PHP class for expanding and shortening URLs using Google URL shortener API</title>
		<link>http://www.vijayjoshi.org/2011/01/21/php-class-for-expanding-and-shortening-urls-using-google-url-shortener-api/</link>
		<comments>http://www.vijayjoshi.org/2011/01/21/php-class-for-expanding-and-shortening-urls-using-google-url-shortener-api/#comments</comments>
		<pubDate>Thu, 20 Jan 2011 19:55:14 +0000</pubDate>
		<dc:creator>Vijay Joshi</dc:creator>
				<category><![CDATA[JSON]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://www.vijayjoshi.org/?p=1156</guid>
		<description><![CDATA[
			
				
			
		
I have combined the 2 previous posts for expanding and shortening goo.gl URLs and have created a small class for it. Below is the download link for the class.

Expanding a URL
&#60;?php
include('GAPIClass.php');

$objAPI = new GAPIClass('your_api_key_here');
$result = $objAPI-&#62;expand('http://goo.gl/WlFX');
if(FALSE === $result)
{
	echo $objAPI-&#62;error;
}
else
{
	echo 'Long URL:'.$result;
}
?&#62;
Shorten A URL
&#60;?php
include('GAPIClass.php');

$objAPI = new GAPIClass('your_api_key_here');
$result = $objAPI-&#62;shorten('https://www.packtpub.com/php-jquery-cookbook-to-create-interactive-web-applications/book');

if(FALSE === $result)
{
	echo $objAPI-&#62;error;
}
else
{
	echo 'Short URL:'.$result;
}
?&#62;
As I have mentioned earlier that Google recommends ...]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop --><!-- End Shareaholic LikeButtonSetTop --><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.vijayjoshi.org%2F2011%2F01%2F21%2Fphp-class-for-expanding-and-shortening-urls-using-google-url-shortener-api%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.vijayjoshi.org%2F2011%2F01%2F21%2Fphp-class-for-expanding-and-shortening-urls-using-google-url-shortener-api%2F&amp;source=v08i&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>I have combined the 2 previous posts for <a href="http://www.vijayjoshi.org/2011/01/12/using-php-and-curl-to-expand-urls-using-google-url-shortener-api/">expanding </a>and <a href="http://www.vijayjoshi.org/2011/01/12/php-shorten-urls-using-google-url-shortener-api/">shortening</a> goo.gl URLs and have created a small class for it. Below is the download link for the class.</p>
<p><a href="http://www.vijayjoshi.org/examples/GAPIClass.php.txt"><img class="aligncenter size-full wp-image-451" title="Download GAPIClass" src="http://www.vijayjoshi.org/wp-content/uploads/download.png" alt="Download GAPIClass" width="180" height="45" /></a></p>
<h4><span style="text-decoration: underline;">Expanding a URL</span></h4>
<pre class="brush:php">&lt;?php
include('GAPIClass.php');

$objAPI = new GAPIClass('your_api_key_here');
$result = $objAPI-&gt;expand('http://goo.gl/WlFX');
if(FALSE === $result)
{
	echo $objAPI-&gt;error;
}
else
{
	echo 'Long URL:'.$result;
}
?&gt;</pre>
<h4><span style="text-decoration: underline;">Shorten A URL</span></h4>
<pre class="brush:php">&lt;?php
include('GAPIClass.php');

$objAPI = new GAPIClass('your_api_key_here');
$result = $objAPI-&gt;shorten('https://www.packtpub.com/php-jquery-cookbook-to-create-interactive-web-applications/book');

if(FALSE === $result)
{
	echo $objAPI-&gt;error;
}
else
{
	echo 'Short URL:'.$result;
}
?&gt;</pre>
<p>As I have mentioned earlier that Google recommends an API key. The class has a flag variable called <em><strong>keyWarning</strong></em>. By default it is true and it will show the following warning message if you do not pass an API key while instantiating the class:</p>
<blockquote><p>Currently you are not using an API key. It is recommended that you use one. <a href="http://code.google.com/apis/urlshortener/v1/authentication.html#key">Click here to learn more about the API key</a></p></blockquote>
<p>To turn this notification off, just use this line:</p>
<pre class="brush:php">$objAPI-&gt;keyWarning = false;</pre>
<p><a href="http://www.vijayjoshi.org/examples/GAPIClass.php.txt"><img class="aligncenter size-full wp-image-451" title="Download GAPIClass" src="http://www.vijayjoshi.org/wp-content/uploads/download.png" alt="Download GAPIClass" width="180" height="45" /></a></p>
<div class="shr-publisher-1156"></div><!-- Start Shareaholic LikeButtonSetBottom --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:right;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.vijayjoshi.org%2F2011%2F01%2F21%2Fphp-class-for-expanding-and-shortening-urls-using-google-url-shortener-api%2F' data-shr_title='PHP+class+for+expanding+and+shortening+URLs+using+Google+URL+shortener+API'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom -->]]></content:encoded>
			<wfw:commentRss>http://www.vijayjoshi.org/2011/01/21/php-class-for-expanding-and-shortening-urls-using-google-url-shortener-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP: Shorten URLs using Google URL shortener API</title>
		<link>http://www.vijayjoshi.org/2011/01/12/php-shorten-urls-using-google-url-shortener-api/</link>
		<comments>http://www.vijayjoshi.org/2011/01/12/php-shorten-urls-using-google-url-shortener-api/#comments</comments>
		<pubDate>Wed, 12 Jan 2011 06:27:42 +0000</pubDate>
		<dc:creator>Vijay Joshi</dc:creator>
				<category><![CDATA[JSON]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://www.vijayjoshi.org/?p=1093</guid>
		<description><![CDATA[
			
				
			
		
In past 2 posts you saw how short URLs can be expanded using the Google URL shortener API. This post shows how URLs can be shortened using this API.
API key is not mandatory for test purpose. Use this link to get an API key.
For shortening URLs, 2 points must be noted. First, a HTTP POST is required and the post data ...]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop --><!-- End Shareaholic LikeButtonSetTop --><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.vijayjoshi.org%2F2011%2F01%2F12%2Fphp-shorten-urls-using-google-url-shortener-api%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.vijayjoshi.org%2F2011%2F01%2F12%2Fphp-shorten-urls-using-google-url-shortener-api%2F&amp;source=v08i&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>In past 2 posts you saw how short URLs can be expanded using the Google URL shortener API. This post shows how URLs can be shortened using this API.</p>
<p>API key is not mandatory for test purpose. <a title="Get API Key" href="http://code.google.com/apis/console/">Use this link to get an API key.</a></p>
<p><a title="Get API Key" href="http://code.google.com/apis/console/"></a>For shortening URLs, 2 points must be noted. First, a HTTP POST is required and the post data should be in JSON format. Here is the code:</p>
<pre class="brush:php">//This is the URL you want to shorten
$longUrl = 'https://www.packtpub.com/php-jquery-cookbook-to-create-interactive-web-applications/book';
$apiKey = 'your_api_key_here';
//Get API key from : http://code.google.com/apis/console/

$postData = array('longUrl' =&gt; $longUrl, 'key' =&gt; $apiKey);
$jsonData = json_encode($postData);

$curlObj = curl_init();

curl_setopt($curlObj, CURLOPT_URL, 'https://www.googleapis.com/urlshortener/v1/url');
curl_setopt($curlObj, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curlObj, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curlObj, CURLOPT_HEADER, 0);
curl_setopt($curlObj, CURLOPT_HTTPHEADER, array('Content-type:application/json'));
curl_setopt($curlObj, CURLOPT_POST, 1);
curl_setopt($curlObj, CURLOPT_POSTFIELDS, $jsonData);

$response = curl_exec($curlObj);

//change the response json string to object
$json = json_decode($response);

curl_close($curlObj);

echo 'Shortened URL is: '.$json-&gt;id;</pre>
<p>Here is the JSON response from Google:</p>
<pre class="brush:js">{
 "kind": "urlshortener#url",
 "id": "http://goo.gl/lBfOH",
 "longUrl": "https://www.packtpub.com/php-jquery-cookbook-to-create-interactive-web-applications/book"
}</pre>
<p>You can also read these:</p>
<ul>
<li><a href="http://www.vijayjoshi.org/2011/01/21/php-class-for-expanding-and-shortening-urls-using-google-url-shortener-api/">PHP class for expanding and shortening URLs using Google URL shortener API</a></li>
<li><a href="http://www.vijayjoshi.org/2011/01/12/using-php-and-curl-to-expand-urls-using-google-url-shortener-api/">Expanding URLs using cURL</a></li>
<li><a href="http://www.vijayjoshi.org/2011/01/11/php-expanding-urls-using-google-url-shortener-api/">Expand URLs using file_get_contents</a></li>
</ul>
<div class="shr-publisher-1093"></div><!-- Start Shareaholic LikeButtonSetBottom --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:right;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.vijayjoshi.org%2F2011%2F01%2F12%2Fphp-shorten-urls-using-google-url-shortener-api%2F' data-shr_title='PHP%3A+Shorten+URLs+using+Google+URL+shortener+API'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom -->]]></content:encoded>
			<wfw:commentRss>http://www.vijayjoshi.org/2011/01/12/php-shorten-urls-using-google-url-shortener-api/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>Using PHP and cURL to expand URLs using Google URL shortener API</title>
		<link>http://www.vijayjoshi.org/2011/01/12/using-php-and-curl-to-expand-urls-using-google-url-shortener-api/</link>
		<comments>http://www.vijayjoshi.org/2011/01/12/using-php-and-curl-to-expand-urls-using-google-url-shortener-api/#comments</comments>
		<pubDate>Tue, 11 Jan 2011 18:49:03 +0000</pubDate>
		<dc:creator>Vijay Joshi</dc:creator>
				<category><![CDATA[JSON]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://www.vijayjoshi.org/?p=1082</guid>
		<description><![CDATA[
			
				
			
		
Yesterday I wrote this post explaining how short goo.gl URLs can be expanded using the newly launched goo.gl API. In that code we used php function get_file_contents to get the response from API.
How about implementing the same functionality using cURL now? If you have libcurl support installed with PHP, you are ready to use the cURL functions of PHP.
Here is ...]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop --><!-- End Shareaholic LikeButtonSetTop --><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.vijayjoshi.org%2F2011%2F01%2F12%2Fusing-php-and-curl-to-expand-urls-using-google-url-shortener-api%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.vijayjoshi.org%2F2011%2F01%2F12%2Fusing-php-and-curl-to-expand-urls-using-google-url-shortener-api%2F&amp;source=v08i&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Yesterday I wrote <a href="http://www.vijayjoshi.org/2011/01/11/php-expanding-urls-using-google-url-shortener-api/">this post</a> explaining how short <a title="Google URL shortener" href="http://goo.gl">goo.gl</a> URLs can be expanded using the newly launched goo.gl API. In that code we used php function <strong><em>get_file_contents</em></strong> to get the response from API.</p>
<p>How about implementing the same functionality using cURL now? If you have<strong> libcurl</strong> support installed with PHP, you are ready to use the cURL functions of PHP.</p>
<p>Here is the code. API key is not mandatory but Google recommends that you use one. It will increase your per day usage limits too. <a title="Google API key" href="http://code.google.com/apis/console/">Follow this link</a> to get an API key.</p>
<pre class="brush:php">$shortUrl = 'http://goo.gl/WlFX';
$apiKey = 'your_api_key_here';

$curlObj = curl_init();

curl_setopt($curlObj, CURLOPT_URL, 'https://www.googleapis.com/urlshortener/v1/url?shortUrl='.$shortUrl.'&amp;key='.$apiKey);
curl_setopt($curlObj, CURLOPT_HEADER, 0);
curl_setopt($curlObj, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curlObj, CURLOPT_SSL_VERIFYPEER, 0);

$response = curl_exec($curlObj);

curl_close($curlObj);
$json = json_decode($response);

if($json-&gt;status === "OK")
{
	echo $json-&gt;longUrl;
}
else
{
	echo 'Bad luck.';
}</pre>
<p>And here is the full JSON response:</p>
<pre class="brush:js">{
 "kind": "urlshortener#url",
 "id": "http://goo.gl/WlFX",
 "longUrl": "https://www.packtpub.com/php-jquery-cookbook-to-create-interactive-web-applications/book",
 "status": "OK"
}</pre>
<p>Am important point to note. Since the API is on https, set the value for <strong><em>CURLOPT_SSL_VERIFYPEER</em></strong> to false. This will stop cURL from verifying the SSL certificate.</p>
<div class="shr-publisher-1082"></div><!-- Start Shareaholic LikeButtonSetBottom --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:right;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.vijayjoshi.org%2F2011%2F01%2F12%2Fusing-php-and-curl-to-expand-urls-using-google-url-shortener-api%2F' data-shr_title='Using+PHP+and+cURL+to+expand+URLs+using+Google+URL+shortener+API'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom -->]]></content:encoded>
			<wfw:commentRss>http://www.vijayjoshi.org/2011/01/12/using-php-and-curl-to-expand-urls-using-google-url-shortener-api/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>PHP: Expanding URLs using Google URL shortener API</title>
		<link>http://www.vijayjoshi.org/2011/01/11/php-expanding-urls-using-google-url-shortener-api/</link>
		<comments>http://www.vijayjoshi.org/2011/01/11/php-expanding-urls-using-google-url-shortener-api/#comments</comments>
		<pubDate>Tue, 11 Jan 2011 08:22:12 +0000</pubDate>
		<dc:creator>Vijay Joshi</dc:creator>
				<category><![CDATA[JSON]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://www.vijayjoshi.org/?p=1073</guid>
		<description><![CDATA[
			
				
			
		
Yesterday. google launched an API for its URL shortening service http://goo.gl. Using this API developers will be able to expand/shorten URLs and get a user&#8217;s analytics and history programmaticaly.
Below is a small snippet of PHP code that expands a short URL. The response comes in JSON format, so we will use the json_decode function to convert it to object.
$shortUrl = 'http://goo.gl/WlFX';
$response ...]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop --><!-- End Shareaholic LikeButtonSetTop --><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.vijayjoshi.org%2F2011%2F01%2F11%2Fphp-expanding-urls-using-google-url-shortener-api%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.vijayjoshi.org%2F2011%2F01%2F11%2Fphp-expanding-urls-using-google-url-shortener-api%2F&amp;source=v08i&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Yesterday. google <a title="Google URL shortener API" href="http://googlecode.blogspot.com/2011/01/google-url-shortener-gets-api.html">launched an API</a> for its URL shortening service <a href="http://goo.gl">http://goo.gl</a>. Using this API developers will be able to expand/shorten URLs and get a user&#8217;s analytics and history programmaticaly.</p>
<p>Below is a small snippet of PHP code that expands a short URL. The response comes in JSON format, so we will use the <strong><em>json_decode</em></strong> function to convert it to object.</p>
<pre class="brush:php">$shortUrl = 'http://goo.gl/WlFX';
$response = file_get_contents('https://www.googleapis.com/urlshortener/v1/url?shortUrl='.$shortUrl);
$json = json_decode($response);

if($json-&gt;status === "OK")
{
	echo $json-&gt;longUrl;
}
else
{
	echo 'Bad luck.';
}</pre>
<p>Here is the full successfull response in JSON format.</p>
<pre class="brush:js">{
 "kind": "urlshortener#url",
 "id": "http://goo.gl/WlFX",
 "longUrl": "https://www.packtpub.com/php-jquery-cookbook-to-create-interactive-web-applications/book",
 "status": "OK"
}</pre>
<p>Finally, note that Google recommends the use of an API key. You can <a title="Google API Key" href="http://code.google.com/apis/console-help/#UsingKeys">visit this link</a> to read more about key and get a key from <a href="http://code.google.com/apis/console/">this link</a>.</p>
<p>After using the key, your URL will look like the following:</p>
<pre class="brush:php">$shortUrl = 'http://goo.gl/WlFX';
$apiKey = 'your_key_here';
$response = file_get_contents('https://www.googleapis.com/urlshortener/v1/url?shortUrl='.$shortUrl.'&amp;key='.$apiKey);</pre>
<div class="shr-publisher-1073"></div><!-- Start Shareaholic LikeButtonSetBottom --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:right;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.vijayjoshi.org%2F2011%2F01%2F11%2Fphp-expanding-urls-using-google-url-shortener-api%2F' data-shr_title='PHP%3A+Expanding+URLs+using+Google+URL+shortener+API'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom -->]]></content:encoded>
			<wfw:commentRss>http://www.vijayjoshi.org/2011/01/11/php-expanding-urls-using-google-url-shortener-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Goggle&#8217;s new book on browsers and web &#8211; 20 things I learned</title>
		<link>http://www.vijayjoshi.org/2010/11/19/goggles-new-book-on-browsers-and-web-20-things-i-learned/</link>
		<comments>http://www.vijayjoshi.org/2010/11/19/goggles-new-book-on-browsers-and-web-20-things-i-learned/#comments</comments>
		<pubDate>Fri, 19 Nov 2010 07:35:16 +0000</pubDate>
		<dc:creator>Vijay Joshi</dc:creator>
				<category><![CDATA[Resources]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://www.vijayjoshi.org/?p=632</guid>
		<description><![CDATA[
			
				
			
		

Google has created a new interactive book called &#8220;20 things I learned about browsers and the web&#8220;. It has 20 small chapters each answering a topic related to web like browsers, html, privacy, security etc.
This book itself has been created in HTML 5 and has both mouse and keyboard navigation enabled. Moreover, after it loads once, you can read it ...]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop --><!-- End Shareaholic LikeButtonSetTop --><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.vijayjoshi.org%2F2010%2F11%2F19%2Fgoggles-new-book-on-browsers-and-web-20-things-i-learned%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.vijayjoshi.org%2F2010%2F11%2F19%2Fgoggles-new-book-on-browsers-and-web-20-things-i-learned%2F&amp;source=v08i&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-631" style="border: 0pt none;" title="20 Things I Learned" src="http://www.vijayjoshi.org/wp-content/uploads/20-Things-I-Learned.png" alt="20 Things I Learned" width="559" height="377" /></p>
<p>Google has created a new interactive book called &#8220;<strong><a title="20 Things I learned" href="http://www.20thingsilearned.com/">20 things I learned about browsers and the web</a></strong>&#8220;. It has 20 small chapters each answering a topic related to web like browsers, html, privacy, security etc.</p>
<p>This book itself has been created in HTML 5 and has both mouse and keyboard navigation enabled. Moreover, after it loads once, you can read it offline.</p>
<p>Written by the chrome team and with beautiful illustrations by <a href="http://christophniemann.com">Christoph Niemann</a>,this book is a delight to read. Its language is very simple and catchy and users without any technical background can also read it without worrying about technical jargons.</p>
<p>You can read the book at <a title="20 Things I learned" href="http://www.20thingsilearned.com/">http://www.20thingsilearned.com/</a>. For the lazy below are direct links for chapters.</p>
<p><a href="http://www.20thingsilearned.com/what-is-the-internet/1">Internet</a><br />
<a title="Cloud Computing" href="http://www.20thingsilearned.com/cloud-computing/1">Cloud Computing</a><br />
<a title="Web Apps" href="http://www.20thingsilearned.com/web-apps/1">Web Apps</a><br />
<a href="http://www.20thingsilearned.com/html/1">HTML, JS, CSS and more</a><br />
<a title="HTML5" href="http://www.20thingsilearned.com/html5/1">HTML5</a><br />
<a href="http://www.20thingsilearned.com/threed/1">3d in a Browser</a><br />
<a href="http://www.20thingsilearned.com/old-vs-new-browsers/1">A browser madrigal or old vs modern browsers </a><br />
<a href="http://www.20thingsilearned.com/plugins/1">Plug-ins</a><br />
<a href="http://www.20thingsilearned.com/browser-extensions/1">Browser Extensions</a><br />
<a href="http://www.20thingsilearned.com/sync/1">Synchronizing the Browser</a><br />
<a href="http://www.20thingsilearned.com/browser-cookies/1">Cookies</a><br />
<a href="http://www.20thingsilearned.com/browser-privacy/1">Browsers and Privacy</a><br />
<a href="http://www.20thingsilearned.com/malware/1">Malware, Phishing and Security Risks</a><br />
<a href="http://www.20thingsilearned.com/browser-protection/1">How modern browsers protect you from malware and phishing</a><br />
<a href="http://www.20thingsilearned.com/url/1">Using web addresses to stay safe</a><br />
<a href="http://www.20thingsilearned.com/dns/1">IP addresses and DNS</a><br />
<a href="http://www.20thingsilearned.com/identity/1">Validating identities online</a><br />
<a href="http://www.20thingsilearned.com/page-load/1">Evolving to a faster web</a><br />
<a title="Open Source" href="http://www.20thingsilearned.com/open-source/1">Open Source and browsers</a><br />
<a href="http://www.20thingsilearned.com/conclusion/1">Conclusion: 19 things later</a></p>
<div class="shr-publisher-632"></div><!-- Start Shareaholic LikeButtonSetBottom --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:right;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.vijayjoshi.org%2F2010%2F11%2F19%2Fgoggles-new-book-on-browsers-and-web-20-things-i-learned%2F' data-shr_title='Goggle%27s+new+book+on+browsers+and+web+-+20+things+I+learned'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom -->]]></content:encoded>
			<wfw:commentRss>http://www.vijayjoshi.org/2010/11/19/goggles-new-book-on-browsers-and-web-20-things-i-learned/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to dynamically load the Google Maps javascript API (On demand loading)</title>
		<link>http://www.vijayjoshi.org/2010/01/19/how-to-dynamically-load-the-google-maps-javascript-api-on-demand-loading/</link>
		<comments>http://www.vijayjoshi.org/2010/01/19/how-to-dynamically-load-the-google-maps-javascript-api-on-demand-loading/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 10:21:25 +0000</pubDate>
		<dc:creator>Vijay Joshi</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[google map]]></category>

		<guid isPermaLink="false">http://www.vijayjoshi.org/?p=481</guid>
		<description><![CDATA[
			
				
			
		
Normally google maps js api is loaded at the time of page load via a script tag with src set. If map is not so major feature of your application or you want to reduce page download time, you can defer loading the javascript load it when required.
This is a javascript pattern called On demand javascript.
Bottomline is: &#8220;JavaScript being pulled ...]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop --><!-- End Shareaholic LikeButtonSetTop --><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.vijayjoshi.org%2F2010%2F01%2F19%2Fhow-to-dynamically-load-the-google-maps-javascript-api-on-demand-loading%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.vijayjoshi.org%2F2010%2F01%2F19%2Fhow-to-dynamically-load-the-google-maps-javascript-api-on-demand-loading%2F&amp;source=v08i&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Normally google maps js api is loaded at the time of page load via a script tag with src set. If map is not so major feature of your application or you want to reduce page download time, you can defer loading the javascript load it when required.<br />
This is a javascript pattern called <a title="On demand javascript" href="http://ajaxpatterns.org/On-Demand_Javascript" target="_self">On demand javascript</a>.</p>
<p>Bottomline is: <a title="On demand javascript summary" href="http://ajaxpatterns.org/On-Demand_Javascript#In_A_Blink" target="_self">&#8220;JavaScript being pulled from the server after the page has loaded</a>&#8220;.</p>
<p>Google maps provide the facility to dynamically load the api when required.  So no need to load it at the time of page load. I will present an example here which will load the maps api on click of a button. Here is how to do it.</p>
<div class="mceTemp">
<dl id="attachment_453" class="wp-caption alignnone" style="width: 190px;">
<dt class="wp-caption-dt"><a title="Google maps ondemand loading demo" href="http://www.vijayjoshi.org/examples/gmap.html" target="_blank"><img class="size-full wp-image-453" style="border:0px" title="demo" src="http://www.vijayjoshi.org/wp-content/uploads/demo.png" alt="View Demo" width="180" height="45" /></a></dt>
</dl>
</div>
<p>As said above, <strong>DO NOT </strong>load any javascript api from Google using script tags. Instead we will use a button.</p>
<pre class="brush:html">
<input id="loadButton" onclick="loadAPI();" type="button" value="Load maps api" /></pre>
<p>To load the api onclick of this button, create a script tag, set its src and append it to document. This will load the Google AJAX API required to load other google APIs.</p>
<pre class="brush:js">function loadAPI()
{
    var script = document.createElement("script");
    script.src = "http://www.google.com/jsapi?key=YOUR_API_KEY_HERE&amp;callback=loadMaps";
    script.type = "text/javascript";
    document.getElementsByTagName("head")[0].appendChild(script);
}</pre>
<p>Do not forget to replace the API key above with your API key. (You can get an API key by <a title="Google maps API key" href="http://code.google.com/apis/maps/signup.html" target="_self">signing up here</a>)</p>
<p><strong>Important:</strong> Note the <strong>callback=loadMaps</strong> in script.src. This is the thing doing all the magic. It tells which function to call when AJAX API has loaded. In above case it will call loadMaps function. So, let us define that.</p>
<pre class="brush:js">function loadMaps()
{
    //AJAX API is loaded successfully. Now lets load the maps api
    google.load("maps", "2", {"callback" : mapLoaded});
}</pre>
<p>loadMaps function uses load method of google AJAX API to load a specific api. Above we loaded &#8220;maps&#8221; version &#8220;2&#8243;. Again callback is the name of function that will be called when maps api is loaded. callback function will be called only when the maps api is loaded successfully.</p>
<pre class="brush:js">function mapLoaded()
{
    //here you can be sure that maps api has loaded
    //and you can now proceed to render the map on page
    if (GBrowserIsCompatible())
    {
        var map = new GMap2(document.getElementById("map_canvas"));
        map.setMapType(G_SATELLITE_MAP);
        map.setCenter(new GLatLng(28.631466106808542, 77.07853317260742), 5);
    }
}</pre>
<p>That is all to it. I have created a demo along these lines. View source for code. <a title="Google maps ondemand loading demo" href="http://www.vijayjoshi.org/examples/gmap.html" target="_blank"><strong>You can see it here</strong></a>.</p>
<div class="shr-publisher-481"></div><!-- Start Shareaholic LikeButtonSetBottom --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:right;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.vijayjoshi.org%2F2010%2F01%2F19%2Fhow-to-dynamically-load-the-google-maps-javascript-api-on-demand-loading%2F' data-shr_title='How+to+dynamically+load+the+Google+Maps+javascript+API+%28On+demand+loading%29'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom -->]]></content:encoded>
			<wfw:commentRss>http://www.vijayjoshi.org/2010/01/19/how-to-dynamically-load-the-google-maps-javascript-api-on-demand-loading/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>New Google website translator gadget</title>
		<link>http://www.vijayjoshi.org/2009/10/06/new-google-website-translator-gadget/</link>
		<comments>http://www.vijayjoshi.org/2009/10/06/new-google-website-translator-gadget/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 10:26:00 +0000</pubDate>
		<dc:creator>Vijay Joshi</dc:creator>
				<category><![CDATA[Misc]]></category>
		<category><![CDATA[Resources]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://www.vijayjoshi.org/?p=415</guid>
		<description><![CDATA[
			
				
			
		
It was International Translation Day on 30th September and Google gifted users a new version of their website translator gadget.
From usability point of view this version is far more better then previous one and supports 51 languages. Earlier version of this gadget was a bit ugly in the manner it worked. It used to load the entire page in an ...]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop --><!-- End Shareaholic LikeButtonSetTop --><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.vijayjoshi.org%2F2009%2F10%2F06%2Fnew-google-website-translator-gadget%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.vijayjoshi.org%2F2009%2F10%2F06%2Fnew-google-website-translator-gadget%2F&amp;source=v08i&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>It was International Translation Day on 30th September and Google gifted users a new version of their website translator gadget.</p>
<p>From usability point of view this version is far more better then previous one and supports 51 languages. Earlier version of this gadget was a bit ugly in the manner it worked. It used to load the entire page in an iFrame which appeared like a full page reload every time user changed the language. It seems that the new gadget translates the page of text asynchronously. There is a progress indicator too which shows percentage of translation done. It is certainly faster then previous version.</p>
<p>There is one more feature to it. <a title="Google website translator gadget" href="http://googleblog.blogspot.com/2009/09/translate-your-website-with-google.html" target="_self">According to google</a> if the language of a users browser visiting your page is different than the language of your page, they will be prompted to automatically translate the page in their language.</p>
<p>To use the gadget in your website just visit google at <a title="Google translator" href="http://translate.google.com/translate_tools" target="_blank">http://translate.google.com/translate_tools</a> and follow these 3 steps:</p>
<ul>
<li>Select the language of your website.</li>
<li>Select languages in which you want the translation.</li>
<li>Copy the generated code in your webpages and you are ready to go.</li>
</ul>
<p>Although the translation is not 100% correct, it is a great help to read and understand text of foreign languages.</p>
<div class="shr-publisher-415"></div><!-- Start Shareaholic LikeButtonSetBottom --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:right;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.vijayjoshi.org%2F2009%2F10%2F06%2Fnew-google-website-translator-gadget%2F' data-shr_title='New+Google+website+translator+gadget'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom -->]]></content:encoded>
			<wfw:commentRss>http://www.vijayjoshi.org/2009/10/06/new-google-website-translator-gadget/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Bookmarklet For TinyURL and Flickr Search</title>
		<link>http://www.vijayjoshi.org/2009/04/01/bookmarklet-for-tinyurl-and-flickr-search/</link>
		<comments>http://www.vijayjoshi.org/2009/04/01/bookmarklet-for-tinyurl-and-flickr-search/#comments</comments>
		<pubDate>Wed, 01 Apr 2009 05:20:06 +0000</pubDate>
		<dc:creator>Vijay Joshi</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://www.vijayjoshi.org/?p=319</guid>
		<description><![CDATA[
			
				
			
		
Bookmarklets have become common over the internet nowadays. They are helpful too. Bookmarklets are like small tools for specific purposes.
They are relatively new things for me. But I found them pretty useful.
Wiktionary defines bookmarklets as &#8220;A small piece of JavaScript code stored as a URL within a bookmark.&#8221;
Users can drag this piece of code onto their browser toolbars. After that ...]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop --><!-- End Shareaholic LikeButtonSetTop --><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.vijayjoshi.org%2F2009%2F04%2F01%2Fbookmarklet-for-tinyurl-and-flickr-search%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.vijayjoshi.org%2F2009%2F04%2F01%2Fbookmarklet-for-tinyurl-and-flickr-search%2F&amp;source=v08i&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Bookmarklets have become common over the internet nowadays. They are helpful too. Bookmarklets are like small tools for specific purposes.</p>
<p>They are relatively new things for me. But I found them pretty useful.</p>
<p>Wiktionary defines bookmarklets as &#8220;A small piece of JavaScript code stored as a URL within a bookmark.&#8221;<br />
Users can drag this piece of code onto their browser toolbars. After that bookmarklet is ready to use. Just click on it from the toolbar when you are on a webpage.</p>
<p>Bookmarklets are supposed to do one click functions. I thought why not create some. Though I created several to experiment, only 2 of those are worth sharing(At least I think so). Others perform weird functions like disabling css of a page, making all images on the page invisible etc etc. If you want code for these also, just drop a message below.</p>
<p>Here is the first one that searches flickr for any term you select on any web page. If you do not select any text, it will prompt you for keyword.(Nonsense??? I know that). Slight modification can make it google search or dictionary search or whatever search you wish.</p>
<p><a title="Flickr Bookmarklet" href="javascript:sel=window.getSelection();wrd=(sel==''?prompt('Enter the search term'):sel);if(wrd)window.open('http://www.flickr.com/search/?q='+wrd);void(0);" target="_self"><strong>Search Flickr</strong></a></p>
<p>The second one is slightly more useful.<br />
Just click it and it will create tinyURL of that page you are visiting. You can then post it to twitter or share with friends(Cool, isn&#8217;t it).</p>
<p><a title="TinyURL Bookmarklet" href="javascript:sel=document.location.href;lnk=(sel==''?prompt('Enter the URL you wish to make tinyurl:'):sel);if(lnk)window.open('http://tinyurl.com/api-create.php?url='+lnk);void(0);" target="_self"><strong>Create TinyURL</strong></a></p>
<p><a title="TinyURL Bookmarklet" href="javascript:sel=document.location.href;lnk=(sel==''?prompt('Enter the URL you wish to make tinyurl:'):sel);if(lnk)window.open('http://tinyurl.com/api-create.php?url='+lnk);void(0);" target="_self"><strong></strong></a><br />
Why wait now, Drag these to your browsers toolbar and have fun.</p>
<p><em>Give this  article a Thumbs-up on Stumbleupon if you liked it.</em></p>
<div class="shr-publisher-319"></div><!-- Start Shareaholic LikeButtonSetBottom --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:right;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.vijayjoshi.org%2F2009%2F04%2F01%2Fbookmarklet-for-tinyurl-and-flickr-search%2F' data-shr_title='Bookmarklet+For+TinyURL+and+Flickr+Search'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom -->]]></content:encoded>
			<wfw:commentRss>http://www.vijayjoshi.org/2009/04/01/bookmarklet-for-tinyurl-and-flickr-search/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google adds To-do list and SMS to Gmail</title>
		<link>http://www.vijayjoshi.org/2008/12/11/to-do-list-and-sms-in-gmail/</link>
		<comments>http://www.vijayjoshi.org/2008/12/11/to-do-list-and-sms-in-gmail/#comments</comments>
		<pubDate>Thu, 11 Dec 2008 05:21:51 +0000</pubDate>
		<dc:creator>Vijay Joshi</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://www.vijayjoshi.org/?p=190</guid>
		<description><![CDATA[
			
				
			
		
Google has been adding various new features like superstars, mouse gestures etc to gmail via gmail labs. Recent addition in this series are To-do lists and SMS facility. To-do lists which are called tasks in gmail were added on Monday.
Tasks allow you to create to-do lists and manage them. Since to-do lists are used widely by users, no doubt tasks ...]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop --><!-- End Shareaholic LikeButtonSetTop --><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.vijayjoshi.org%2F2008%2F12%2F11%2Fto-do-list-and-sms-in-gmail%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.vijayjoshi.org%2F2008%2F12%2F11%2Fto-do-list-and-sms-in-gmail%2F&amp;source=v08i&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Google has been adding various new features like superstars, mouse gestures etc to gmail via gmail labs. Recent addition in this series are To-do lists and SMS facility. To-do lists which are called tasks in gmail were added on Monday.</p>
<p>Tasks allow you to create to-do lists and manage them. Since to-do lists are used widely by users, no doubt tasks will be a success. Add to this the fact that generally average users keep their mail window open all of the time while surfing the web.</p>
<p>To use tasks, enable them through Settings-&gt;labs-&gt;tasks.</p>
<p>After that a link for tasks will appear below the Contacts link. Clicking it will open a window on the right similar to the chat window. On bottom right there is a menu for adding new tasks and on left another menu for arranging task items. There is also a switch list menu at extreme right on bottom which lets you switch among lists and create/delete new lists.</p>
<p>Keyboard shortcuts like Ctrl+Up and Ctrl+Down can be used to move tasks up/down in the list. Shift+Up and Shift+Down can be used to toggle details of a task where you can enter its due date as well as notes.<br />
Also remember that labs feature is only available with Internet Explorer 7.0+, Firefox 2.0+, Safari 3.0+, and Google Chrome currently. So, hard luck IE6 users.</p>
<p>Another labs feature is SMS facility from right inside gmail. Enable it from Settings-&gt;labs-&gt;<span class="jwjW1c">Text Messaging (SMS) in Chat</span>. To send an SMS just fill the phone number in the Search/Invite text box of chat window and click &#8220;Send SMS&#8221;. This feature is currently available for US phones only. I am eagerly waiting for this to be launched in India.</p>
<div class="shr-publisher-190"></div><!-- Start Shareaholic LikeButtonSetBottom --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:right;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.vijayjoshi.org%2F2008%2F12%2F11%2Fto-do-list-and-sms-in-gmail%2F' data-shr_title='Google+adds+To-do+list+and+SMS+to+Gmail'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom -->]]></content:encoded>
			<wfw:commentRss>http://www.vijayjoshi.org/2008/12/11/to-do-list-and-sms-in-gmail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google launches voice and video chat for gmail</title>
		<link>http://www.vijayjoshi.org/2008/11/12/google-launches-voice-and-video-chat-for-gmail/</link>
		<comments>http://www.vijayjoshi.org/2008/11/12/google-launches-voice-and-video-chat-for-gmail/#comments</comments>
		<pubDate>Wed, 12 Nov 2008 06:48:28 +0000</pubDate>
		<dc:creator>Vijay Joshi</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Google videochat]]></category>

		<guid isPermaLink="false">http://www.vijayjoshi.org/?p=123</guid>
		<description><![CDATA[
			
				
			
		
You love gmail. Don&#8217;t you. Having so much cool features within one application is great. Now you will love it even more. Today Google is launching voice and video chat within gmail. You will now be able to talk with your friends or video chat right from gmail chat window.
Remember earlier times when you used to have one application for ...]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop --><!-- End Shareaholic LikeButtonSetTop --><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.vijayjoshi.org%2F2008%2F11%2F12%2Fgoogle-launches-voice-and-video-chat-for-gmail%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.vijayjoshi.org%2F2008%2F11%2F12%2Fgoogle-launches-voice-and-video-chat-for-gmail%2F&amp;source=v08i&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>You love gmail. Don&#8217;t you. Having so much cool features within one application is great. Now you will love it even more. Today Google is launching <a title="Gmail Voice and video chat" href="http://googleblog.blogspot.com/2008/11/talk-face-to-face-right-from-within.html" target="_blank">voice and video chat within gmail</a>. You will now be able to talk with your friends or video chat right from gmail chat window.</p>
<p>Remember earlier times when you used to have one application for mail, another IM if you want to chat and even another application if you want voice or video chat. Now all of these are under a single umbrella gmail. And the best part : <strong>ITS FREE</strong>.</p>
<p>To enable this feature, all you have to do is install a small plugin from <a title="Videochat link" href="http://mail.google.com/videochat " target="_blank">http://mail.google.com/videochat </a>,restart your browser and you are all set.</p>
<p>To make use of voice/video chat feature open the chat window. Now select &#8220;Video &amp; more&#8221; at the bottom and select &#8220;Start voice chat or &#8220;Start video chat&#8221;. It will prompt other person to accept or reject your call. Once its accepted , chat happily.</p>
<p>Do have a look at this video <a title="Videochat video on youtube" href="http://in.youtube.com/watch?v=JFGJRfoK9xQ&amp;eurl=http://gmailblog.blogspot.com/2008/11/say-hello-to-gmail-voice-and-video-chat.html" target="_blank">Gmail voice and video chat.</a>It will be available globally from today onwards.</p>
<p>Google rocks. What do you say?</p>
<div class="shr-publisher-123"></div><!-- Start Shareaholic LikeButtonSetBottom --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:right;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.vijayjoshi.org%2F2008%2F11%2F12%2Fgoogle-launches-voice-and-video-chat-for-gmail%2F' data-shr_title='Google+launches+voice+and+video+chat+for+gmail'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom -->]]></content:encoded>
			<wfw:commentRss>http://www.vijayjoshi.org/2008/11/12/google-launches-voice-and-video-chat-for-gmail/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

