<?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; software</title>
	<atom:link href="http://www.chetanislazy.com/blog/category/software/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.chetanislazy.com/blog</link>
	<description>ooh, shiny!</description>
	<lastBuildDate>Thu, 19 May 2011 04:16:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Installing Google Gears on Mac OS X</title>
		<link>http://www.chetanislazy.com/blog/2009/07/14/installing-google-gears-on-mac-os-x/</link>
		<comments>http://www.chetanislazy.com/blog/2009/07/14/installing-google-gears-on-mac-os-x/#comments</comments>
		<pubDate>Wed, 15 Jul 2009 04:09:55 +0000</pubDate>
		<dc:creator>chetan</dc:creator>
				<category><![CDATA[software]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[safari]]></category>

		<guid isPermaLink="false">http://www.chetanislazy.com/blog/?p=90</guid>
		<description><![CDATA[If you&#8217;re looking to install Google Gears on OS X, installation order can be somewhat important. The Safari version installs as a standard OS X browser plugin and will be picked up by all the browsers on your system. Sounds good, except that the Firefox version is actually a standard Firefox XPI extension and the [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re looking to install <a href="http://gears.google.com/">Google Gears</a> on OS X, installation order can be somewhat important. The Safari version installs as a standard OS X browser plugin and will be picked up by all the browsers on your system. Sounds good, except that the Firefox version is actually a standard Firefox XPI extension and the two will conflict &#8212; you actually won&#8217;t be able to install the XPI unless you first disable the plugin via the Tools > Add-ons > Plugins menu option. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.chetanislazy.com/blog/2009/07/14/installing-google-gears-on-mac-os-x/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installshield sucks</title>
		<link>http://www.chetanislazy.com/blog/2009/05/31/installshield-sucks/</link>
		<comments>http://www.chetanislazy.com/blog/2009/05/31/installshield-sucks/#comments</comments>
		<pubDate>Sun, 31 May 2009 21:02:24 +0000</pubDate>
		<dc:creator>chetan</dc:creator>
				<category><![CDATA[software]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.chetanislazy.com/blog/?p=77</guid>
		<description><![CDATA[And furthermore, Peachtree sucks. Last weekend I battled this error thrown by the Peachtree 2008 installer and this weekend I had the great pleasure of upgrading to Peachtree 2010 and being greeted by the very same error. The fix in both cases? Simply copy the contents of the CD to the local harddisk (a network [...]]]></description>
			<content:encoded><![CDATA[<p>And furthermore, Peachtree sucks. Last weekend I battled <a href="http://support.microsoft.com/kb/888019">this</a> <a href="http://consumerdocs.installshield.com/selfservice/viewContent.do?externalId=Q108340&#038;sliceId=1">error</a> thrown by the Peachtree 2008 installer and this weekend I had the great pleasure of upgrading to Peachtree 2010 and being greeted by the very same error. </p>
<p>The fix in both cases? Simply copy the contents of the CD to the local harddisk (a network share works just as well) and then run setup.exe from there. Don&#8217;t be fooled by the suggested &#8220;solutions&#8221; from Microsoft or Installshield like I was. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.chetanislazy.com/blog/2009/05/31/installshield-sucks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Error of the day</title>
		<link>http://www.chetanislazy.com/blog/2008/10/08/error-of-the-day/</link>
		<comments>http://www.chetanislazy.com/blog/2008/10/08/error-of-the-day/#comments</comments>
		<pubDate>Thu, 09 Oct 2008 03:58:13 +0000</pubDate>
		<dc:creator>chetan</dc:creator>
				<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.chetanislazy.com/blog/?p=75</guid>
		<description><![CDATA[sigh.]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.pixelcop.org/~chetan/pics/meh.png" alt="sigh" /></p>
<p>sigh.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chetanislazy.com/blog/2008/10/08/error-of-the-day/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>Ghetto Profiling for MySQL</title>
		<link>http://www.chetanislazy.com/blog/2008/07/29/ghetto-profiling-for-mysql/</link>
		<comments>http://www.chetanislazy.com/blog/2008/07/29/ghetto-profiling-for-mysql/#comments</comments>
		<pubDate>Tue, 29 Jul 2008 19:38:31 +0000</pubDate>
		<dc:creator>chetan</dc:creator>
				<category><![CDATA[mysql]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.chetanislazy.com/blog/?p=65</guid>
		<description><![CDATA[MySQL is generally an all-around kickass piece of software, and like any good open source application, there are a host of tools you can use to squeeze every last drop of goodness out of it. Nearly all of them, however, are geared towards the operational DBA, leaving the wayward developer out in the cold. Lately [...]]]></description>
			<content:encoded><![CDATA[<p>MySQL is generally an all-around kickass piece of software, and like any good open source application, there are a <a href="http://www.mysqlperformanceblog.com/tools/">host of tools</a> you can use to squeeze every last drop of goodness out of it. Nearly all of them, however, are geared towards the operational DBA, leaving the wayward developer out in the cold.</p>
<p><span id="more-65"></span></p>
<p>Lately I&#8217;ve been working on optimizing our stored procedure library which is primarily responsible for generating all sorts of fancy reports for the users. We use lots of nested procedure calls and finding potential targets for optimization is a tricky and time consuming job. Enter <strong>Ghetto Profile</strong>.</p>
<p>It&#8217;s still pretty basic but gets the job done. How&#8217;s it work?</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;">ghetto_profile.rb <span style="color: #660033;">--attach</span> crappy_code.sql
mysql <span style="color: #000000; font-weight: bold;">&lt;</span> crappy_code.sql
ghetto_profile.rb <span style="color: #660033;">--stats</span> <span style="color: #660033;">-uroot</span> <span style="color: #660033;">-pmysql</span></pre></td></tr></table></div>

<p>The <strong>attach</strong> command simply wraps all stored procedure calls with debug statements which can later be analyzed using the <strong>stats</strong> command.</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">CALL</span> debug<span style="color: #66cc66;">.</span><span style="color: #993333; font-weight: bold;">ON</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'stored_proc1'</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">-- added by ghetto_profile</span>
    <span style="color: #993333; font-weight: bold;">CALL</span> stored_proc1<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">...</span>params<span style="color: #66cc66;">...</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">CALL</span> debug<span style="color: #66cc66;">.</span>off<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'stored_proc1'</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">-- added by ghetto_profile</span></pre></div></div>

<p>And the output of the <strong>stats</strong> command is something like this:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">total time: 3718.3220
&nbsp;
stored_proc1
         pct:   75.3873
         total: 2803.1430 (46.72)
         avg:   0.0895
         count: 31327
         min:   0.0860000000000001
         max:   0.343
&nbsp;
stored_proc2
         pct:   22.9479
         total: 853.2760 (14.22)
         avg:   0.0273
         count: 31240
         min:   0.0
         max:   0.371
&nbsp;
stored_proc3
         pct:   1.1224
         total: 41.7340 (0.70)
         avg:   0.0007
         count: 59020
         min:   0.0
         max:   0.074</pre></div></div>

<p>Wow, that stored_proc1 is taking up 75% of the time! Hacking ensues&#8230;</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">total time: 1151.3400
&nbsp;
stored_proc1
         pct:   0.4372
         total: 5.0340 (0.08)
         avg:   0.0001
         count: 43892
         min:   0.0
         max:   0.007</pre></div></div>

<p>Totally sweet! Ok, enough talk. Get some:</p>
<p><a href="http://www.operative.com/~csarva/ghetto_profile.rb">Ghetto Profile 0.7</a> (requires <strong>ruby</strong>, BSD licsensed)<br />
<a href="http://www.operative.com/~csarva/debug.tgz">debug.tgz</a> (helper package to setup the debug database and procs)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chetanislazy.com/blog/2008/07/29/ghetto-profiling-for-mysql/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>&#8220;Made by India&#8221;</title>
		<link>http://www.chetanislazy.com/blog/2008/03/17/made-by-india/</link>
		<comments>http://www.chetanislazy.com/blog/2008/03/17/made-by-india/#comments</comments>
		<pubDate>Mon, 17 Mar 2008 05:21:37 +0000</pubDate>
		<dc:creator>chetan</dc:creator>
				<category><![CDATA[india]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.chetanislazy.com/blog/2008/03/17/made-by-india/</guid>
		<description><![CDATA[Indians are everywhere in the software world &#8212; from engineers to CEO&#8217;s &#8212; but they all share one thing in common: the products they&#8217;ve helped build are all for companies based outside of India and for the most part in the US. I had this very conversation with one of our developers in Chennai on [...]]]></description>
			<content:encoded><![CDATA[<p>Indians are everywhere in the software world &#8212; from engineers to CEO&#8217;s &#8212; but they all share one thing in common: the products they&#8217;ve helped build are all for companies based outside of India and for the most part in the US. I had this very conversation with one of our developers in Chennai on my last trip to India. He&#8217;s also spent time abroad, in the UK, but had not noticed it until I pointed it out to him. My guess is that there&#8217;s just no domestic market for many of the products being developed abroad. Especially with regards to the Internet, with access at home out of reach for most people, it&#8217;s not hard to see why most entrepreneurs might end up in California instead of Bangalore. </p>
<p>Fortunately, that all appears to be changing. I was glad to learn that the recently announced <a href="http://www.live-documents.com/">Live Documents</a> is made entirely by an <a href="http://www.instacoll.com/company.htm">Indian company</a> based out of Bangalore (though it was founded by <a href="http://en.wikipedia.org/wiki/Sabeer_Bhatia">Sabeer Bahtia</a> of Hotmail fame). I&#8217;d be curious how their product does in the Indian market, as opposed to the rest of the world, for which it seems to be primarily targeted. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.chetanislazy.com/blog/2008/03/17/made-by-india/feed/</wfw:commentRss>
		<slash:comments>0</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>SimpleDB: MapReduce for the masses?</title>
		<link>http://www.chetanislazy.com/blog/2007/12/16/simpledb-mapreduce-for-the-masses/</link>
		<comments>http://www.chetanislazy.com/blog/2007/12/16/simpledb-mapreduce-for-the-masses/#comments</comments>
		<pubDate>Sun, 16 Dec 2007 19:32:17 +0000</pubDate>
		<dc:creator>chetan</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[madras]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.chetanislazy.com/blog/2007/12/16/simpledb-mapreduce-for-the-masses/</guid>
		<description><![CDATA[On Thursday, Amazon announced SimpleDB, &#8220;a web service for running queries on structured data in real time.&#8221; As many others have noted this more or less completes the cloud computing stack that Amazon has been steadily building, ever since they launched the Simple Storage Service (S3), early last year. Where their earlier releases (S3, Elastic [...]]]></description>
			<content:encoded><![CDATA[<p>On Thursday, Amazon <a href="http://www.amazon.com/b/ref=sc_fe_c_1_3435361_1?ie=UTF8&#038;node=342335011&#038;no=3435361&#038;me=A36L942TSJ2AJA">announced SimpleDB</a>, &#8220;a web service for running queries on structured data in real time.&#8221; As many <a href="http://gigaom.com/2007/12/14/amazon-simple-db/">others</a> have <a href="http://radar.oreilly.com/archives/2007/12/amazon_launches.html">noted</a> this more or less completes the cloud computing stack that Amazon has been steadily building, ever since they launched the <a href="http://aws.amazon.com/s3">Simple Storage Service</a> (S3), early last year.</p>
<p>Where their earlier releases (S3, <a href="http://www.amazon.com/b/ref=sc_fe_l_2?ie=UTF8&#038;node=201590011&#038;no=3435361&#038;me=A36L942TSJ2AJA">Elastic Compute Cloud</a> [EC2], <a href="http://www.amazon.com/b/ref=sc_fe_l_2?ie=UTF8&#038;node=342430011&#038;no=3435361&#038;me=A36L942TSJ2AJA">Flexible Payments</a>, <a href="http://www.amazon.com/Mechanical-Turk-AWS-home-page/b/ref=sc_fe_l_2?ie=UTF8&#038;node=15879911&#038;no=3435361&#038;me=A36L942TSJ2AJA">Mechanical Turk</a>) commoditized much of the infrastructure required for building scalable applications, SimpleDB (SDB) and the earlier <a href="http://www.amazon.com/Simple-Queue-Service-home-page/b/ref=sc_fe_l_2?ie=UTF8&#038;node=13584001&#038;no=3435361&#038;me=A36L942TSJ2AJA">Simple Queue Service</a> (SQS) are bringing cutting edge technologies and design patterns to the masses. First they made it cheap and easy to <em>have</em> a cluster; now they&#8217;ve made it cheap and easy to <em>use</em> a cluster! Amazing. </p>
<p>What&#8217;s even more startling is just how much Amazon <em>gets it</em>, and just how far off base Salesforce was earlier this year when they announced <a href="http://www.salesforce.com/platform/">Force.com</a>, as a &#8220;platform as a service&#8221;. </p>
<p>Then again, maybe they&#8217;re not even competing services at all.</p>
<p>Amazon is clearly providing services targeted towards developers and entrepreneurs with the goal of enabling them to explore new and innovative ideas by lowering the cost of entry. They&#8217;re providing the basic building blocks for developers to do exactly what they have done (and spent the last 10 years building) and they&#8217;re providing it at a very competitive price. </p>
<p>The Force.com proposition is different: they market to the same target audience but the selling point is not their tools &#8212; they offer a run of the mill JAVA-based platform &#8212; their selling point is the market that they can deliver. A built-in customer base of salesforce.com [enterprise] users and a marketplace for connecting those users with the applications they want. </p>
<p>But I digress. Amazon&#8217;s SimpleDB is an important, if small, step towards moving the web to column-oriented databases like Google&#8217;s <a href="http://en.wikipedia.org/wiki/BigTable">BigTable</a>, or the relatively unknown, opensource <a href="http://lucene.apache.org/hadoop/">Hadoop</a> project, now <a href="http://radar.oreilly.com/archives/2007/08/yahoos_bet_on_h.html">largely sponsored by Yahoo!</a>.</p>
<p>What sticks out to me most, however, is the choice of name. It&#8217;s called &#8220;SimpleDB&#8221; and yet it&#8217;s neither a &#8220;database&#8221;, as most would understand it, nor is the concept of a column-oriented database &#8220;simple&#8221;; it requires an orthogonal way of thinking. What <em>is</em> clear, however, is that the choice of name was a very deliberate move by Amazon to market this technology to the masses. It will take some time for developers to come around and see the light, but when they do, we&#8217;re in for another huge advance in dynamic web applications. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.chetanislazy.com/blog/2007/12/16/simpledb-mapreduce-for-the-masses/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

