<?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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>$ thought | blog</title>
	
	<link>http://thoughtworker.in</link>
	<description>Place to serialize my thoughts...</description>
	<lastBuildDate>Wed, 26 Oct 2011 04:17:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/thoughtworker/blog" /><feedburner:info uri="thoughtworker/blog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Mac OS: netstat and pid</title>
		<link>http://feedproxy.google.com/~r/thoughtworker/blog/~3/F2E4UfbX9LU/</link>
		<comments>http://thoughtworker.in/2011/10/26/mac-os-netstat-and-pid/#comments</comments>
		<pubDate>Wed, 26 Oct 2011 04:13:36 +0000</pubDate>
		<dc:creator>Sachin</dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[bsd]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[netstat]]></category>

		<guid isPermaLink="false">http://thoughtworker.in/?p=258</guid>
		<description><![CDATA[I am a Linux user by large. Lately I migrated to Mac as it worked better for me. (...and they look beautiful!) Although, I found from @hyfather that there is significant difference between Mac based utilities vs Linux-based. This difference exists &#8230; <a href="http://thoughtworker.in/2011/10/26/mac-os-netstat-and-pid/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I am a Linux user by large. Lately I migrated to Mac as it worked better for me. (...and they look beautiful!) Although, I found from <a href="http://twitter.com/#!/hyfather">@hyfather</a> that there is significant difference between Mac based utilities vs Linux-based. This difference exists as Linux has GNU coreutils and Mac has BSD based.</p>
<p><img class="alignleft" title="BSD" src="http://i71.photobucket.com/albums/i157/dharmapurikar/ThoughtWorker/Bsd-big.png" alt="" width="117" height="123" />VS<img class="alignnone" title="GNU" src="http://i71.photobucket.com/albums/i157/dharmapurikar/ThoughtWorker/120px-Gnu.jpg" alt="" width="120" height="120" /></p>
<p>Many switches are different, output is different and it is very frustrating to experienced users.</p>
<p>I ran into <code>netstat</code> command recently. I needed to find out pid of <code>memcached</code> server on my mac. Spend few mins but no luck. Mac based <code>netstat</code> command won't understand <code>-p</code> switch. Aaargh! I had to use <code>lsof</code> to get my job done.</p>
<p>Here is how I did it -</p>
<p><code>sudo lsof -i -P|grep memcache</code></p>
<p>Worked great!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/thoughtworker/blog?a=F2E4UfbX9LU:h5O_Ue5O5Ls:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/thoughtworker/blog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/thoughtworker/blog?a=F2E4UfbX9LU:h5O_Ue5O5Ls:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/thoughtworker/blog?i=F2E4UfbX9LU:h5O_Ue5O5Ls:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/thoughtworker/blog/~4/F2E4UfbX9LU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://thoughtworker.in/2011/10/26/mac-os-netstat-and-pid/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://thoughtworker.in/2011/10/26/mac-os-netstat-and-pid/</feedburner:origLink></item>
		<item>
		<title>How to display local time to users in browser?</title>
		<link>http://feedproxy.google.com/~r/thoughtworker/blog/~3/RW7ckCKLmHs/</link>
		<comments>http://thoughtworker.in/2011/10/15/local-time-in-browser/#comments</comments>
		<pubDate>Sat, 15 Oct 2011 15:03:08 +0000</pubDate>
		<dc:creator>Sachin</dc:creator>
				<category><![CDATA[Developer]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[browser dates iso8601 javascript]]></category>

		<guid isPermaLink="false">http://thoughtworker.in/?p=252</guid>
		<description><![CDATA[In 7 years web programming career, I never met this problem before. In a recent project we needed to show browsers local time on the page. Few folks have solutions to do this server side but none of them work &#8230; <a href="http://thoughtworker.in/2011/10/15/local-time-in-browser/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In 7 years web programming career, I never met this problem before. In a recent project we needed to show browsers local time on the page. Few folks have solutions to do this server side but none of them work reliably. Why?</p>
<ul>
<li>Browsers don't send any timezone information</li>
<li>You can send offset in headers / parameters but its only reliable for dynamic requests</li>
</ul>
<p>After trying a failing multiple times, I resorted to a browser-based JavaScript solution. This works great!</p>
<ol>
<li>Convert all the server side timestamps to UTC. This makes server side code life way easier!</li>
<li>Send the dates to browser in iso8601 format which JavaScript can parse easily.</li>
<li>I used very good jQuery library (<a href="http://code.google.com/p/jquery-localtime/">Localtime</a>)  to convert <a href="http://en.wikipedia.org/wiki/ISO_8601">iso8601</a> formatted dates to format required by application.</li>
</ol>
<p>You can also tag your date spans with a special class. This way you can convert all timestamps to different formats unobtrusively. Very simple and elegant solution.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/thoughtworker/blog?a=RW7ckCKLmHs:7B4A6TYLicA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/thoughtworker/blog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/thoughtworker/blog?a=RW7ckCKLmHs:7B4A6TYLicA:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/thoughtworker/blog?i=RW7ckCKLmHs:7B4A6TYLicA:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/thoughtworker/blog/~4/RW7ckCKLmHs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://thoughtworker.in/2011/10/15/local-time-in-browser/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://thoughtworker.in/2011/10/15/local-time-in-browser/</feedburner:origLink></item>
		<item>
		<title>Ruby: Insecure World Writable Directory</title>
		<link>http://feedproxy.google.com/~r/thoughtworker/blog/~3/-Sc6uyeNYdA/</link>
		<comments>http://thoughtworker.in/2011/10/15/ruby-insecure-world-writable-directory/#comments</comments>
		<pubDate>Sat, 15 Oct 2011 14:38:11 +0000</pubDate>
		<dc:creator>Sachin</dc:creator>
				<category><![CDATA[Developer]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[ruby tip console warning]]></category>

		<guid isPermaLink="false">http://thoughtworker.in/?p=247</guid>
		<description><![CDATA[I keep getting following warning lately on my mac. ruby warning: Insecure world writable dir /usr/local/bin, mode 040777 Little research and I found, Ruby warns you about any world writeable directory in your PATH. Not only writeable directories but parents &#8230; <a href="http://thoughtworker.in/2011/10/15/ruby-insecure-world-writable-directory/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I keep getting following warning lately on my mac.</p>
<pre>ruby warning: Insecure world writable dir /usr/local/bin, mode 040777</pre>
<p>Little research and I found, Ruby warns you about any world writeable directory in your PATH. Not only writeable directories but parents as well.</p>
<p>Fix is super quick.</p>
<pre>chmod o-w /usr/local/bin</pre>
<p>You can replace /usr/local/bin with any directory which ruby complains about. This fixes the issue.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/thoughtworker/blog?a=-Sc6uyeNYdA:uOKrvYhm9pM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/thoughtworker/blog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/thoughtworker/blog?a=-Sc6uyeNYdA:uOKrvYhm9pM:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/thoughtworker/blog?i=-Sc6uyeNYdA:uOKrvYhm9pM:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/thoughtworker/blog/~4/-Sc6uyeNYdA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://thoughtworker.in/2011/10/15/ruby-insecure-world-writable-directory/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://thoughtworker.in/2011/10/15/ruby-insecure-world-writable-directory/</feedburner:origLink></item>
		<item>
		<title>Save a read-only file in VIM using sudo</title>
		<link>http://feedproxy.google.com/~r/thoughtworker/blog/~3/jVScEBo895g/</link>
		<comments>http://thoughtworker.in/2011/09/25/save-a-read-only-file-in-vim-using-sudo/#comments</comments>
		<pubDate>Sun, 25 Sep 2011 15:23:59 +0000</pubDate>
		<dc:creator>Sachin</dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://thoughtworker.in/?p=242</guid>
		<description><![CDATA[Have you opened a read-only file and modified it but couldn't save? Not anymore, I found a quick tip which allows VIM users to save the file as 'sudo' even if you didn't use 'sudo' at the time of opening. &#8230; <a href="http://thoughtworker.in/2011/09/25/save-a-read-only-file-in-vim-using-sudo/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Have you opened a read-only file and modified it but couldn't save? Not anymore, I found a quick tip which allows VIM users to save the file as 'sudo' even if you didn't use 'sudo' at the time of opening.<br />
Create a shorthand mapping in VIM as follows:</p>
<p><code>cmap w!! %!sudo tee &gt; /dev/null %</code></p>
<p>You can save this to your ~/.vimrc file to persist it.</p>
<p>Now every time you want to override the read-only status and save changes as sudo, just hit 'w!!' and you'll be good.</p>
<p>Love the power of VIM!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/thoughtworker/blog?a=jVScEBo895g:Gu-yO3mIs5c:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/thoughtworker/blog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/thoughtworker/blog?a=jVScEBo895g:Gu-yO3mIs5c:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/thoughtworker/blog?i=jVScEBo895g:Gu-yO3mIs5c:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/thoughtworker/blog/~4/jVScEBo895g" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://thoughtworker.in/2011/09/25/save-a-read-only-file-in-vim-using-sudo/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://thoughtworker.in/2011/09/25/save-a-read-only-file-in-vim-using-sudo/</feedburner:origLink></item>
		<item>
		<title>Getting Things Done</title>
		<link>http://feedproxy.google.com/~r/thoughtworker/blog/~3/bMq6_DPmG7Y/</link>
		<comments>http://thoughtworker.in/2011/09/18/getting-things-done/#comments</comments>
		<pubDate>Sun, 18 Sep 2011 09:08:40 +0000</pubDate>
		<dc:creator>Sachin</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://thoughtworker.in/?p=191</guid>
		<description><![CDATA[It is not easy! I have struggled with achieving higher productivity while working on my personal projects or working from home. I kept asking why? Obvious answers were - Lots of distractions - @home usually my PS3 is in my sight, &#8230; <a href="http://thoughtworker.in/2011/09/18/getting-things-done/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>It is not easy! I have struggled with achieving higher productivity while working on my personal projects or working from home. I kept asking why? Obvious answers were -</p>
<ul>
<li><strong>Lots of distractions</strong> - @home usually my PS3 is in my sight, there is no pair to pull me back from reading a relatively long blog post (and then catching up on xkcd).</li>
<li><strong>Plenty of things to do</strong> - I have plenty of things to do in my new house. So my home tasks list is never-ending. That somehow gets higher priority than my personal project or gets mixed up!</li>
</ul>
<p>Initially, my reaction to all these things was simple. I need to do <em>better time management</em>! Easy!</p>
<h3>Attempt 1 - ToDo lists and Time Tracking</h3>
<p>I decided to get a time tracking tool and then plan 10 hours for a weekend strictly for personal work. Seemed very simple and achievable.</p>
<p>I used following set of tools for this -</p>
<ul>
<li><a href="http://goo.gl/YXjr0" target="_blank">RescueTime</a> - To track and improve my time spent on computer</li>
<li><a href="http://goo.gl/y6sY7" target="_blank">Toggl</a> - Timer for tracking time spent on work</li>
<li>Pen and Paper - To make list of tasks and track them.</li>
</ul>
<h4>How did that go?</h4>
<p>Well, not great. I was having very high hopes from this simple system. Then I analyzed where did I go wrong?</p>
<ul>
<li>I made a good list of things to do. This was just a list! I will explain why this is an issue.</li>
<li>RescueTime allowed me to understand how I spent time on computer, and nothing beyond. It improved my productivity by recovering some lost time but not much.</li>
<li>Toggl was a complete failure for this purpose. Often I just forgot to start/stop timers!</li>
</ul>
<h3>Attempt 2 - GTD</h3>
<p>This time I decided to go better prepared and  with better tools. Yes, I know what you're thinking! You are thinking, that tools can't improve productivity loss and self-control is more important than anything else. I agree, and will add that better tools will help you to get better results. If your will power is strong and you're very disciplined, with better tools you might be able to use your time even more optimally.</p>
<p>This time I decided to go with -</p>
<ul>
<li><a href="http://goo.gl/20vbj" target="_blank">Things</a> - This is a very powerful task management application. It is very simple to use and good at managing your tasks properly. I got inspiration from <a href="http://goo.gl/8txcU" target="_blank">Akshay Dhavle</a> to use this tool. Expensive but great tool!</li>
<li><a href="http://goo.gl/DXlz5" target="_blank">Pomodoro</a> - This is a free tool for mac. For folks who want to know more about pomodoro, head over <a href="http://goo.gl/bTeKB" target="_blank">here</a>.</li>
</ul>
<h4>How did it go?</h4>
<p>Well I have tried this for past 3 weeks and great so far! I will keep updating about this in coming days. I achieved most of the things I planned without serious lag and I am getting better at it.</p>
<h3>So what improved this time?</h3>
<p>As I mentioned earlier that pen and paper to-do list was great to begin with, but it was just a list! That was the only issue with it. It told me that I have these 100 things in my pipeline and I need to do them. Well yes, but how? How should I pick a certain thing in my list and not other. Depends on how you make your list and I am sure you have a better way to manage your tasks using pen and paper. I wasn't!</p>
<p>Time tracking is not very useful! I tracked time and realized that I wasted time! I knew that already! It didn't push me in the right direction to do more out of my time. Pomodoro is nothing but time tracking, you might say. I felt that it was more powerful technique than just tracking time. You should carry out one task in a pomodoro sprint. So when you're starting a pomodoro sprint, you're committing yourself to finish that task in 25 minutes or less. That is a huge difference in just tracking; I spent 40 minutes on something vs I want to get this done in next 25 minutes!</p>
<p>First I imported (typed) all my tasks on paper into 'Things' application. Added few more tasks which were not listed on paper as well. Later, I organized my tasks in various projects and responsibilities. This built nice context around my tasks. I spent about 10 minutes for around 100 tasks to think about and put dates on them. Many tasks were immediate once. I knew it is impossible to do them. I rearranged my tasks and priorities. No false promises to self!</p>
<p>"Things" really helped me in getting tasks in perspective. Pomodoro really helped me in getting those tasks beyond finish line.</p>
<p>It helped.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/thoughtworker/blog?a=bMq6_DPmG7Y:O8Zl_CvaEEg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/thoughtworker/blog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/thoughtworker/blog?a=bMq6_DPmG7Y:O8Zl_CvaEEg:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/thoughtworker/blog?i=bMq6_DPmG7Y:O8Zl_CvaEEg:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/thoughtworker/blog/~4/bMq6_DPmG7Y" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://thoughtworker.in/2011/09/18/getting-things-done/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<feedburner:origLink>http://thoughtworker.in/2011/09/18/getting-things-done/</feedburner:origLink></item>
		<item>
		<title>Moved from TextMate to MacVim</title>
		<link>http://feedproxy.google.com/~r/thoughtworker/blog/~3/a6T_aK4Ha30/</link>
		<comments>http://thoughtworker.in/2011/09/12/moved-from-textmate-to-macvim/#comments</comments>
		<pubDate>Mon, 12 Sep 2011 03:08:34 +0000</pubDate>
		<dc:creator>Sachin</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Developer]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://thoughtworker.in/?p=173</guid>
		<description><![CDATA[Being a developer, you should be very thoughtful about your tools. You pick programming language, operating system, system shell, font, color-themes and most favorite of all; Text Editor! I have used many text editors in more than a decade long programmer &#8230; <a href="http://thoughtworker.in/2011/09/12/moved-from-textmate-to-macvim/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" style="border-style: initial; border-color: initial; border-width: 0px;" title="MacVim" src="http://blog.danielfischer.com/images/posts/mac_vim_icon.png" alt="" width="307" height="307" />Being a developer, you should be very thoughtful about your tools. You pick programming language, operating system, system shell, font, color-themes and most favorite of all; <em>Text Editor</em>!</p>
<p>I have used many text editors in more than a decade long programmer life. As I am working on Ruby on Rails my obvious choice was TextMate. I used it for a while and thought to give RubyMine a spin. Since I was a Java developer for most of my career, I extensively used IntelliJ IDEA. No doubt it is the best IDE for Java developers out there! Eclipse and Netbeans are good but they have no upper hand when it comes to extensive features which IDEA provides. That is not the point of this post so I will skip writing about it.</p>
<p>RubyMine has the most of the key-bindings same as InteliJ IDEA and it was very natural for me. I didn't need to learn anything new to get productive in RubyMine. I loved it. Very soon I realized, all the features which made IDEA so great, are not very important in Ruby on Rails! e.g. refactorings, type checking, name changes etc. Since Ruby is dynamic language, type checking is not required. When it comes to refactoring variable names, you can't trust an IDE to make those changes by itself! Properties hidden behind meta-programmed methods are tricky to find and rename accurately. So in short all the great powers which IDEA boasts, are not required.</p>
<p>Did I mention RubyMine is resource heavy? <img src='http://thoughtworker.in/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>So I went back to TextMate tried it for second run. TextMate is great editor. Period. I enjoyed working in that software a lot. It has almost all the features any developer will need. It got its popularity in Rails community but it is useful for anybody for any text-editing needs.</p>
<p>When it came to searching full project or loading large files, TextMate isn't the king of the land. It often shows you pretty spinning wheel and lets you wait for long times. Sometimes it just refuses to load large files which you accidentally open. e.g log files.</p>
<p>So I thought, let's try VIM. I used VIM for last 10 years as my terminal editor of choice. My usage was very limited and not VIM specific. I could have done all the editing using pico without a doubt. So I wouldn't call myself a power user of VIM for 10 years.</p>
<p>I met a guy on my last project (<a href="http://goo.gl/quFQB">Selvakumar Natesan</a>) who introduced me to MacVim as Rails IDE. I used it for a while and loved it a lot. Although, I was fairly naïve in terms of its usage. After a while the enthusiasm to use VIM faded away and I was back to TextMate. On my current gig, I met two guys who were using VIM regularly (<a href="http://goo.gl/0Jkag">Priyank Gupta</a> and <a href="http://goo.gl/crZpr">Carl Leiby</a>). This gave me another reason to start using it, and I did it this time!</p>
<p>I realized that I can't just depend on my pair to drive most power from VIM where I just stare at them and appreciate VIM. I needed to learn it and get used to that style. So I did spend some time reading cheat-sheet (more time in practicing!) and watching few screencasts where people showed few cool tricks.</p>
<p>After spending couple of weeks working daily on VIM, now I am fully productive and don't have any reasons to switch to TextMate or Rubymine anytime soon. I think I found my soul-editor. <img src='http://thoughtworker.in/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>If you're interested in switching to VIM as well, here are few links which helped me a lot during this transition:</p>
<ul>
<li><a href="http://goo.gl/vqn6L">A Starting Guide to VIM from Textmate</a>: This guide will get you rolling pretty quickly on VIM if you are on Mac.</li>
<li><a href=" http://goo.gl/SLkWK">Janus VIM Configuration Bundle</a>: Undoubtfully most comprehensive set of tools for RoR development using VIM. I use non-customized version of this currently.</li>
<li><a href="http://goo.gl/J22Jy">PLAY BY PLAY: GARY BERNHARDT</a>  : Very good screencast if you want to see a pro using VIM in 100 min video. I paid $12 for that and it was totally worth it! There are bunch screencasts available for free as well. Look for them.</li>
</ul>
<p>On Github you'll find all the help needed to bootstrap to your new development environment.</p>
<p>After learning this, all I can say, "It is easier than you think!"</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/thoughtworker/blog?a=a6T_aK4Ha30:DG5B4KLvjyE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/thoughtworker/blog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/thoughtworker/blog?a=a6T_aK4Ha30:DG5B4KLvjyE:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/thoughtworker/blog?i=a6T_aK4Ha30:DG5B4KLvjyE:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/thoughtworker/blog/~4/a6T_aK4Ha30" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://thoughtworker.in/2011/09/12/moved-from-textmate-to-macvim/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://thoughtworker.in/2011/09/12/moved-from-textmate-to-macvim/</feedburner:origLink></item>
		<item>
		<title>Hacking with Arduino</title>
		<link>http://feedproxy.google.com/~r/thoughtworker/blog/~3/aHbVXP3lOD4/</link>
		<comments>http://thoughtworker.in/2010/12/20/hacking-with-arduino/#comments</comments>
		<pubDate>Mon, 20 Dec 2010 01:20:25 +0000</pubDate>
		<dc:creator>Sachin</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[Microcontroller]]></category>

		<guid isPermaLink="false">http://thoughtworker.in/?p=159</guid>
		<description><![CDATA[Recently I started learning about Arduino and its applications. Lately, I started coming across really cool projects done with this small wonder. Few interesting once are - Secret knock detecting door (link) High speed photography using Arduino (link) Arduino project&#62; I didn't &#8230; <a href="http://thoughtworker.in/2010/12/20/hacking-with-arduino/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://arduino.cc"><img class="alignright" title="Arduino" src="http://i71.photobucket.com/albums/i157/dharmapurikar/ThoughtWorker/5275688830_78495cc96a_m_d.jpg" alt="" width="240" height="160" /></a>Recently I started learning about <a href="http://www.arduino.cc/">Arduino</a> and its applications. Lately, I started coming across really cool projects done with this small wonder. Few interesting once are -</p>
<ul>
<li>Secret knock detecting door (<a href="http://goo.gl/uu0i">link</a>)</li>
<li>High speed photography using Arduino (<a href="http://goo.gl/ywjoR">link</a>)</li>
<li>Arduino project&gt;</li>
</ul>
<p>I didn't know that <a title="Microcontroller" href="http://en.wikipedia.org/wiki/Microcontroller" rel="wikipedia" target="_blank">micro-controller</a> programming is this fun. All these years, I wrote software in higher level languages and thought micro-controllers are for only electronics engineers. I was obviously wrong!</p>
<p>Arduino is fully open-source and community supported. Arduino programming happens in C++ and all the software required for programming is available for free from its website. You can develop for Arduino on all popular platforms and its very fun to use. All the Arduino libraries are well documented and it won't take long before you build something cool in the world of physical computing.</p>
<p>I have created a simple LCD display <a href="http://goo.gl/7mDU6" target="_blank">library</a> as well. I am still learning my way around this and expecting to do better in coming days. You can find all my Arduino projects code on <a href="http://goo.gl/tlDum" target="_blank">github</a>.</p>
<p>Want to do more hacking in coming days.</p>
<p><img class="alignnone" src="http://i71.photobucket.com/albums/i157/dharmapurikar/ThoughtWorker/5275076863_2c32801360_m_d.jpg" alt="" width="160" height="240" /><img class="alignnone" src="http://i71.photobucket.com/albums/i157/dharmapurikar/ThoughtWorker/5275074801_8774f046f6_m_d.jpg" alt="" width="240" height="143" /><img class="alignnone" src="http://i71.photobucket.com/albums/i157/dharmapurikar/ThoughtWorker/5275690154_3aba92d715_m_d.jpg" alt="" width="240" height="160" /></p>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><img class="zemanta-pixie-img" style="border: none; float: right;" src="http://img.zemanta.com/pixy.gif?x-id=13fc9d4e-8493-4dab-895e-3a6937fc02e1" alt="" /></div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/thoughtworker/blog?a=aHbVXP3lOD4:CbPyWhPjxuU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/thoughtworker/blog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/thoughtworker/blog?a=aHbVXP3lOD4:CbPyWhPjxuU:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/thoughtworker/blog?i=aHbVXP3lOD4:CbPyWhPjxuU:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/thoughtworker/blog/~4/aHbVXP3lOD4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://thoughtworker.in/2010/12/20/hacking-with-arduino/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://thoughtworker.in/2010/12/20/hacking-with-arduino/</feedburner:origLink></item>
		<item>
		<title>Android: Downfall or Prosperity for Google?</title>
		<link>http://feedproxy.google.com/~r/thoughtworker/blog/~3/nNX8acbWtr4/</link>
		<comments>http://thoughtworker.in/2010/11/21/android-downfall-or-prosperity-for-google/#comments</comments>
		<pubDate>Sun, 21 Nov 2010 01:25:13 +0000</pubDate>
		<dc:creator>Sachin</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://thoughtworker.in/?p=152</guid>
		<description><![CDATA[Android, launched in 2007 by Google is a huge success. Recent sales reports show that Google is beating iOS by 2:1. This is no small feat. When Apple released iPhone, it felt like best thing ever. It was. Android had &#8230; <a href="http://thoughtworker.in/2010/11/21/android-downfall-or-prosperity-for-google/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div><a id="internal-source-marker_0.1557545664254576" href="http://www.android.com">Android</a>, launched in 2007 by Google is a huge success. Recent sales <a href="http://www.businessinsider.com/android-iphone-2010-11">reports</a> show that Google is beating iOS by 2:1. This is no small feat. When Apple released iPhone, it felt like best thing ever. It was. Android had huge gap to fill before it can stand strong against apple. With huge innovation put in by google and other supporters, android soon became really popular. This success is coming as result of <a href="http://www.openhandsetalliance.com/">OHA</a> (Open Handset Alliance). Mobile manufacturers and carriers poured in their efforts in customizing, marketing and making android a huge success.</div>
<div><img class="alignright" src="http://i71.photobucket.com/albums/i157/dharmapurikar/ThoughtWorker/androids.gif" alt="" width="200" height="150" /></div>
<div>
<p>This deal is a win-win for Google and OHA members. Google got their search and ad revenue, OHA members got buzzing hot operating system for practically free.</p>
<p>I read Harvard Business Review <a href="http://blogs.hbr.org/cs/2010/11/did_google_train_its_own_enemi.html">article</a> about android, I was seriously thinking about future of Android and Google. I am no business expert but I am seriously disappointed by authors narrow point of view on android and its future. Android has its serious issues, but the goldmine of google is not going to get shut-down just because default search engine.</p>
<p>Let me step back. Google released <a href="http://www.google.com/chrome">Chrome</a> browser. They allow you to change your default search engine to Yahoo, Bing. I wonder how many did that?</p>
<p>Ubuntu <a href="https://lists.ubuntu.com/archives/ubuntu-devel/2010-January/030065.html">changed</a> default search engine provide for Firefox to Yahoo! I wonder how much search revenue Yahoo&nbsp;gained? People can switch back to Google if they want to. If you care, you will change it.</p>
<p>Android is just not about search engine revenue. If you perceive google wants to just get more search hits, we are making a mistake here. Google makes money by ads in apps, search hits and apps sales. Navigation, Gmail, Google Voice is all done by Google. People want to use these services on iPhone as well if they could.</p>
<h3>Fragmentation</h3>
<p>Android suffers from fragmentation. OHA members keep maintaining their own version of android, resulting in splitting away for mainstream android. How many Linux distributions exist? 1500. How many are known to most of the users and well maintained? 10. This is same situation, if more forks will happen, away they go from benefits of android. It will be nightmare for application developers to support app on all the devices and operating systems.</p>
<p>All OHA members should keep their changes to minimal from mainstream. Easy and fast upgrades to customers. I had android 1.6 on my mobile 6 months after Google released android 2.2! This is plain unacceptable. We shouldn’t forget, one of strengths of android lies in upgradable operating system. Better software is pushed to phones to improve performance or add new exciting features. Gone are the days when people purchased smart-phones and never updated their firmware.</p>
<p>If Google keeps innovating on android future versions, customizations done by Baidu and Bing will not impact them much. This will keep user’s interest in using Google’s version of android and not a third-party. In the world of open-source best product always wins. People will always have freedom to replace their firmware if they are not satisfied with what they got.</p>
<h3>Hardware Differences</h3>
<p>Android has been around for 3 years now. Android has more than 225 handsets so far. Various hardware configurations and processing power. Optimizing android experience for all these devices is a complicated task. You can see the same problem with iOS family as well. Already 1st gen iPod touch can not receive updates&nbsp;of latest versions of iOS.</p>
<p>Introducing Nexus One was very good move by Google. Unfortunately that didn’t fly well. Nexus one gave users option to have a phone which is free from customized versions and you can always install latest android community software without any special customization.</p>
<p>In coming days, it will be interesting to see how Google does with second version of Nexus. Google should keep introducing successors of nexus on regular intervals. There is huge value in showing customers and OHA members what is value in plain vanilla android version.</p>
<h3>Where Google Wins?</h3>
<p>Google wins at <a href="http://money.cnn.com/galleries/2010/fortune/1010/gallery.google_best_phone_os.fortune/index.html">innovation</a>. That will be always a deciding factor in future on android. Maps, email, contacts, purchases all things tied down to your google id brings tighter integration to phone. This strategy puts android in-game for now, at least.</p>
<p>Google makes money from iPhones, Windows phones and android devices. Quality of products will decide future of companies who are manufacturing these phones. iOS is a strong competitor for fair reasons.</p>
<p>I have no intentions of declaring a winner here. One thing for sure, android gave a very strong alternate to iPhone and is pushing forward the competition on every milestone. This competition will bring better and better things for consumers no matter who wins.</p>
</div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/thoughtworker/blog?a=nNX8acbWtr4:GNyG6ZRZC4Y:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/thoughtworker/blog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/thoughtworker/blog?a=nNX8acbWtr4:GNyG6ZRZC4Y:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/thoughtworker/blog?i=nNX8acbWtr4:GNyG6ZRZC4Y:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/thoughtworker/blog/~4/nNX8acbWtr4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://thoughtworker.in/2010/11/21/android-downfall-or-prosperity-for-google/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://thoughtworker.in/2010/11/21/android-downfall-or-prosperity-for-google/</feedburner:origLink></item>
		<item>
		<title>DNS-323, PS3 and UPnP</title>
		<link>http://feedproxy.google.com/~r/thoughtworker/blog/~3/h3RkcdvBq5A/</link>
		<comments>http://thoughtworker.in/2010/07/20/dns-323-ps3-and-upnp/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 03:50:14 +0000</pubDate>
		<dc:creator>Sachin</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[dlink]]></category>
		<category><![CDATA[dns-323]]></category>
		<category><![CDATA[ps3]]></category>
		<category><![CDATA[raid1]]></category>
		<category><![CDATA[upnp]]></category>

		<guid isPermaLink="false">http://thoughtworker.in/?p=142</guid>
		<description><![CDATA[I recently bought Dlink DNS-323. I am using this in RAID 1 mode to copy my data and archive images. I am also using it as media server (UPnP) for streaming video / audio and image content to PS3. The &#8230; <a href="http://thoughtworker.in/2010/07/20/dns-323-ps3-and-upnp/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I recently bought <a href="http://www.dlink.com/products/?pid=509" target="_blank">Dlink DNS-323</a>. I am using this in RAID 1 mode to copy my data and archive images.</p>
<p><img class="alignright" src="http://i71.photobucket.com/albums/i157/dharmapurikar/ThoughtWorker/DNS-323_right.png" alt="Dlink DNS-323" width="144" height="110" /></p>
<p>I am also using it as media server (<a href="http://en.wikipedia.org/wiki/Universal_Plug_and_Play" target="_blank">UPnP</a>) for streaming video / audio and image content to PS3. The whole setup is very easy and lot of fun! I copied entire catalog of movies / audio and digital image archive and realized the setup is not working properly. I kept getting error while movie streaming on PS3.</p>
<p><em>"This content cannot be played (800288D8)"</em></p>
<p>I was very frustrated by the error message. Earlier I thought this is happening due to lack of processing power at DNS-323 end. After careful examination that possibility faded. DNS-323 has Marvell 500 Mhz processor, 64 Mb RAM, 1000 Mbps Ethernet connectivity. There are two Samsung Spinpoint 1 TB each HDD placed inside. I wasn't expecting any bottlenecks for couple of users.</p>
<p>I was about to return the unit and then I came across <a title="DNS-323 Wiki" href="http://wiki.dns323.info/start" target="_blank">this</a> fantastic online resource. I installed <a href="http://wiki.dns323.info/howto:ffp" target="_blank">Mediatomb</a> as UPnP server and disabled in-built application. This allowed me to have seamless access to my video content without any issues! I will recommend you to install this on your DNS-323 so that you can enjoy secure storage and media server. <img src='http://thoughtworker.in/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>This setup is good for -</p>
<ul>
<li>Archive of all of your files. No more nightmares of hard-drive failure!</li>
<li>Cheap and abundant storage.</li>
<li>Media serving capabilities at home.</li>
<li>Expose firewall-enabled FTP server over internet.</li>
</ul>
<p>Don't expect miraculous speeds though. 3-4.5 MBps is average transfer speeds for me. This is enough for me to backup and access stored data. For faster access, I prefer firewire or USB 2.0 drive. Figure out yourself about your requirements. Ciao!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/thoughtworker/blog?a=h3RkcdvBq5A:bfVx66GFRZ0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/thoughtworker/blog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/thoughtworker/blog?a=h3RkcdvBq5A:bfVx66GFRZ0:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/thoughtworker/blog?i=h3RkcdvBq5A:bfVx66GFRZ0:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/thoughtworker/blog/~4/h3RkcdvBq5A" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://thoughtworker.in/2010/07/20/dns-323-ps3-and-upnp/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://thoughtworker.in/2010/07/20/dns-323-ps3-and-upnp/</feedburner:origLink></item>
		<item>
		<title>Rewards of “Frequent Check In”</title>
		<link>http://feedproxy.google.com/~r/thoughtworker/blog/~3/cGtvk3YlRK8/</link>
		<comments>http://thoughtworker.in/2010/06/19/rewards-of-frequent-check-in/#comments</comments>
		<pubDate>Sat, 19 Jun 2010 02:23:45 +0000</pubDate>
		<dc:creator>Sachin</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Developer]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://thoughtworker.in/?p=133</guid>
		<description><![CDATA[I have worked with many developers and many times, I ran into following conversation. Whenever we are in the middle of development and I ask for checking in the code, one of following reply is heard - Umm, lets do &#8230; <a href="http://thoughtworker.in/2010/06/19/rewards-of-frequent-check-in/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I have worked with many developers and many times, I ran into following conversation. Whenever we are in the middle of development and I ask for checking in the code, one of following reply is heard -</p>
<ul>
<li>Umm, lets do check-in towards end-of-the day. We are not yet done with the code.</li>
<li>Let me clean up these things and make them perfect.</li>
<li>I don't want to check-in as I have some ongoing changes and I can't checkin partial files.</li>
<li>Lets checkin tomorrow when we complete major functionality.</li>
</ul>
<p>I am sure you must have heard similar conversation (or had it). Can you give a moment and think about why do are we afraid of checking-in? I have been constantly thinking about this issue and there are many reasons which makes sense on this issue. Few of them are -</p>
<p><strong>Fear of bad code</strong> - Developers are afraid of peers criticizing their code. Its GOOD! Believe me, you're never going to write perfect code without receiving feedback about it. Sooner you receive the feedback, better you perform in short time. This is the reason, people don't make their changes public until they are convinced that they can't do any better. It is clearly a false fear.<br />
One of the way to improve and influence your team is to make your work public as it is in progress. This way, you make team aware of your approach. If there is any conflict in approach or disconnect in understanding, it becomes visible sooner and you can resolve it better.</p>
<p><strong>Not sure about impact on other parts of the system</strong> - Yes! This is very valid reason. You're in middle of a feature and you're not sure how it will impact rest of the system if you check-in early. Half baked features can take the whole system down. To get over this fear, unit testing your code, running a full build before check-in and having continuous integration makes sure your changes are fail-safe. Make sure that you are providing a working build to the team by writing solid unit tests and more comprehensive integration tests.</p>
<p><strong>Working on multiple parallel streams</strong> - It is often a bad practice to work on multiple parallel streams of work. Even worse when you don't commit any of those changes in VCS.<br />
If you're working with DVCS like Git, it is very easy to branch and commit code. If you're working on central VCS like subversion, then it is little tricky to keep your parallel working streams with minimal effort. There are few simple things you can do to make your life little easy -</p>
<p>Use DVCS. This will prove immense value in long run, if you use it properly. There is a learning curve associated with it, but it is definitely worth it.<br />
If you are using SVN, create a branch if it is a big change. If it is small change, evaluate if you can checkin without breaking application. Taking patch is another option too. Use unit testing safety net on your side and make sure you progress smoothly.</p>
<p>In any situation, its not helpful when you're working on parallel streams of work and those changes co-exist. I have often observed people checking in partial or missing content. This happens when they are confused and trying to understand what all files are required to make one of streams live.</p>
<p><strong>Why frequent check in is important?</strong></p>
<ul>
<li>Getting feedback from your application and team.</li>
<li>Never lose any of your changes and hard work. Machines do crash and when they do, its bad!</li>
<li>Avoid stepping on each others toes, particularly when team is distributed and code churn is faster.</li>
<li>Making whole team aware of your approach and remove silo operations. This helps bringing everybody on the same page and triggers conversations whenever required.</li>
<li>You can't explain in 30 minutes of speech what code explains in 10 minutes. It eliminates confusion.</li>
<li>Discipline of frequent checkin allows you to make sure, changes are not causing any conflicts.</li>
<li>Smaller changes, encourages you to refactor and improve code quality.</li>
</ul>
<p>If you want to read more -</p>
<p>Golden principle of development: <a href="http://www.codinghorror.com/blog/2008/08/check-in-early-check-in-often.html" target="_blank">Check-in-early, check-in-often</a>.<br />
DVCS introduction from the master: <a href="http://www.youtube.com/watch?v=4XpnKHJAok8" target="_blank">Google Video on Git</a>.<br />
Continuous integration: <a href="http://en.wikipedia.org/wiki/Continuous_integration" target="_blank">Wikipedia entry</a>.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/thoughtworker/blog?a=cGtvk3YlRK8:MNOWggcuP0M:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/thoughtworker/blog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/thoughtworker/blog?a=cGtvk3YlRK8:MNOWggcuP0M:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/thoughtworker/blog?i=cGtvk3YlRK8:MNOWggcuP0M:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/thoughtworker/blog/~4/cGtvk3YlRK8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://thoughtworker.in/2010/06/19/rewards-of-frequent-check-in/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://thoughtworker.in/2010/06/19/rewards-of-frequent-check-in/</feedburner:origLink></item>
	</channel>
</rss><!-- This Quick Cache file was built for (  thoughtworker.in/feed/ ) in 0.38663 seconds, on May 18th, 2012 at 5:52 pm UTC. --><!-- This Quick Cache file will automatically expire ( and be re-built automatically ) on May 18th, 2012 at 6:52 pm UTC --><!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --><!-- Quick Cache Is Fully Functional :-) ... A Quick Cache file was just served for (  thoughtworker.in/feed/ ) in 0.00104 seconds, on May 18th, 2012 at 6:41 pm UTC. -->

