<?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>Shekhar Govindarajan's Blog</title>
	<atom:link href="http://www.shekhargovindarajan.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.shekhargovindarajan.com</link>
	<description>My Notepad on the Web</description>
	<lastBuildDate>Thu, 11 Mar 2010 18:00:39 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<atom:link rel="hub" href="http://pubsubhubbub.appspot.com" />
	<atom:link rel="hub" href="http://superfeedr.com/hubbub" />
			<item>
		<title>Drupal 6: Different Page Templates for different Content Types</title>
		<link>http://www.shekhargovindarajan.com/tips-n-tricks/drupal-6-different-page-templates-for-different-content-types/?&amp;owa_from=feed&amp;owa_sid=</link>
		<comments>http://www.shekhargovindarajan.com/tips-n-tricks/drupal-6-different-page-templates-for-different-content-types/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 18:00:39 +0000</pubDate>
		<dc:creator>Shekhar</dc:creator>
				<category><![CDATA[Tips N Tricks]]></category>
		<category><![CDATA[content type]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[drupal 6]]></category>
		<category><![CDATA[page template]]></category>
		<category><![CDATA[page.tpl.php]]></category>

		<guid isPermaLink="false">http://www.shekhargovindarajan.com/?p=1412</guid>
		<description><![CDATA[Given the flexibility of Drupal, a different page template depending on the Content Type is not very demanding. The good news is, it is very much possible. The bad news is you may have to struggle like me to find the simplest, neatest and working method to achieve it.
Reading the documentation and Googling would result [...]]]></description>
			<content:encoded><![CDATA[<p>Given the flexibility of Drupal, a different page template depending on the Content Type is not very demanding. The good news is, it is very much possible. The bad news is you may have to struggle like me to find the simplest, neatest and working method to achieve it.</p>
<p>Reading the documentation and Googling would result in many methods &#8211; some are confusing, some are not so neat and others apply to earlier versions of Drupal. Following is my favourite method to setup different page templates, depending on the Content Type, in Drupal 6.<span id="more-1412"></span></p>
<p><strong>What is a Page Template<br />
</strong>This is the template which contains a Node. This must not be mistaken with the node template, for example, a Story node which displays the title, teaser, images, comment form and et al. In Drupal, the default page template is written in the file named page.tpl.php (and the node template is in node.tpl.php).</p>
<p>It is the page template with which you can display three columns for certain content types and two columns for others. It is the page template using which you can dictate the column which will show a Story, a Blog entry, a Forum topic or a <a href="http://drupal.org/project/webform" target="_blank">Webform</a>. This template is where you insert the Regions for Blocks and Views.</p>
<p><strong>A Neat Solution</strong><br />
Append or write the following code in a file named template.php in your theme&#8217;s directory:</p>
<pre>&lt;?php
function &lt;theme-name&gt;_preprocess_page(&amp; $vars) {
	if (isset ($vars['node']) &amp;&amp; $vars['node']-&gt;type == "blog") {
		$vars['template_files'] = array();
		$vars['template_files'][] = 'page-blog';
	}

	if (isset ($vars['node']) &amp;&amp; $vars['node']-&gt;type == "forum") {
		$vars['template_files'] = array();
		$vars['template_files'][] = 'page-forum';
	}

	if (isset ($vars['node']) &amp;&amp; $vars['node']-&gt;type == "webform") {
		$vars['template_files'] = array();
		$vars['template_files'][] = 'page-webform';
	}
}
?&gt;
</pre>
<p>In the above code replace &lt;theme-name&gt;, in the name of the function, with the name of your Theme&#8217;s directory. For example, suppose the name of your Theme&#8217;s directory is &#8220;blue&#8221;, then:</p>
<pre>function blue_preprocess_page(&amp; $vars)</pre>
<p>Now all you need to do is what you are most creative at. Write the templates for each content type. Drop files in your theme&#8217;s directory named page-blog.tpl.php, page-forum.tpl.php and page-webform.tpl.php for the Blog entry, Form topic and Webform  respectively. Feel free to set different page layouts and Regions in these files. Note that any Content Type which is not specified in the above code will use page.tpl.php &#8211; the default page template. For example, in this case, the Story content type will use page.tpl.php.</p>
<p><strong>Important: </strong>Log into Drupal as admin and goto Administrator&gt;Site configuration&gt;Performance and click on the button &#8220;Clear cached data&#8221; (at the bottom).</p>
<p>I prefer this solution because the template selection logic goes separated into a different file, leaving the Page templates friendly for a designer. Plus, template.php is the logical place to add overrides or specific behaviour. Most likely a seasoned Drupal developer will first look into this file for customizations.</p>
<p>Created or added a new content type? All you need is to add another IF block in the above code and drop a new page template. Before concluding that it is not working for you, do remember to clear the cache.</p>
<img src="http://www.shekhargovindarajan.com/?ak_action=api_record_view&id=1412&type=feed" alt="" /><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.shekhargovindarajan.com%2Ftips-n-tricks%2Fdrupal-6-different-page-templates-for-different-content-types%2F&amp;linkname=Drupal%206%3A%20Different%20Page%20Templates%20for%20different%20Content%20Types"><img src="http://www.shekhargovindarajan.com/wp-content/plugins/add-to-any/share_save_120_16.gif" width="120" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.shekhargovindarajan.com/tips-n-tricks/drupal-6-different-page-templates-for-different-content-types/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>E-mail notification for new or updated Google Wave</title>
		<link>http://www.shekhargovindarajan.com/google/e-mail-notification-for-new-or-updated-google-wave/?&amp;owa_from=feed&amp;owa_sid=</link>
		<comments>http://www.shekhargovindarajan.com/google/e-mail-notification-for-new-or-updated-google-wave/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 02:28:41 +0000</pubDate>
		<dc:creator>Shekhar</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[e-mail notification]]></category>
		<category><![CDATA[google wave]]></category>
		<category><![CDATA[notification]]></category>
		<category><![CDATA[robot]]></category>

		<guid isPermaLink="false">http://www.shekhargovindarajan.com/?p=1385</guid>
		<description><![CDATA[A few days back, this feature was introduced in Google Wave. This new feature allows you to setup E-mail notifications for new Waves and updated Waves i.e. new and updated Blips or messages in a Wave.
To enable E-mail notifications, login into Google Wave. Move your mouse over Inbox (on the left). Click on the Arrow [...]]]></description>
			<content:encoded><![CDATA[<p>A few days back, this feature was <a href="http://googlewave.blogspot.com/2010/03/help-test-email-notifications.html" target="_blank">introduced</a> in Google Wave. This new feature allows you to setup E-mail notifications for new Waves and updated Waves i.e. new and updated Blips or messages in a Wave.</p>
<p>To enable E-mail notifications, login into <a href="https://wave.google.com/" target="_blank">Google Wave</a>. Move your mouse over Inbox (on the left). Click on the Arrow (pointing downwards) and select Notifications.<span id="more-1385"></span></p>
<div id="attachment_1386" class="wp-caption alignleft" style="width: 310px"><a href="http://www.shekhargovindarajan.com/wp-content/uploads/2010/03/Google-Wave-E-mail-Notifications-Feature.png"><img class="size-medium wp-image-1386 " title="Google Wave: E-mail Notification Feature" src="http://www.shekhargovindarajan.com/wp-content/uploads/2010/03/Google-Wave-E-mail-Notifications-Feature-300x256.png" alt="Google Wave: E-mail Notification Feature" width="300" height="256" /></a><p class="wp-caption-text">Google Wave: E-mail Notification Feature</p></div>
<p>You can opt to get notified about new and updated Waves immediately (as it happens), hourly or weekly. The notifications are sent to the E-mail address associated with your Google Wave. This will be the GMail or Google Apps (in my case) E-mail address at which you got the Google Wave invite.</p>
<p>I tested it with &#8220;immediately&#8221; option and found that Google Wave sends an E-mail when</p>
<ul>
<li>A new Wave is created and you are added as a participant</li>
<li>A new Blip (message) is created in a Wave in which you are a participant</li>
<li>When an existing Blip is updated in the Wave in which you are participating</li>
</ul>
<p>Google Wave will not send a notification when:</p>
<ul>
<li>It has already sent you notification for a new or updated Wave. It will not send any further notification for any update in that particular Wave, till you log into Google Wave and click on the new or updated Wave.</li>
</ul>
<p><strong> </strong></p>
<div id="attachment_1399" class="wp-caption alignleft" style="width: 310px"><strong><strong><a href="http://www.shekhargovindarajan.com/wp-content/uploads/2010/03/E-mail-Notification-sent-by-Google-Wave.png"><img class="size-medium wp-image-1399" title="A new Wave E-mail Notification sent by Google Wave" src="http://www.shekhargovindarajan.com/wp-content/uploads/2010/03/E-mail-Notification-sent-by-Google-Wave-300x174.png" alt="A new Wave E-mail Notification sent by Google Wave" width="300" height="174" /></a></strong></strong><p class="wp-caption-text">A new Wave E-mail Notification sent by Google Wave</p></div>
<p><strong>Issues/Bugs:</strong></p>
<ul>
<li>The notifications are sent even when you are using Google Wave &#8211; logged into it and seeing the Waves. Why a notification when I can see a new Wave(s) being created and updated in front of me ? So what if I choose to click on them after sometime. Ideally the notifications should be sent after I have closed the Google Wave window on my Web Browser. I said &#8220;closed&#8221; and not logged out because logging out of Google Wave may mean to log out from other Google apps too.</li>
<li>The &#8220;Immediately&#8221; notification is not so immediate. Few notifications were delayed by as long as 14 minutes! Though at times I have received the notification within a minute. This does not fit well with a real time app like Google Wave. Immediate notifications must be &#8220;immediate&#8221;, as it happens and within seconds.</li>
<li>The notification settings link in the E-mail (notification) just opens Google Wave and does not show the Window or popup to change the settings. Note that this bug is a known issue as per the <a href="http://googlewave.blogspot.com/2010/03/help-test-email-notifications.html" target="_blank">Google Wave blog</a>.</li>
</ul>
<p><strong>Good to have in the next version:</strong></p>
<ol>
<li>There should be a provision to send notifications to any E-mail address and not only to the associated Gmail or Google Apps E-mail address.</li>
<li>The notification settings, besides being system wide and applicable to all Waves, should be present for individual Waves too. The notification settings for individual Waves should override the system wide settings. This way one can subscribe to notifications only for the Wave in which he/she is interested.</li>
<li>If point 2 is implemented, there should be an exclusive option to get notified about New Waves created by others &#8211; where you are added as a participant.</li>
</ol>
<p>I was wanting this feature so much that last year I wrote a Robot for my own use (with a hard coded E-mail address) to send me notifications for updates in Waves. I add this Robot to the Waves of my interest. I even wrote <a href="http://pcquest.ciol.com/content/search/showarticle.asp?arid=11694" target="_blank">an article</a> in PCQuest magazine about this Robot. For those who are interested in the code, refer to <a href="http://forums.pcquest.com/forum/viewtopic.php?f=16&amp;t=7027" target="_blank">this link</a> at the PCQuest forums to download the article with the code intact. If Google Wave could bring the Notification settings to individual Waves, I would no longer need to use my Robot.</p>
<img src="http://www.shekhargovindarajan.com/?ak_action=api_record_view&id=1385&type=feed" alt="" /><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.shekhargovindarajan.com%2Fgoogle%2Fe-mail-notification-for-new-or-updated-google-wave%2F&amp;linkname=E-mail%20notification%20for%20new%20or%20updated%20Google%20Wave"><img src="http://www.shekhargovindarajan.com/wp-content/plugins/add-to-any/share_save_120_16.gif" width="120" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.shekhargovindarajan.com/google/e-mail-notification-for-new-or-updated-google-wave/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Microsoft Tag Reader for Android</title>
		<link>http://www.shekhargovindarajan.com/microsoft/microsoft-tag-reader-for-android/?&amp;owa_from=feed&amp;owa_sid=</link>
		<comments>http://www.shekhargovindarajan.com/microsoft/microsoft-tag-reader-for-android/#comments</comments>
		<pubDate>Thu, 04 Mar 2010 15:12:42 +0000</pubDate>
		<dc:creator>Shekhar</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[adp1]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[android market]]></category>
		<category><![CDATA[microsoft tag]]></category>
		<category><![CDATA[microsoft tag reader]]></category>
		<category><![CDATA[tag]]></category>
		<category><![CDATA[vcard]]></category>

		<guid isPermaLink="false">http://www.shekhargovindarajan.com/?p=1371</guid>
		<description><![CDATA[What is Microsoft Tag? In simple words, Microsoft Tag allows you to store information in images (Tags). More on Microsoft Tag can be found here. My excitement about Microsoft Tag is, the Tag Reader app is now available for Android phones.  
I own an Android Dev Phone 1 (a.k.a. ADP1). It was just today that Microsoft Tag Reader [...]]]></description>
			<content:encoded><![CDATA[<p>What is Microsoft Tag? In simple words, Microsoft Tag allows you to store information in images (Tags). More on Microsoft Tag can be found <a href="http://www.microsoft.com/tag/" target="_blank">here</a>. My excitement about Microsoft Tag is, the Tag Reader app is now available for Android phones.  </p>
<p>I own an Android Dev Phone 1 (a.k.a. ADP1). It was just today that Microsoft Tag Reader app for Android was announced. The Tag Reader app allows to scan, extract and store information in Microsoft Tags using the phone&#8217;s camera. <span id="more-1371"></span></p>
<p>I wasted no time in firing up Android Market on my ADP1 and searched for &#8220;microsoft&#8221;. And voila Microsoft Tag Reader showed up on the top, in the list of apps. Installed it. Alternatively, one can browse to the URL  <a href="http://gettag.mobi">http://gettag.mobi</a> using the Android&#8217;s web browser. This will automatically launch the Android Markert app, prompting to install Microsoft Tag Reader.</p>
<p>To see the app in action, you will need to have a Microsoft Tag handy. One of the quickest way is to create your own at <a href="http://www.microsoft.com/tag/">http://www.microsoft.com/tag/</a>. The different types of information that one can store in a Tag are URL, Free Text, vCard and Dialer. The Microsoft Tag Reader is well integrated with Android and invokes the appropriate actions for each of these types like - launching the web browser with the URL, displaying the text, storing the vCard into Android&#8217;s Contacts and launching the Dialer with the number.
<a href='http://www.shekhargovindarajan.com/microsoft/microsoft-tag-reader-for-android/attachment/microsoft-tag-reader-app-for-android-prompts-for-password-for-password-protected-tags/' title='Microsoft Tag Reader app for Android prompts for password for password-protected Tags'><img width="150" height="150" src="http://www.shekhargovindarajan.com/wp-content/uploads/2010/03/Microsoft-Tag-Reader-app-for-Android-prompts-for-password-for-password-protected-Tags-150x150.png" class="attachment-thumbnail" alt="Microsoft Tag Reader app for Android prompts for password for password-protected Tags" title="Microsoft Tag Reader app for Android prompts for password for password-protected Tags" /></a>
<a href='http://www.shekhargovindarajan.com/microsoft/microsoft-tag-reader-for-android/attachment/microsoft-tag-reader-app-for-android-stores-the-scanned-tags-for-later-use-in-the-history/' title='Microsoft Tag Reader app for Android stores the scanned Tags for later use in the History'><img width="150" height="150" src="http://www.shekhargovindarajan.com/wp-content/uploads/2010/03/Microsoft-Tag-Reader-app-for-Android-stores-the-scanned-Tags-for-later-use-in-the-History-150x150.png" class="attachment-thumbnail" alt="Microsoft Tag Reader app for Android stores the scanned Tags for later use in the History" title="Microsoft Tag Reader app for Android stores the scanned Tags for later use in the History" /></a>
</p>
<p><strong>Pros</strong></p>
<ul>
<li>Instant and fast scanning</li>
<li>Integrated with Android apps like Web browser, Contacts and Dialer</li>
</ul>
<p>Whilst there are some cons too</p>
<p><strong>Cons</strong></p>
<ul>
<li>VCard: Does not store IM Address in Contact&#8217;s Chat addresses.</li>
<li>VCard: This seems to be a bug. In case of commas (,) in the address or any other fields, the Tag Reader prefixes a backslash (\) to each comma. For example: an address like &#8220;124-A, New Delhi&#8221; is stored as &#8220;124-A\, New Delhi&#8221; in the Android&#8217;s Contacts </li>
<li>The app displays the text for Free Text but does not allow to copy (for copy-n-paste) &#8211; a good to have feature.</li>
</ul>
<p>Cons aside (its likely that these will be fixed in the next version), the noteworthy point is Micrsoft Tag Reader is the first ever Android app from Microsoft!</p>
<img src="http://www.shekhargovindarajan.com/?ak_action=api_record_view&id=1371&type=feed" alt="" /><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.shekhargovindarajan.com%2Fmicrosoft%2Fmicrosoft-tag-reader-for-android%2F&amp;linkname=Microsoft%20Tag%20Reader%20for%20Android"><img src="http://www.shekhargovindarajan.com/wp-content/plugins/add-to-any/share_save_120_16.gif" width="120" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.shekhargovindarajan.com/microsoft/microsoft-tag-reader-for-android/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android: How to change the Google Account without a hard reset</title>
		<link>http://www.shekhargovindarajan.com/google/android-how-to-change-the-google-account-without-a-hard-reset/?&amp;owa_from=feed&amp;owa_sid=</link>
		<comments>http://www.shekhargovindarajan.com/google/android-how-to-change-the-google-account-without-a-hard-reset/#comments</comments>
		<pubDate>Sat, 13 Feb 2010 20:08:42 +0000</pubDate>
		<dc:creator>Shekhar</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[adp1]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[cyanogenmod]]></category>
		<category><![CDATA[google account]]></category>
		<category><![CDATA[google buzz]]></category>
		<category><![CDATA[hard reset]]></category>

		<guid isPermaLink="false">http://www.shekhargovindarajan.com/?p=1298</guid>
		<description><![CDATA[I own an Android Dev Phone 1, also called ADP1. The phone prompted to setup a Google Account as the very first step, before I can start using it. For the Google Account, I used my credentials for Google Apps Standard Edition , though I also have a regular GMail account.
I supply my Google Apps [...]]]></description>
			<content:encoded><![CDATA[<p>I own an Android Dev Phone 1, also called ADP1. The phone prompted to setup a Google Account as the very first step, before I can start using it. For the Google Account, I used my credentials for <a href="http://www.google.com/apps/intl/en/group/index.html" target="_blank">Google Apps Standard Edition </a>, though I also have a regular GMail account.</p>
<p>I supply my Google Apps credentials each time I wipe off (hard reset) the phone. Though optional, I wipe off the phone&#8217;s data whenever I update my phone with a new ROM. Following the <a href="http://developer.htc.com/adp.html" target="_blank">official</a> and <a href="http://www.cyanogenmod.com/" target="_blank">non official</a> upgrades, I&#8217;m currently running CyanogenMod 4.2.14.1 on my ADP1.</p>
<p>Then came a day when I did not want to wipe off the data but only wanted to change the Google Account associated with the phone.<span id="more-1298"></span>This was the day when I wanted to play with <a href="http://www.google.com/buzz" target="_blank">Google Buzz</a> which requires a GMail or non Google Apps account. I googled around and found solutions suggesting:</p>
<ul>
<li>Clear data for Gmail and Gmail storage under Manage Applications</li>
<li>Clear data for Google Apps and you will see a message in the Android&#8217;s notification bar to setup a new Google account.</li>
</ul>
<p>None of these worked for me. What worked for me is as follows:</p>
<ul>
<li>Goto Home (by clicking on the Home hardware button).</li>
<li>Click on Menu (hardware button)</li>
<li>Click/touch on Settings&gt;Applications&gt;Manage Applications.</li>
<li>Click on Google Apps.</li>
<li>Click on the button labelled &#8220;Clear data&#8221;</li>
<li>When prompted with &#8220;All information you&#8217;ve saved in this application will be deleted permanently&#8221;, click on OK</li>
<li>Subsequently, click on back button thrice and then click on &#8220;Data synchronization&#8221;. Alternatively, click on Home&gt;Menu&gt;Settings&gt;Data synchronizaion.</li>
<li>This will start the wizard which will prompt for a new Google account. This wizard is the same that you would have seen when you first (after you bought it) powered on the phone or whenever you wipe off the phone&#8217;s data.</li>
</ul>
<p>This is what helped me in testing out <a href="http://www.shekhargovindarajan.com/google/google-buzz-on-maps-in-android/" target="_blank">Google Buzz on Google Maps on my Android phone</a>. In your case, this may simply help you in changing the Google Account without hard resetting your Android.</p>
<p><strong>Update (February 14, 2009)﻿:</strong> After following the above procedure, I noticed that though my E-mails were syncing, I could not search my E-mails. Whenever I typed in a search keyword in the GMail app and clicked on the search button, I saw a message saying something as &#8220;E-mails will sync shortly&#8221;. This can be fixed as follows. Goto Settings&gt;Applications&gt;Manage Applications&gt;Gmail. Click on &#8220;Clear data&#8221; button.</p>
<img src="http://www.shekhargovindarajan.com/?ak_action=api_record_view&id=1298&type=feed" alt="" /><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.shekhargovindarajan.com%2Fgoogle%2Fandroid-how-to-change-the-google-account-without-a-hard-reset%2F&amp;linkname=Android%3A%20How%20to%20change%20the%20Google%20Account%20without%20a%20hard%20reset"><img src="http://www.shekhargovindarajan.com/wp-content/plugins/add-to-any/share_save_120_16.gif" width="120" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.shekhargovindarajan.com/google/android-how-to-change-the-google-account-without-a-hard-reset/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Google Buzz on maps in Android</title>
		<link>http://www.shekhargovindarajan.com/google/google-buzz-on-maps-in-android/?&amp;owa_from=feed&amp;owa_sid=</link>
		<comments>http://www.shekhargovindarajan.com/google/google-buzz-on-maps-in-android/#comments</comments>
		<pubDate>Fri, 12 Feb 2010 15:30:34 +0000</pubDate>
		<dc:creator>Shekhar</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[adp1]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[android dev phone 1]]></category>
		<category><![CDATA[buzz]]></category>
		<category><![CDATA[Gmail]]></category>
		<category><![CDATA[google apps]]></category>
		<category><![CDATA[google maps]]></category>
		<category><![CDATA[google maps 4.0.0]]></category>
		<category><![CDATA[nokia]]></category>
		<category><![CDATA[windows mobile]]></category>

		<guid isPermaLink="false">http://www.shekhargovindarajan.com/?p=1270</guid>
		<description><![CDATA[It was the morning of 10th February, when I got to know that Google Buzz is rolling out to users. Was disappointed to not to spot it in my Google Apps (Standard) and in my GMail. Learnt that Google Buzz also works on Google Maps on mobile phones.
I guessed that it would require a Google [...]]]></description>
			<content:encoded><![CDATA[<p>It was the morning of 10th February, when I got to know that <a href="http://gmailblog.blogspot.com/2010/02/google-buzz-in-gmail.html" target="_blank">Google Buzz is rolling out to users</a>. Was disappointed to not to spot it in my Google Apps (Standard) and in my GMail. Learnt that Google Buzz also works on Google Maps on mobile phones.</p>
<p>I guessed that it would require a Google Maps upgrade on the phone. Instantly fired Android Market on my Android Dev Phone 1 (a.k.a. ADP1), clicked on the Downloads tab and was greeted by an available upgrade to Google Maps &#8211; Google Maps version 4.0.0. Opted to install the upgrade hoping to spot the Buzz on the maps but alas &#8211; it wasn&#8217;t a smooth sail.<span id="more-1270"></span> After the upgrade, I fired the Google Maps app on my ADP1. clicked on Menu&gt;Layers&gt;Buzz and spotted a new icon <a href="http://www.shekhargovindarajan.com/wp-content/uploads/2010/02/google-buzz-icon1.png"><img class="alignnone size-full wp-image-1273" title="google-buzz-icon" src="http://www.shekhargovindarajan.com/wp-content/uploads/2010/02/google-buzz-icon1.png" alt="Google Buzz Icon" width="22" height="20" /></a> on the maps. Clicking on the icon showed me a screen where I could post a new Buzz (a message).</p>
<div id="attachment_1274" class="wp-caption alignleft" style="width: 210px"><a href="http://www.shekhargovindarajan.com/wp-content/uploads/2010/02/Post-a-Google-Buzz-using-Maps-on-Android.png"><img class="size-medium wp-image-1274" title="Post a Google Buzz using Maps on Android" src="http://www.shekhargovindarajan.com/wp-content/uploads/2010/02/Post-a-Google-Buzz-using-Maps-on-Android-200x300.png" alt="Post a Google Buzz using Maps on Android" width="200" height="300" /></a><p class="wp-caption-text">Post a Google Buzz using Maps on Android</p></div>
<p>Along with typing a text message, this screen also allowed me to upload a new photo that I could click via the phone&#8217;s camera or select an existing picture from the Android phone&#8217;s Gallery. Once I posted a Buzz, I could see a new speech bubble on the map at my current location &#8211; determined via GPS or Cell location (without GPS).  Over time, I realized, I could see only my Buzzes. Was no one else buzzing?</p>
<p><strong>Buzz is not for Google Apps</strong><br />
Later during the day, I realized that my friends, using their GMail account, could see other&#8217;s Buzzes on their Nokia phones. Also they could not see my Buzzes.</p>
<p>I instantly suspected that it could be all because of using a <a href="http://www.google.com/apps/intl/en/group/index.html" target="_blank">Google Apps</a> (not GMail) credentials on my Android phone. My Android phone is tied up with a Google Apps Standard Edition account which is not a regular GMail/Google account. That&#8217;s when I got onto the Net and  <a href="http://googleenterprise.blogspot.com/2010/02/google-buzz-coming-soon-for-businesses.html" target="_blank">this blog post</a> confirmed my suspicion. But the confusion remained for a while. How could I post a Buzz (as said above) but not see other&#8217;s Buzzes?</p>
<p>So I spent the remaining day (of 10th February) and 11th February ensuring that Google Buzz indeed does not work with an Android using Google Apps account. I changed my ADP1&#8217;s Google account from Apps to a regular GMail account as explained in this blog post &#8211; <a href="http://www.shekhargovindarajan.com/google/android-how-to-change-the-google-account-without-a-hard-reset/" target="_blank">Android: How to change the Google Account without a hard reset</a>. Subsequently,  I changed it back from GMail to Apps. Kept flipping the accounts several times. Witnessed a few erratic and confusing behaviour &#8211; call it caching. Eventually, I concluded the following:</p>
<ul>
<li>Google Buzz on maps in Android works with a regular GMail account and not with a Google Apps account.</li>
<li>If you are switching from a Google Apps account to a GMail account on Android after installing Google Maps 4.0, refer to the following:
<ol>
<li>Launch Android Market</li>
<li>Click on the Downloads tab</li>
<li>Select Google Maps</li>
<li>Click on the button &#8220;Uninstall updates&#8221;. This will downgrade Google Maps.</li>
<li>Subsequently, reinstall/update to Google Maps 4.0.0</li>
<li>Now, launch Google Maps and click on Menu&gt;Layers&gt;Buzz</li>
<li>And voila, you should be able to see what others are Buzzing on the map.
<div id="attachment_1276" class="wp-caption alignleft" style="width: 310px"><a href="http://www.shekhargovindarajan.com/wp-content/uploads/2010/02/Google-Buzz-on-Maps-on-Android1.png"><img class="size-medium wp-image-1276 " title="Google Buzz on Maps in Android on February 10" src="http://www.shekhargovindarajan.com/wp-content/uploads/2010/02/Google-Buzz-on-Maps-on-Android1-300x200.png" alt="Google Buzz on Maps on Android" width="300" height="200" /></a><p class="wp-caption-text">Google Buzz on Maps in Android on February 10</p></div></li>
</ol>
</li>
<li>Buzz should work, if you have switched from a Google Apps account to a GMail account before installing Google Maps 4.0.0</li>
</ul>
<p><strong> </strong></p>
<p><div id="attachment_1282" class="wp-caption alignleft" style="width: 210px"><strong><strong><a href="http://www.shekhargovindarajan.com/wp-content/uploads/2010/02/Clicking_on_the_bubble_shows_the_Buzz_along_with_photos.png"><img class="size-medium wp-image-1282" title="Clicking on a bubble shows the Buzz with Photo (if any)" src="http://www.shekhargovindarajan.com/wp-content/uploads/2010/02/Clicking_on_the_bubble_shows_the_Buzz_along_with_photos-200x300.png" alt="Clicking on a bubble shows the Buzz with Photo (if any)" width="200" height="300" /></a></strong></strong><p class="wp-caption-text">Clicking on a bubble shows the Buzz with Photo (if any)</p></div>
<p><strong>A few other observations and notes:</strong></p>
<ul>
<li>Buzz on Google Maps for Mobile has no privacy settings. All your Buzzes along with photos will be visible to everyone.</li>
<li>As per my friends, Google Buzz seem to work equally well on Google Maps in Nokia and Windows Mobile. Nokia and Windows mobile users can goto http://m.google.com/maps to install/upgrade Google Maps to version 4.0.0.</li>
<li>As reported by friends using Nokia, the Buzzes may disappear at times. In this case, removing and adding the Buzz layer on Google Maps will show the Buzzes again.</li>
<li>Seems that the &#8220;speech bubbles&#8221; for Buzzes, older than a day, disappear from the map.
<p><div id="attachment_1283" class="wp-caption alignleft" style="width: 210px"><a href="http://www.shekhargovindarajan.com/wp-content/uploads/2010/02/A_list_of_all_the_Buzzes_at_a_location.png"><img class="size-medium wp-image-1283" title="A list of all the Buzz at a location, along with comments" src="http://www.shekhargovindarajan.com/wp-content/uploads/2010/02/A_list_of_all_the_Buzzes_at_a_location-200x300.png" alt="A list of all the Buzz at a location, along with comments" width="200" height="300" /></a><p class="wp-caption-text">A list of all the Buzz at a location, along with comments</p></div></li>
</ul>
<p>While I have been playing with Buzz on my Android for the last two days, I may soon switch back to my Google Apps account. I can&#8217;t sacrifice my official E-mails on Android for the Buzz. Hope, Google Buzz for Google Apps is released soon. In the meanwhile I will play with <a href="http://twitter.com/shekharg/status/8909977586" target="_blank">Google Buzz on my Gmail account</a></p>
<img src="http://www.shekhargovindarajan.com/?ak_action=api_record_view&id=1270&type=feed" alt="" /><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.shekhargovindarajan.com%2Fgoogle%2Fgoogle-buzz-on-maps-in-android%2F&amp;linkname=Google%20Buzz%20on%20maps%20in%20Android"><img src="http://www.shekhargovindarajan.com/wp-content/plugins/add-to-any/share_save_120_16.gif" width="120" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.shekhargovindarajan.com/google/google-buzz-on-maps-in-android/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Use Google Wave to Blog</title>
		<link>http://www.shekhargovindarajan.com/google/use-google-wave-to-blog/?&amp;owa_from=feed&amp;owa_sid=</link>
		<comments>http://www.shekhargovindarajan.com/google/use-google-wave-to-blog/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 14:44:30 +0000</pubDate>
		<dc:creator>Shekhar</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[embed]]></category>
		<category><![CDATA[google wave]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[read only]]></category>
		<category><![CDATA[wavr]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://www.shekhargovindarajan.com/?p=1212</guid>
		<description><![CDATA[I have been thinking about this idea ever since I started playing with Google Wave. How about creating a blog post by embedding Waves &#8211; one for the post and the other for comments. The former Wave will be editable only by me, while the latter will be editable by anyone (with a Google Wave [...]]]></description>
			<content:encoded><![CDATA[<p>I have been thinking about this idea <a href="http://twitter.com/shekharg/statuses/2895247701" target="_blank">ever since</a> I started playing with Google Wave. How about creating a blog post by embedding Waves &#8211; one for the post and the other for comments. The former Wave will be editable only by me, while the latter will be editable by anyone (with a Google Wave account).</p>
<div id="attachment_1238" class="wp-caption alignleft" style="width: 310px"><a href="http://www.shekhargovindarajan.com/wp-content/uploads/2010/02/A-blog-post-using-Google-Wave-for-content-and-comments.png"><img class="size-medium wp-image-1238" title="A blog post using Google Wave for content and comments" src="http://www.shekhargovindarajan.com/wp-content/uploads/2010/02/A-blog-post-using-Google-Wave-for-content-and-comments-300x182.png" alt="A blog post using Google Wave for content and comments" width="300" height="182" /></a><p class="wp-caption-text">A blog post using Google Wave for content and comments</p></div>
<p>This became possible, recently, with the introduction of the read-only access feature. I created a blog post with a Wave talking about the Frequently Asked Questions (FAQs) about Google Wave and a blank (to start with) Wave for comments. Click <a href="http://www.shekhargovindarajan.com/google/frequently-asked-questions-about-google-wave/" target="_blank">here</a> to see this blog post. This was achieved as follows:<span id="more-1212"></span></p>
<ul>
<li>Logged into Google Wave and created a new Wave about Frequently Asked Questions about Google Wave, as showed in the screenshot.
<p><div id="attachment_1215" class="wp-caption alignleft" style="width: 310px"><a href="http://www.shekhargovindarajan.com/wp-content/uploads/2010/02/A_Wave_about_frequently_asked_questions_about_Google_Wave.png"><img class="size-medium wp-image-1215" title="A  Wave about frequently asked questions about Google Wave" src="http://www.shekhargovindarajan.com/wp-content/uploads/2010/02/A_Wave_about_frequently_asked_questions_about_Google_Wave-300x182.png" alt="A  Wave about frequently asked questions about Google Wave" width="300" height="182" /></a><p class="wp-caption-text">A  Wave about frequently asked questions about Google Wave</p></div></li>
</ul>
<ul>
<li>Added the Public participant to this Wave. This can be done as follows:
<ul>
<li>Click on the + button on the bottom right pane titled Contacts to add a new contact</li>
<li>For Address type in public@a.gwave.com</li>
<li>Add this new contact by clicking on the Submit button.</li>
<li>Next add this contact to the Wave, which you want to make public. For this click on the + button on the top of the Wave.</li>
<li>On the Add Participants pop-up, search/browse, and click to add the contact named Public.</li>
<li>You will see a notification on the top of the Wave saying &#8220;You gave everyone access&#8221;.</li>
</ul>
</li>
<li>I gave Read-Only access to the Public contact/participant. Refer to <a href="http://www.shekhargovindarajan.com/google/read-only-google-wave/" target="_blank">this blog post</a> on how to assign read-only access.</li>
<li>Next I created another Wave, for comments, with just one blip or message which says: Wave your comments about the FAQs on Google Wave.</li>
<li>Added the Public contact to this Wave but did not setup read-only access this time. That means, anyone (with a Google Wave account) can add/edit/delete blips/messages on this Wave. That&#8217;s what commenting is all about, right?</li>
<li>To embed Google Waves in this blog post, I installed and activated the Wavr plugin for WordPress. You can download this plugin from <a href="http://wordpress.org/extend/plugins/wavr/" target="_blank">here</a></li>
<li>With Wavr plugin you can embed any Google Wave in a blog post using the following syntax:[ wave id = "&lt;Google-Wave-ID&gt; ]<br />
<strong>Please note that, unlike shown above, there should be no space between the opening/left square bracket and the text &#8220;wave id&#8221;.</strong></li>
<li>To find out the Wave ID of a Google Wave, Click on the Wave. Copy the URL (shown in your web browser) from googlewave.com upto the . (dot) or upto the end. Exclude the dot. Replace %252B with+ (plus). For example, in my case, the Wave IDs for the content and comments Waves are googlewave.com!w+3413MFFlD and googlewave.com!w+53bOqvqzB</li>
<li>Next I created a new blog post in WordPress and embedded the Waves as follows:<br />
[ wave id = "googlewave.com!w+3413MFFlD" ]<br />
[ wave id = "googlewave.com!w+53bOqvqzB" ]</li>
<li>You can change the default colors of the embedded Waves from the WordPress admin panel &#8211; Settings&gt;Wavr. I changed the default background color and default color to #FFFFFF (white) and #000000 (black) respectively. I also set the height to 700px. Note that , you can set these options on a per Wave basis too. You can find more about it, at the Wavr&#8217;s download page.</li>
<li>Last, since I wanted to encourage comments via the Google Wave only, I disabled comments to the blog post. This can be done while writing or editing the post. Click on the Discussions panel (at the bottom of the editor) and untick &#8220;Allow Comments&#8221;.</li>
</ul>
<p>The output of the above efforts can be seen <a href="http://www.shekhargovindarajan.com/google/frequently-asked-questions-about-google-wave/" target="_blank">here</a>. Be ready to catch me, in real time, when and while I update the FAQ wave. Though it is more likely that I may catch you while you are writing a comment and could reply instantaneously. After all <a href="http://twitter.com/shekharg/statuses/4706917836" target="_blank">I pledged</a> to keep Google Wave always open in my web browser.</p>
<img src="http://www.shekhargovindarajan.com/?ak_action=api_record_view&id=1212&type=feed" alt="" /><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.shekhargovindarajan.com%2Fgoogle%2Fuse-google-wave-to-blog%2F&amp;linkname=Use%20Google%20Wave%20to%20Blog"><img src="http://www.shekhargovindarajan.com/wp-content/plugins/add-to-any/share_save_120_16.gif" width="120" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.shekhargovindarajan.com/google/use-google-wave-to-blog/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Frequently Asked Questions about Google Wave</title>
		<link>http://www.shekhargovindarajan.com/google/frequently-asked-questions-about-google-wave/?&amp;owa_from=feed&amp;owa_sid=</link>
		<comments>http://www.shekhargovindarajan.com/google/frequently-asked-questions-about-google-wave/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 14:37:06 +0000</pubDate>
		<dc:creator>Shekhar</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[embed]]></category>
		<category><![CDATA[faq]]></category>
		<category><![CDATA[frequently asked questions]]></category>
		<category><![CDATA[gadgets]]></category>
		<category><![CDATA[google wave]]></category>
		<category><![CDATA[public wave]]></category>
		<category><![CDATA[public@a.gwave.com]]></category>
		<category><![CDATA[robots]]></category>

		<guid isPermaLink="false">http://www.shekhargovindarajan.com/?p=1221</guid>
		<description><![CDATA[The content of this blog post comes from Google Wave. You will need a Google Wave account to view or post comments. The best way to view this post is to first login into your Google Wave account and then goto/refresh this page.
Refer to this post on how to use Google Wave for blog posts [...]]]></description>
			<content:encoded><![CDATA[<p>The content of this blog post comes from Google Wave. You will need a <a href="http://wave.google.com" target="_blank">Google Wave</a> account to view or post comments. The best way to view this post is to first login into your Google Wave account and then goto/refresh this page.</p>
<p>Refer to <a href="http://www.shekhargovindarajan.com/google/use-google-wave-to-blog/" target="_blank">this post</a> on how to use Google Wave for blog posts and comments on your own WordPress powered blog.<span id="more-1221"></span></p>

		<div id="waveframe-1" style="width:;height:700px;" ></div>
		 <script type="text/javascript">

				add_wave("waveframe-1",{
					bgcolor:"#ffffff",
					color:"#000000",
					font:"",
					font_size:"1em",
					width:"",
					height:"700px",
					server:"https://wave.google.com/wave/",
					id:"googlewave.com!w+3413MFFlD"		});

		</script>
		

		<div id="waveframe-2" style="width:;height:700px;" ></div>
		 <script type="text/javascript">

				add_wave("waveframe-2",{
					bgcolor:"#ffffff",
					color:"#000000",
					font:"",
					font_size:"1em",
					width:"",
					height:"700px",
					server:"https://wave.google.com/wave/",
					id:"googlewave.com!w+53bOqvqzB"		});

		</script>
		
<img src="http://www.shekhargovindarajan.com/?ak_action=api_record_view&id=1221&type=feed" alt="" /><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.shekhargovindarajan.com%2Fgoogle%2Ffrequently-asked-questions-about-google-wave%2F&amp;linkname=Frequently%20Asked%20Questions%20about%20Google%20Wave"><img src="http://www.shekhargovindarajan.com/wp-content/plugins/add-to-any/share_save_120_16.gif" width="120" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.shekhargovindarajan.com/google/frequently-asked-questions-about-google-wave/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Official WordPress app for Android</title>
		<link>http://www.shekhargovindarajan.com/google/official-wordpress-app-for-android/?&amp;owa_from=feed&amp;owa_sid=</link>
		<comments>http://www.shekhargovindarajan.com/google/official-wordpress-app-for-android/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 21:00:05 +0000</pubDate>
		<dc:creator>Shekhar</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[android market]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[comment alert]]></category>
		<category><![CDATA[comment notification]]></category>
		<category><![CDATA[moderate]]></category>
		<category><![CDATA[multiple blogs]]></category>
		<category><![CDATA[official]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://www.shekhargovindarajan.com/?p=1178</guid>
		<description><![CDATA[After having played with wpToGo app (though for a very short time), the announcement of an official WordPress app for Android phones caught my attention. These apps allow you to manage your blog posts and comments from your Android phone.
I fired Android Market on my phone, searched for &#8220;wordpress&#8221; and the official app was right [...]]]></description>
			<content:encoded><![CDATA[<p>After having played with wpToGo app (though for a very short time), the announcement of an official WordPress app for Android phones caught my attention. These apps allow you to manage your blog posts and comments from your Android phone.</p>
<p>I fired Android Market on my phone, searched for &#8220;wordpress&#8221; and the official app was right at the top, proudly named as WordPress, just WordPress. Yea, that&#8217;s indeed the official app!<span id="more-1178"></span>After installation, I launched the app. It prompted me for Blog URL, for which I supplied <a href="http://www.shekhargovindarajan.com">http://www.shekhargovindarajan.com</a>. For the username and password, I typed in the admin&#8217;s username and password, since I blog using the admin account. Subsequently, it allows me to manage comments, the blog posts and the pages on my blog. After playing with it for a couple of hours, I noticed the following pros and cons in the WordPress app for Android:</p>
<p><strong>Pros:</strong></p>
<ul>
<li>New comment(s) notification on the phone&#8217;s notification bar. You can set the app to check for comments every 5 mins to every 24 hours.</li>
<li>Ability to reply to comments</li>
<li>Comments moderation &#8211; approve, unapprove, mark spam</li>
<li>Nice tabbed interface with readable font. Big, touch friendly buttons</li>
<li>Ability to add images to the blog post from the phone&#8217;s gallery</li>
<li>Ability to compose a blog post on the phone, set it&#8217;s status to publish but publish it later on the blog site via &#8220;Upload Draft to Blog&#8221;.  Useful feature, when at times, we don&#8217;t have an active data connection on the phone.</li>
<li>Categories, once downloaded from the blog, are cached.</li>
<li>Ability to manage more than one WordPress based blogs.</li>
</ul>
<p><strong>Cons</strong></p>
<ul>
<li>No audio alert with the new comment alert</li>
<li>Limited editor options - bold, underline, italics, link and blockquote</li>
<li>The editor is not a rich text editor &#8211; the HTML tags show in the post&#8217;s text, which looks messy</li>
<li>Limited options to place the images &#8211; either at the top or at the bottom of a post</li>
<li>No option to delete a post once it is published, if by mistake</li>
<li>No option to insert a &#8220;read more&#8221; tag</li>
</ul>

<a href='http://www.shekhargovindarajan.com/google/official-wordpress-app-for-android/attachment/comments_moderation_and_reply_in_wordpress_android_app/' title='comments_moderation_and_reply_in_wordpress_android_app'><img width="150" height="150" src="http://www.shekhargovindarajan.com/wp-content/uploads/2010/02/comments_moderation_and_reply_in_wordpress_android_app-150x150.png" class="attachment-thumbnail" alt="The WordPress app allows to moderate and reply to comments, while on move" title="comments_moderation_and_reply_in_wordpress_android_app" /></a>
<a href='http://www.shekhargovindarajan.com/google/official-wordpress-app-for-android/attachment/messy_blog_post_without_a_rich_text_editor_in_wordpress_android_app/' title='messy_blog_post_without_a_rich_text_editor_in_wordpress_android_app'><img width="150" height="150" src="http://www.shekhargovindarajan.com/wp-content/uploads/2010/02/messy_blog_post_without_a_rich_text_editor_in_wordpress_android_app-150x150.png" class="attachment-thumbnail" alt="Without a rich text editor, posts with images look messy to edit" title="messy_blog_post_without_a_rich_text_editor_in_wordpress_android_app" /></a>
<a href='http://www.shekhargovindarajan.com/google/official-wordpress-app-for-android/attachment/wordpress_comments_notification_in_android_notification_bar/' title='wordpress_comments_notification_in_android_notification_bar'><img width="150" height="150" src="http://www.shekhargovindarajan.com/wp-content/uploads/2010/02/wordpress_comments_notification_in_android_notification_bar-150x150.png" class="attachment-thumbnail" alt="New comments on blog posts are notified using the Android&#039;s notification bar" title="wordpress_comments_notification_in_android_notification_bar" /></a>
<a href='http://www.shekhargovindarajan.com/google/official-wordpress-app-for-android/attachment/a_test_blog_post_via_wordpress_android_app/' title='a_test_blog_post_via_wordpress_android_app'><img width="150" height="150" src="http://www.shekhargovindarajan.com/wp-content/uploads/2010/02/a_test_blog_post_via_wordpress_android_app-150x150.png" class="attachment-thumbnail" alt="A test blog post with images, posted via the official WordPress app for Android" title="a_test_blog_post_via_wordpress_android_app" /></a>

<p>I found the WordPress app limiting when it comes to composing a blog post. This is because I like to use HTML lists (&lt;ul&gt;, &lt;ol&gt; and &lt;li&gt;) and I like to place images in between the post&#8217;s text. I may use the comment features &#8211; notification, moderation and reply. Someday, with upgrades and more features, the WordPress app may make it to <a title="http://www.shekhargovindarajan.com/google/my-list-of-must-have-android-apps/" href="http://" target="_blank">my list of must-have Android apps</a>.</p>
<img src="http://www.shekhargovindarajan.com/?ak_action=api_record_view&id=1178&type=feed" alt="" /><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.shekhargovindarajan.com%2Fgoogle%2Fofficial-wordpress-app-for-android%2F&amp;linkname=Official%20WordPress%20app%20for%20Android"><img src="http://www.shekhargovindarajan.com/wp-content/plugins/add-to-any/share_save_120_16.gif" width="120" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.shekhargovindarajan.com/google/official-wordpress-app-for-android/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kindle to India: Frequently Asked Questions</title>
		<link>http://www.shekhargovindarajan.com/tips-n-tricks/kindle-to-india-frequently-asked-questions/?&amp;owa_from=feed&amp;owa_sid=</link>
		<comments>http://www.shekhargovindarajan.com/tips-n-tricks/kindle-to-india-frequently-asked-questions/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 10:35:25 +0000</pubDate>
		<dc:creator>Shekhar</dc:creator>
				<category><![CDATA[Tips N Tricks]]></category>
		<category><![CDATA[Amazon]]></category>
		<category><![CDATA[ebook]]></category>
		<category><![CDATA[ebook reader]]></category>
		<category><![CDATA[global wirless]]></category>
		<category><![CDATA[india]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[kindle]]></category>
		<category><![CDATA[kindle 1]]></category>
		<category><![CDATA[kindle 2]]></category>
		<category><![CDATA[kindle dx]]></category>
		<category><![CDATA[mobi]]></category>
		<category><![CDATA[pdf]]></category>
		<category><![CDATA[txt]]></category>

		<guid isPermaLink="false">http://www.shekhargovindarajan.com/?p=1112</guid>
		<description><![CDATA[I ordered an Amazon Kindle for a friend of mine.  Before ordering the Kindle, there were various doubts and apprehensions about it&#8217;s functionality, cost and shipping to India. It took me numerous Google searches to conclude that Kindle is a safe and good buy for someone in India.
Subsequently, I placed an order on behalf of [...]]]></description>
			<content:encoded><![CDATA[<p>I ordered an Amazon Kindle for a friend of mine.  Before ordering the Kindle, there were various doubts and apprehensions about it&#8217;s functionality, cost and shipping to India. It took me numerous Google searches to conclude that Kindle is a safe and good buy for someone in India.</p>
<div id="attachment_1154" class="wp-caption alignleft" style="width: 242px"><a href="http://www.shekhargovindarajan.com/wp-content/uploads/2010/01/240px-Kindle_2_-_Front.jpg"><img class="size-medium wp-image-1154" title="240px-Kindle_2_-_Front" src="http://www.shekhargovindarajan.com/wp-content/uploads/2010/01/240px-Kindle_2_-_Front-232x300.jpg" alt="You cannot browse the Web using Kindle (Global Wireless) in India. Image source: Wikipedia.org" width="232" height="300" /></a><p class="wp-caption-text">You cannot browse the Web using Kindle (Global Wireless) in India. Image source: Wikipedia.org</p></div>
<p>Subsequently, I placed an order on behalf of my friend and the Kindle was shipped to New Delhi, India to my residence in about 2 days. I got to setup, configure and play with this nifty device, before I could hand it over to my friend.<span id="more-1112"></span></p>
<p>I thought it would be a good idea to share my experience of the ordering, shipping, and how well Kindle behaves in India. Instead of writing the entire experience chronologically, I jot it down as FAQs (Frequently Asked Questions).</p>
<ol>
<li><strong>Where did you order the Kindle from?<br />
</strong><a href="http://www.amazon.com/" target="_blank">Amazon.com</a><strong> </strong></li>
<li><strong>Which version of Kindle did you order? Kindle 1, Kindle 2, Kindle DX or Kindle Global Wireless &#8230; ?<br />
</strong> The officially available and latest models are called Kindle (Global Wireless) and Kindle DX (Global Wireless). I bought Kindle (Global Wireless).</li>
<li><strong>What does Global Wireless mean?</strong><br />
With Global Wireless versions, you can browse/search through the Amazon Book Store and Wikipedia through a free Internet connection. This connection (which uses the mobile phone network) is pre-paid by Amazon and you do not have to pay any bills for the aforementioned browsing/searching.</li>
<li><strong>Why did you buy Kindle and not Kindle DX ?<br />
</strong>Kindle DX is almost double the price of Kindle <strong><br />
</strong></li>
<li><strong>What is the total cost of Kindle?</strong><br />
$378.57 (USD)</li>
<li><strong>Why do I have to pay so much ?</strong><br />
This cost includes the shipping and the duty. Following is the bifurcation :<br />
<em>Cost of the device:</em> $259.00<br />
<em>Import Duty:</em> $98.59<br />
<em>Shipping and Handling:</em> $20.98</li>
<li><strong>Can I reduce the cost by opting for an alternate shipping option, even if it takes longer to ship ?</strong><br />
No, alternate shipping option is offered for shipping to India.</li>
<li><strong>Is there any hidden cost ?</strong><br />
No.</li>
<li><strong>What is the mode of payment ?</strong><br />
Credit/Debit Card</li>
<li><strong>Can I pay through <a href="http://www.paypal.com">Paypal</a> ?</strong><br />
No.</li>
<li><strong>How much time does it take to ship the Kindle to India ?</strong><br />
2 days<br />
Note: I ordered the Kindle on 18th January at 21:00 IST  and got it on 21st January, around 11:00 IST. It was a Monday evening when I ordered and got the Kindle on Thursday morning. Note that the device was shipping during business days. If holidays or weekends fall in between, the shipping may be delayed.</li>
<li><strong>Will  I be notified about the order and the shipping status ?</strong><br />
You will get notified by two  E-mails sent from <strong><em>auto-confirm at amazon dot com </em></strong>and<strong><em> Amazon.com (ship-confirm at amazon dot com)</em></strong>. The first E-mail is sent after a successful order with the order details. The second E-mail is sent as soon as the Kindle is dispatched for shipping and includes the tracking number to track the device in transit.</li>
<li><strong>How much time does it take to dispatch the Kindle for shipping after a successful order ?</strong><br />
Less than 24 hours.</li>
<li><strong>How can I track my shipping ?</strong><br />
You can track the device by logging into your Amazon account &#8211; which you used to order the Kindle.</li>
<li><strong>What are the contents of the box that gets delivered<br />
</strong>The Kindle device, a getting started manual, a USB cable and a power adapter &#8211; U.S. or United States style, two pin plug.</li>
<li><strong>How do I charge the Kindle?</strong><br />
The USB cable can be plugged into the power socket for charging through AC power. For this you will need a U.S. to India power plug converter. Else you can charge the Kindle using your laptop/PC, using the USB cable.</li>
<li><strong>The wireless connection works without any configuration?</strong><br />
Yes. But for the very first time, when I tried searching through the Amazon Store, the Kindle complained about &#8220;no connection&#8221; and suggested to reboot. After a reboot the connection was up. Ever since. the connection has always been on and working.</li>
<li><strong>Can I browse the Web using Kindle?<br />
</strong>No. Kindle does have a built-in Web browser which is suppose to work well for text-only or low-graphics Websites. But when I try to browse to a Website, the browser shows an error saying &#8220;Due to local restrictions, web browsing is not available for all countries&#8221;.   <strong> </strong></li>
<li><strong>Can I Google using Kindle?<br />
</strong>No. The search fails with the message saying &#8220;Due to local restrictions, web browsing is not available for all countries&#8221;. Only Wikipedia and Amazon Store search works, over the wireless network (refer to FAQ 3)</li>
<li><strong>Does Kindle support PDFs?</strong><br />
This question is not specific to India but to the device. Yet the answer is yes, Kindle supports PDF. But you cannot zoom or enlarge the text/font size of a PDF document. This makes some PDFs unreadable on Kindle.</li>
<li><strong>Can I transfer my own documents or books to the Kindle?</strong><br />
This question is not specific to India but to the device. Yes, you can transfer any Kindle supported documents on the device. I have myself transferred and read .pdf, .txt, and .mobi formats on the Kindle.</li>
<li><strong>Can I transfer and read pirated E-Books, downloaded via Torrents, on the Kindle?</strong><br />
Sorry, this blog is not a place to ask this question.</li>
<li><strong>I have heard that not all books are available for Indian users<br />
</strong>I have heard that too. Will keep this post updated when I comes across such titles.</li>
<li><strong>Instead of Kindle, why you did not recommend an Apple iPad to your friend?<br />
</strong>The launch of iPad was uncertain. As of this writing, its launch and pricing in India is not known. Also iPad is a multi-purpose and bulkier device.</li>
</ol>
<p>Hope this FAQ helps my countrymen in going ahead and bringing home an Amazing Kindle!</p>
<p><strong>Disclaimer: The above FAQ is strictly based on my personal buying and usage experience. Any or all information may be different in your case</strong>.</p>
<img src="http://www.shekhargovindarajan.com/?ak_action=api_record_view&id=1112&type=feed" alt="" /><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.shekhargovindarajan.com%2Ftips-n-tricks%2Fkindle-to-india-frequently-asked-questions%2F&amp;linkname=Kindle%20to%20India%3A%20Frequently%20Asked%20Questions"><img src="http://www.shekhargovindarajan.com/wp-content/plugins/add-to-any/share_save_120_16.gif" width="120" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.shekhargovindarajan.com/tips-n-tricks/kindle-to-india-frequently-asked-questions/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Web Scraping with Firefox and PHP, using XPath</title>
		<link>http://www.shekhargovindarajan.com/scripts/web-scraping-with-firefox-and-php-using-xpath/?&amp;owa_from=feed&amp;owa_sid=</link>
		<comments>http://www.shekhargovindarajan.com/scripts/web-scraping-with-firefox-and-php-using-xpath/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 02:00:58 +0000</pubDate>
		<dc:creator>Shekhar</dc:creator>
				<category><![CDATA[Scripts]]></category>
		<category><![CDATA[automated]]></category>
		<category><![CDATA[firebug]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[firexpath]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[regex]]></category>
		<category><![CDATA[regular expressions]]></category>
		<category><![CDATA[screen scraping]]></category>
		<category><![CDATA[tidy]]></category>
		<category><![CDATA[web scraping]]></category>
		<category><![CDATA[XHTML]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[xpath]]></category>

		<guid isPermaLink="false">http://www.shekhargovindarajan.com/?p=968</guid>
		<description><![CDATA[Last year, I faced two projects which required automated Web scrapping &#8211; to aggregate content from web pages. I evaluated different methods for Web scraping with varied level of success. Thanks to the changing structure of Web pages, non well-formed pages and URL redirects.
Amongst using regular expressions and DOM (Document Object Model) parsing, I used [...]]]></description>
			<content:encoded><![CDATA[<p>Last year, I faced two projects which required automated Web scrapping &#8211; to aggregate content from web pages. I evaluated different methods for Web scraping with varied level of success. Thanks to the changing structure of Web pages, non well-formed pages and URL redirects.</p>
<p>Amongst using regular expressions and DOM (Document Object Model) parsing, I used XPath too. XPath works great for well-formed Web pages. <span id="more-968"></span>A HTML Web page is called well-formed when all the opening tags have corresponding closing tags and the tags are nested properly (refer to <a href="http://en.wikipedia.org/wiki/Well-formed_element" target="_blank">this link</a> for more). A well-formed HTML page is also called an XHTML page.</p>
<p>XPath is a query language to access content on a well formed page &#8211; XHTML or XML. All the content in a Web page lie within HTML elements or tag pairs. The following is needed to extract out the content, of interest, using XPath from a Web page:</p>
<ol>
<li>A well-formed Web page</li>
<li>An XPath expression for the HTML element of interest</li>
<li>XPath query using the expression</li>
</ol>
<p>An XPath expression looks as cryptic as  .//*[@id='home_featured']/div. Here is where Firefox web browser with a plugin called FireXPath comes to help (as explained below). The second and third requirements are met by PHP (in my case) which is used for automated Web scrapping using the XPath expression.</p>
<p><strong>Click and build XPath expressions<br />
</strong>Building the cryptic XPath expression is easy and intuitive with Firefox and a couple of its plugins &#8211; namely Firebug and FireXPath. Install Firebug from <a href="https://addons.mozilla.org/en-US/firefox/addon/1843" target="_blank">here</a>, followed by FireXPath from <a href="https://addons.mozilla.org/en-US/firefox/addon/11900" target="_blank">here</a> and restart Firefox. As of this writing, I&#8217;m using the following versions of Firefox and the plugins:</p>
<ul>
<li>Firefox 3.5.6</li>
<li>Firbug 1.4.5</li>
<li>FireXPath 0.9.1</li>
</ul>
<p>After, the Firefox restart, browse to the Web page of your interest. Next:</p>
<ul>
<li>Launch Firebug by clicking on the bug like icon on the right corner of the status bar.</li>
<li>Click on the tab named XPath (in FireBug)</li>
<li>Click on the arrow (blue arrow) and move your mouse over the content, of interest, on the web page</li>
<li>Once the required chunk is highlighted (with a blue border), note down the XPath expression in the textfield.</li>
</ul>
<p>For example, the screenshot below, shows the XPath expression (.//*[@id='home_featured']/div  ) for the &#8220;Featured Post&#8221; chunk, on the home page, of this blog:</p>
<div id="attachment_974" class="wp-caption alignleft" style="width: 310px"><a href="http://www.shekhargovindarajan.com/wp-content/uploads/2010/01/XPath-Expression-With-FireXPath.png"><img class="size-medium wp-image-974   " style="display: block;" title="With FireXPath, point your mouse on the chunk/element of interest, to build an XPath expression" src="http://www.shekhargovindarajan.com/wp-content/uploads/2010/01/XPath-Expression-With-FireXPath-300x284.png" alt="With FireXPath, point your mouse on the chunk/element of interest, to build an XPath expression" width="300" height="284" /></a><p class="wp-caption-text">With FireXPath, point your mouse on the chunk/element of interest, to build an XPath expression</p></div>
<p>A few examples of XPath expressions:</p>
<ul>
<li>.//*[@id='latest_post']/span[1] : The posted and modified dates of the latest post on this blog &#8211; http://www.shekhargovindarajan.com</li>
<li>.//*[@id='top-stories']/div[1]/h2/a : The headline of the top story on Google News &#8211; http://news.google.com</li>
<li>.//*[@id='mp-tfa']/p[1] : Contents of featured article on Wikipedia &#8211; http://en.wikipedia.org/wiki/Main_Page</li>
</ul>
<p><strong>Automated scarping using PHP<br />
</strong>With the XPath expression in hand, a PHP script as follows, can extract out the required content from the Web page:</p>
<pre>&lt;?php

class WebScrap
	{
	private $url;
	private $xpath;

	public function WebScrap($url,$xpath)
		{
		$this-&gt;url = $url;
		$this-&gt;xpath = $xpath;
		}

	public function GetScrap()
		{
		// use Tidy to try to make the page well formed
		$page = $this-&gt;TidyIt($this-&gt;url);

		// create a document out of the well formed content
		$domDocument=new DOMDocument();
		$domDocument-&gt;loadHTML($page);

		// create an XPath object out of the document and query it for the supplied xpath
		$domXPath = new DOMXPath($domDocument);
		$domNodeList = $domXPath-&gt;query($this-&gt;xpath);

		// Get the content (HTML) out of the NodeList returned by the DOMXPath::query
		$content = $this-&gt;GetHTMLFromNodeList($domNodeList);

		return $content;
		}

	private function TidyIt($url)
		{
		$tidy = new tidy();
		$tidy-&gt;parseFile($url);
		$tidy-&gt;cleanRepair();
		return $tidy;
		}

	private function GetHTMLFromNodeList($domNodeList)
		{
		$domDocument = new DOMDocument();

		$node = $domNodeList-&gt;item(0);   

		foreach($node-&gt;childNodes as $childNode)
			$domDocument-&gt;appendChild($domDocument-&gt;importNode($childNode, true));

		return $domDocument-&gt;saveHTML();
		}

	}

?&gt;</pre>
<p>Note that, the function/method called GetScrap( ) of the WebScrap PHP class first calls the TidyIt( ) method. This function uses the <a href="http://en.wikipedia.org/wiki/HTML_Tidy" target="_blank">Tidy</a> library to fix (if required) the HTML for well-formedness. The PHP class for Tidy is used to fetch the web page via the given URL and repair it. Henceforth the DomXPath object is used to query the well-formed Web page content for the XPath expression.</p>
<p>To use the above code, you will need to install PHP modules for XML and Tidy. On a RedHat/CentOS/Fedora Linux machine, these modules can be installed using the following command:</p>
<pre>yum install php-xml php-tidy</pre>
<p>Save the above code in a file named class.WebScrap.php (say). Subsequently, the WebScrap class can be used as:</p>
<pre>&lt;?php

include("class.WebScrap.php");
$scrap = new WebScrap("http://news.google.com",".//*[@id='top-stories']/div[1]/h2/a");
print($scrap-&gt;GetScrap());

?&gt;</pre>
<p>The code should be self explanatory for a seasoned PHP programmer. If not, shoot your questions via comments to this post. For repeated and automated Web scarping, a scheduler like Cron can be used to execute the above PHP script at regular intervals and fetch the latest content.</p>
<p><strong>The Leftovers<br />
</strong>The code above is readable, crisp and focusses on the subject. For this reason, it has deliberate exclusions.  In a real world application, you should:</p>
<ul>
<li>Use <a href="http://php.net/manual/en/book.curl.php" target="_blank">Curl</a> library in PHP  or external tools like <a href="http://en.wikipedia.org/wiki/Wget" target="_blank">Wget</a> to fetch the URL. Then pass on the fetched content to Tidy. Hint: use the  parseString( ) of Tidy instead of parseFile( )</li>
<li>Handle errors in case of errors in Tidy and XPath.</li>
<li>Fallback to other means (say regular expressions) in case of errors in Tidy or XPath querying</li>
</ul>
<p>Note that XPath may not always give you the structured content that you desire. For example, using the expression .//*[@id='latest_post']/span[1] (for posted and modified dates of the latest post on this blog) will result into something as follows:</p>
<pre>&lt;strong&gt;Posted on:&lt;/strong&gt;
January 8, 2010
&lt;span class="dot"&gt;⋅&lt;/span&gt;
&lt;strong&gt;Last modified:&lt;/strong&gt;
January 8, 2010 @ 4:49 pm</pre>
<p>So there are tags and text (like &#8220;Posted on:&#8221; and &#8220;Last modified:&#8221;) to be stripped out, to get the posted date (January 8, 2010) and the modified date (January 8, 2010 @ 4:49 pm). For this, you may still have to use regular expressions and/or string manipulation functions like split( ).</p>
<img src="http://www.shekhargovindarajan.com/?ak_action=api_record_view&id=968&type=feed" alt="" /><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.shekhargovindarajan.com%2Fscripts%2Fweb-scraping-with-firefox-and-php-using-xpath%2F&amp;linkname=Web%20Scraping%20with%20Firefox%20and%20PHP%2C%20using%20XPath"><img src="http://www.shekhargovindarajan.com/wp-content/plugins/add-to-any/share_save_120_16.gif" width="120" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.shekhargovindarajan.com/scripts/web-scraping-with-firefox-and-php-using-xpath/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
