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

<channel>
	<title>international geographic &#187; work</title>
	<atom:link href="http://www.chetanislazy.com/blog/category/work/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.chetanislazy.com/blog</link>
	<description>ooh, shiny!</description>
	<lastBuildDate>Fri, 23 Jul 2010 15:34:07 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Hooking app exit in Firefox extensions</title>
		<link>http://www.chetanislazy.com/blog/2010/02/10/hooking-app-exit-in-firefox-extensions/</link>
		<comments>http://www.chetanislazy.com/blog/2010/02/10/hooking-app-exit-in-firefox-extensions/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 23:44:16 +0000</pubDate>
		<dc:creator>chetan</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[extensions]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[mozilla]]></category>

		<guid isPermaLink="false">http://www.chetanislazy.com/blog/?p=126</guid>
		<description><![CDATA[I&#8217;ve spent the last few days since joining Better Advertising working on a new feature for a Firefox extension called Ghostery. We&#8217;ll be announcing the new feature soon, but until then I thought I&#8217;d share some of what I&#8217;ve learned so far. 
I&#8217;ve never worked on an extension before but as it turns out, it&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve spent the last few days since joining <a href="http://www.betteradvertising.com/">Better Advertising</a> working on a new feature for a Firefox extension called <a href="http://www.ghostery.com/">Ghostery</a>. We&#8217;ll be announcing the new feature soon, but until then I thought I&#8217;d share some of what I&#8217;ve learned so far. </p>
<p>I&#8217;ve never worked on an extension before but as it turns out, it&#8217;s really quite easy to pick up; some fairly simple XML (aka XUL) for composing the UI and JavaScript for the rest. One of the trickier bits has to do with scope. After doing some testing I figured out that the entry point into an extension is via the browser window; that is, your extension code will be executed each time you open a new window and that means that all your code is basically scoped to a single window. </p>
<p>In developing the new Ghostery feature I needed a way to run some code when the user quits Firefox. Luckily, the extension architecture is extremely flexible (if poorly documented at times) and I didn&#8217;t have to jump through any hoops to do it. Almost anything, it seems can be either chained or hooked in some way. In this case, the <a href="https://developer.mozilla.org/en/NsIObserverService">nsIObserverService</a> gives us access to the necessary <a href="https://developer.mozilla.org/en/Observer_Notifications">shutdown</a> event to which we can attach an observer using a simple interface. </p>
<p>The problem, then, was that since our code is run every time a new window is created, I needed a way to register the hook only once to avoid firing multiple times on exit. My first thought was to try to register the hook outside of the window scope (e.g. using a different chrome overlay) but that appeared to be a dead end. Using a globally scoped variable as a lock was also a dead end. In the end I settled on something I already knew how to use: preferences. Essentially, I created a simple lock around a preference variable which, while I don&#8217;t need to store it between sessions, is in fact a global storage area that can be accessed from different windows. </p>
<p>Check out the code below for an example implementation. I left out the actual <a href="https://developer.mozilla.org/en/Code_snippets/Preferences">preferences</a> code since it&#8217;s not crucial to understanding the solution.</p>
<p><script src="http://gist.github.com/300959.js"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.chetanislazy.com/blog/2010/02/10/hooking-app-exit-in-firefox-extensions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Writing command line interfaces for Spring apps</title>
		<link>http://www.chetanislazy.com/blog/2009/06/29/writing-command-line-interfaces-for-spring-apps/</link>
		<comments>http://www.chetanislazy.com/blog/2009/06/29/writing-command-line-interfaces-for-spring-apps/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 03:58:30 +0000</pubDate>
		<dc:creator>chetan</dc:creator>
				<category><![CDATA[work]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.chetanislazy.com/blog/?p=81</guid>
		<description><![CDATA[I recently needed to script some tasks for a Spring-based app at work so we could shove it into a crontab. It proved to be much easier than I thought. 
You can use your spring.xml config file for wiring up your beans as usual, but rather than deal with various property files you can easily [...]]]></description>
			<content:encoded><![CDATA[<p>I recently needed to script some tasks for a Spring-based app at work so we could shove it into a crontab. It proved to be much easier than I thought. </p>
<p>You can use your spring.xml config file for wiring up your beans as usual, but rather than deal with various property files you can easily override properties on the fly using system properties. See the following example:</p>
<p>In your spring.xml make sure you have this line:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;bean</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;propertyConfigurer&quot;</span> </span>
<span style="color: #009900;">    <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;org.springframework.beans.factory.config.PropertyPlaceholderConfigurer&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #808080; font-style: italic;">&lt;!-- Allow properties to be overriden via </span>
<span style="color: #808080; font-style: italic;">         system properties --&gt;</span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;property</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;systemPropertiesMode&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;2&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;property</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;locations&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;list<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> [...snip...] <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/list<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/property<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/bean<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p>Then you can override your aliases either using standard java properties (-Djdbc.url=&#8221;mysql://&#8230;&#8221;) or via your program&#8217;s own command line arguments, which is the route I ended up going.</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">CommandLineParser parser <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> GnuParser<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
Options options <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Options<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003399;">Option</span> brokerOption <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Option</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;b&quot;</span>, <span style="color: #0000ff;">&quot;broker&quot;</span>, <span style="color: #000066; font-weight: bold;">true</span>, <span style="color: #0000ff;">&quot;broker uri&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
brokerOption.<span style="color: #006633;">setRequired</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
options.<span style="color: #006633;">addOption</span><span style="color: #009900;">&#40;</span>brokerOption<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
CommandLine line <span style="color: #339933;">=</span> parser.<span style="color: #006633;">parse</span><span style="color: #009900;">&#40;</span>options, args<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003399;">System</span>.<span style="color: #006633;">setProperty</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;jms.broker.url&quot;</span>, line.<span style="color: #006633;">getOptionValue</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;b&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.chetanislazy.com/blog/2009/06/29/writing-command-line-interfaces-for-spring-apps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pointless rewrite? Probably.</title>
		<link>http://www.chetanislazy.com/blog/2008/08/06/pointless-rewrite-probably/</link>
		<comments>http://www.chetanislazy.com/blog/2008/08/06/pointless-rewrite-probably/#comments</comments>
		<pubDate>Wed, 06 Aug 2008 21:41:29 +0000</pubDate>
		<dc:creator>chetan</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[philosophy]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://www.chetanislazy.com/blog/?p=66</guid>
		<description><![CDATA[Del.icio.us (sorry, it&#8217;s just plain old &#8220;Delicious&#8221; now) 2.0 finally launched a few days ago and the response so far has been mixed. But now that the dust has settled some, it&#8217;s time to think about just how we got here and if it was really worth all the trouble. 
According to the official blog [...]]]></description>
			<content:encoded><![CDATA[<p>Del.icio.us (sorry, it&#8217;s just plain old &#8220;Delicious&#8221; now) 2.0 <a href="http://www.techcrunch.com/2008/07/31/delicious-20-launches-really-it-totally-launched/">finally</a> <a href="http://blog.delicious.com/blog/2008/07/oh-happy-day.html">launched</a> a few days ago and the <a href="http://www.readwriteweb.com/archives/delicious_finally_launches_ver.php">response</a> so far <a href="http://furrier.org/2008/08/01/yahoo-launches-delicious-20-does-anyone-care/">has been</a> <a href="http://www.mathewingram.com/work/2008/07/31/delicious-20-who-bookmarks-any-more/">mixed</a>. But now that the dust has settled some, it&#8217;s time to think about just how we got here and if it was really worth all the <a href="http://venturebeat.com/2008/07/31/heres-delicious-20-what-on-earth-took-them-so-long/">trouble</a>. </p>
<p>According to the <a href="http://blog.delicious.com/blog/2008/07/oh-happy-day.html ">official blog post</a>, the new and improved Delicious brings us <em>speed</em>, <em>usability</em>, and oh so <em>good looks</em> among other features and it was a long time in the making. The Yahoo acquisition was <a href="http://blog.delicious.com/blog/2005/12/yahoo.html">announced</a> on Dec 9, 2005 and the new site finally went live a little over two and a half years later on July 31, 2008. So why did it take them so long?</p>
<p>A key change as a result of the Yahoo! acquisition was their decision to <a href="http://www.cincomsmalltalk.com/blog/blogView?showComments=true&#038;printTitle=The_Wages_of_Pointless_Rewrites&#038;entry=3394981268">rewrite the whole thing</a> <a href="http://www.symfony-project.org/blog/2007/10/02/delicious-preview-built-with-symfony">in PHP</a> using the <a href="http://www.symfony-project.org/">Symfony framework</a>, for no other reason than that it&#8217;s the current <a href="http://developers.slashdot.org/article.pl?sid=02/10/29/2052239">corporate standard at Yahoo!</a>. Oh, and, coincidentally, <a href="http://bookmarks.yahoo.com/">Yahoo! Bookmarks</a> was also built on PHP+Symfony. </p>
<p>So now it starts to make a bit of sense: you take a system being actively used by millions of users around the world and you start over from scratch with the goal of building it bigger and better, toss in a couple of hot buzzwords to meet Web 2.0 compliance guidelines, and before you know it 2 years have gone by. </p>
<p>I find it very hard to believe that with all the talent and the thousands of man years combined software development experience over there, that no one understands the pros and cons of rewriting vs refactoring a code base, especially given the enormous success of the service and the relatively trouble-free history as compared to, say, Twitter. </p>
<p>At the same time, I understand it all too well. From where I sit, and having been involved in a similar situation in the past as well as with my current employer, the decision to move to PHP was clearly not based on a <a href="http://www.1729.com/blog/EconomicsOfTestingUglyCode.html">cost/benefit analysis</a> of maintaing the current system. In fact, I wonder if they even understood what the real problems, if any, were with the existing system before deciding to not just rewrite it, but write it in another language. </p>
<p>Moving to <a href="http://www.codinghorror.com/blog/archives/001119.html">another language</a> is a pretty drastic step to take and will <a href="http://www.alleyinsider.com/2008/5/why_can_t_twitter_scale_blaine_cook_tries_to_explain">rarely</a> <a href="http://romeda.org/blog/2008/05/scalability.html">solve</a> your problem.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chetanislazy.com/blog/2008/08/06/pointless-rewrite-probably/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Suits suck</title>
		<link>http://www.chetanislazy.com/blog/2008/02/21/suits-suck/</link>
		<comments>http://www.chetanislazy.com/blog/2008/02/21/suits-suck/#comments</comments>
		<pubDate>Thu, 21 Feb 2008 11:09:33 +0000</pubDate>
		<dc:creator>chetan</dc:creator>
				<category><![CDATA[software]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://www.chetanislazy.com/blog/2008/02/21/suits-suck/</guid>
		<description><![CDATA[I still intend to finish the series of posts I started earlier, but this quote pretty much sums it up:
In this regard management is also to blame, especially when it comes to dysfunctional schedules, wrong incentives, poor hiring, and demoralizing policies.
]]></description>
			<content:encoded><![CDATA[<p>I still intend to finish the series of posts I started earlier, but <a href="http://duartes.org/gustavo/blog/post/2008/02/20/Richard-Feynman-Challenger-Disaster-Software-Engineering.aspx">this quote</a> pretty much sums it up:</p>
<blockquote><p>In this regard management is also to blame, especially when it comes to dysfunctional schedules, wrong incentives, poor hiring, and demoralizing policies.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.chetanislazy.com/blog/2008/02/21/suits-suck/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>If you&#8217;re not outraged, you&#8217;re not paying attention</title>
		<link>http://www.chetanislazy.com/blog/2008/02/14/if-youre-not-outraged-youre-not-paying-attention/</link>
		<comments>http://www.chetanislazy.com/blog/2008/02/14/if-youre-not-outraged-youre-not-paying-attention/#comments</comments>
		<pubDate>Thu, 14 Feb 2008 20:13:48 +0000</pubDate>
		<dc:creator>chetan</dc:creator>
				<category><![CDATA[philosophy]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://www.chetanislazy.com/blog/2008/02/14/if-youre-not-outraged-youre-not-paying-attention/</guid>
		<description><![CDATA[Is just getting the job done always enough? One of my personal philosophies is that if you&#8217;re not learning, you&#8217;re not improving. If you&#8217;re not improving, then what have you really accomplished? In fact, there&#8217;s a pretty good chance that you&#8217;ve even gotten worse, if only because everyone else has gotten better. It&#8217;s like a [...]]]></description>
			<content:encoded><![CDATA[<p>Is just getting the job done always enough? One of my personal philosophies is that if you&#8217;re not learning, you&#8217;re not improving. If you&#8217;re not improving, then what have you really accomplished? In fact, there&#8217;s a pretty good chance that you&#8217;ve even gotten worse, if only because everyone else has gotten better. It&#8217;s like a television or movie series that comes back year after with the same old, tired formula. No better than previous iterations, and doesn&#8217;t even meet the expectations set by its predecessors. Think Bond, James Bond.</p>
<p><span id="more-61"></span></p>
<h4>So how do we learn?</h4>
<p>Let&#8217;s suppose that you wanted to learn how to survive a volcanic eruption. You have two basic options: go and find someone who&#8217;s done it before (<a href="http://imdb.com/title/tt0120461/">Tommy Lee Jones?</a>) and learn directly from them, or, find a book or other <a href="http://www.wikihow.com/Survive-a-Volcanic-Eruption">information source</a> and learn it on your own.</p>
<p>Where I work, both options are impractical, for different reasons, within our product, development and quality assurance groups. As part of the dev team, I&#8217;ll only speak to what I&#8217;ve observed here but I think it applies just as well to the other groups.</p>
<h4>Learning through the sharing of experience</h4>
<p>In our core team, we currently have 31 developers (excluding myself): 5 leads, 7 senior developers, and 19 junior. Ranks are strictly based on years of experience, which has no bearing at all on quality of experience. In essence, the knowledge gap between our junior and senior developers is small, and even smaller between our seniors and our leads. After a certain amount of time in the team, a developer sort of plateaus &#8212; this is how we do things, and, well, that&#8217;s that. The mentality is, &#8220;this is how I was taught by the guy before me and it seems to work well enough, so why change?&#8221;</p>
<h4>Self learning</h4>
<p>We&#8217;ve got some bright people on the team, there&#8217;s no question of that. If given the opportunity, they&#8217;re capable of doing good work. The problem we face is that they just haven&#8217;t been given the opportunity. Not once, in three years. Our schedules are the most aggressive I&#8217;ve ever seen, without any break between releases. The schedule simply does not allow for any amount of experimentation with new techniques or technologies. We tried introducing some change in to one of our current projects and we&#8217;ve been burned pretty badly by it; we slipped on a date for the first time since I&#8217;ve been around, and the repercussions have been swift in the making. More on that later, but first&#8230;</p>
<h4>Some history</h4>
<p>The software division started out as many software stories do: a couple of smart people with lots of domain knowledge, but no technical expertise, and no product, went out and sold an idea. Through sheer force of will, and the help of one very sharp developer, they managed to build and deliver on their promises in a matter of months. As the deals rolled in, and with them, requests for more features, the engineering team grew slowly but things quickly boiled over, causing that first developer, who started it all, to leave abruptly [1].</p>
<p>From there, it was a long, slow descent to the present day. The developer wasn&#8217;t replaced quickly and the decision was made to move core development offshore, at a much lower cost. No one back at headquarters really understood what was going on in development, just that things seemed to be working smoothly. Dates were hit, features were delivered, customers were happy, and their numbers were growing. What more could you want?</p>
<p>Well, at some point it was decided that an entirely new platform was required for the company to continue on it&#8217;s current growth path. A &#8220;forklift&#8221; project that would be developed in parallel and eventually replace the existing system, which would continue to be developed as demand was still strong and new customers were being signed on. New talent was finally brought in but the existing resources never benefited from them, as they worked in isolation. The goals for the new project were technologically lofty, to put it mildly. Time passed and milestones were missed, dates slipped further and further, and eventually the project was scrapped in favor of the existing platform which continued to enjoy success, in that it was always on schedule.</p>
<h4>Everybody panic</h4>
<p>Cut to the present. We&#8217;ve had a few production outages, with some lasting for more than a single business day. The type of business we&#8217;re in, and the money at stake, not to mention the promises we&#8217;ve made, this is totally unacceptable. We&#8217;ve had dates slip. The platform we&#8217;re building on top of is unstable to the point where every release only compounds the performance problems we see in production. Our customers aren&#8217;t stupid &#8212; they&#8217;ve noticed the consistent performance degradation and have been complaining pretty steadily, so far to deaf ears.</p>
<p>The reaction? Knee jerk. I&#8217;m told a consultant is being brought in, and a project manager hired and set to start in a week&#8217;s time. I&#8217;ve no idea how they came to this, as no one in my team, now numbering 42 developers at last count, was interviewed or consulted before any decision was made. In fact, I&#8217;m not even sure my boss was.</p>
<p>I think it might be a small step in the general vicinity of something vaguely trying to resemble the appearance of being in the right direction, but, given past performance, I don&#8217;t think it&#8217;s going to work. There is a tendency to stop short of solving the real problems, and in doing so, generally causing more harm than good. I&#8217;ve some thoughts on a real solution, but I&#8217;ll leave that to another post.</p>
<p>[1] &#8220;Sure, I&#8217;ve been there, getting the wrong answers from the boss. Some business people just aren&#8217;t good at making informed decisions even when you&#8217;ve patiently explained all the tradeoffs and benefits. I think we, as programmers, need to be sure we&#8217;re holding up our end of the bargain &#8211; delivering all the data the business-people need to make good decisions. When they make bad ones anyway then it may be time to find a new job. Until then it&#8217;s our job to follow orders, and to make the best use of the time we&#8217;re given.&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chetanislazy.com/blog/2008/02/14/if-youre-not-outraged-youre-not-paying-attention/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Go to sleep</title>
		<link>http://www.chetanislazy.com/blog/2008/02/12/go-to-sleep/</link>
		<comments>http://www.chetanislazy.com/blog/2008/02/12/go-to-sleep/#comments</comments>
		<pubDate>Tue, 12 Feb 2008 07:31:57 +0000</pubDate>
		<dc:creator>chetan</dc:creator>
				<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://www.chetanislazy.com/blog/2008/02/12/go-to-sleep/</guid>
		<description><![CDATA[“Commitment means being prepared to do extra things, going the extra mile”
Without a commitment from all the concerned parties, how can one expect any enterprise to be successful? Be it business, government, military or otherwise. 
My group has shown it&#8217;s commitment time and again, but we haven&#8217;t seen the same from others. How do you [...]]]></description>
			<content:encoded><![CDATA[<p>“Commitment means being prepared to do extra things, going the extra mile”</p>
<p>Without a commitment from all the concerned parties, how can one expect any enterprise to be successful? Be it business, government, military or otherwise. </p>
<p>My group has shown it&#8217;s commitment time and again, but we haven&#8217;t seen the same from others. How do you find the motivation to stay committed in a situation like that?</p>
<p>I think I&#8217;ll just go to sleep instead. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.chetanislazy.com/blog/2008/02/12/go-to-sleep/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What we do</title>
		<link>http://www.chetanislazy.com/blog/2008/01/13/what-we-do/</link>
		<comments>http://www.chetanislazy.com/blog/2008/01/13/what-we-do/#comments</comments>
		<pubDate>Sun, 13 Jan 2008 10:10:50 +0000</pubDate>
		<dc:creator>chetan</dc:creator>
				<category><![CDATA[pune]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://www.chetanislazy.com/blog/2008/01/13/what-we-do/</guid>
		<description><![CDATA[according to steve:

]]></description>
			<content:encoded><![CDATA[<p>according to steve:</p>
<p><img src="http://www.pixelcop.org/~chetan/pics/what_we_do.jpg" alt="what we do" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.chetanislazy.com/blog/2008/01/13/what-we-do/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Aren&#8217;t you on vacation?</title>
		<link>http://www.chetanislazy.com/blog/2007/12/31/arent-you-on-vacation/</link>
		<comments>http://www.chetanislazy.com/blog/2007/12/31/arent-you-on-vacation/#comments</comments>
		<pubDate>Tue, 01 Jan 2008 01:46:00 +0000</pubDate>
		<dc:creator>chetan</dc:creator>
				<category><![CDATA[travel]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://www.chetanislazy.com/blog/2007/12/31/arent-you-on-vacation/</guid>
		<description><![CDATA[It&#8217;s strange. Just because I&#8217;m back in New York for a couple of weeks before I go back to India, everyone just assumes that I&#8217;m here on vacation. If it was any other time of the year, I&#8217;m almost positive that I wouldn&#8217;t get this reaction at all. Stranger still, most of the people asking [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s strange. Just because I&#8217;m back in New York for a couple of weeks before I go back to India, everyone just assumes that I&#8217;m here on vacation. If it was any other time of the year, I&#8217;m almost positive that I wouldn&#8217;t get this reaction at all. Stranger still, most of the people asking the question aren&#8217;t off either. What gives? </p>
]]></content:encoded>
			<wfw:commentRss>http://www.chetanislazy.com/blog/2007/12/31/arent-you-on-vacation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>And you may find yourself in another part of the world</title>
		<link>http://www.chetanislazy.com/blog/2007/12/16/and-you-may-find-yourself-in-another-part-of-the-world/</link>
		<comments>http://www.chetanislazy.com/blog/2007/12/16/and-you-may-find-yourself-in-another-part-of-the-world/#comments</comments>
		<pubDate>Sun, 16 Dec 2007 18:16:32 +0000</pubDate>
		<dc:creator>chetan</dc:creator>
				<category><![CDATA[bombay]]></category>
		<category><![CDATA[madras]]></category>
		<category><![CDATA[philosophy]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://www.chetanislazy.com/blog/2007/12/16/and-you-may-find-yourself-in-another-part-of-the-world/</guid>
		<description><![CDATA[Ever have a moment where you suddenly stop and ask yourself: how did I get here, to this exact moment in time? 
For me it&#8217;s almost an out of body experience where I look [down] at myself in a particular instant and I try to work backwards to the events that led up to it. [...]]]></description>
			<content:encoded><![CDATA[<p>Ever have a moment where you suddenly stop and ask yourself: how did I get here, to this exact moment in time? </p>
<p>For me it&#8217;s almost an out of body experience where I look [down] at myself in a particular instant and I try to work backwards to the events that led up to it. It seems to be happening a lot, of late, and it always comes back to the same question. Two weeks ago, I was sitting in the domestic terminal at the Bombay airport, reading a book of no consequence and listening to my iPod while waiting for my flight to Pune when I suddenly looked up and thought to myself, &#8220;what the fuck am I doing here? How the hell did I get here?&#8221;</p>
<p>It happened again yesterday. I was sitting in my hotel room, eating a fabulous lunch (brunch, really, but it was 3pm; scrambled eggs, french toast, hash browns, chicken sausage, and hot chocolate) and looking out the window, out over the gloomy sprawl of Chennai before me, when it came up again: &#8220;what the fuck am I doing here? How the hell did I get here?&#8221;</p>
<p>There&#8217;s an obvious answer (I&#8217;m here for Operative as their resident software ninja, blah, blah) but that&#8217;s not good enough. It doesn&#8217;t really answer the question as to <em>why</em> I&#8217;m here, in the here and now. Even more, I can think of lots of reasons that I <em>shouldn&#8217;t</em> be here; why I should <em>be</em> somewhere else, <em>doing</em> something else. And only a few reasons (e.g., conscious decisions I&#8217;ve made) for being here. </p>
<p>And yet here I am. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.chetanislazy.com/blog/2007/12/16/and-you-may-find-yourself-in-another-part-of-the-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nice shoes, but I still think you&#8217;re stupid</title>
		<link>http://www.chetanislazy.com/blog/2007/12/16/nice-shoes-but-i-still-think-youre-stupid/</link>
		<comments>http://www.chetanislazy.com/blog/2007/12/16/nice-shoes-but-i-still-think-youre-stupid/#comments</comments>
		<pubDate>Sun, 16 Dec 2007 16:47:53 +0000</pubDate>
		<dc:creator>chetan</dc:creator>
				<category><![CDATA[madras]]></category>
		<category><![CDATA[philosophy]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://www.chetanislazy.com/blog/2007/12/16/nice-shoes-but-i-still-think-youre-stupid/</guid>
		<description><![CDATA[My boss asked me a question recently, which really got me thinking: would it make any difference if I [my boss] wore slacks and a shirt every day? That is, do outward appearances at the office really matter that much? Could dressing a little better mean being taken more seriously? 
It took me a really [...]]]></description>
			<content:encoded><![CDATA[<p>My boss asked me a question recently, which really got me thinking: would it make any difference if I [my boss] wore slacks and a shirt every day? That is, do outward appearances at the office really matter that much? Could dressing a little better mean being taken more seriously? </p>
<p>It took me a really long time to answer the question, because to me it doesn&#8217;t affect how I judge a person&#8217;s performance, and it was difficult for me to look at the question objectively and realize that not everyone thinks the way I do. Everyone has their own criteria for judging performance or value. Which got me thinking about <a href="http://en.wikipedia.org/wiki/Meritocracy">meritocracies</a> and why they don&#8217;t work in business.</p>
<p>Many large, successful Open Source projects are, or appear to be (I&#8217;ll get to this later), meritocracies. The <a href="http://www.apache.org/foundation/how-it-works.html#meritocracy">Apache Software Foundation</a> (ASF) is a popular example. So what&#8217;s so different about open source software projects that a meritocracy not only works but seems to come so naturally? </p>
<p>Clearly much of it has to do with the voluntary nature of open source; when faced with an adverse situation in the management of a project you have two clear options when all else fails: stop contributing or <a href="http://en.wikipedia.org/wiki/Fork_(software_development)">fork</a>. Both options carry an equally low risk, from an individual standpoint. The same two options are available in the business world, however the risks are much greater when one&#8217;s career and livelihood lie in the balance but the rewards are potentially much greater for forking &#8212; e.g., quit and start a competing product or service. </p>
<p>Even in the latter case, can a meritocracy really work in the long run? The incubation phase of almost any startup is entirely merit-based &#8212; from acquiring funding to competing in the marketplace, both will be judged on the merits of the ideas and the products or services the business is able to produce. But how long can this be sustained? Once a company grows out of it&#8217;s core group of people into a full-fledged business, it becomes increasingly difficult to keep the same level of excellence and far more costly to replace people at the upper levels. The stakes are also much higher for everyone involved, as <a href="http://www.apache.org/foundation/how-it-works.html#meritocracy">noted by the ASF</a>:</p>
<blockquote><p>&#8220;What is interesting to note is that the process scaled very well without creating friction, because unlike in other situations where power is a scarce and conservative resource, in the apache group newcomers were seen as volunteers that wanted to help, rather than people that wanted to steal a position.&#8221;</p></blockquote>
<p>So it becomes an issue of power and the ability to wield it. Bill Gates commented on a <a href="http://news.zdnet.com/2100-9595_22-6222828.html">recent survey</a>, saying: &#8220;Communication skills and the ability to work well with different types of people are very important too,&#8221; he said. &#8220;Software innovation, like almost every other kind of innovation, requires the ability to collaborate and share ideas with other people, and to sit down and talk with customers and get their feedback and understand their needs.&#8221; In other words, to innovate you need more than just technical ability and great ideas. You need the ability to communicate those ideas and work with people who may not always be as strong technically. </p>
<p>And that&#8217;s where strong leadership comes in. The problem with any large organization is that it&#8217;s almost impossible for everyone to be in complete agreement all the time. Even in a merit based organization like the ASF, consensus is not a given and people have found ways to <a href="http://blog.generationjava.com/roller/bayard/entry/apache_meritocracy_consensus_and_despotism">game the system</a>. Without strong leadership at the top you&#8217;ll have a constant power struggle to fill that void at every level in the organization, as different groups vie for control. (See also: IRAQ)</p>
<p>The best ideas can win out, but sometimes it takes a dictator.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chetanislazy.com/blog/2007/12/16/nice-shoes-but-i-still-think-youre-stupid/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
