<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Night Dreaming (by Sudar)</title>
	
	<link>http://sudarmuthu.com</link>
	<description>Night Dreaming (by Sudar)</description>
	<lastBuildDate>Mon, 20 May 2013 14:25:49 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/SudarBlogs" /><feedburner:info uri="sudarblogs" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>13.09</geo:lat><geo:long>80.27</geo:long><image><link>http://sudarmuthu.com/blog/</link><url>http://sudarmuthu.com/images/sudar.png</url><title>Sudar</title></image><feedburner:emailServiceId>SudarBlogs</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site, subject to copyright and fair use.</feedburner:browserFriendly><item>
		<title>Why you should open source your next pet project</title>
		<link>http://feedproxy.google.com/~r/SudarBlogs/~3/74zlEFoIeQc/why-you-should-open-source-your-next-pet-project</link>
		<comments>http://sudarmuthu.com/blog/why-you-should-open-source-your-next-pet-project#comments</comments>
		<pubDate>Mon, 20 May 2013 14:23:13 +0000</pubDate>
		<dc:creator>Sudar</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Random/Personal]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[make file]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=2432</guid>
		<description><![CDATA[After looking into my github account, lot of people used to ask me why I open source my pet projects, especially after looking at my streak at github (my current streak is at 52 days ) the frequency of the question has increased. I used to come up with an answer by combining these words [...]]]></description>
				<content:encoded><![CDATA[<p>After looking into my <a href="https://github.com/sudar">github account</a>, lot of people used to ask me why I open source my pet projects, especially after looking at my streak at github (my current streak is at 52 days <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ) the frequency of the question has increased.</p>
<p>I used to come up with an answer by combining these words randomly (passion, show off, free, rebel, linux, anti-Microsoft, license). But today, I realized that there is another (more important) reason why you should open source your (pet) projects.</p>
<p>Your project might have a <strong>longer shelf life than your interest in the project</strong> and in some cases longer than your life itself.</p>
<p>You might lose interest in the project, but if you have open sourced it, then there might be someone else who will continue to maintain it. But instead if you had just kept it in your hard drive, then it will just become part of the cosmic dust.</p>
<h2>Abandoned projects</h2>
<p>I have read about many examples where projects are continued to be maintained by other people, when the original creator has lost interest. _why is one famous example. When he <a href="http://ejohn.org/blog/eulogy-to-_why/">suddenly went offline in Aug 2009</a> people immediately started creating mirrors of his projects and even though he is no more (in the online world) his projects are still being maintained actively.</p>
<p>None of this would have happened if he had not open sourced his code.</p>
<h2>Arduino Makefile</h2>
<p>Let&#8217;s talk about the project that thought me this.</p>
<p>Sometime back, I came across a post which explained how you can <a href="http://mjo.tc/atelier/2009/02/arduino-cli.html">program Arduino from command line</a> by using a makefile. I immediately got hooked and started using it when even I was working on Arduino sketches.</p>
<p>Soon I found out a couple of issues and submitted pull requests. Some of my pull requests were accepted and others weren&#8217;t. While browsing through the issues and pull requests of the project in github, I found that there were lot of other people who have also contributed various patches to the project. It also seemed that the original author has stopped doing any development or answering pull requests.</p>
<p>I started to consolidate all pull requests and patches from various forks into a common fork and even updated the readme file expressing my desire that one day all these changes would get into the main repo <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Fast forward a couple of months.</p>
<p>Last week, I was surprised to receive an email from the original author, saying that he has lost interest in the project and whether I would be interested in maintaining the project going forward. I happily accepted and he <a href="https://github.com/sudar/Arduino-Makefile">transferred the repo to my account</a>, after I merged all my changes back into the main repo.</p>
<p>None of this would have been possible if he didn&#8217;t choose to open source the project initially and also let go the project when he lost interest.</p>
<h2>Thanks to Github</h2>
<p>Ohh, by the way, I should also mention that some of it was possible only because of github. If github wasn&#8217;t there, then it would had been difficult for me to find and consolidate other forks and he also wouldn&#8217;t have noticed my fork or the effort that I was spending on the project.</p>
<p>Also, the recent <a href="https://github.com/blog/1508-repository-redirects-are-here">addition of redirects by github</a> made the repo transfer really seamless.</p>
<p>So remember to open source your pet projects by at least uploading them to github. Because you may lose interest in the project some day, but the project might still continue to live long after that.</p>
<p>Happy Open sourcing <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=74zlEFoIeQc:sk9zKWpWhAI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=74zlEFoIeQc:sk9zKWpWhAI:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=74zlEFoIeQc:sk9zKWpWhAI:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=74zlEFoIeQc:sk9zKWpWhAI:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=74zlEFoIeQc:sk9zKWpWhAI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=74zlEFoIeQc:sk9zKWpWhAI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=74zlEFoIeQc:sk9zKWpWhAI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=74zlEFoIeQc:sk9zKWpWhAI:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=74zlEFoIeQc:sk9zKWpWhAI:JEwB19i1-c4"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=74zlEFoIeQc:sk9zKWpWhAI:JEwB19i1-c4" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=74zlEFoIeQc:sk9zKWpWhAI:wF9xT3WuBAs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=74zlEFoIeQc:sk9zKWpWhAI:wF9xT3WuBAs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=74zlEFoIeQc:sk9zKWpWhAI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=74zlEFoIeQc:sk9zKWpWhAI:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=74zlEFoIeQc:sk9zKWpWhAI:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/SudarBlogs/~4/74zlEFoIeQc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sudarmuthu.com/blog/why-you-should-open-source-your-next-pet-project/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://sudarmuthu.com/blog/why-you-should-open-source-your-next-pet-project?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=why-you-should-open-source-your-next-pet-project</feedburner:origLink></item>
		<item>
		<title>Find and replace strings in MySQL</title>
		<link>http://feedproxy.google.com/~r/SudarBlogs/~3/CP41u-73jJQ/find-and-replace-strings-in-mysql</link>
		<comments>http://sudarmuthu.com/blog/find-and-replace-strings-in-mysql#comments</comments>
		<pubDate>Wed, 15 May 2013 03:32:37 +0000</pubDate>
		<dc:creator>Sudar</dc:creator>
				<category><![CDATA[Database Programming]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Query]]></category>
		<category><![CDATA[replace]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=2417</guid>
		<description><![CDATA[Recently, I was checking the apache error logs of a project I was working on and found that it has lot of 404 errors for images. I used my apache error parsing script and found that most of the errors were because the production db was still having some references to images present in the [...]]]></description>
				<content:encoded><![CDATA[<p>Recently, I was checking the apache error logs of a project I was working on and found that it has lot of 404 errors for images. I used my <a href="http://sudarmuthu.com/blog/parse-apache-error-log-and-list-down-all-missing-images">apache error parsing script</a> and found that most of the errors were because the production db was still having some references to images present in the stage machine.</p>
<p>I had to do a quick find and replace in the MySQL db and after a quick search came up with the following query, using the <a href="http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_replace">replace</a> function.</p>
<p><code>UPDATE table SET field = REPLACE(field, 'stage-url', 'prod-url');</code></p>
<p>Since I was about to run this query on a prod db directly, I wanted to add another condition to replace only rows that contained the stage url as an additional precaution (of course after taking backup of the db <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ).</p>
<p><code>UPDATE table SET field = REPLACE(field, 'stage-url', 'prod-url') WHERE INSTR(field, 'stage-url') &gt; 0;</code></p>
<p>Hope this query is useful for someone who also had a shock like me when they looked at the apache error logs <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=CP41u-73jJQ:vuGX19FnE8g:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=CP41u-73jJQ:vuGX19FnE8g:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=CP41u-73jJQ:vuGX19FnE8g:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=CP41u-73jJQ:vuGX19FnE8g:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=CP41u-73jJQ:vuGX19FnE8g:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=CP41u-73jJQ:vuGX19FnE8g:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=CP41u-73jJQ:vuGX19FnE8g:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=CP41u-73jJQ:vuGX19FnE8g:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=CP41u-73jJQ:vuGX19FnE8g:JEwB19i1-c4"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=CP41u-73jJQ:vuGX19FnE8g:JEwB19i1-c4" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=CP41u-73jJQ:vuGX19FnE8g:wF9xT3WuBAs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=CP41u-73jJQ:vuGX19FnE8g:wF9xT3WuBAs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=CP41u-73jJQ:vuGX19FnE8g:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=CP41u-73jJQ:vuGX19FnE8g:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=CP41u-73jJQ:vuGX19FnE8g:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/SudarBlogs/~4/CP41u-73jJQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sudarmuthu.com/blog/find-and-replace-strings-in-mysql/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://sudarmuthu.com/blog/find-and-replace-strings-in-mysql?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=find-and-replace-strings-in-mysql</feedburner:origLink></item>
		<item>
		<title>Recovering Android KeyStore password</title>
		<link>http://feedproxy.google.com/~r/SudarBlogs/~3/KFAFhU544kk/recovering-android-keystore-password</link>
		<comments>http://sudarmuthu.com/blog/recovering-android-keystore-password#comments</comments>
		<pubDate>Wed, 08 May 2013 03:36:05 +0000</pubDate>
		<dc:creator>Sudar</dc:creator>
				<category><![CDATA[Android/Java]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[KeyStore]]></category>
		<category><![CDATA[Password]]></category>
		<category><![CDATA[recover]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=2402</guid>
		<description><![CDATA[Sometime back, I helped a friend of mine to launch an app in the Android market. As most of the Android developers know, one of the requirements to upload your APK file into the android market is that you have to sign it using a KeyStore. I created a new KeyStore for him and I [...]]]></description>
				<content:encoded><![CDATA[<p>Sometime back, I helped a friend of mine to launch an app in the Android market. As most of the Android developers know, one of the requirements to upload your APK file into the android market is that you have to sign it using a KeyStore. </p>
<p>I created a new KeyStore for him and I signed the app and he uploaded it to Android market. All this happened a couple of years back and now when he wanted to update the app again, he had to sign the apk file again with the same KeyStore.</p>
<p>I had remembered to backup the keystore file, but somehow couldn&#8217;t remember the exact password I used while creating the KeyStore.</p>
<p>After a quick search, I realized that I am not <a href="http://stackoverflow.com/q/8877354/24949">the</a> <a href="http://stackoverflow.com/q/6149530/24949">only</a> <a href="http://stackoverflow.com/q/8894987/24949">one</a> who has done that before and also realized that there is no other way to upload the app again, without recovering the password <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p>I started my search to find ways to recover the password and luckily found a <a href="https://code.google.com/p/android-keystore-password-recover/">tool</a>, which took a smart list of words and then tried to guess the password by brute force. I gave it a couple of probable words that I would have used for the password and luckily I was able to recover the password with-in a couple of hours. <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Some major take aways for me from this entire episode.</p>
<ul>
<li>Always, always and always make sure you have more than one copy of backup</li>
<li>Don&#8217;t ever forget the password for your KeyStore. If you do then you might have to abandon your current app in the market.</li>
<li>As <a href = "http://twitter.com/pareshmayani">@pareshmayani</a> pointed out below, make sure you store the keystore file as well in your app&#8217;s repo. God be merciful on you, if you don&#8217;t version your code</li>
<li>Sometimes keeping a simple password helps <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </li>
</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=KFAFhU544kk:zkXbxjfvHLQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=KFAFhU544kk:zkXbxjfvHLQ:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=KFAFhU544kk:zkXbxjfvHLQ:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=KFAFhU544kk:zkXbxjfvHLQ:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=KFAFhU544kk:zkXbxjfvHLQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=KFAFhU544kk:zkXbxjfvHLQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=KFAFhU544kk:zkXbxjfvHLQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=KFAFhU544kk:zkXbxjfvHLQ:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=KFAFhU544kk:zkXbxjfvHLQ:JEwB19i1-c4"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=KFAFhU544kk:zkXbxjfvHLQ:JEwB19i1-c4" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=KFAFhU544kk:zkXbxjfvHLQ:wF9xT3WuBAs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=KFAFhU544kk:zkXbxjfvHLQ:wF9xT3WuBAs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=KFAFhU544kk:zkXbxjfvHLQ:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=KFAFhU544kk:zkXbxjfvHLQ:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=KFAFhU544kk:zkXbxjfvHLQ:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/SudarBlogs/~4/KFAFhU544kk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sudarmuthu.com/blog/recovering-android-keystore-password/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://sudarmuthu.com/blog/recovering-android-keystore-password?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=recovering-android-keystore-password</feedburner:origLink></item>
		<item>
		<title>Setting up a home network with two routers</title>
		<link>http://feedproxy.google.com/~r/SudarBlogs/~3/Wws-BUY0EdM/setting-up-a-home-network-with-two-routers</link>
		<comments>http://sudarmuthu.com/blog/setting-up-a-home-network-with-two-routers#comments</comments>
		<pubDate>Sat, 27 Apr 2013 06:47:51 +0000</pubDate>
		<dc:creator>Sudar</dc:creator>
				<category><![CDATA[Gadgets]]></category>
		<category><![CDATA[Broadband]]></category>
		<category><![CDATA[BSNL]]></category>
		<category><![CDATA[Router]]></category>
		<category><![CDATA[WiFi]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=2358</guid>
		<description><![CDATA[Recently, I solved network connectivity problem at home by setting up a slightly complex network using an old BSNL wa3002g4 router. Earlier I wrote about how I used this BSNL wa3002g4 router as a WiFi switch and lot of people said that the post was very useful. So I decided to document this setup as [...]]]></description>
				<content:encoded><![CDATA[<p>Recently, I solved network connectivity problem at home by setting up a slightly complex network using an old BSNL wa3002g4 router. Earlier I wrote about <a href="http://sudarmuthu.com/blog/using-bsnl-wa3002g4-router-as-a-wifi-switch-for-tata-wimax-connection">how I used this BSNL wa3002g4 router as a WiFi switch</a> and lot of people said that the post was very useful. So I decided to document this setup as well, so that it will be useful for someone who wants to do the same thing <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>Problem</h2>
<p>First, let me explain the problem that I was facing. I have half a dozen devices running multiple OS (two desktops, a Mac, an iPhone, couple of Android phones, couple of Raspberry Pis.. you get the idea right <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ) that I wanted to be in the same network and share my single internet connection. Also, I live in two floors and my WiFi signal was too week to penetrate the concrete across the floors.</p>
<p>In my old setup, the cable from my broadband provider was connected to a Netgear router, that acted as a network switch as well as a WiFi router. This was in my top floor where the desktops were present. But when I am in the bottom floor, the WiFi signal was too weak to be used in my laptop or in my phones.</p>
<h2>Solution</h2>
<p>My first thought was to buy a WiFi expander and use it to boost the WiFi signal in the bottom floor. When I was about to buy the signal booster, I remembered that I had an old BSNL wa3002g4 router, which I was using earlier as a WiFi switch. I know that it is a multi-functional device, so I was trying to see if I can use it to expand my WiFi range.</p>
<p>Unfortunately, it can&#8217;t act as a WiFi expander. But then I realized, I can still use it as a switch. I started to experiment a bit with it and after some trial and errors, I made it to work in the way I wanted <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>My current setup</h3>
<p>The cable from my broadband provider (currently ACT broadband, who gives me 15 Mbps <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ) is connected to the input of my Netgear router which is placed in the top floor. It gives out both wired and wireless connections to the devices in the top floor. One of those output port from Netgear is connected to my old BSNL wa3002g4 router which is placed in the bottom floor. This second router gives wired and wireless to the devices in the bottom floor. </p>
<p>After I had this setup, I realized that both the routers were creating their own sub networks and the devices are not in the same network. Also I had to use two different WiFi ssid&#8217;s which kind of defeated the whole purpose.</p>
<h3>DHCP relay</h3>
<p>It was at this point, that I discovered that my BSNL router has a feature called <a href="http://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol#DHCP_relaying">DHCP relay</a>, which allowed me to configure the connections so that they can be in the same network.</p>
<p>DHCP relay, allows you to specify a different DHCP server from where the device should get dynamic ip address instead of generating ip address on its own. I specified the ip address of my Netgear router as the DHCP server in the DHCP relay config of my BSNL router.</p>
<p>This allowed the BSNL router to relay all DHCP requests to the Netgear router instead of generating the ip address on its own. Now all my devices were connected in the same network.</p>
<h3>Configuring WiFi</h3>
<p>The next problem that I had to solve was setting up the WiFi ssid&#8217;s. Again by trial and error I found that if I configured both routers with the same WiFi ssid and same authentication parameters, then the devices can connect to both the routers seamlessly. I changed the WiFi config in both the routers to be the same and then my devices started connecting to the network without any issues even when I moved across floors. The devices always pick up the router which has the best signal.</p>
<p>And now I am finally happy that all my devices are in the same network and that I can connect to my network from any part of my home, without worrying about the signal range <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=Wws-BUY0EdM:4roaKWLI8m8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=Wws-BUY0EdM:4roaKWLI8m8:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=Wws-BUY0EdM:4roaKWLI8m8:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=Wws-BUY0EdM:4roaKWLI8m8:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=Wws-BUY0EdM:4roaKWLI8m8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=Wws-BUY0EdM:4roaKWLI8m8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=Wws-BUY0EdM:4roaKWLI8m8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=Wws-BUY0EdM:4roaKWLI8m8:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=Wws-BUY0EdM:4roaKWLI8m8:JEwB19i1-c4"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=Wws-BUY0EdM:4roaKWLI8m8:JEwB19i1-c4" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=Wws-BUY0EdM:4roaKWLI8m8:wF9xT3WuBAs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=Wws-BUY0EdM:4roaKWLI8m8:wF9xT3WuBAs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=Wws-BUY0EdM:4roaKWLI8m8:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=Wws-BUY0EdM:4roaKWLI8m8:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=Wws-BUY0EdM:4roaKWLI8m8:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/SudarBlogs/~4/Wws-BUY0EdM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sudarmuthu.com/blog/setting-up-a-home-network-with-two-routers/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://sudarmuthu.com/blog/setting-up-a-home-network-with-two-routers?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=setting-up-a-home-network-with-two-routers</feedburner:origLink></item>
		<item>
		<title>Syntax highlighting code in slides</title>
		<link>http://feedproxy.google.com/~r/SudarBlogs/~3/8trIiJm3QYU/syntax-highlighting-code-in-slides</link>
		<comments>http://sudarmuthu.com/blog/syntax-highlighting-code-in-slides#comments</comments>
		<pubDate>Sat, 06 Apr 2013 06:49:35 +0000</pubDate>
		<dc:creator>Sudar</dc:creator>
				<category><![CDATA[Events/Camps]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[slides]]></category>
		<category><![CDATA[syntax]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=2302</guid>
		<description><![CDATA[If you look at most of my slides that I have created for my talks, you will find that whenever I have code, I always try to syntax highlight it. It is very easy to comprehend code that is syntax highlighted and I always make it a point to do that, so that it is [...]]]></description>
				<content:encoded><![CDATA[<p>If you look at most of my slides that I have created for <a href="http://sudarmuthu.com/my-talks">my talks</a>, you will find that whenever I have code, I always try to syntax highlight it.</p>
<p>It is very easy to comprehend code that is syntax highlighted and I always make it a point to do that, so that it is easy for my audience.</p>
<p>Recently a couple of people asked me how I do it and I thought of writing about it, so that you can also do it in your slides <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>No screenshots, please</h2>
<p>I find that most people take the easy route and just put a screenshot of the code from an IDE. Please don&#8217;t do it. It defeats the entire purpose of posting code in the slide, since people can&#8217;t copy it. And also it becomes extremely difficult for you update it at a latter point.</p>
<p>So friends, don&#8217;t let friends do it <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>Rich Text Format (RTF)</h2>
<p>Now that we have decided not to post screenshot, the next thing we need to do is to convert the code to <a href="http://en.wikipedia.org/wiki/Rich_Text_Format">RTF format</a>. </p>
<p>Most IDE&#8217;s support copying the code in RTF format, so first check whether your favorite IDE supports it. If not there are many tools that are available that can do it. </p>
<h2>If your editor is Vim</h2>
<p>If you are like me and your favorite editor is Vim and you are using Mac, then you can use an addon called <a href="https://github.com/aniero/vim-copy-as-rtf">copy as rtf</a>. This addon gives you a simple command <code>:CopyRTF</code> which will convert the entire buffer (or highlighted lines) to RTF, including the background and foreground color and copy it to buffer.</p>
<p>So, next time you show code in your slides, make sure you convert them to RTF, instead of placing a screenshot.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=8trIiJm3QYU:YVlTEbb8Fes:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=8trIiJm3QYU:YVlTEbb8Fes:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=8trIiJm3QYU:YVlTEbb8Fes:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=8trIiJm3QYU:YVlTEbb8Fes:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=8trIiJm3QYU:YVlTEbb8Fes:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=8trIiJm3QYU:YVlTEbb8Fes:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=8trIiJm3QYU:YVlTEbb8Fes:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=8trIiJm3QYU:YVlTEbb8Fes:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=8trIiJm3QYU:YVlTEbb8Fes:JEwB19i1-c4"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=8trIiJm3QYU:YVlTEbb8Fes:JEwB19i1-c4" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=8trIiJm3QYU:YVlTEbb8Fes:wF9xT3WuBAs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=8trIiJm3QYU:YVlTEbb8Fes:wF9xT3WuBAs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=8trIiJm3QYU:YVlTEbb8Fes:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=8trIiJm3QYU:YVlTEbb8Fes:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=8trIiJm3QYU:YVlTEbb8Fes:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/SudarBlogs/~4/8trIiJm3QYU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sudarmuthu.com/blog/syntax-highlighting-code-in-slides/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://sudarmuthu.com/blog/syntax-highlighting-code-in-slides?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=syntax-highlighting-code-in-slides</feedburner:origLink></item>
		<item>
		<title>Creating new pages in WordPress through code</title>
		<link>http://feedproxy.google.com/~r/SudarBlogs/~3/2vQtUeye5jA/creating-new-pages-in-wordpress-through-code</link>
		<comments>http://sudarmuthu.com/blog/creating-new-pages-in-wordpress-through-code#comments</comments>
		<pubDate>Thu, 04 Apr 2013 03:22:21 +0000</pubDate>
		<dc:creator>Sudar</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[page]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=2300</guid>
		<description><![CDATA[Recently, I had to create a new page automatically in WordPress, when a Plugin was created. I thought there will be a simple core function like wp_insert_post which I can use. It turned out that create a new page from code is not that easy in WordPress. I ended up creating a new function myself [...]]]></description>
				<content:encoded><![CDATA[<p>Recently, I had to create a new page automatically in WordPress, when a Plugin was created. </p>
<p>I thought there will be a simple core function like <code>wp_insert_post</code> which I can use. It turned out that create a new page from code is not that easy in WordPress. I ended up creating a new function myself wrapping the call to <code>wp_insert_post</code>.</p>
<p>I thought of posting it here so that I know where to look when I need it again <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>So here is the function.</p>
<script>document.write('<link href=\"https://gist.github.com/assets/embed-17ab34a51711628d8f5449c4663a9318.css\" media=\"screen\" rel=\"stylesheet\" />')
document.write('<div id=\"gist5307387\" class=\"gist\">\n      <div class=\"gist-file\">\n        <div class=\"gist-data gist-syntax\">\n\n\n\n  <div class=\"file-data\">\n    <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines highlight\">\n      <tr>\n        <td class=\"line-numbers\">\n          <span class=\"line-number\" id=\"file-wp-create-page-php-L1\" rel=\"file-wp-create-page-php-L1\">1<\/span>\n          <span class=\"line-number\" id=\"file-wp-create-page-php-L2\" rel=\"file-wp-create-page-php-L2\">2<\/span>\n          <span class=\"line-number\" id=\"file-wp-create-page-php-L3\" rel=\"file-wp-create-page-php-L3\">3<\/span>\n          <span class=\"line-number\" id=\"file-wp-create-page-php-L4\" rel=\"file-wp-create-page-php-L4\">4<\/span>\n          <span class=\"line-number\" id=\"file-wp-create-page-php-L5\" rel=\"file-wp-create-page-php-L5\">5<\/span>\n          <span class=\"line-number\" id=\"file-wp-create-page-php-L6\" rel=\"file-wp-create-page-php-L6\">6<\/span>\n          <span class=\"line-number\" id=\"file-wp-create-page-php-L7\" rel=\"file-wp-create-page-php-L7\">7<\/span>\n          <span class=\"line-number\" id=\"file-wp-create-page-php-L8\" rel=\"file-wp-create-page-php-L8\">8<\/span>\n          <span class=\"line-number\" id=\"file-wp-create-page-php-L9\" rel=\"file-wp-create-page-php-L9\">9<\/span>\n          <span class=\"line-number\" id=\"file-wp-create-page-php-L10\" rel=\"file-wp-create-page-php-L10\">10<\/span>\n          <span class=\"line-number\" id=\"file-wp-create-page-php-L11\" rel=\"file-wp-create-page-php-L11\">11<\/span>\n          <span class=\"line-number\" id=\"file-wp-create-page-php-L12\" rel=\"file-wp-create-page-php-L12\">12<\/span>\n          <span class=\"line-number\" id=\"file-wp-create-page-php-L13\" rel=\"file-wp-create-page-php-L13\">13<\/span>\n          <span class=\"line-number\" id=\"file-wp-create-page-php-L14\" rel=\"file-wp-create-page-php-L14\">14<\/span>\n          <span class=\"line-number\" id=\"file-wp-create-page-php-L15\" rel=\"file-wp-create-page-php-L15\">15<\/span>\n          <span class=\"line-number\" id=\"file-wp-create-page-php-L16\" rel=\"file-wp-create-page-php-L16\">16<\/span>\n          <span class=\"line-number\" id=\"file-wp-create-page-php-L17\" rel=\"file-wp-create-page-php-L17\">17<\/span>\n          <span class=\"line-number\" id=\"file-wp-create-page-php-L18\" rel=\"file-wp-create-page-php-L18\">18<\/span>\n          <span class=\"line-number\" id=\"file-wp-create-page-php-L19\" rel=\"file-wp-create-page-php-L19\">19<\/span>\n          <span class=\"line-number\" id=\"file-wp-create-page-php-L20\" rel=\"file-wp-create-page-php-L20\">20<\/span>\n          <span class=\"line-number\" id=\"file-wp-create-page-php-L21\" rel=\"file-wp-create-page-php-L21\">21<\/span>\n          <span class=\"line-number\" id=\"file-wp-create-page-php-L22\" rel=\"file-wp-create-page-php-L22\">22<\/span>\n          <span class=\"line-number\" id=\"file-wp-create-page-php-L23\" rel=\"file-wp-create-page-php-L23\">23<\/span>\n        <\/td>\n        <td class=\"line-data\">\n          <pre class=\"line-pre\"><div class=\"line\" id=\"file-wp-create-page-php-LC1\"><span class=\"cp\">&lt;?php<\/span><\/div><div class=\"line\" id=\"file-wp-create-page-php-LC2\"><span class=\"sd\">/**<\/span><\/div><div class=\"line\" id=\"file-wp-create-page-php-LC3\"><span class=\"sd\"> * Create a new page in WordPress<\/span><\/div><div class=\"line\" id=\"file-wp-create-page-php-LC4\"><span class=\"sd\"> */<\/span><\/div><div class=\"line\" id=\"file-wp-create-page-php-LC5\"><span class=\"k\">function<\/span> <span class=\"nf\">create_page<\/span><span class=\"p\">(<\/span><span class=\"nv\">$title<\/span><span class=\"p\">,<\/span> <span class=\"nv\">$content<\/span> <span class=\"o\">=<\/span> <span class=\"s1\">&#39;&#39;<\/span><span class=\"p\">,<\/span> <span class=\"nv\">$parent<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"nv\">$page_template<\/span> <span class=\"o\">=<\/span> <span class=\"s1\">&#39;&#39;<\/span><span class=\"p\">,<\/span> <span class=\"nv\">$menu_order<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">0<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span><\/div><div class=\"line\" id=\"file-wp-create-page-php-LC6\">    <span class=\"nv\">$args<\/span> <span class=\"o\">=<\/span> <span class=\"k\">array<\/span><span class=\"p\">(<\/span><\/div><div class=\"line\" id=\"file-wp-create-page-php-LC7\">        <span class=\"s1\">&#39;post_title&#39;<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nv\">$title<\/span><span class=\"p\">,<\/span><\/div><div class=\"line\" id=\"file-wp-create-page-php-LC8\">        <span class=\"s1\">&#39;post_content&#39;<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nv\">$content<\/span><span class=\"p\">,<\/span><\/div><div class=\"line\" id=\"file-wp-create-page-php-LC9\">        <span class=\"s1\">&#39;post_parent&#39;<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nv\">$parent<\/span><span class=\"p\">,<\/span><\/div><div class=\"line\" id=\"file-wp-create-page-php-LC10\">        <span class=\"s1\">&#39;menu_order&#39;<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nv\">$menu_order<\/span><span class=\"p\">,<\/span><\/div><div class=\"line\" id=\"file-wp-create-page-php-LC11\">        <span class=\"s1\">&#39;post_status&#39;<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"s1\">&#39;publish&#39;<\/span><span class=\"p\">,<\/span><\/div><div class=\"line\" id=\"file-wp-create-page-php-LC12\">        <span class=\"s1\">&#39;post_type&#39;<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"s1\">&#39;page&#39;<\/span><\/div><div class=\"line\" id=\"file-wp-create-page-php-LC13\">    <span class=\"p\">);<\/span><\/div><div class=\"line\" id=\"file-wp-create-page-php-LC14\">&nbsp;<\/div><div class=\"line\" id=\"file-wp-create-page-php-LC15\">    <span class=\"nv\">$post_id<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">wp_insert_post<\/span><span class=\"p\">(<\/span><span class=\"nv\">$args<\/span><span class=\"p\">);<\/span><\/div><div class=\"line\" id=\"file-wp-create-page-php-LC16\">&nbsp;<\/div><div class=\"line\" id=\"file-wp-create-page-php-LC17\">    <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"nv\">$post_id<\/span> <span class=\"o\">&gt;<\/span> <span class=\"mi\">0<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"nv\">$page_template<\/span> <span class=\"o\">!=<\/span> <span class=\"s1\">&#39;&#39;<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span><\/div><div class=\"line\" id=\"file-wp-create-page-php-LC18\">        <span class=\"nx\">update_post_meta<\/span><span class=\"p\">(<\/span><span class=\"nv\">$post_id<\/span><span class=\"p\">,<\/span> <span class=\"s1\">&#39;_wp_page_template&#39;<\/span><span class=\"p\">,<\/span> <span class=\"nv\">$page_template<\/span><span class=\"p\">);<\/span><\/div><div class=\"line\" id=\"file-wp-create-page-php-LC19\">    <span class=\"p\">}<\/span><\/div><div class=\"line\" id=\"file-wp-create-page-php-LC20\">&nbsp;<\/div><div class=\"line\" id=\"file-wp-create-page-php-LC21\">    <span class=\"k\">return<\/span> <span class=\"nv\">$post_id<\/span><span class=\"p\">;<\/span><\/div><div class=\"line\" id=\"file-wp-create-page-php-LC22\"><span class=\"p\">}<\/span><\/div><div class=\"line\" id=\"file-wp-create-page-php-LC23\"><span class=\"cp\">?&gt;<\/span><span class=\"x\"><\/span><\/div><\/pre>\n        <\/td>\n      <\/tr>\n    <\/table>\n  <\/div>\n\n        <\/div>\n\n        <div class=\"gist-meta\">\n          <a href=\"https://gist.github.com/sudar/5307387/raw/981e08bb289e5588f6cab28d8e56e21610fd79f9/wp-create-page.php\" style=\"float:right\">view raw<\/a>\n          <a href=\"https://gist.github.com/sudar/5307387#file-wp-create-page-php\" style=\"float:right; margin-right:10px; color:#666;\">wp-create-page.php<\/a>\n          <a href=\"https://gist.github.com/sudar/5307387\">This Gist<\/a> brought to you by <a href=\"http://github.com\">GitHub<\/a>.\n        <\/div>\n      <\/div>\n<\/div>\n')
</script><div style='margin-bottom:1em;padding:0;'><noscript><code><pre style='overflow:auto;margin:0;padding:0;border:1px solid #DDD;'>&lt;?php
/**
 * Create a new page in WordPress
 */
function create_page($title, $content = '', $parent = 0, $page_template = '', $menu_order = 0) {
    $args = array(
        'post_title' =&gt; $title,
        'post_content' =&gt; $content,
        'post_parent' =&gt; $parent,
        'menu_order' =&gt; $menu_order,
        'post_status' =&gt; 'publish',
        'post_type' =&gt; 'page'
    );

    $post_id = wp_insert_post($args);

    if ($post_id &gt; 0 &amp;&amp; $page_template != '') {
        update_post_meta($post_id, '_wp_page_template', $page_template);
    }

    return $post_id;
}
?&gt;</pre></code></noscript></div>
<p>It takes 5 parameters, out of which only one is mandatory.</p>
<ul>
<li><code>$title</code> &#8211; The title of the post (mandatory)</li>
<li><code>$content</code> &#8211; The content of the post</li>
<li><code>$parent</code> &#8211; The post id of the parent page. If this is the top level page, then pass 0</li>
<li><code>$page_template</code> &#8211; The page template to use for this page</li>
<li><code>$menu_order</code> &#8211; The menu order field.</li>
</ul>
<p>While you are at it, you might also want to find out whether the <a href="http://sudarmuthu.com/blog/retrieving-posts-and-pages-based-on-title-in-wordpress">page with that title</a> already exists, before creating a new one.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=2vQtUeye5jA:rZMryjuBOQ4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=2vQtUeye5jA:rZMryjuBOQ4:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=2vQtUeye5jA:rZMryjuBOQ4:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=2vQtUeye5jA:rZMryjuBOQ4:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=2vQtUeye5jA:rZMryjuBOQ4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=2vQtUeye5jA:rZMryjuBOQ4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=2vQtUeye5jA:rZMryjuBOQ4:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=2vQtUeye5jA:rZMryjuBOQ4:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=2vQtUeye5jA:rZMryjuBOQ4:JEwB19i1-c4"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=2vQtUeye5jA:rZMryjuBOQ4:JEwB19i1-c4" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=2vQtUeye5jA:rZMryjuBOQ4:wF9xT3WuBAs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=2vQtUeye5jA:rZMryjuBOQ4:wF9xT3WuBAs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=2vQtUeye5jA:rZMryjuBOQ4:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=2vQtUeye5jA:rZMryjuBOQ4:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=2vQtUeye5jA:rZMryjuBOQ4:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/SudarBlogs/~4/2vQtUeye5jA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sudarmuthu.com/blog/creating-new-pages-in-wordpress-through-code/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://sudarmuthu.com/blog/creating-new-pages-in-wordpress-through-code?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=creating-new-pages-in-wordpress-through-code</feedburner:origLink></item>
		<item>
		<title>Count the number of empty lines in a file using grep</title>
		<link>http://feedproxy.google.com/~r/SudarBlogs/~3/rU3QgOplKAg/count-the-number-of-empty-lines-in-a-file-using-grep</link>
		<comments>http://sudarmuthu.com/blog/count-the-number-of-empty-lines-in-a-file-using-grep#comments</comments>
		<pubDate>Thu, 28 Mar 2013 02:46:04 +0000</pubDate>
		<dc:creator>Sudar</dc:creator>
				<category><![CDATA[Unix/Server Stuff]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[grep]]></category>
		<category><![CDATA[one liner]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=2292</guid>
		<description><![CDATA[Recently I had a need to count the number of empty lines in a text file. After some digging into the man pages of grep I was able to come up with a one liner which was able to do it. Following my tradition of documenting one liners, I am going to document this one [...]]]></description>
				<content:encoded><![CDATA[<p>Recently I had a need to count the number of empty lines in a text file. After some digging into the <code>man</code> pages of <code>grep</code> I was able to come up with a one liner which was able to do it.</p>
<p>Following my tradition of <a href = "http://sudarmuthu.com/blog/remove-duplicate-lines-based-on-a-field">documenting</a> <a href = "http://sudarmuthu.com/blog/tag/one-liner">one liners</a>, I am going to document this one as well <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>Assumption</h2>
<p>By empty line, I mean any line which either has no characters or has only whitespace (space, tab) characters.</p>
<h2>Command</h2>
<p>For the impatient in you, here is the actual command.</p>
<script>document.write('<link href=\"https://gist.github.com/assets/embed-17ab34a51711628d8f5449c4663a9318.css\" media=\"screen\" rel=\"stylesheet\" />')
document.write('<div id=\"gist5260116\" class=\"gist\">\n      <div class=\"gist-file\">\n        <div class=\"gist-data gist-syntax\">\n\n\n\n  <div class=\"file-data\">\n    <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines highlight\">\n      <tr>\n        <td class=\"line-numbers\">\n          <span class=\"line-number\" id=\"file-empty-lines-count-sh-L1\" rel=\"file-empty-lines-count-sh-L1\">1<\/span>\n        <\/td>\n        <td class=\"line-data\">\n          <pre class=\"line-pre\"><div class=\"line\" id=\"file-empty-lines-count-sh-LC1\">grep -cv -P <span class=\"s1\">&#39;\\S&#39;<\/span> filename<\/div><\/pre>\n        <\/td>\n      <\/tr>\n    <\/table>\n  <\/div>\n\n        <\/div>\n\n        <div class=\"gist-meta\">\n          <a href=\"https://gist.github.com/sudar/5260116/raw/583bf614035be633bcf130edab7680b7fcf6215f/empty-lines-count.sh\" style=\"float:right\">view raw<\/a>\n          <a href=\"https://gist.github.com/sudar/5260116#file-empty-lines-count-sh\" style=\"float:right; margin-right:10px; color:#666;\">empty-lines-count.sh<\/a>\n          <a href=\"https://gist.github.com/sudar/5260116\">This Gist<\/a> brought to you by <a href=\"http://github.com\">GitHub<\/a>.\n        <\/div>\n      <\/div>\n<\/div>\n')
</script><div style='margin-bottom:1em;padding:0;'><noscript><code><pre style='overflow:auto;margin:0;padding:0;border:1px solid #DDD;'>grep -cv -P '\S' filename</pre></code></noscript></div>
<h2>Explanation</h2>
<ul>
<li><code>-P '\S'</code> &#8211; This selects all lines that have a non whitespace character</li>
<li><code>-c</code> &#8211; Print the count of matching lines</li>
<li><code>-v</code> &#8211; Select only the non-matching lines</li>
</ul>
<p>So, we are first matching all lines that have a non whitespace character and then use <code>-v</code> option to ignore them and then <code>-c</code> option to print the count instead of the actual line.</p>
<p>If we wanted the count of all non-empty lines, then we just have to remove the <code>-v</code> option from the above command.</p>
<script>document.write('<link href=\"https://gist.github.com/assets/embed-17ab34a51711628d8f5449c4663a9318.css\" media=\"screen\" rel=\"stylesheet\" />')
document.write('<div id=\"gist5260116\" class=\"gist\">\n      <div class=\"gist-file\">\n        <div class=\"gist-data gist-syntax\">\n\n\n\n  <div class=\"file-data\">\n    <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines highlight\">\n      <tr>\n        <td class=\"line-numbers\">\n          <span class=\"line-number\" id=\"file-non-empty-lines-count-sh-L1\" rel=\"file-non-empty-lines-count-sh-L1\">1<\/span>\n        <\/td>\n        <td class=\"line-data\">\n          <pre class=\"line-pre\"><div class=\"line\" id=\"file-non-empty-lines-count-sh-LC1\">grep -c -P <span class=\"s1\">&#39;\\S&#39;<\/span> filename<\/div><\/pre>\n        <\/td>\n      <\/tr>\n    <\/table>\n  <\/div>\n\n        <\/div>\n\n        <div class=\"gist-meta\">\n          <a href=\"https://gist.github.com/sudar/5260116/raw/a28fd8aa7080252a5612f90cbbe1bae3d5b95663/non-empty-lines-count.sh\" style=\"float:right\">view raw<\/a>\n          <a href=\"https://gist.github.com/sudar/5260116#file-non-empty-lines-count-sh\" style=\"float:right; margin-right:10px; color:#666;\">non-empty-lines-count.sh<\/a>\n          <a href=\"https://gist.github.com/sudar/5260116\">This Gist<\/a> brought to you by <a href=\"http://github.com\">GitHub<\/a>.\n        <\/div>\n      <\/div>\n<\/div>\n')
</script><div style='margin-bottom:1em;padding:0;'><noscript><code><pre style='overflow:auto;margin:0;padding:0;border:1px solid #DDD;'>grep -c -P '\S' filename</pre></code></noscript></div>
<p>Hope this is helpful. Happy Grep&#8217;ing <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=rU3QgOplKAg:INjR3VDc4tM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=rU3QgOplKAg:INjR3VDc4tM:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=rU3QgOplKAg:INjR3VDc4tM:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=rU3QgOplKAg:INjR3VDc4tM:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=rU3QgOplKAg:INjR3VDc4tM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=rU3QgOplKAg:INjR3VDc4tM:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=rU3QgOplKAg:INjR3VDc4tM:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=rU3QgOplKAg:INjR3VDc4tM:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=rU3QgOplKAg:INjR3VDc4tM:JEwB19i1-c4"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=rU3QgOplKAg:INjR3VDc4tM:JEwB19i1-c4" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=rU3QgOplKAg:INjR3VDc4tM:wF9xT3WuBAs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=rU3QgOplKAg:INjR3VDc4tM:wF9xT3WuBAs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=rU3QgOplKAg:INjR3VDc4tM:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=rU3QgOplKAg:INjR3VDc4tM:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=rU3QgOplKAg:INjR3VDc4tM:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/SudarBlogs/~4/rU3QgOplKAg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sudarmuthu.com/blog/count-the-number-of-empty-lines-in-a-file-using-grep/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://sudarmuthu.com/blog/count-the-number-of-empty-lines-in-a-file-using-grep?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=count-the-number-of-empty-lines-in-a-file-using-grep</feedburner:origLink></item>
		<item>
		<title>Passing command-line arguments to Pig scripts</title>
		<link>http://feedproxy.google.com/~r/SudarBlogs/~3/wKKvAY9j7JI/passing-command-line-arguments-to-pig-scripts</link>
		<comments>http://sudarmuthu.com/blog/passing-command-line-arguments-to-pig-scripts#comments</comments>
		<pubDate>Wed, 27 Mar 2013 03:07:29 +0000</pubDate>
		<dc:creator>Sudar</dc:creator>
				<category><![CDATA[Hadoop/Pig]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[parameters]]></category>
		<category><![CDATA[Pig]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=2291</guid>
		<description><![CDATA[In pretty much every Pig script that you will be writing, you will have to specify at least two locations &#8211; the input and the output locations. If you are going to use multiple inputs or have to register multiple jars for UDF, then this is bound to increase. I run most of my Pig [...]]]></description>
				<content:encoded><![CDATA[<p>In pretty much every Pig script that you will be writing, you will have to specify at least two locations &#8211; the input and the output locations. If you are going to use multiple inputs or have to register multiple jars for UDF, then this is bound to increase.</p>
<p>I run most of my Pig scripts through a shell script and I was looking for a way to pass in these locations at runtime instead of hard coding them in the Pig script. After a bit of research, I found that Pig has the ability to accept command-line parameters and there are in fact multiple options to pass them. I thought of documenting them here so that I know where to look when I need to <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>Parameter Placeholder</h2>
<p>First, we need to create a place holder for the parameter that needs to be replaced inside the Pig script. Let&#8217;s say you have the following line in your Pig script where you are loading an input file.</p>
<p><code>INPUT = LOAD '/data/input/20130326'</code></p>
<p>In the above statement, if you want to replace date part dynamically, then have to create a placeholder for it. </p>
<p><code>INPUT = LOAD '/data/input/$date'</code></p>
<h3>Individual Parameters</h3>
<p>To pass individual parameters to the Pig script we can use the <code>-param</code> option while invoking the Pig script. So the syntax would be </p>
<p><code>pig -param date=20130326 -f myfile.pig</code></p>
<p>If you want to pass two parameters then you can add one more <code>-param</code> option.</p>
<p><code>pig -param date=20130326 -param date2=20130426 -f myfile.pig</code></p>
<h3>Param File</h3>
<p>If there are lot of parameters that needs to be passed, or if we needed a more flexible way to do it, then we can place all of them in a single file and pass the file name using the <code>-param_file</code> option.</p>
<p>The param file uses the simple ini file format where every line contains the param name and the value. We can specify comments using the <code>#</code> character.</p>
<p><code>date=20130326<br />
date2=20130426</code></p>
<p>We can pass the param file using the following syntax</p>
<p><code>pig -param_file=myfile.ini -f myfile.pig</code></p>
<h3>Default Statement</h3>
<p>We can also assign a default value to a parameter inside the Pig script using the <code>default</code> statement like below</p>
<p><code>%default date '20130326'</code></p>
<h2>Processing Order</h2>
<p>One good thing about parameter substitution in Pig is that you can pass in value for the same parameter using multiple options simultaneously. Pig will pick them up in the following order.</p>
<ul>
<li>The <code>default</code> statement takes the lowest precedence.</li>
<li>The values passed using <code>-param_file</code> takes the next precedence.
<ul>
<li>If there are multiple entries for the same param is present in a file, then the one which comes later takes more precedence.</li>
<li>If there are multiple param files, then the files that are specified later will take more precedence.</li>
</ul>
</li>
<li>The values that are passed using the <code>-param</code> option takes the next precedence.
<ul>
<li>If multiple values are specified for the same param, then the ones which are specified later takes more precedence.</li>
</ul>
</li>
</ul>
<h2>Debugging</h2>
<p>Sometimes, the precedence might be little confusing, especially if you have multiple files and multiple params. Pig also provides a <code>-debug</code> option to debug this kind of scenario&#8217;s. If you invoke Pig with this option, then it will generate a file with extension <code>.substitued</code> in the current directory with the place holders replaced with the correct values.</p>
<h2>What I use?</h2>
<p>I follow this convention while passing params in Pig and it has worked nicely for me so far.</p>
<p>I specify a default value using the <code>default</code> statement and then pass actual values using the <code>-param_file</code> option. If I am in a hurry and just want to test something locally, then I use <code>-param</code> option, but generally I try to put them in a separate ini file so that I can check-in the options as well.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=wKKvAY9j7JI:0LPPpVZZso4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=wKKvAY9j7JI:0LPPpVZZso4:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=wKKvAY9j7JI:0LPPpVZZso4:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=wKKvAY9j7JI:0LPPpVZZso4:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=wKKvAY9j7JI:0LPPpVZZso4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=wKKvAY9j7JI:0LPPpVZZso4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=wKKvAY9j7JI:0LPPpVZZso4:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=wKKvAY9j7JI:0LPPpVZZso4:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=wKKvAY9j7JI:0LPPpVZZso4:JEwB19i1-c4"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=wKKvAY9j7JI:0LPPpVZZso4:JEwB19i1-c4" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=wKKvAY9j7JI:0LPPpVZZso4:wF9xT3WuBAs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=wKKvAY9j7JI:0LPPpVZZso4:wF9xT3WuBAs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=wKKvAY9j7JI:0LPPpVZZso4:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=wKKvAY9j7JI:0LPPpVZZso4:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=wKKvAY9j7JI:0LPPpVZZso4:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/SudarBlogs/~4/wKKvAY9j7JI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sudarmuthu.com/blog/passing-command-line-arguments-to-pig-scripts/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://sudarmuthu.com/blog/passing-command-line-arguments-to-pig-scripts?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=passing-command-line-arguments-to-pig-scripts</feedburner:origLink></item>
		<item>
		<title>Remove duplicate lines based on a field</title>
		<link>http://feedproxy.google.com/~r/SudarBlogs/~3/h94IKCLSkTo/remove-duplicate-lines-based-on-a-field</link>
		<comments>http://sudarmuthu.com/blog/remove-duplicate-lines-based-on-a-field#comments</comments>
		<pubDate>Wed, 20 Mar 2013 02:28:51 +0000</pubDate>
		<dc:creator>Sudar</dc:creator>
				<category><![CDATA[Unix/Server Stuff]]></category>
		<category><![CDATA[awk]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[one liner]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=2282</guid>
		<description><![CDATA[Recently while working on formatting some data files for further processing, I had to remove duplicate lines from the file based on a particular field. After trying out cut and grep commands, I was finally able to solve it with a very concise awk command/script. The command was so concise but still was packed with [...]]]></description>
				<content:encoded><![CDATA[<p>Recently while working on formatting some data files for further processing, I had to remove duplicate lines from the file based on a particular field. After trying out <code>cut</code> and <code>grep</code> commands, I was finally able to solve it with a very concise <code>awk</code> command/script.</p>
<p>The command was so concise but still was packed with so much information and it helped me to learn more about the <code>awk</code> scripting language. I thought of writing about it here so that it is useful for others and also I know where to search for it, when I needed it <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Feel free to use it in whatever way you want, if it solves your problem as well.</p>
<h2>Input and output data</h2>
<p>Let me first explain the input data I had and the output that I was expecting.</p>
<p>Consider a file which has the following lines. Each line has four fields.</p>
<script>document.write('<link href=\"https://gist.github.com/assets/embed-17ab34a51711628d8f5449c4663a9318.css\" media=\"screen\" rel=\"stylesheet\" />')
document.write('<div id=\"gist5201701\" class=\"gist\">\n      <div class=\"gist-file\">\n        <div class=\"gist-data gist-syntax\">\n\n\n\n  <div class=\"file-data\">\n    <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines highlight\">\n      <tr>\n        <td class=\"line-numbers\">\n          <span class=\"line-number\" id=\"file-input-txt-L1\" rel=\"file-input-txt-L1\">1<\/span>\n          <span class=\"line-number\" id=\"file-input-txt-L2\" rel=\"file-input-txt-L2\">2<\/span>\n          <span class=\"line-number\" id=\"file-input-txt-L3\" rel=\"file-input-txt-L3\">3<\/span>\n          <span class=\"line-number\" id=\"file-input-txt-L4\" rel=\"file-input-txt-L4\">4<\/span>\n          <span class=\"line-number\" id=\"file-input-txt-L5\" rel=\"file-input-txt-L5\">5<\/span>\n        <\/td>\n        <td class=\"line-data\">\n          <pre class=\"line-pre\"><div class=\"line\" id=\"file-input-txt-LC1\">Tom	CTO	32<\/div><div class=\"line\" id=\"file-input-txt-LC2\">Harry	Manager	45        -&gt; Manager field is duplicate<\/div><div class=\"line\" id=\"file-input-txt-LC3\">Krish	CEO	50<\/div><div class=\"line\" id=\"file-input-txt-LC4\">Bob	Manager	49        -&gt; Manager field is duplicate<\/div><div class=\"line\" id=\"file-input-txt-LC5\">Patrick	CFO	20<\/div><\/pre>\n        <\/td>\n      <\/tr>\n    <\/table>\n  <\/div>\n\n        <\/div>\n\n        <div class=\"gist-meta\">\n          <a href=\"https://gist.github.com/sudar/5201701/raw/405e5e1b1146a58cf0c03a226a722f8bc1471916/input.txt\" style=\"float:right\">view raw<\/a>\n          <a href=\"https://gist.github.com/sudar/5201701#file-input-txt\" style=\"float:right; margin-right:10px; color:#666;\">input.txt<\/a>\n          <a href=\"https://gist.github.com/sudar/5201701\">This Gist<\/a> brought to you by <a href=\"http://github.com\">GitHub<\/a>.\n        <\/div>\n      <\/div>\n<\/div>\n')
</script><div style='margin-bottom:1em;padding:0;'><noscript><code><pre style='overflow:auto;margin:0;padding:0;border:1px solid #DDD;'>Tom	CTO	32
Harry	Manager	45        -&gt; Manager field is duplicate
Krish	CEO	50
Bob	Manager	49        -&gt; Manager field is duplicate
Patrick	CFO	20</pre></code></noscript></div>
<p>Now assume that we want to remove duplicate lines by comparing only the second field. We want the output to look like this.</p>
<script>document.write('<link href=\"https://gist.github.com/assets/embed-17ab34a51711628d8f5449c4663a9318.css\" media=\"screen\" rel=\"stylesheet\" />')
document.write('<div id=\"gist5201701\" class=\"gist\">\n      <div class=\"gist-file\">\n        <div class=\"gist-data gist-syntax\">\n\n\n\n  <div class=\"file-data\">\n    <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines highlight\">\n      <tr>\n        <td class=\"line-numbers\">\n          <span class=\"line-number\" id=\"file-output-txt-L1\" rel=\"file-output-txt-L1\">1<\/span>\n          <span class=\"line-number\" id=\"file-output-txt-L2\" rel=\"file-output-txt-L2\">2<\/span>\n          <span class=\"line-number\" id=\"file-output-txt-L3\" rel=\"file-output-txt-L3\">3<\/span>\n          <span class=\"line-number\" id=\"file-output-txt-L4\" rel=\"file-output-txt-L4\">4<\/span>\n        <\/td>\n        <td class=\"line-data\">\n          <pre class=\"line-pre\"><div class=\"line\" id=\"file-output-txt-LC1\">Tom	CTO	32<\/div><div class=\"line\" id=\"file-output-txt-LC2\">Harry	Manager	45<\/div><div class=\"line\" id=\"file-output-txt-LC3\">Krish	CEO	50<\/div><div class=\"line\" id=\"file-output-txt-LC4\">Patrick	CFO	20<\/div><\/pre>\n        <\/td>\n      <\/tr>\n    <\/table>\n  <\/div>\n\n        <\/div>\n\n        <div class=\"gist-meta\">\n          <a href=\"https://gist.github.com/sudar/5201701/raw/65bb90960542a8c50fc8c9835da1511ce51b9bdf/output.txt\" style=\"float:right\">view raw<\/a>\n          <a href=\"https://gist.github.com/sudar/5201701#file-output-txt\" style=\"float:right; margin-right:10px; color:#666;\">output.txt<\/a>\n          <a href=\"https://gist.github.com/sudar/5201701\">This Gist<\/a> brought to you by <a href=\"http://github.com\">GitHub<\/a>.\n        <\/div>\n      <\/div>\n<\/div>\n')
</script><div style='margin-bottom:1em;padding:0;'><noscript><code><pre style='overflow:auto;margin:0;padding:0;border:1px solid #DDD;'>Tom	CTO	32
Harry	Manager	45
Krish	CEO	50
Patrick	CFO	20</pre></code></noscript></div>
<h2>Command</h2>
<p>Get ready for the surprise. The actual command is just this.</p>
<script>document.write('<link href=\"https://gist.github.com/assets/embed-17ab34a51711628d8f5449c4663a9318.css\" media=\"screen\" rel=\"stylesheet\" />')
document.write('<div id=\"gist5201701\" class=\"gist\">\n      <div class=\"gist-file\">\n        <div class=\"gist-data gist-syntax\">\n\n\n\n  <div class=\"file-data\">\n    <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines highlight\">\n      <tr>\n        <td class=\"line-numbers\">\n          <span class=\"line-number\" id=\"file-command-sh-L1\" rel=\"file-command-sh-L1\">1<\/span>\n        <\/td>\n        <td class=\"line-data\">\n          <pre class=\"line-pre\"><div class=\"line\" id=\"file-command-sh-LC1\">awk <span class=\"s1\">&#39;!x[$2]++&#39;<\/span> filename<\/div><\/pre>\n        <\/td>\n      <\/tr>\n    <\/table>\n  <\/div>\n\n        <\/div>\n\n        <div class=\"gist-meta\">\n          <a href=\"https://gist.github.com/sudar/5201701/raw/ea63399e60b0bb4c8785b55323057bfb1b07b70c/command.sh\" style=\"float:right\">view raw<\/a>\n          <a href=\"https://gist.github.com/sudar/5201701#file-command-sh\" style=\"float:right; margin-right:10px; color:#666;\">command.sh<\/a>\n          <a href=\"https://gist.github.com/sudar/5201701\">This Gist<\/a> brought to you by <a href=\"http://github.com\">GitHub<\/a>.\n        <\/div>\n      <\/div>\n<\/div>\n')
</script><div style='margin-bottom:1em;padding:0;'><noscript><code><pre style='overflow:auto;margin:0;padding:0;border:1px solid #DDD;'>awk '!x[$2]++' filename</pre></code></noscript></div>
<h2>Explanation</h2>
<h3>awk script execution and printing</h3>
<p><code>awk</code> script is executed for each line and if the result is <code>true</code> then the line is printed. If the result is <code>false</code> then the line is not printed.</p>
<h3>Associative arrays</h3>
<p>The <code>awk</code> language supports <a href="http://www.grymoire.com/Unix/Awk.html#uh-22">associate arrays</a>, similar to the ones found in PHP. The script <code>x[$2]++</code> fills up an associate array. The key used here is <code>$2</code> which refers to the second field and <code>x</code> is the variable name. You can use any name for it.</p>
<p>The array is populated for every line. This is how the array would look like after each line.</p>
<script>document.write('<link href=\"https://gist.github.com/assets/embed-17ab34a51711628d8f5449c4663a9318.css\" media=\"screen\" rel=\"stylesheet\" />')
document.write('<div id=\"gist5201701\" class=\"gist\">\n      <div class=\"gist-file\">\n        <div class=\"gist-data gist-syntax\">\n\n\n\n  <div class=\"file-data\">\n    <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines highlight\">\n      <tr>\n        <td class=\"line-numbers\">\n          <span class=\"line-number\" id=\"file-arrays-txt-L1\" rel=\"file-arrays-txt-L1\">1<\/span>\n          <span class=\"line-number\" id=\"file-arrays-txt-L2\" rel=\"file-arrays-txt-L2\">2<\/span>\n          <span class=\"line-number\" id=\"file-arrays-txt-L3\" rel=\"file-arrays-txt-L3\">3<\/span>\n          <span class=\"line-number\" id=\"file-arrays-txt-L4\" rel=\"file-arrays-txt-L4\">4<\/span>\n          <span class=\"line-number\" id=\"file-arrays-txt-L5\" rel=\"file-arrays-txt-L5\">5<\/span>\n          <span class=\"line-number\" id=\"file-arrays-txt-L6\" rel=\"file-arrays-txt-L6\">6<\/span>\n          <span class=\"line-number\" id=\"file-arrays-txt-L7\" rel=\"file-arrays-txt-L7\">7<\/span>\n          <span class=\"line-number\" id=\"file-arrays-txt-L8\" rel=\"file-arrays-txt-L8\">8<\/span>\n          <span class=\"line-number\" id=\"file-arrays-txt-L9\" rel=\"file-arrays-txt-L9\">9<\/span>\n          <span class=\"line-number\" id=\"file-arrays-txt-L10\" rel=\"file-arrays-txt-L10\">10<\/span>\n          <span class=\"line-number\" id=\"file-arrays-txt-L11\" rel=\"file-arrays-txt-L11\">11<\/span>\n          <span class=\"line-number\" id=\"file-arrays-txt-L12\" rel=\"file-arrays-txt-L12\">12<\/span>\n          <span class=\"line-number\" id=\"file-arrays-txt-L13\" rel=\"file-arrays-txt-L13\">13<\/span>\n          <span class=\"line-number\" id=\"file-arrays-txt-L14\" rel=\"file-arrays-txt-L14\">14<\/span>\n          <span class=\"line-number\" id=\"file-arrays-txt-L15\" rel=\"file-arrays-txt-L15\">15<\/span>\n          <span class=\"line-number\" id=\"file-arrays-txt-L16\" rel=\"file-arrays-txt-L16\">16<\/span>\n          <span class=\"line-number\" id=\"file-arrays-txt-L17\" rel=\"file-arrays-txt-L17\">17<\/span>\n          <span class=\"line-number\" id=\"file-arrays-txt-L18\" rel=\"file-arrays-txt-L18\">18<\/span>\n          <span class=\"line-number\" id=\"file-arrays-txt-L19\" rel=\"file-arrays-txt-L19\">19<\/span>\n          <span class=\"line-number\" id=\"file-arrays-txt-L20\" rel=\"file-arrays-txt-L20\">20<\/span>\n          <span class=\"line-number\" id=\"file-arrays-txt-L21\" rel=\"file-arrays-txt-L21\">21<\/span>\n          <span class=\"line-number\" id=\"file-arrays-txt-L22\" rel=\"file-arrays-txt-L22\">22<\/span>\n          <span class=\"line-number\" id=\"file-arrays-txt-L23\" rel=\"file-arrays-txt-L23\">23<\/span>\n          <span class=\"line-number\" id=\"file-arrays-txt-L24\" rel=\"file-arrays-txt-L24\">24<\/span>\n          <span class=\"line-number\" id=\"file-arrays-txt-L25\" rel=\"file-arrays-txt-L25\">25<\/span>\n          <span class=\"line-number\" id=\"file-arrays-txt-L26\" rel=\"file-arrays-txt-L26\">26<\/span>\n          <span class=\"line-number\" id=\"file-arrays-txt-L27\" rel=\"file-arrays-txt-L27\">27<\/span>\n          <span class=\"line-number\" id=\"file-arrays-txt-L28\" rel=\"file-arrays-txt-L28\">28<\/span>\n          <span class=\"line-number\" id=\"file-arrays-txt-L29\" rel=\"file-arrays-txt-L29\">29<\/span>\n          <span class=\"line-number\" id=\"file-arrays-txt-L30\" rel=\"file-arrays-txt-L30\">30<\/span>\n          <span class=\"line-number\" id=\"file-arrays-txt-L31\" rel=\"file-arrays-txt-L31\">31<\/span>\n          <span class=\"line-number\" id=\"file-arrays-txt-L32\" rel=\"file-arrays-txt-L32\">32<\/span>\n          <span class=\"line-number\" id=\"file-arrays-txt-L33\" rel=\"file-arrays-txt-L33\">33<\/span>\n          <span class=\"line-number\" id=\"file-arrays-txt-L34\" rel=\"file-arrays-txt-L34\">34<\/span>\n          <span class=\"line-number\" id=\"file-arrays-txt-L35\" rel=\"file-arrays-txt-L35\">35<\/span>\n        <\/td>\n        <td class=\"line-data\">\n          <pre class=\"line-pre\"><div class=\"line\" id=\"file-arrays-txt-LC1\"># Before starting <\/div><div class=\"line\" id=\"file-arrays-txt-LC2\">x = {}<\/div><div class=\"line\" id=\"file-arrays-txt-LC3\">&nbsp;<\/div><div class=\"line\" id=\"file-arrays-txt-LC4\"># After line 1<\/div><div class=\"line\" id=\"file-arrays-txt-LC5\">x = {<\/div><div class=\"line\" id=\"file-arrays-txt-LC6\">	CTO =&gt; 1<\/div><div class=\"line\" id=\"file-arrays-txt-LC7\">    }<\/div><div class=\"line\" id=\"file-arrays-txt-LC8\">&nbsp;<\/div><div class=\"line\" id=\"file-arrays-txt-LC9\"># After line 2<\/div><div class=\"line\" id=\"file-arrays-txt-LC10\">x = {<\/div><div class=\"line\" id=\"file-arrays-txt-LC11\">	CTO =&gt; 1<\/div><div class=\"line\" id=\"file-arrays-txt-LC12\">	Manager =&gt; 1<\/div><div class=\"line\" id=\"file-arrays-txt-LC13\">    }<\/div><div class=\"line\" id=\"file-arrays-txt-LC14\">&nbsp;<\/div><div class=\"line\" id=\"file-arrays-txt-LC15\"># After line 3<\/div><div class=\"line\" id=\"file-arrays-txt-LC16\">x = {<\/div><div class=\"line\" id=\"file-arrays-txt-LC17\">	CTO =&gt; 1<\/div><div class=\"line\" id=\"file-arrays-txt-LC18\">	Manager =&gt; 1<\/div><div class=\"line\" id=\"file-arrays-txt-LC19\">	CEO =&gt; 1<\/div><div class=\"line\" id=\"file-arrays-txt-LC20\">    }<\/div><div class=\"line\" id=\"file-arrays-txt-LC21\">&nbsp;<\/div><div class=\"line\" id=\"file-arrays-txt-LC22\"># After line 4<\/div><div class=\"line\" id=\"file-arrays-txt-LC23\">x = {<\/div><div class=\"line\" id=\"file-arrays-txt-LC24\">	CTO =&gt; 1<\/div><div class=\"line\" id=\"file-arrays-txt-LC25\">	Manager =&gt; 2<\/div><div class=\"line\" id=\"file-arrays-txt-LC26\">	CEO =&gt; 1<\/div><div class=\"line\" id=\"file-arrays-txt-LC27\">    }<\/div><div class=\"line\" id=\"file-arrays-txt-LC28\">&nbsp;<\/div><div class=\"line\" id=\"file-arrays-txt-LC29\"># After line 5<\/div><div class=\"line\" id=\"file-arrays-txt-LC30\">x = {<\/div><div class=\"line\" id=\"file-arrays-txt-LC31\">	CTO =&gt; 1<\/div><div class=\"line\" id=\"file-arrays-txt-LC32\">	Manager =&gt; 2<\/div><div class=\"line\" id=\"file-arrays-txt-LC33\">	CEO =&gt; 1<\/div><div class=\"line\" id=\"file-arrays-txt-LC34\">	CFO =&gt; 1<\/div><div class=\"line\" id=\"file-arrays-txt-LC35\">    }<\/div><\/pre>\n        <\/td>\n      <\/tr>\n    <\/table>\n  <\/div>\n\n        <\/div>\n\n        <div class=\"gist-meta\">\n          <a href=\"https://gist.github.com/sudar/5201701/raw/86dc7d051932f31d49bbbc6d3185870e5242343e/arrays.txt\" style=\"float:right\">view raw<\/a>\n          <a href=\"https://gist.github.com/sudar/5201701#file-arrays-txt\" style=\"float:right; margin-right:10px; color:#666;\">arrays.txt<\/a>\n          <a href=\"https://gist.github.com/sudar/5201701\">This Gist<\/a> brought to you by <a href=\"http://github.com\">GitHub<\/a>.\n        <\/div>\n      <\/div>\n<\/div>\n')
</script><div style='margin-bottom:1em;padding:0;'><noscript><code><pre style='overflow:auto;margin:0;padding:0;border:1px solid #DDD;'># Before starting 
x = {}

# After line 1
x = {
	CTO =&gt; 1
    }

# After line 2
x = {
	CTO =&gt; 1
	Manager =&gt; 1
    }

# After line 3
x = {
	CTO =&gt; 1
	Manager =&gt; 1
	CEO =&gt; 1
    }

# After line 4
x = {
	CTO =&gt; 1
	Manager =&gt; 2
	CEO =&gt; 1
    }

# After line 5
x = {
	CTO =&gt; 1
	Manager =&gt; 2
	CEO =&gt; 1
	CFO =&gt; 1
    }
</pre></code></noscript></div>
<h3>Conditional evaluation</h3>
<p>The <code>!</code> operator results in a boolean evaluation which determines whether a particular line should be passed on to the output (printed) or not.</p>
<p>When the field is not present in the array, then it results in a zero value which is false. The <code>!</code> (not) operator evaluates it to non-zero, which results in a true value and the line is passed on to the output (printed). When a duplicate is found, the array returns a non-zero count, which is true, but the <code>!</code> converts it to false and that line is not passed on to the output.</p>
<p>The expanded version of the above command would be</p>
<script>document.write('<link href=\"https://gist.github.com/assets/embed-17ab34a51711628d8f5449c4663a9318.css\" media=\"screen\" rel=\"stylesheet\" />')
document.write('<div id=\"gist5201701\" class=\"gist\">\n      <div class=\"gist-file\">\n        <div class=\"gist-data gist-syntax\">\n\n\n\n  <div class=\"file-data\">\n    <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines highlight\">\n      <tr>\n        <td class=\"line-numbers\">\n          <span class=\"line-number\" id=\"file-expanded-sh-L1\" rel=\"file-expanded-sh-L1\">1<\/span>\n          <span class=\"line-number\" id=\"file-expanded-sh-L2\" rel=\"file-expanded-sh-L2\">2<\/span>\n          <span class=\"line-number\" id=\"file-expanded-sh-L3\" rel=\"file-expanded-sh-L3\">3<\/span>\n          <span class=\"line-number\" id=\"file-expanded-sh-L4\" rel=\"file-expanded-sh-L4\">4<\/span>\n          <span class=\"line-number\" id=\"file-expanded-sh-L5\" rel=\"file-expanded-sh-L5\">5<\/span>\n        <\/td>\n        <td class=\"line-data\">\n          <pre class=\"line-pre\"><div class=\"line\" id=\"file-expanded-sh-LC1\"><span class=\"o\">{<\/span><\/div><div class=\"line\" id=\"file-expanded-sh-LC2\"><span class=\"k\">if<\/span> <span class=\"o\">(<\/span>x<span class=\"o\">[<\/span><span class=\"nv\">$2<\/span><span class=\"o\">]<\/span> <span class=\"o\">==<\/span> 0 <span class=\"o\">)<\/span> <\/div><div class=\"line\" id=\"file-expanded-sh-LC3\">	print<\/div><div class=\"line\" id=\"file-expanded-sh-LC4\">x<span class=\"o\">[<\/span><span class=\"nv\">$2<\/span><span class=\"o\">]<\/span>++<\/div><div class=\"line\" id=\"file-expanded-sh-LC5\"><span class=\"o\">}<\/span><\/div><\/pre>\n        <\/td>\n      <\/tr>\n    <\/table>\n  <\/div>\n\n        <\/div>\n\n        <div class=\"gist-meta\">\n          <a href=\"https://gist.github.com/sudar/5201701/raw/747dd389b9e0d4c31cde593ef488cc5d770b42e2/expanded.sh\" style=\"float:right\">view raw<\/a>\n          <a href=\"https://gist.github.com/sudar/5201701#file-expanded-sh\" style=\"float:right; margin-right:10px; color:#666;\">expanded.sh<\/a>\n          <a href=\"https://gist.github.com/sudar/5201701\">This Gist<\/a> brought to you by <a href=\"http://github.com\">GitHub<\/a>.\n        <\/div>\n      <\/div>\n<\/div>\n')
</script><div style='margin-bottom:1em;padding:0;'><noscript><code><pre style='overflow:auto;margin:0;padding:0;border:1px solid #DDD;'>{
if (x[$2] == 0 ) 
	print
x[$2]++
}</pre></code></noscript></div>
<p>But what is the fun in using the expanded version <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h2>Field separator</h2>
<p>In the input file that I had, the fields were separated by whitespace, so I didn&#8217;t have to specify the field separators. But if you are using a non-whitespace field separators, then you can specify it by adding <code>FS=","</code> to the above command.</p>
<p>This one-liner actually thought me that <code>awk</code> supports a full programming language that can be used to create scripts and also increased my understanding of the way <code>awk</code> command works. Hopefully this teaches something for you as well <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>I know that this is already a concise version, but if you think that this can be improved, then do let me know.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=h94IKCLSkTo:vy9zMo9pQfk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=h94IKCLSkTo:vy9zMo9pQfk:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=h94IKCLSkTo:vy9zMo9pQfk:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=h94IKCLSkTo:vy9zMo9pQfk:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=h94IKCLSkTo:vy9zMo9pQfk:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=h94IKCLSkTo:vy9zMo9pQfk:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=h94IKCLSkTo:vy9zMo9pQfk:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=h94IKCLSkTo:vy9zMo9pQfk:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=h94IKCLSkTo:vy9zMo9pQfk:JEwB19i1-c4"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=h94IKCLSkTo:vy9zMo9pQfk:JEwB19i1-c4" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=h94IKCLSkTo:vy9zMo9pQfk:wF9xT3WuBAs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=h94IKCLSkTo:vy9zMo9pQfk:wF9xT3WuBAs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=h94IKCLSkTo:vy9zMo9pQfk:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=h94IKCLSkTo:vy9zMo9pQfk:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=h94IKCLSkTo:vy9zMo9pQfk:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/SudarBlogs/~4/h94IKCLSkTo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sudarmuthu.com/blog/remove-duplicate-lines-based-on-a-field/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://sudarmuthu.com/blog/remove-duplicate-lines-based-on-a-field?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=remove-duplicate-lines-based-on-a-field</feedburner:origLink></item>
		<item>
		<title>Will be in US for the next two weeks</title>
		<link>http://feedproxy.google.com/~r/SudarBlogs/~3/W9AfG3cdcDk/will-be-in-us-for-the-next-two-weeks</link>
		<comments>http://sudarmuthu.com/blog/will-be-in-us-for-the-next-two-weeks#comments</comments>
		<pubDate>Fri, 01 Mar 2013 13:56:01 +0000</pubDate>
		<dc:creator>Sudar</dc:creator>
				<category><![CDATA[Travel/Trek]]></category>
		<category><![CDATA[travel]]></category>
		<category><![CDATA[US]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=2260</guid>
		<description><![CDATA[Well guys, a quick update. I am travelling to Sunnyvale, CA tomorrow morning and will be back in Bangalore in two weeks. It is a business trip and the first week is packed with lot of meetings. So if you have sent me an email, expect a delay in the reply Unlike the last few [...]]]></description>
				<content:encoded><![CDATA[<p>Well guys, a quick update.</p>
<p>I am travelling to Sunnyvale, CA tomorrow morning and will be back in Bangalore in two weeks.</p>
<p>It is a business trip and the first week is packed with lot of meetings. So if you have sent me an email, expect a delay in the reply <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Unlike the <a href="http://sudarmuthu.com/blog/my-plan-for-december">last</a> <a href="http://sudarmuthu.com/blog/travelling-to-us">few</a> times, I have only one full weekend this time and I haven&#8217;t planned anything yet. Might atleast go on a city tour around SFO I guess.</p>
<p>The worst part of travelling to US from India, is that you have to sit in a flight for 20 hours <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  . I have loaded my Kindle with a couple of books and I guess it would last for the entire trip. Meanwhile if you have any recommendations that do let me know, will load it up in my Kindle.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=W9AfG3cdcDk:F7HByPWINi0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=W9AfG3cdcDk:F7HByPWINi0:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=W9AfG3cdcDk:F7HByPWINi0:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=W9AfG3cdcDk:F7HByPWINi0:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=W9AfG3cdcDk:F7HByPWINi0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=W9AfG3cdcDk:F7HByPWINi0:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=W9AfG3cdcDk:F7HByPWINi0:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=W9AfG3cdcDk:F7HByPWINi0:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=W9AfG3cdcDk:F7HByPWINi0:JEwB19i1-c4"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=W9AfG3cdcDk:F7HByPWINi0:JEwB19i1-c4" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=W9AfG3cdcDk:F7HByPWINi0:wF9xT3WuBAs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=W9AfG3cdcDk:F7HByPWINi0:wF9xT3WuBAs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=W9AfG3cdcDk:F7HByPWINi0:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=W9AfG3cdcDk:F7HByPWINi0:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=W9AfG3cdcDk:F7HByPWINi0:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/SudarBlogs/~4/W9AfG3cdcDk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sudarmuthu.com/blog/will-be-in-us-for-the-next-two-weeks/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://sudarmuthu.com/blog/will-be-in-us-for-the-next-two-weeks?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=will-be-in-us-for-the-next-two-weeks</feedburner:origLink></item>
		<item>
		<title>Developing WordPress Plugins in Github</title>
		<link>http://feedproxy.google.com/~r/SudarBlogs/~3/F_x86-SB6vE/developing-wordpress-plugins-in-github</link>
		<comments>http://sudarmuthu.com/blog/developing-wordpress-plugins-in-github#comments</comments>
		<pubDate>Tue, 19 Feb 2013 16:15:31 +0000</pubDate>
		<dc:creator>Sudar</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=2255</guid>
		<description><![CDATA[As most of you know, I actively develop and main more than 20 WordPress Plugins. All of them are hosted in the official WordPress Plugin repository. Until recently I was using the official WordPress repository&#8217;s svn to do the development. All my non-WordPress pet projects are hosted in my github account. I was thinking of [...]]]></description>
				<content:encoded><![CDATA[<p>As most of you know, I actively develop and main more than 20 <a href="http://sudarmuthu.com/wordpress">WordPress Plugins</a>. All of them are hosted in the <a href="http://profiles.wordpress.org/sudar/">official WordPress Plugin repository</a>. </p>
<p>Until recently I was using the official WordPress repository&#8217;s svn to do the development. All my non-WordPress pet projects are hosted in my <a href="https://github.com/sudar">github account</a>.</p>
<p>I was thinking of moving all my WordPress Plugins to github for quite sometime now, but didn&#8217;t do it thinking that it might involve huge effort to keep both the repos in sync.</p>
<p>After reading about how a couple of people moved (and didn&#8217;t face much problem afterwards), I decided to try it out for a couple of my Plugins. The following is what I did and in the end, figured out that it was worth the effort.</p>
<h2>Github &#8211; more than just code</h2>
<p>To be fair to official WordPress Plugin repository, there is nothing anything wrong with the way it works or with svn.</p>
<p>It is just that github as a platform is more suited if you are interested in collaboration and receiving contributions from users. It reduces the barrier to entry for people to contribute to projects and also it provides enough tools for project owners to easily merge (or reject) contributions from users.</p>
<p>I was more interested in this aspect of github rather than the &#8216;git&#8217; part.</p>
<h2>Using github for hosting WordPress Plugins</h2>
<p>When I decided to move from svn to github, I wanted to do the following things.</p>
<ul>
<li>I wanted to maintain the entire check-in history from svn. Some of my Plugins are more than 4 years old and have gone through lot of revisions and I didn&#8217;t wanted to loose them.</li>
<li>I also wanted to do the development in github (read doing atomic check-ins) and then upload to WordPress repository only when I tag the changes for release after testing them.</li>
<li>I also didn&#8217;t wanted to manually check-in in both the places to do the sync.</li>
</ul>
<p>For the first I found that <code>git-svn</code> can fetch all the check-in history. </p>
<p>For the second and third point, keeping pragmatism in mind, I ended up creating shell scripts so that I don&#8217;t have to do anything manual.</p>
<h2>Automation scripts</h2>
<p>You can get the scripts that I wrote from my <a href="https://github.com/sudar/wp-plugin-in-github">github account</a>. The project consists of two scripts.</p>
<ul>
<li>clone-from-svn-to-git.sh &#8211; Use this script to clone your WordPress Plugins from SVN into git/github</li>
<li>deploy-plugin.sh &#8211; Use this script to push your WordPress Plugin updates to SVN from gi/github</li>
</ul>
<p>Right now the documentation is pretty sparse. I will fix it when I get some free time <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>Things to improve</h2>
<p>The scripts pretty much do the job. Going forward, I want to improve the following to make it more useful.</p>
<ul>
<li>The <code>readme.txt</code> file used by WordPress repository is not fully in markdown. Because of which the readme file displayed in github is slightly broken. </li>
<li>Ability to auto update the <code>.pot</code> file before releasing the new version</li>
<li>WordPress repository allows you to add a banner using the <code>assests/</code> directory. Need to add support for that.</li>
</ul>
<h2>Is it worth the effort?</h2>
<p>So far I have moved the following Plugins to github. Will be moving the other ones as well when even I get some free time.</p>
<ul>
<li><a href="https://github.com/sudar/bulk-delete">Bulk Delete</a></li>
<li><a href="https://github.com/sudar/bulk-move">Bulk Move</a></li>
<li><a href="https://github.com/sudar/wp-irc">WP IRC</a></li>
<li><a href="https://github.com/sudar/wp-github-commits">WP Github Commits</a></li>
<li><a href="https://github.com/sudar/wp-plugin-reviews">WP Plugin Reviews</a></li>
<li><a href="https://github.com/sudar/wp-year-end-stats">WP Year end stats</a></li>
<li><a href="https://github.com/sudar/posts-by-tag">Posts By Tag</a></li>
<li><a href="https://github.com/sudar/email-log">Email Log</a></li>
<li><a href="https://github.com/sudar/twitter-avatar-reloaded">Twitter Avatar Reloaded</a></li>
</ul>
<p>So now the real question. Is it worth the effort? It is worth every second that I spent on it.</p>
<p>You should check the pull requests I have received so far. I have received more contributions to my Plugins in the last couple of weeks than the last 5 years <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>If you are a WordPress Plugin developer, then try out my script and let me know if you have any feedback.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=F_x86-SB6vE:NKAKp4-N6rQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=F_x86-SB6vE:NKAKp4-N6rQ:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=F_x86-SB6vE:NKAKp4-N6rQ:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=F_x86-SB6vE:NKAKp4-N6rQ:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=F_x86-SB6vE:NKAKp4-N6rQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=F_x86-SB6vE:NKAKp4-N6rQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=F_x86-SB6vE:NKAKp4-N6rQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=F_x86-SB6vE:NKAKp4-N6rQ:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=F_x86-SB6vE:NKAKp4-N6rQ:JEwB19i1-c4"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=F_x86-SB6vE:NKAKp4-N6rQ:JEwB19i1-c4" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=F_x86-SB6vE:NKAKp4-N6rQ:wF9xT3WuBAs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=F_x86-SB6vE:NKAKp4-N6rQ:wF9xT3WuBAs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=F_x86-SB6vE:NKAKp4-N6rQ:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=F_x86-SB6vE:NKAKp4-N6rQ:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=F_x86-SB6vE:NKAKp4-N6rQ:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/SudarBlogs/~4/F_x86-SB6vE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sudarmuthu.com/blog/developing-wordpress-plugins-in-github/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://sudarmuthu.com/blog/developing-wordpress-plugins-in-github?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=developing-wordpress-plugins-in-github</feedburner:origLink></item>
		<item>
		<title>Parse Apache error log and list down all missing images</title>
		<link>http://feedproxy.google.com/~r/SudarBlogs/~3/jtOxueNVZ5o/parse-apache-error-log-and-list-down-all-missing-images</link>
		<comments>http://sudarmuthu.com/blog/parse-apache-error-log-and-list-down-all-missing-images#comments</comments>
		<pubDate>Mon, 18 Feb 2013 13:47:03 +0000</pubDate>
		<dc:creator>Sudar</dc:creator>
				<category><![CDATA[Unix/Server Stuff]]></category>
		<category><![CDATA[awk]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[sed]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=2253</guid>
		<description><![CDATA[Recently I had to parse Apache error log and find out all images that are missing. After referring to a couple of man pages, I came up with this one liner. I am sure I will need it again, so thought of noting it here so that I know where to look when I need [...]]]></description>
				<content:encoded><![CDATA[<p>Recently I had to parse Apache error log and find out all images that are missing.</p>
<p>After referring to a couple of <code>man</code> pages, I came up with this one liner. I am sure I will need it again, so thought of noting it here so that I know where to look when I need it again <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Feel free to use it in whatever way you want, if it solves your problem as well.</p>
<script>document.write('<link href=\"https://gist.github.com/assets/embed-17ab34a51711628d8f5449c4663a9318.css\" media=\"screen\" rel=\"stylesheet\" />')
document.write('<div id=\"gist4975510\" class=\"gist\">\n      <div class=\"gist-file\">\n        <div class=\"gist-data gist-syntax\">\n\n\n\n  <div class=\"file-data\">\n    <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines highlight\">\n      <tr>\n        <td class=\"line-numbers\">\n          <span class=\"line-number\" id=\"file-parse-apache-errorlog-sh-L1\" rel=\"file-parse-apache-errorlog-sh-L1\">1<\/span>\n        <\/td>\n        <td class=\"line-data\">\n          <pre class=\"line-pre\"><div class=\"line\" id=\"file-parse-apache-errorlog-sh-LC1\">sed -n <span class=\"s1\">&#39;/File does not exist/p&#39;<\/span> /path/to/apache/error_log | awk <span class=\"s1\">&#39;{ print $NF }&#39;<\/span> | sed -nr <span class=\"s1\">&#39;/(jpg|jpeg|png|gif)$/p&#39;<\/span> | sort| uniq &gt; 404-images.list<\/div><\/pre>\n        <\/td>\n      <\/tr>\n    <\/table>\n  <\/div>\n\n        <\/div>\n\n        <div class=\"gist-meta\">\n          <a href=\"https://gist.github.com/sudar/4975510/raw/f0ad34b6e32fb0ca7f94e670a675aa047b34c7e9/parse-apache-errorlog.sh\" style=\"float:right\">view raw<\/a>\n          <a href=\"https://gist.github.com/sudar/4975510#file-parse-apache-errorlog-sh\" style=\"float:right; margin-right:10px; color:#666;\">parse-apache-errorlog.sh<\/a>\n          <a href=\"https://gist.github.com/sudar/4975510\">This Gist<\/a> brought to you by <a href=\"http://github.com\">GitHub<\/a>.\n        <\/div>\n      <\/div>\n<\/div>\n')
</script><div style='margin-bottom:1em;padding:0;'><noscript><code><pre style='overflow:auto;margin:0;padding:0;border:1px solid #DDD;'>sed -n '/File does not exist/p' /path/to/apache/error_log | awk '{ print $NF }' | sed -nr '/(jpg|jpeg|png|gif)$/p' | sort| uniq &gt; 404-images.list</pre></code></noscript></div>
<h2>Assumption</h2>
<p>This assumes that each line in your apache error log looks like this.</p>
<script>document.write('<link href=\"https://gist.github.com/assets/embed-17ab34a51711628d8f5449c4663a9318.css\" media=\"screen\" rel=\"stylesheet\" />')
document.write('<div id=\"gist4975510\" class=\"gist\">\n      <div class=\"gist-file\">\n        <div class=\"gist-data gist-syntax\">\n\n\n\n  <div class=\"file-data\">\n    <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines highlight\">\n      <tr>\n        <td class=\"line-numbers\">\n          <span class=\"line-number\" id=\"file-error-log-L1\" rel=\"file-error-log-L1\">1<\/span>\n        <\/td>\n        <td class=\"line-data\">\n          <pre class=\"line-pre\"><div class=\"line\" id=\"file-error-log-LC1\">[Tue Dec 18 06:32:50 2012] [error] [client 10.66.180.194] File does not exist: /path/to/file/that/is/missing<\/div><\/pre>\n        <\/td>\n      <\/tr>\n    <\/table>\n  <\/div>\n\n        <\/div>\n\n        <div class=\"gist-meta\">\n          <a href=\"https://gist.github.com/sudar/4975510/raw/bdde649d8c995f8c1249b2c963826f734e3f02c4/error.log\" style=\"float:right\">view raw<\/a>\n          <a href=\"https://gist.github.com/sudar/4975510#file-error-log\" style=\"float:right; margin-right:10px; color:#666;\">error.log<\/a>\n          <a href=\"https://gist.github.com/sudar/4975510\">This Gist<\/a> brought to you by <a href=\"http://github.com\">GitHub<\/a>.\n        <\/div>\n      <\/div>\n<\/div>\n')
</script><div style='margin-bottom:1em;padding:0;'><noscript><code><pre style='overflow:auto;margin:0;padding:0;border:1px solid #DDD;'>[Tue Dec 18 06:32:50 2012] [error] [client 10.66.180.194] File does not exist: /path/to/file/that/is/missing</pre></code></noscript></div>
<h2>Explanation</h2>
<h3>Filter all 404 lines from the log file</h3>
<p>The first step is to filter all lines that that contain the &#8220;File does not exist&#8221; text. This is done by using <code>sed</code>. </p>
<ul>
<li>By default, <code>sed</code> prints out all lines. This is prevented by the <code>-n</code>.</li>
<li>The second option is the regular expression followed by the <code>p</code> flag. This option prints out all lines which match the text.</li>
<li>The third option is the name of the error log file.</li>
</ul>
<h3>Extract the last column of matching lines</h3>
<p>The next step is to retrieve the file name from the matching lines. This is done by using <code>awk</code>.</p>
<ul>
<li>By default <code>awk</code> uses space as the delimiter and splits the lines into different columns. If you look at each line, we want the last column.</li>
<li><code>NF</code> is a special variable which points to the last column.</li>
<li><code>print $NF</code> prints the last column</li>
</ul>
<h3>Filter only images</h3>
<p>The next step is to filter out only the images. This is done again by using <code>sed</code>.</p>
<ul>
<li>I use <code>-n</code> again to prevent <code>sed</code> from printing all lines.</li>
<li>The <code>-r</code> is added, so that we can use extended regular expression</li>
<li>The regular expression <code>(jpg|jpeg|png|gif)$</code> filters out all images and <code>p</code> at the end prints out only lines that match</li>
</ul>
<h3>Sort and find uniques</h3>
<p>The <code>sort</code> and <code>uniq</code> commands sort the list and find the unique lines.</p>
<h3>Write to a file</h3>
<p>The final output is written to a file by using the redirection <code>&gt;</code> operator. If you want to append to a file then we may have to use <code>&gt;&gt;</code> operator.</p>
<h2>More to come</h2>
<p>It is really amazing like how you can combine these tools to do amazing things. I am planning to document other one liners which I end up creating to solve my problems. So stay tuned <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Also if you think this can be improved, then do let me know as well.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=jtOxueNVZ5o:-fFpWx-L3Dg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=jtOxueNVZ5o:-fFpWx-L3Dg:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=jtOxueNVZ5o:-fFpWx-L3Dg:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=jtOxueNVZ5o:-fFpWx-L3Dg:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=jtOxueNVZ5o:-fFpWx-L3Dg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=jtOxueNVZ5o:-fFpWx-L3Dg:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=jtOxueNVZ5o:-fFpWx-L3Dg:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=jtOxueNVZ5o:-fFpWx-L3Dg:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=jtOxueNVZ5o:-fFpWx-L3Dg:JEwB19i1-c4"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=jtOxueNVZ5o:-fFpWx-L3Dg:JEwB19i1-c4" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=jtOxueNVZ5o:-fFpWx-L3Dg:wF9xT3WuBAs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=jtOxueNVZ5o:-fFpWx-L3Dg:wF9xT3WuBAs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=jtOxueNVZ5o:-fFpWx-L3Dg:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=jtOxueNVZ5o:-fFpWx-L3Dg:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=jtOxueNVZ5o:-fFpWx-L3Dg:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/SudarBlogs/~4/jtOxueNVZ5o" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sudarmuthu.com/blog/parse-apache-error-log-and-list-down-all-missing-images/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://sudarmuthu.com/blog/parse-apache-error-log-and-list-down-all-missing-images?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=parse-apache-error-log-and-list-down-all-missing-images</feedburner:origLink></item>
		<item>
		<title>Make sure you enable binary logs in MySQL</title>
		<link>http://feedproxy.google.com/~r/SudarBlogs/~3/lH-Jw1irf38/make-sure-you-enable-binary-logs-in-mysql</link>
		<comments>http://sudarmuthu.com/blog/make-sure-you-enable-binary-logs-in-mysql#comments</comments>
		<pubDate>Fri, 15 Feb 2013 16:30:21 +0000</pubDate>
		<dc:creator>Sudar</dc:creator>
				<category><![CDATA[Database Programming]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[restore]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=2221</guid>
		<description><![CDATA[Today, I learned a very valuable lesson. Make sure you always enable binary logs in MySQL. I would have lost atleast 3 months of effort, if it was not enabled. Luckily it was enabled and I was able to do a point in time restore after someone did a wrong click. If you maintain any [...]]]></description>
				<content:encoded><![CDATA[<p>Today, I learned a very valuable lesson. Make sure you always enable binary logs in MySQL. I would have lost atleast 3 months of effort, if it was not enabled. Luckily it was enabled and I was able to do a point in time restore after someone did a wrong click.</p>
<p>If you maintain any kind of MySQL server (even if it is just a stage machine) make sure you enable binary logs in it. It is very easy to do and when something bad happens, you will be happy that you enabled it.</p>
<h2>How to enable it</h2>
<p>To enable binary logs all you have to do is to enable the following two settings in your <code>my.cnf</code> config file.</p>
<p><code>log_bin                 = /var/log/mysql/mysql-bin.log<br />
expire_logs_days        = 100</code><br />
The first setting specifies the location where the logs should be kept and the second setting specifies the number of days to keep the logs. The default value is 10, but I changed it to 100.</p>
<h2>How to restore from binary logs</h2>
<p>You can do a point in time restore by using the <code>mysqlbinlog</code> tool, which comes with MySQL. Refer to this <a href="http://www.bytetouch.com/blog/system-administration/mysql-backup-and-point-in-time-recovery-with-binary-logs/">excellent tutorial</a> to find out how to use <code>mysqlbinlog</code> tool.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=lH-Jw1irf38:dMDT8KusI-Y:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=lH-Jw1irf38:dMDT8KusI-Y:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=lH-Jw1irf38:dMDT8KusI-Y:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=lH-Jw1irf38:dMDT8KusI-Y:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=lH-Jw1irf38:dMDT8KusI-Y:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=lH-Jw1irf38:dMDT8KusI-Y:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=lH-Jw1irf38:dMDT8KusI-Y:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=lH-Jw1irf38:dMDT8KusI-Y:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=lH-Jw1irf38:dMDT8KusI-Y:JEwB19i1-c4"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=lH-Jw1irf38:dMDT8KusI-Y:JEwB19i1-c4" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=lH-Jw1irf38:dMDT8KusI-Y:wF9xT3WuBAs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=lH-Jw1irf38:dMDT8KusI-Y:wF9xT3WuBAs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=lH-Jw1irf38:dMDT8KusI-Y:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=lH-Jw1irf38:dMDT8KusI-Y:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=lH-Jw1irf38:dMDT8KusI-Y:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/SudarBlogs/~4/lH-Jw1irf38" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sudarmuthu.com/blog/make-sure-you-enable-binary-logs-in-mysql/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://sudarmuthu.com/blog/make-sure-you-enable-binary-logs-in-mysql?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=make-sure-you-enable-binary-logs-in-mysql</feedburner:origLink></item>
		<item>
		<title>Renewing Indian passport online</title>
		<link>http://feedproxy.google.com/~r/SudarBlogs/~3/eMnt0A1kUPU/renewing-indian-passport-online</link>
		<comments>http://sudarmuthu.com/blog/renewing-indian-passport-online#comments</comments>
		<pubDate>Thu, 14 Feb 2013 16:47:33 +0000</pubDate>
		<dc:creator>Sudar</dc:creator>
				<category><![CDATA[Random/Personal]]></category>
		<category><![CDATA[Bangalore]]></category>
		<category><![CDATA[India]]></category>
		<category><![CDATA[passport]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=2220</guid>
		<description><![CDATA[My passport was due for renewal and I just renewed it. Even though the process seems relatively simple on paper, there were quite a few things I learned on the way which would definitely help someone who has to go through the process again. I thought of documenting and sharing them so that it is [...]]]></description>
				<content:encoded><![CDATA[<p>My passport was due for renewal and I just renewed it. Even though the process seems relatively simple on paper, there were quite a few things I learned on the way which would definitely help someone who has to go through the process again. I thought of documenting and sharing them so that it is useful for people who are in the similar situation.</p>
<h2>Disclaimers</h2>
<p>Couple of disclaimers before we start.</p>
<ul>
<li>As with government offices in India and state of an atom, your experiences may vary <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </li>
<li>I am documenting the steps that worked for me as of Jan 2013. It is possible that rules might have changed.</li>
<li>I renewed it in Bangalore. It might be different if you are doing it in another city/state.</li>
<li>Most of it apply for new passport also, but there might be some changes.</li>
</ul>
<h2>Additional changes needed in my passport</h2>
<p>In addition to renewing the passport, I wanted to do these additional changes as well.</p>
<ul>
<li>Change my address from Chennai to Bangalore</li>
<li>Change my marital status from single to married. Yes I got <a href="http://sudarmuthu.com/blog/how-i-designed-my-wedding-invitation">married about a year back</a> <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </li>
<li>Include my wife&#8217;s name in the spouse column</li>
<li>Remove ECR check. I got my old password while I was in college and it was enabled.</li>
</ul>
<p>One thing I came to know is that, if you are married then it is mandatory to include your spouse name in the passport by providing the necessary documents. Sorry guys, if you are married you can&#8217;t skip it <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h2>Tatkal and Ordinary</h2>
<p>There are two methods to renew passport. Tatkal and ordinary. According to the official statement, if you choose tatkal, then you can expect to get your passport within 10 days and for ordinary it will take about 3-4 weeks.</p>
<p>My passport was due for renewal in Jan 2013. I submitted the online application on Dec 3, 2012 through ordinary method and received my passport on Feb 7, 2013. There were two major reasons for the delay.</p>
<ul>
<li>Getting the appointment</li>
<li>Delay because of police verification</li>
</ul>
<p>If you take both into consideration, it is fair to say that you will get your passport in 3-4 weeks even if you choose the ordinary method.</p>
<h2>Documents needed</h2>
<p>For passport renewal, you need the following documents.</p>
<ul>
<li>Old passport</li>
<li>Address proof (need two separate proofs)</li>
<li>Marriage certificate or affidavit(to add your spouse name)</li>
<li>Degree certificate (for removing ECR check)</li>
</ul>
<p>For address proof I took the tax document (katha extract) of my house, EB bills, Gas bills, letter from my HR dept and my company id card. Even though the website says only two is needed, they asked for all the above from me.</p>
<p>For adding spouse name, you need the marriage certificate or an affidavit. If you have a marriage certificate it is better to carry that instead of an affidavit. For me they objected since my affidavit was issued in Chennai and was registered using Tamil Nadu stamp paper. I told them that I got married in Chennai and they accepted it on the condition that they will keep the original.</p>
<p>To remove ECR check, I had both my BE and MS certificates and they were fine with that.</p>
<p>It is also safe to carry your 10th and 12th mark sheet and also some additional certificates with have your date of birth. This is not specified anywhere in the website, but they asked me for this. The reason they gave me for this was that, if you are renewing your passport in a new city, then they can&#8217;t retrieve your old documents and you have to submit them again. I was not able to argue beyond that but luckily I was carrying them that day.</p>
<h2>Process</h2>
<p>Okay so let me explain the process now. This is more or less the same for new passport also.</p>
<ul>
<li>Submit your application online</li>
<li>Get an appointment for the visit to passport office</li>
<li>Visit the office and submit the documents</li>
<li>Complete police verification</li>
<li>Receive your passport</li>
</ul>
<h3>Submit your application online</h3>
<p>You have to create a new account at <a href="http://www.passportindia.gov.in">http://www.passportindia.gov.in</a>, download the application form, fill it and submit it back. The site is maintained by TCS, but don&#8217;t have any expectations. It is more or less at the same league of Irctc. Links open randomly in tabs, captchas every where, random session lock-in &#8211; you get the idea right?</p>
<p>One very important thing to do, if you don&#8217;t want any random calls from tele-marketers is to make sure you un-check the &#8220;Share my details with tele-marketers&#8221; checkbox, while uploading your filled in form. Yes, you read it correctly! Honestly I was shocked when I first saw it. I don&#8217;t know why they want to do this in a site where you upload sensitive information about you. I don&#8217;t know how much MEA (Minister of External Affairs) or TCS (who is maintaining this site) is going to earn by doing this. Anyways that is the state of things and make sure you uncheck the checkbox and hope they respect it.</p>
<h3>Getting an appointment</h3>
<p>If you thing uploading the document was tough, then you have not seen the real thing <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Personally for me this was the most irritating, difficult and time consuming part of the entire process. </p>
<p>They give appointment only for the next two days. The booking starts at 6PM for Bangalore (varies for different cities) and gets over in less than 100 seconds! (not minutes!) You need to fill in 3-4 captchas during that time and most of the times the site just hangs or times out. </p>
<p>It took me one full month to get the appointment after trying it to get one exactly at 6 PM every day.</p>
<p>The following are some of the things I learned the hard way. Hopefully this should help you to get appointment easily.</p>
<ul>
<li>Don&#8217;t try from your office or places where a single public IP is shared. They do filtering based on IP (I don&#8217;t know why)</li>
<li>Be careful while filling out the captchas. </li>
<li>Try exactly at 6:00 PM. Not at 5:59 or 6:01.</li>
<li>Close everything in your machine and have only this tab open.</li>
<li>Try to do it from a place where you have decent broadband speed. Trying from a slow connection usually fails.</li>
<li>Try to choose a time-slot between 12-2PM. Most people don&#8217;t choose this time period and the probability of getting this time slot is higher.</li>
</ul>
<h3>Visit the passport office</h3>
<p>When you visit the passport office, make sure you are carrying all your documents and be on time. I guess you don&#8217;t want to loose the appointment that you got the hard way <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>At the passport office, they will first check your documents and then will give you a file and token number. When the number is displayed on the display screens, you have to go to counter A, where they will check and scan your documents, collect the fees and take your photo. I saw a couple of people wearing blazers with tie and others using a hand mirror and comb. It&#8217;s up to you, if you want to do it <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>After that you have to go to counter B when your token number is called. They also will check your documents and will ask you to go to counter C. In counter C, they will check your documents again, put a cancel seal in your old passport and will ask you to go to the final guy, who will give you an acknowledgment. </p>
<p>If you are lucky the entire process should be done in around 2 hours. I was very un-lucky the day I went and ended by waiting there for 6 hours <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  Hopefully you will be lucky enough <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h3>Complete police verification</h3>
<p>Let me state the theoretical process first of how things <em>should</em> happen and then the practical process of how things <em>actually</em> happen.</p>
<p>The theoretical process is that your application is received by the police station, then come to your home to verify you stay there and then forward the application. </p>
<p>But in practice, this never happens. You should consider yourself to be lucky if they atleast have a courtesy to call you. For me they didn&#8217;t even give me a call. I waited for more than 3 weeks and went to the police station after that. That&#8217;s one of the reason why my passport got delayed.</p>
<p>The police station receive the application in a day or two after you visit the passport office. Wait for a week and if you don&#8217;t get a call, it is better to visit them. Make sure you carry all your documents and two passport size photos. Be prepared to be treated badly and also expect to wait there if needed. It is a police station and I guess you get the idea.</p>
<h3>You receive your passport</h3>
<p>Once the police forward your application you can expect to receive your passport by post with-in a week. Make sure you are either at home or have someone at home with your photo id.</p>
<p>Congratulations you have renewed your passport <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=eMnt0A1kUPU:kplaNawntVM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=eMnt0A1kUPU:kplaNawntVM:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=eMnt0A1kUPU:kplaNawntVM:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=eMnt0A1kUPU:kplaNawntVM:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=eMnt0A1kUPU:kplaNawntVM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=eMnt0A1kUPU:kplaNawntVM:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=eMnt0A1kUPU:kplaNawntVM:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=eMnt0A1kUPU:kplaNawntVM:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=eMnt0A1kUPU:kplaNawntVM:JEwB19i1-c4"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=eMnt0A1kUPU:kplaNawntVM:JEwB19i1-c4" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=eMnt0A1kUPU:kplaNawntVM:wF9xT3WuBAs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=eMnt0A1kUPU:kplaNawntVM:wF9xT3WuBAs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=eMnt0A1kUPU:kplaNawntVM:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=eMnt0A1kUPU:kplaNawntVM:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=eMnt0A1kUPU:kplaNawntVM:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/SudarBlogs/~4/eMnt0A1kUPU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sudarmuthu.com/blog/renewing-indian-passport-online/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://sudarmuthu.com/blog/renewing-indian-passport-online?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=renewing-indian-passport-online</feedburner:origLink></item>
		<item>
		<title>Changing the playback speed of Youtube videos</title>
		<link>http://feedproxy.google.com/~r/SudarBlogs/~3/Uc1Y2_fiA1g/changing-the-playback-speed-of-youtube-videos</link>
		<comments>http://sudarmuthu.com/blog/changing-the-playback-speed-of-youtube-videos#comments</comments>
		<pubDate>Tue, 29 Jan 2013 15:30:53 +0000</pubDate>
		<dc:creator>Sudar</dc:creator>
				<category><![CDATA[Google/Yahoo]]></category>
		<category><![CDATA[Notes]]></category>
		<category><![CDATA[videos]]></category>
		<category><![CDATA[youtube]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=2206</guid>
		<description><![CDATA[I generally like to watch lot of conference videos and lectures in youtube. Most of the time these videos are long (&#62; 1 hour) and sometimes the speakers speak slowly. I wanted to see if there is a way by which I can increase the playback speed of the videos. Luckily I stumbled upon the [...]]]></description>
				<content:encoded><![CDATA[<p>I generally like to watch lot of <a href="http://sudarmuthu.com/blog/notes-for-advanced-jquery-by-john-resig">conference videos</a> and <a href="http://sudarmuthu.com/blog/writing-efficient-javascript-for-v8">lectures</a> in youtube. Most of the time these videos are long (&gt; 1 hour) and sometimes the speakers speak slowly. I wanted to see if there is a way by which I can increase the playback speed of the videos.</p>
<p>Luckily I stumbled upon the <a href="http://www.youtube.com/html5">HTML5 experiment page of Youtube</a>, which allow you to control the playback speed.</p>
<p>So, if you are interested in controlling the playback speed of youtube videos, then just go to <a href="http://www.youtube.com/html5">youtube html5 experiment page</a> and enable it. You should also be using one of the latest browsers for this feature to work. I think youtube is saving this setting per browser and not per user account.</p>
<p>Once you enable the experiment, there will be a small settings icon in your video player which will allow you to vary the playback speed.<br />
<a href="http://sudarmuthu.com/wp/wp-content/uploads/2013/01/youtube-vary-speed.png"><img class="alignnone size-full wp-image-2207" alt="Varying youtube playback speed" src="http://sudarmuthu.com/wp/wp-content/uploads/2013/01/youtube-vary-speed.png" width="171" height="161" /></a><br />
Hope this small tip is useful for you <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=Uc1Y2_fiA1g:55M_kB29__k:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=Uc1Y2_fiA1g:55M_kB29__k:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=Uc1Y2_fiA1g:55M_kB29__k:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=Uc1Y2_fiA1g:55M_kB29__k:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=Uc1Y2_fiA1g:55M_kB29__k:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=Uc1Y2_fiA1g:55M_kB29__k:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=Uc1Y2_fiA1g:55M_kB29__k:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=Uc1Y2_fiA1g:55M_kB29__k:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=Uc1Y2_fiA1g:55M_kB29__k:JEwB19i1-c4"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=Uc1Y2_fiA1g:55M_kB29__k:JEwB19i1-c4" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=Uc1Y2_fiA1g:55M_kB29__k:wF9xT3WuBAs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=Uc1Y2_fiA1g:55M_kB29__k:wF9xT3WuBAs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=Uc1Y2_fiA1g:55M_kB29__k:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=Uc1Y2_fiA1g:55M_kB29__k:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=Uc1Y2_fiA1g:55M_kB29__k:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/SudarBlogs/~4/Uc1Y2_fiA1g" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sudarmuthu.com/blog/changing-the-playback-speed-of-youtube-videos/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://sudarmuthu.com/blog/changing-the-playback-speed-of-youtube-videos?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=changing-the-playback-speed-of-youtube-videos</feedburner:origLink></item>
		<item>
		<title>Sherlock Holmes and my childhood</title>
		<link>http://feedproxy.google.com/~r/SudarBlogs/~3/kAWPGtG6deU/sherlock-holmes-and-my-childhood</link>
		<comments>http://sudarmuthu.com/blog/sherlock-holmes-and-my-childhood#comments</comments>
		<pubDate>Sun, 27 Jan 2013 03:14:32 +0000</pubDate>
		<dc:creator>Sudar</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[Review]]></category>
		<category><![CDATA[Sherlock Holmes]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=2205</guid>
		<description><![CDATA[Sherlock Holmes was one of my childhood hero (together with He Man ) and was the main reason why I started reading books, which I am still continuing. At school, we had a chapter about Sir Arthur Conan Doyle in English Prose at 6th Std(grade) and a couple of short stories of Sherlock Holmes were [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Sherlock_Holmes">Sherlock Holmes</a> was one of my childhood hero (together with <a href="http://en.wikipedia.org/wiki/He-Man">He Man</a> <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ) and was the main reason why I started reading books, which I am still continuing.</p>
<p>At school, we had a chapter about <a href="http://en.wikipedia.org/wiki/Arthur_Conan_Doyle">Sir Arthur Conan Doyle</a> in English Prose at 6th Std(grade) and a couple of short stories of Sherlock Holmes were include in non-detail. This influenced me a lot and I got interested in mystery fiction. </p>
<p>There were instance where I started to think how Sherlock Holmes would have solved the mystery, but I still couldn&#8217;t find out who stole my rubber or pencil sharpener <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>The more I read about Sir Arthur Conan Doyle and Sherlock Holmes the more interested I got. But the library at school didn&#8217;t had many books and I was not able to read the full collection. </p>
<p>Years passed and one day I was browsing books at Crossword and came across the entire collection of Sherlock Holmes (4 novels and 46 short stories) and I immediately bought it. I think I finished the entire volume (more than 2000 pages) in less than a week <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>It was one of the best books I have read in my entire life. If you are interested in mystery and haven&#8217;t read Sherlock Holmes before, I highly recommend you to read it and I am sure you will like it.</p>
<p>Now, I am back to my bookshelf to find the book. Planning to read the entire collection one more time <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=kAWPGtG6deU:D1d3zJsIVJw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=kAWPGtG6deU:D1d3zJsIVJw:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=kAWPGtG6deU:D1d3zJsIVJw:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=kAWPGtG6deU:D1d3zJsIVJw:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=kAWPGtG6deU:D1d3zJsIVJw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=kAWPGtG6deU:D1d3zJsIVJw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=kAWPGtG6deU:D1d3zJsIVJw:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=kAWPGtG6deU:D1d3zJsIVJw:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=kAWPGtG6deU:D1d3zJsIVJw:JEwB19i1-c4"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=kAWPGtG6deU:D1d3zJsIVJw:JEwB19i1-c4" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=kAWPGtG6deU:D1d3zJsIVJw:wF9xT3WuBAs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=kAWPGtG6deU:D1d3zJsIVJw:wF9xT3WuBAs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=kAWPGtG6deU:D1d3zJsIVJw:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=kAWPGtG6deU:D1d3zJsIVJw:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=kAWPGtG6deU:D1d3zJsIVJw:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/SudarBlogs/~4/kAWPGtG6deU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sudarmuthu.com/blog/sherlock-holmes-and-my-childhood/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://sudarmuthu.com/blog/sherlock-holmes-and-my-childhood?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=sherlock-holmes-and-my-childhood</feedburner:origLink></item>
		<item>
		<title>Completely rewrote WP-IRC Plugin</title>
		<link>http://feedproxy.google.com/~r/SudarBlogs/~3/2hhq2l21AYU/completely-rewrote-wp-irc-plugin</link>
		<comments>http://sudarmuthu.com/blog/completely-rewrote-wp-irc-plugin#comments</comments>
		<pubDate>Sat, 26 Jan 2013 09:43:08 +0000</pubDate>
		<dc:creator>Sudar</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[irc]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[wp-irc]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=2196</guid>
		<description><![CDATA[It&#8217;s been quite sometime since I released my WP-IRC WordPress Plugin. A couple of users complained about the increase in page load time and so I decided to fix it and ultimately ended up rewriting it. By the way if you have not used it before, WP-IRC is a WordPress Plugin, that retrieves the number [...]]]></description>
				<content:encoded><![CDATA[<p>It&#8217;s been quite sometime since I <a href="http://sudarmuthu.com/blog/display-number-of-people-online-in-an-irc-channel-in-wordpress-sidebar">released my WP-IRC WordPress Plugin</a>. A couple of users complained about the increase in page load time and so I decided to fix it and ultimately ended up rewriting it.</p>
<p>By the way if you have not used it before, <a href="http://sudarmuthu.com/wordpress/wp-irc">WP-IRC is a WordPress Plugin</a>, that retrieves the number of users who are currently online in an irc channels and allows you to display this information in the sidebar using widgets. </p>
<h2>Dynamic update using AJAX to decrease page load time</h2>
<p>Since the Plugin has to connect to the irc server through sockets and do some protocol exchange to retrieve the user count in a channel, it was increasing the page load time drastically and was the major complaint that I was receiving about the Plugin.</p>
<p>I tired to decrease the page load time by lazily connecting to the irc server after the page is loaded using AJAX to retrieve the user count. This has drastically decreased the page load time and was one of the highlight of this rewrite.</p>
<p>You can check out this <a href="http://www.garyc40.com/2010/03/5-tips-for-using-ajax-in-wordpress/">excellent article</a> to find out how to use AJAX in WordPress.</p>
<h2>Added caching to decrease page load time</h2>
<p>In addition to using AJAX, I have also implemented caching so that the Plugin doesn&#8217;t have to connect to the irc server for every page load to retrieve the user count. </p>
<p>I implemented caching <a href="http://codex.wordpress.org/Transients_API">using transients in WordPress</a>.</p>
<h2>Support for multiple widgets</h2>
<p>One of the other highlights of this release is that, I have enabled support for multiple instance of the widgets. This will allow users to use multiple widgets, each with its own configuration.</p>
<p>I implemented it using the <a href="http://codex.wordpress.org/Widgets_API">Widgets API of WordPress</a>.</p>
<h2>Translation support</h2>
<p>Finally I have also added support for <a href="http://codex.wordpress.org/I18n_for_WordPress_Developers">internationalization</a> in my Plugin. The <code>.pot</code> file is under the <code>/languages</code> folder and if you are willing to do translation for the Plugin, use the pot file to create the <code>.po</code> files for your language and let me know.</p>
<h2>Download and source code</h2>
<p>You can <a href="http://sudarmuthu.com/wordpress/wp-irc">download the Plugin</a> from its homepage and the source code is available at <a href="https://github.com/sudar/wp-irc">github</a>.</p>
<p>Try out the Plugin and do let me know if you have any feedback or comments.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=2hhq2l21AYU:XXQiy9M2gW0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=2hhq2l21AYU:XXQiy9M2gW0:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=2hhq2l21AYU:XXQiy9M2gW0:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=2hhq2l21AYU:XXQiy9M2gW0:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=2hhq2l21AYU:XXQiy9M2gW0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=2hhq2l21AYU:XXQiy9M2gW0:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=2hhq2l21AYU:XXQiy9M2gW0:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=2hhq2l21AYU:XXQiy9M2gW0:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=2hhq2l21AYU:XXQiy9M2gW0:JEwB19i1-c4"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=2hhq2l21AYU:XXQiy9M2gW0:JEwB19i1-c4" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=2hhq2l21AYU:XXQiy9M2gW0:wF9xT3WuBAs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=2hhq2l21AYU:XXQiy9M2gW0:wF9xT3WuBAs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=2hhq2l21AYU:XXQiy9M2gW0:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=2hhq2l21AYU:XXQiy9M2gW0:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=2hhq2l21AYU:XXQiy9M2gW0:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/SudarBlogs/~4/2hhq2l21AYU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sudarmuthu.com/blog/completely-rewrote-wp-irc-plugin/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://sudarmuthu.com/blog/completely-rewrote-wp-irc-plugin?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=completely-rewrote-wp-irc-plugin</feedburner:origLink></item>
		<item>
		<title>Contributing to project hosted in Github</title>
		<link>http://feedproxy.google.com/~r/SudarBlogs/~3/4dET-P-scWw/contributing-to-project-hosted-in-github</link>
		<comments>http://sudarmuthu.com/blog/contributing-to-project-hosted-in-github#comments</comments>
		<pubDate>Mon, 07 Jan 2013 16:33:16 +0000</pubDate>
		<dc:creator>Sudar</dc:creator>
				<category><![CDATA[Unix/Server Stuff]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=2167</guid>
		<description><![CDATA[As most of you know, I host most of my projects which I have released as open source in Github. I am open for collaboration and generally accept most of the pull requests that people send me. Recently I noted that not all people who want to contribute are proficient with git or Github. So [...]]]></description>
				<content:encoded><![CDATA[<p>As most of you know, I host most of my projects which I have released as open source in <a href="https://github.com/sudar/">Github</a>. I am open for collaboration and generally accept most of the pull requests that people send me.</p>
<p>Recently I noted that not all people who want to contribute are proficient with git or Github. So here is a small guide to help people who are interested in contributing to projects hosted at Github.</p>
<p>Before we proceed just keep in mind, that this is not the only way to do it. But if you are just starting out using git or Github, then this is a good starting point.</p>
<h3>Fork the project in Github</h3>
<p>The first step is to fork the project at Github. Go to the project that you want to contribute to and then click the fork button near the top right corner.<br />
<img class="alignnone size-full wp-image-2169" alt="github-fork" src="http://sudarmuthu.com/wp/wp-content/uploads/2013/01/github-fork.png" width="475" height="151" /></p>
<h3>Clone the forked project to your machine</h3>
<p>When you fork the project, Github creates the forked project in your account. Once you forked the project, you need to clone it to your machine.</p>
<p>You can use the following command to do it.</p>
<p><code>git clone git@github.com:sudar/wp-irc.git</code></p>
<p>Replace it with your actual username and project name</p>
<h3>Create a new branch</h3>
<p>The next step is to create a new branch. You can use the following command to do that.</p>
<p><code>git checkout -b branch_name</code></p>
<h3>Commit your changes</h3>
<p>After you have made the changes, you have to commit them to the new branch</p>
<p><code>git add file_name</code></p>
<p>or</p>
<p><code>git add -p file_name</code></p>
<p>Then do</p>
<p><code>git commit -m "Your commit message"</code></p>
<h3>Push the change to Github</h3>
<p>Next you have to push the changes to Github. You can do it by using the following command.</p>
<p><code>git push -u origin branch_name</code></p>
<h3>Send a pull request</h3>
<p>Now go to Github and send a pull request, by clicking the pull request button in Github. The owner of the repo will be notified and he may choose to accept or reject the request.</p>
<h3>Keeping your repo upto date</h3>
<p>Once the pull request is accepted, you can merge the changes back to your repo by using the following commands.</p>
<p><code>git remote add upstream git://github.com/sudar/wp-irc.git</code></p>
<p><code>git checkout master</code></p>
<p><code>git pull --rebase upstream master</code></p>
<p><code>git push origin master</code></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=4dET-P-scWw:RxSkZz8vK3o:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=4dET-P-scWw:RxSkZz8vK3o:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=4dET-P-scWw:RxSkZz8vK3o:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=4dET-P-scWw:RxSkZz8vK3o:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=4dET-P-scWw:RxSkZz8vK3o:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=4dET-P-scWw:RxSkZz8vK3o:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=4dET-P-scWw:RxSkZz8vK3o:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=4dET-P-scWw:RxSkZz8vK3o:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=4dET-P-scWw:RxSkZz8vK3o:JEwB19i1-c4"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=4dET-P-scWw:RxSkZz8vK3o:JEwB19i1-c4" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=4dET-P-scWw:RxSkZz8vK3o:wF9xT3WuBAs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=4dET-P-scWw:RxSkZz8vK3o:wF9xT3WuBAs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=4dET-P-scWw:RxSkZz8vK3o:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=4dET-P-scWw:RxSkZz8vK3o:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=4dET-P-scWw:RxSkZz8vK3o:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/SudarBlogs/~4/4dET-P-scWw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sudarmuthu.com/blog/contributing-to-project-hosted-in-github/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://sudarmuthu.com/blog/contributing-to-project-hosted-in-github?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=contributing-to-project-hosted-in-github</feedburner:origLink></item>
		<item>
		<title>Looking back at 2012</title>
		<link>http://feedproxy.google.com/~r/SudarBlogs/~3/l8nVyzc49xo/looking-back-at-2012</link>
		<comments>http://sudarmuthu.com/blog/looking-back-at-2012#comments</comments>
		<pubDate>Sun, 06 Jan 2013 13:01:39 +0000</pubDate>
		<dc:creator>Sudar</dc:creator>
				<category><![CDATA[Random/Personal]]></category>
		<category><![CDATA[2012]]></category>
		<category><![CDATA[2013]]></category>
		<category><![CDATA[stats]]></category>
		<category><![CDATA[Year End Stats]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=2159</guid>
		<description><![CDATA[2012 had been a great year and it just ended. I thought of publishing my year end review for 2012 as I have done for the previous years. Personal Highlights If you have read my year end review of 2011, then you would have know that I got engaged in 2011 and I got married [...]]]></description>
				<content:encoded><![CDATA[<p>2012 had been a great year and it just ended. I thought of publishing my year end review for 2012 as I have <a href="http://sudarmuthu.com/blog/looking-back-at-2011">done</a> <a href="http://sudarmuthu.com/blog/looking-back-at-2010">for</a> <a href="http://sudarmuthu.com/blog/look-back-2009">the</a> <a href="http://sudarmuthu.com/blog/year-end-stats-for-2008">previous</a> <a href="http://sudarmuthu.com/blog/2008/01/02/year-end-stats-for-2007-graphs.html">years</a>.</p>
<h2>Personal Highlights</h2>
<p>If you have read my <a href="http://sudarmuthu.com/blog/looking-back-at-2011">year end review of 2011</a>, then you would have know that I got engaged in 2011 and I <a href="http://sudarmuthu.com/blog/how-i-designed-my-wedding-invitation">got married</a> in 2012. Before marriage, pretty much everyone were saying that my life is going to change completely, but fortunately for me things haven&#8217;t changed much except that I have another person in my life who cares for me more than I care for myself <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Talking of marriage, I am very happy to know lot of people really liked my <a href="http://sudarmuthu.com/blog/how-i-designed-my-wedding-invitation">wedding invitation</a> and recently a couple <a href="https://twitter.com/sudarmuthu/status/287133043053953024">contacted me</a> from Indonesia asking if they can use my wedding invitation design for their marriage.</p>
<h2>Travel Highlights</h2>
<p>Another thing which most people predicted for me is that after marriage I will not get much time to travel, which again proved to be wrong <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  I continued my tradition of at least one international travel and a couple of domestic travel.</p>
<ul>
<li>Went on a <a href="http://sudarmuthu.com/blog/bhutan-trip-itinerary">2 week trip to Bhutan</a> and <a href="http://sudarmuthu.com/blog/kadriche-bhutan">really loved it</a>.</li>
<li>My life long wish to travel to Andaman came true</li>
<li>Went to Goa for a couple of days</li>
<li>Went to Kodaikanal and foothills of Ooty</li>
<li>Went on a road trip across Tamil Nadu, but this time in car.</li>
<li>Went to <a href="http://sudarmuthu.com/blog/hacking-101-at-iit-bombay-for-hacku">IIT Bombay for HackU</a></li>
</ul>
<h2>HardwareFun</h2>
<p>2012 had been a great year for me from the hardware and robotics perspective. I continued working on hardware and <a href="http://hardwarefun.com/projects">Arduino related stuff</a> which I picked up in 2010.</p>
<p>One of the important things regarding hardware that I did in 2012 is that I <a href="http://sudarmuthu.com/blog/introducing-hardwarefun-com">launched</a> <a href="http://hardwarefun.com/">hardwarefun.com</a> one of my pet projects that is close to me. I created <a href="http://hardwarefun.com/">hardwarefun.com</a> to document my different adventures with hardware and also help other people who also want to learn hardware programming.</p>
<h2>Talks and Workshops</h2>
<p>Another thing which I improved in 2012 is my public speaking skills. I gave around 15 talks and also conducted my <a href="http://hardwarefun.com/arduino-workshop">robotics workshop</a>. The following are some of my favorite talks.</p>
<ul>
<li>Talk about <a href="http://hardwarefun.com/news/lets-build-robots-at-foss-in">building robots in Foss.in</a></li>
<li>My Droidcon talk about <a href="http://sudarmuthu.com/blog/using-websockets-with-android-to-control-arduino-robots">using Websockets in Android to control robots</a></li>
<li>My talk about <a href="http://sudarmuthu.com/blog/controlling-robots-using-javascript">controlling robots using JavaScript at JSFoo</a></li>
</ul>
<p>You can see the complete list of talks that I have given so far from my <a href="http://sudarmuthu.com/my-talks">talks page</a>.</p>
<h2>Blog Stats</h2>
<p>The following are stats generated for this blog by my <a href="http://sudarmuthu.com/wordpress/wp-year-end-stats">Year End Stats WordPress Plugin</a>.</p>
<p><img class="alignnone size-full wp-image-2160" alt="Number of posts by year" src="http://sudarmuthu.com/wp/wp-content/uploads/2013/01/stats1.png" width="350" height="250" /> <img class="alignnone size-full wp-image-2161" alt="Number of comments by year" src="http://sudarmuthu.com/wp/wp-content/uploads/2013/01/stats2.png" width="350" height="250" /> <img class="alignnone size-full wp-image-2162" alt="Average length of posts by year" src="http://sudarmuthu.com/wp/wp-content/uploads/2013/01/stats3.png" width="350" height="250" /> <img class="alignnone size-full wp-image-2163" alt="Length of all posts by year" src="http://sudarmuthu.com/wp/wp-content/uploads/2013/01/stats4.png" width="350" height="250" /></p>
<p>The number of posts have increased a bit and I am happy about that, since I am also writing posts in at hardwarefun as well.</p>
<p>I am planning to write more posts in 2013 and hope that with talks, workshop and personal life I get some free time to keep up this word <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h2>What&#8217;s in for 2013?</h2>
<p>So what&#8217;s in for 2013?</p>
<p>I am planning to concentrate more on my WordPress Plugins a bit and I already have some pretty good ideas. So stay tuned <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Regarding hardware stuff, I am planning expand HardwareFun.com and write more posts there and also continue working on Arduino and start playing around with Raspberry Pi as well. So it is going to be pretty exciting.</p>
<p>Regarding talks and workshop, I am planning to continue my <a href="http://hardwarefun.com/arduino-workshop">robotics workshop</a> (the next batch is going to be at the end of this month) and also start giving talks and workshops on other areas as well. Planning for a Hadoop and Pig workshop/talk soon.</p>
<p>From the looks of it, 2013 seems to be an exciting as well as a busy year and I am really looking forward to it.</p>
<p>So how was your 2012?</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=l8nVyzc49xo:YaFgAel43O4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=l8nVyzc49xo:YaFgAel43O4:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=l8nVyzc49xo:YaFgAel43O4:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=l8nVyzc49xo:YaFgAel43O4:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=l8nVyzc49xo:YaFgAel43O4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=l8nVyzc49xo:YaFgAel43O4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=l8nVyzc49xo:YaFgAel43O4:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=l8nVyzc49xo:YaFgAel43O4:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=l8nVyzc49xo:YaFgAel43O4:JEwB19i1-c4"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=l8nVyzc49xo:YaFgAel43O4:JEwB19i1-c4" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=l8nVyzc49xo:YaFgAel43O4:wF9xT3WuBAs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=l8nVyzc49xo:YaFgAel43O4:wF9xT3WuBAs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=l8nVyzc49xo:YaFgAel43O4:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=l8nVyzc49xo:YaFgAel43O4:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=l8nVyzc49xo:YaFgAel43O4:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/SudarBlogs/~4/l8nVyzc49xo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sudarmuthu.com/blog/looking-back-at-2012/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://sudarmuthu.com/blog/looking-back-at-2012?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=looking-back-at-2012</feedburner:origLink></item>
		<item>
		<title>Getting started with Hadoop and Pig</title>
		<link>http://feedproxy.google.com/~r/SudarBlogs/~3/N8r3VCYEw1w/getting-started-with-hadoop-and-pig</link>
		<comments>http://sudarmuthu.com/blog/getting-started-with-hadoop-and-pig#comments</comments>
		<pubDate>Wed, 12 Dec 2012 16:02:32 +0000</pubDate>
		<dc:creator>Sudar</dc:creator>
				<category><![CDATA[Events/Camps]]></category>
		<category><![CDATA[Hadoop/Pig]]></category>
		<category><![CDATA[Hadoop]]></category>
		<category><![CDATA[Pig]]></category>
		<category><![CDATA[slides]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=2142</guid>
		<description><![CDATA[I was supposed give a tutorial about Hadoop and Pig today at SRII-India ICSEM 2012 conference today which is happening at Infosys campus in Mysore. But unfortunately I was not able to attend it due a logistic nightmare created by the travel company used by the conference organizers. I spent more than 10 hours to [...]]]></description>
				<content:encoded><![CDATA[<p>I was supposed give a tutorial about Hadoop and Pig today at <a href="http://www.infosys.com/newsroom/events/pages/srii-india-icsem-2012.aspx">SRII-India ICSEM 2012 conference</a> today which is happening at Infosys campus in Mysore. </p>
<p>But unfortunately I was not able to attend it due a logistic nightmare created by the travel company used by the conference organizers.</p>
<p>I spent more than 10 hours to prepare the presentation with the demo code. I thought of sharing them here so that it will be useful for someone who wants to get started with Hadoop and Pig.</p>
<h2>Slides</h2>
<p>I have uploaded the slides to my <a href="http://www.slideshare.net/sudar">slideshare account</a>. You can <a href="http://www.slideshare.net/Sudar/hands-on-hadoop-and-pig">download the slides</a> or view them below. You can also checkout my other presentations and slides from <a href="http://sudarmuthu.com/my-talks">my talks page</a>.</p>
<object type='application/x-shockwave-flash' wmode='opaque' data='http://static.slideshare.net/swf/ssplayer2.swf?id=15599082&doc=hadoop-and-pig-srii-121211215405-phpapp01' width='425' height='348'><param name='movie' value='http://static.slideshare.net/swf/ssplayer2.swf?id=15599082&doc=hadoop-and-pig-srii-121211215405-phpapp01' /><param name='allowFullScreen' value='true' /></object>
<h2>Demo code</h2>
<p>You can checkout the demo code used in the presentation from my <a href="https://github.com/sudar/hadoop-samples">github account</a>.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=N8r3VCYEw1w:SJcOEx-Kmpk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=N8r3VCYEw1w:SJcOEx-Kmpk:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=N8r3VCYEw1w:SJcOEx-Kmpk:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=N8r3VCYEw1w:SJcOEx-Kmpk:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=N8r3VCYEw1w:SJcOEx-Kmpk:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=N8r3VCYEw1w:SJcOEx-Kmpk:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=N8r3VCYEw1w:SJcOEx-Kmpk:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=N8r3VCYEw1w:SJcOEx-Kmpk:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=N8r3VCYEw1w:SJcOEx-Kmpk:JEwB19i1-c4"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=N8r3VCYEw1w:SJcOEx-Kmpk:JEwB19i1-c4" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=N8r3VCYEw1w:SJcOEx-Kmpk:wF9xT3WuBAs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=N8r3VCYEw1w:SJcOEx-Kmpk:wF9xT3WuBAs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=N8r3VCYEw1w:SJcOEx-Kmpk:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=N8r3VCYEw1w:SJcOEx-Kmpk:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=N8r3VCYEw1w:SJcOEx-Kmpk:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/SudarBlogs/~4/N8r3VCYEw1w" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sudarmuthu.com/blog/getting-started-with-hadoop-and-pig/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://sudarmuthu.com/blog/getting-started-with-hadoop-and-pig?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=getting-started-with-hadoop-and-pig</feedburner:origLink></item>
		<item>
		<title>WordPress Plugin to add Foss.in badge</title>
		<link>http://feedproxy.google.com/~r/SudarBlogs/~3/zucFEDBv320/wordpress-plugin-to-add-foss-in-badge</link>
		<comments>http://sudarmuthu.com/blog/wordpress-plugin-to-add-foss-in-badge#comments</comments>
		<pubDate>Sat, 10 Nov 2012 06:01:04 +0000</pubDate>
		<dc:creator>Sudar</dc:creator>
				<category><![CDATA[Events/Camps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[fossin-badge]]></category>
		<category><![CDATA[Plugin]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=2116</guid>
		<description><![CDATA[I just wrote a WordPress Plugin, that allows you to display the Foss.in badge on your WordPress based website. If you just want a easy setup, then you can just use the sidebar widget that is available when you install the Plugin. If you want more control over the display, then you can the template [...]]]></description>
				<content:encoded><![CDATA[<p>I just wrote a WordPress Plugin, that allows you to <a href="http://sudarmuthu.com/wordpress/fossin-badge">display the Foss.in badge</a> on your WordPress based website.</p>
<p>If you just want a easy setup, then you can just use the sidebar widget that is available when you install the Plugin. If you want more control over the display, then you can the template function yourself. Details about the template function is available in the <a href="http://sudarmuthu.com/wordpress/fossin-badge">Plugin&#8217;s homepage</a>.</p>
<p>BTW, did I tell you that I am going to be speaking at foss.in? <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Yes, my proposal got selected and I will be talking about <a href = "http://foss.in/2012/content-at-foss-in-2012">building robots using Open hardware like Arduino</a>. </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=zucFEDBv320:PPscadmL2oQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=zucFEDBv320:PPscadmL2oQ:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=zucFEDBv320:PPscadmL2oQ:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=zucFEDBv320:PPscadmL2oQ:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=zucFEDBv320:PPscadmL2oQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=zucFEDBv320:PPscadmL2oQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=zucFEDBv320:PPscadmL2oQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=zucFEDBv320:PPscadmL2oQ:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=zucFEDBv320:PPscadmL2oQ:JEwB19i1-c4"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=zucFEDBv320:PPscadmL2oQ:JEwB19i1-c4" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=zucFEDBv320:PPscadmL2oQ:wF9xT3WuBAs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=zucFEDBv320:PPscadmL2oQ:wF9xT3WuBAs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=zucFEDBv320:PPscadmL2oQ:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=zucFEDBv320:PPscadmL2oQ:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=zucFEDBv320:PPscadmL2oQ:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/SudarBlogs/~4/zucFEDBv320" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sudarmuthu.com/blog/wordpress-plugin-to-add-foss-in-badge/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://sudarmuthu.com/blog/wordpress-plugin-to-add-foss-in-badge?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=wordpress-plugin-to-add-foss-in-badge</feedburner:origLink></item>
		<item>
		<title>Using WebSockets with Android to control Arduino robots</title>
		<link>http://feedproxy.google.com/~r/SudarBlogs/~3/ix2I0IqlmXw/using-websockets-with-android-to-control-arduino-robots</link>
		<comments>http://sudarmuthu.com/blog/using-websockets-with-android-to-control-arduino-robots#comments</comments>
		<pubDate>Fri, 02 Nov 2012 15:07:21 +0000</pubDate>
		<dc:creator>Sudar</dc:creator>
				<category><![CDATA[Android/Java]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Events/Camps]]></category>
		<category><![CDATA[DroidCon]]></category>
		<category><![CDATA[Robots]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=2104</guid>
		<description><![CDATA[I just came back from DroidCon 2012 by hasgeek, where I gave a talk about using WebSockets with Android to control Arduino based robots. I talked about WebSockets, how it can be used with Android and then gave a demo that I made using WebSockets, Android and the node.js server which I wrote for jsFoo. [...]]]></description>
				<content:encoded><![CDATA[<p>I just came back from DroidCon 2012 by hasgeek, where I gave a talk about using WebSockets with Android to control Arduino based robots. I talked about WebSockets, how it can be used with Android and then gave a demo that I made using WebSockets, Android and the node.js server which I wrote for jsFoo. The demo allowed anyone from the audience to control an Arduino based robot which I placed in the stage.</p>
<p>I didn&#8217;t just talk about making Android and Arduino talk to each other, since I have already covered that in <a href="http://sudarmuthu.com/blog/building-robots-using-arduino-and-android-at-droidcon">last year&#8217;s DroidCon</a>.</p>
<h2>Slides</h2>
<p>You can <a href="http://www.slideshare.net/Sudar/using-websockets-and-android-to-control-robots-in-realtime">download the slides</a> from my slideshare account or view them below.<br />
<object type='application/x-shockwave-flash' wmode='opaque' data='http://static.slideshare.net/swf/ssplayer2.swf?id=14997739&doc=using-websockets-and-android-to-control-robots-in-realtime-121102093039-phpapp01' width='425' height='348'><param name='movie' value='http://static.slideshare.net/swf/ssplayer2.swf?id=14997739&doc=using-websockets-and-android-to-control-robots-in-realtime-121102093039-phpapp01' /><param name='allowFullScreen' value='true' /></object></p>
<h2>Demo</h2>
<p>I built the <a href="http://hardwarefun.com/projects/asimijs">demo</a> using WebSockets, Android and node.js which allowed anyone from the audience to control the Arduino robot that I placed in the stage. The user&#8217;s browser communicated with the node.js server using Socket.IO and the Android app received this information through socket.IO and controlled the Arduino using ADK. You can find the entire source code in <a href="https://github.com/sudar/Asimi-js">my github account</a>.</p>
<p>The demo was well received and it was good to know that many people liked it. You can checkout some of these tweets to know how much people liked it <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<blockquote class="twitter-tweet" width="500"><p>@<a href="https://twitter.com/droidconin">droidconin</a> The session by @<a href="https://twitter.com/sudarmuthu">sudarmuthu</a> showed us awesome 2-way communication, both robot-android and speaker-audience <a href="https://twitter.com/search/%23droidcon">#droidcon</a></p>
<p>&mdash; Aravind Krishnaswamy (@twitortat) <a href="https://twitter.com/twitortat/status/264326797867483137" data-datetime="2012-11-02T11:23:14+00:00">November 2, 2012</a></p></blockquote>
<p><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script></p>
<blockquote class="twitter-tweet" width="500"><p>Gained access to @<a href="https://twitter.com/sudarmuthu">sudarmuthu</a>&#8216;s robot 3 times during his talk at <a href="https://twitter.com/search/%23droidcon">#droidcon</a>. <a href="https://twitter.com/search/%23win">#win</a></p>
<p>&mdash; Gautam Gupta (@TheGautamGupta) <a href="https://twitter.com/TheGautamGupta/status/264317719069995008" data-datetime="2012-11-02T10:47:09+00:00">November 2, 2012</a></p></blockquote>
<p><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script></p>
<blockquote class="twitter-tweet" width="500"><p>Next time, we want two robots on stage, doing both collaborative work and fighting <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  @<a href="https://twitter.com/sudarmuthu">sudarmuthu</a> @<a href="https://twitter.com/rakesh314">rakesh314</a><a href="https://twitter.com/search/%23droidcon">#droidcon</a></p>
<p>&mdash; Vipul (@v1pl) <a href="https://twitter.com/v1pl/status/264318749111377920" data-datetime="2012-11-02T10:51:15+00:00">November 2, 2012</a></p></blockquote>
<p><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script></p>
<h2>Arduino Workshop</h2>
<p>As I <a href="http://sudarmuthu.com/blog/hands-on-arduino-workshop">said before</a>, I am conducting an <a href="http://hardwarefun.com/arduino-workshop">Arduino workshop</a> this weekend. The workshop consists of hands-on sessions, where you can learn about Arduino and then use that knowledge to build a fully autonomously bot from scratch similar to the one that showed in the demo. You can find more details about the workshop from the <a href="http://hardwarefun.com/arduino-workshop">workshop page</a> at hardwarefun.</p>
<h2>Buying Arduino in Bangalore</h2>
<p>As it used to happen in my other talks about Arduino, even today lot of people asked me about places where they can buy Arduino in Bangalore. I have already collect a list of places from where you can <a href="http://sudarmuthu.com/blog/buying-arduino-in-bangalore">buy Arduino in Bangalore</a>. You can refer to that page, in case you are planning to buy Arduino in Bangalore.</p>
<p>Couple of people asked me what&#8217;s next and someone suggested that I build two robots, that can interact with each other. My personal favorite is to create a bot, that can fly. Let&#8217;s see what I make next <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=ix2I0IqlmXw:9dEQAVaubZ4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=ix2I0IqlmXw:9dEQAVaubZ4:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=ix2I0IqlmXw:9dEQAVaubZ4:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=ix2I0IqlmXw:9dEQAVaubZ4:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=ix2I0IqlmXw:9dEQAVaubZ4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=ix2I0IqlmXw:9dEQAVaubZ4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=ix2I0IqlmXw:9dEQAVaubZ4:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=ix2I0IqlmXw:9dEQAVaubZ4:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=ix2I0IqlmXw:9dEQAVaubZ4:JEwB19i1-c4"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=ix2I0IqlmXw:9dEQAVaubZ4:JEwB19i1-c4" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=ix2I0IqlmXw:9dEQAVaubZ4:wF9xT3WuBAs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=ix2I0IqlmXw:9dEQAVaubZ4:wF9xT3WuBAs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=ix2I0IqlmXw:9dEQAVaubZ4:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=ix2I0IqlmXw:9dEQAVaubZ4:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=ix2I0IqlmXw:9dEQAVaubZ4:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/SudarBlogs/~4/ix2I0IqlmXw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sudarmuthu.com/blog/using-websockets-with-android-to-control-arduino-robots/feed</wfw:commentRss>
		<slash:comments>17</slash:comments>
		<feedburner:origLink>http://sudarmuthu.com/blog/using-websockets-with-android-to-control-arduino-robots?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=using-websockets-with-android-to-control-arduino-robots</feedburner:origLink></item>
		<item>
		<title>Controlling robots using JavaScript</title>
		<link>http://feedproxy.google.com/~r/SudarBlogs/~3/ZWNkJ90dIxc/controlling-robots-using-javascript</link>
		<comments>http://sudarmuthu.com/blog/controlling-robots-using-javascript#comments</comments>
		<pubDate>Sat, 20 Oct 2012 05:59:16 +0000</pubDate>
		<dc:creator>Sudar</dc:creator>
				<category><![CDATA[Events/Camps]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Javascript/jQuery]]></category>
		<category><![CDATA[Robots]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=2084</guid>
		<description><![CDATA[I just came back from giving a talk in jsFoo 2012 about controlling robots using JavaScript. I talked about the different options that you have to control external devices using JavaScript and also gave a demo, which allows anyone on the internet to control the bot that I created. Slides You can download the slides [...]]]></description>
				<content:encoded><![CDATA[<p>I just came back from giving a talk in <a href = "http://jsfoo.in/2012/">jsFoo 2012</a> about controlling robots using JavaScript. I talked about the different options that you have to control external devices using JavaScript and also gave a demo, which allows anyone on the internet to control the bot that I created.</p>
<h2>Slides</h2>
<p>You can <a href="http://www.slideshare.net/Sudar/controlling-robots-using-javascript">download the slides</a> from my slideshare account or you can view them below.</p>
<object type='application/x-shockwave-flash' wmode='opaque' data='http://static.slideshare.net/swf/ssplayer2.swf?id=14803692&doc=controlling-robots-using-javascript-121019113554-phpapp01' width='425' height='348'><param name='movie' value='http://static.slideshare.net/swf/ssplayer2.swf?id=14803692&doc=controlling-robots-using-javascript-121019113554-phpapp01' /><param name='allowFullScreen' value='true' /></object>
<h2>Demo</h2>
<p>I created a <a href="http://hardwarefun.com/projects/asimijs">demo</a> using express, socket.io and node-serialport, that allowed anyone in the internet to control the Arduino bot that I created. The entire source code is <a href="https://github.com/sudar/Asimi-js">available at github</a>. Over the next couple of weeks I will be writing more articles explaining how the different components of the demo worked. So stay tuned <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>Arduino Workshop</h2>
<p>As I <a href="http://sudarmuthu.com/blog/hands-on-arduino-workshop">said before</a>, I am conducting an <a href="http://hardwarefun.com/arduino-workshop">Arduino workshop</a> on Nov 3rd and 4th. The workshop consists of hands-on sessions, where you can learn about Arduino and then use that knowledge to build a fully autonomously bot from scratch similar to the one that showed in the demo. You can find more details about the workshop from the <a href="http://hardwarefun.com/arduino-workshop">workshop page</a> at hardwarefun.</p>
<h2>Buying Arduino in Bangalore</h2>
<p>As it used to happen in my other talks about Arduino, even today lot of people asked me about places where they can <a href = "http://sudarmuthu.com/blog/buying-arduino-in-bangalore">buy Arduino in Bangalore</a>. I have already collect a list of places from where you can buy Arduino in Bangalore. You can refer to that page, in case you are planning to buy Arduino in Bangalore.</p>
<h2>Video</h2>
<p>HasGeek has uploaded the video of the talk and demo. You can <a href = "http://www.youtube.com/watch?v=65qcUAbjbMg">view it in youtube</a> or below.</p>
<p><span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='640' height='390' src='http://www.youtube.com/embed/65qcUAbjbMg?version=3&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' frameborder='0'></iframe></span></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=ZWNkJ90dIxc:onVWZ1I6SZg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=ZWNkJ90dIxc:onVWZ1I6SZg:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=ZWNkJ90dIxc:onVWZ1I6SZg:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=ZWNkJ90dIxc:onVWZ1I6SZg:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=ZWNkJ90dIxc:onVWZ1I6SZg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=ZWNkJ90dIxc:onVWZ1I6SZg:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=ZWNkJ90dIxc:onVWZ1I6SZg:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=ZWNkJ90dIxc:onVWZ1I6SZg:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=ZWNkJ90dIxc:onVWZ1I6SZg:JEwB19i1-c4"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=ZWNkJ90dIxc:onVWZ1I6SZg:JEwB19i1-c4" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=ZWNkJ90dIxc:onVWZ1I6SZg:wF9xT3WuBAs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=ZWNkJ90dIxc:onVWZ1I6SZg:wF9xT3WuBAs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=ZWNkJ90dIxc:onVWZ1I6SZg:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=ZWNkJ90dIxc:onVWZ1I6SZg:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=ZWNkJ90dIxc:onVWZ1I6SZg:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/SudarBlogs/~4/ZWNkJ90dIxc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sudarmuthu.com/blog/controlling-robots-using-javascript/feed</wfw:commentRss>
		<slash:comments>16</slash:comments>
		<feedburner:origLink>http://sudarmuthu.com/blog/controlling-robots-using-javascript?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=controlling-robots-using-javascript</feedburner:origLink></item>
		<item>
		<title>Hands on Arduino Workshop</title>
		<link>http://feedproxy.google.com/~r/SudarBlogs/~3/N97W4T1i9mc/hands-on-arduino-workshop</link>
		<comments>http://sudarmuthu.com/blog/hands-on-arduino-workshop#comments</comments>
		<pubDate>Sat, 20 Oct 2012 05:46:30 +0000</pubDate>
		<dc:creator>Sudar</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Workshop]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=2082</guid>
		<description><![CDATA[In my last post about my recent project hardwarefun.com, I hinted that I am planning to conduct an Arduino workshop. Now things have got finalized and I will be conducting it on Nov 3rd and 4th. It is going to be a 2 full day workshop and I will also be providing the components needed [...]]]></description>
				<content:encoded><![CDATA[<p>In my <a href="http://sudarmuthu.com/blog/introducing-hardwarefun-com">last post about my recent project</a> <a href="http://hardwarefun.com/">hardwarefun.com</a>, I hinted that I am planning to conduct an Arduino workshop. Now things have got finalized and I will be conducting it on Nov 3rd and 4th.</p>
<p>It is going to be a 2 full day workshop and I will also be providing the components needed for the workshop. You can find the course content, fees structure and the registration process in the <a href="http://hardwarefun.com/arduino-workshop">workshop page at hardwarefun</a>. </p>
<p>The aim of the workshop is that at the end of two days you should able to have a working Arduino based bot which can autonomously run on its own avoiding obstacles in the path.</p>
<p>Even though I have given lot of talks before, this is going to be the first time I am doing a full 2 day workshop and I am kind of excited <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Also if you have any feedback or questions then feel to contact me by leaving a comment below.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=N97W4T1i9mc:yx9NyYgNwGc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=N97W4T1i9mc:yx9NyYgNwGc:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=N97W4T1i9mc:yx9NyYgNwGc:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=N97W4T1i9mc:yx9NyYgNwGc:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=N97W4T1i9mc:yx9NyYgNwGc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=N97W4T1i9mc:yx9NyYgNwGc:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=N97W4T1i9mc:yx9NyYgNwGc:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=N97W4T1i9mc:yx9NyYgNwGc:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=N97W4T1i9mc:yx9NyYgNwGc:JEwB19i1-c4"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=N97W4T1i9mc:yx9NyYgNwGc:JEwB19i1-c4" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=N97W4T1i9mc:yx9NyYgNwGc:wF9xT3WuBAs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=N97W4T1i9mc:yx9NyYgNwGc:wF9xT3WuBAs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=N97W4T1i9mc:yx9NyYgNwGc:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=N97W4T1i9mc:yx9NyYgNwGc:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=N97W4T1i9mc:yx9NyYgNwGc:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/SudarBlogs/~4/N97W4T1i9mc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sudarmuthu.com/blog/hands-on-arduino-workshop/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://sudarmuthu.com/blog/hands-on-arduino-workshop?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=hands-on-arduino-workshop</feedburner:origLink></item>
		<item>
		<title>Introducing HardwareFun.com</title>
		<link>http://feedproxy.google.com/~r/SudarBlogs/~3/XKU4XQy91mo/introducing-hardwarefun-com</link>
		<comments>http://sudarmuthu.com/blog/introducing-hardwarefun-com#comments</comments>
		<pubDate>Wed, 10 Oct 2012 15:51:26 +0000</pubDate>
		<dc:creator>Sudar</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Hardwarefun]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=2078</guid>
		<description><![CDATA[Sometime back, I told you guys about a secret project which I have been working on and now it&#8217;s time to reveal it So ladies and gentlemen I introduce you to my new pet project HardwareFun.com. So what is this project about? Regular readers of my blog would have noticed that I have started playing [...]]]></description>
				<content:encoded><![CDATA[<p>Sometime back, I told you guys about a <a href="http://sudarmuthu.com/blog/traveling-to-bhutan">secret project</a> which I have been working on and now it&#8217;s time to reveal it <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  So ladies and gentlemen I introduce you to my new pet project <a href="http://hardwarefun.com">HardwareFun.com</a>.</p>
<h2>So what is this project about?</h2>
<p>Regular readers of my blog would have noticed that I have started playing around with hardware (especially <a href="http://sudarmuthu.com/arduino">Arduino</a>) for quite sometime now and I really enjoy doing it. I used to <a href="http://sudarmuthu.com/blog/building-robots-using-android-and-arduino-in-google-devfestx">talk</a> about it at <a href="http://sudarmuthu.com/blog/introduction-to-hardware-hacking-and-arduino">various</a> <a href="http://sudarmuthu.com/blog/board-hackthon">events</a> and realized that lot of people are interested in doing it as a hobby but don&#8217;t know where to start, especially if they are not from electronics background.</p>
<p>The number of emails that I used to get from people asking me how I got started doing hardware programming increased over the period of time, especially after <a href="http://www.raspberrypi.org/">Raspberry Pi</a> became famous. This made me to think about ways to share my knowledge about hardware programming, which I have learned over a period of time, so that it will help people who are also interested to get into hardware programming like me. Also it will give me a personal satisfaction of giving something back to the world of web from where I have learned pretty much everything.</p>
<p>.. and that&#8217;s how <a href="http://hardwarefun.com">HardwareFun.com</a> was born <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>I am planning to write about <a href="http://hardwarefun.com/projects">project and libraries</a> that I am working on, <a href="http://hardwarefun.com/tutorials">tutorials to get you started with hardware programming</a>, about <a href="http://hardwarefun.com/tutorials/using-usb-host-shield-with-arduino">shields and other hardware</a> that I have used and of course about my experiences programming them etc. If enough people are interested I might even start conducting workshops or other events to help people get started with hardware programming. So lot of existing stuff to come, stay tuned <img src='http://sudarmuthu.com/wpfiles/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>I have already started posting a couple of tutorials and articles on the site so do check it out and let me know if you have any feedback.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=XKU4XQy91mo:8c_ez_fQMog:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=XKU4XQy91mo:8c_ez_fQMog:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=XKU4XQy91mo:8c_ez_fQMog:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=XKU4XQy91mo:8c_ez_fQMog:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=XKU4XQy91mo:8c_ez_fQMog:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=XKU4XQy91mo:8c_ez_fQMog:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=XKU4XQy91mo:8c_ez_fQMog:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=XKU4XQy91mo:8c_ez_fQMog:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=XKU4XQy91mo:8c_ez_fQMog:JEwB19i1-c4"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=XKU4XQy91mo:8c_ez_fQMog:JEwB19i1-c4" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=XKU4XQy91mo:8c_ez_fQMog:wF9xT3WuBAs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=XKU4XQy91mo:8c_ez_fQMog:wF9xT3WuBAs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=XKU4XQy91mo:8c_ez_fQMog:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SudarBlogs?a=XKU4XQy91mo:8c_ez_fQMog:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/SudarBlogs?i=XKU4XQy91mo:8c_ez_fQMog:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/SudarBlogs/~4/XKU4XQy91mo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sudarmuthu.com/blog/introducing-hardwarefun-com/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://sudarmuthu.com/blog/introducing-hardwarefun-com?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=introducing-hardwarefun-com</feedburner:origLink></item>
	</channel>
</rss>
