<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Slinky and the Brain</title>
	<atom:link href="http://arunchaganty.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://arunchaganty.wordpress.com</link>
	<description></description>
	<lastBuildDate>Sun, 09 Nov 2008 09:58:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='arunchaganty.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Slinky and the Brain</title>
		<link>http://arunchaganty.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://arunchaganty.wordpress.com/osd.xml" title="Slinky and the Brain" />
	<atom:link rel='hub' href='http://arunchaganty.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Blog Shifted</title>
		<link>http://arunchaganty.wordpress.com/2008/11/09/blog-shifted/</link>
		<comments>http://arunchaganty.wordpress.com/2008/11/09/blog-shifted/#comments</comments>
		<pubDate>Sun, 09 Nov 2008 09:57:12 +0000</pubDate>
		<dc:creator>arunchaganty</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://arunchaganty.wordpress.com/?p=103</guid>
		<description><![CDATA[Behind the times as always, I am no longer being aggregated on Planet GNOME. I had an amazing time being on the Planet, and got some great input from the amazing people there. Thanks to Lucas for adding me to the Planet in the first place, and everyone in GNOME for being so awesome. I&#8217;ve [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=arunchaganty.wordpress.com&amp;blog=3070899&amp;post=103&amp;subd=arunchaganty&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Behind the times as always, I am no longer being aggregated on <a href="http://planet.gnome.org">Planet GNOME</a>. I had an amazing time being on the Planet, and got some great input from the amazing people there. Thanks to Lucas for adding me to the Planet in the first place, and everyone in GNOME for being so awesome.</p>
<p>I&#8217;ve finally found the time to set up my server (after almost 6 months&#8230;). It&#8217;s still in bare bone stages, but I&#8217;d love to hear comments on it&#8217;s design.</p>
<p>Website: <a href="http://arun.chagantys.org/">http://arun.chagantys.org/</a></p>
<p>Blog: <a href="http://arun.chagantys.org/blog/">http://arun.chagantys.org/blog/</a></p>
<p>Wiki: <a href="http://arun.chagantys.org/wiki/">http://arun.chagantys.org/wiki/</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/arunchaganty.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/arunchaganty.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/arunchaganty.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/arunchaganty.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/arunchaganty.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/arunchaganty.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/arunchaganty.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/arunchaganty.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/arunchaganty.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/arunchaganty.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/arunchaganty.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/arunchaganty.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/arunchaganty.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/arunchaganty.wordpress.com/103/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=arunchaganty.wordpress.com&amp;blog=3070899&amp;post=103&amp;subd=arunchaganty&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://arunchaganty.wordpress.com/2008/11/09/blog-shifted/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/53e94a4ce49581430189caf0d7beacfb?s=96&#38;d=monsterid" medium="image">
			<media:title type="html">arunchaganty</media:title>
		</media:content>
	</item>
		<item>
		<title>Since I&#8217;ve Bean Loving You</title>
		<link>http://arunchaganty.wordpress.com/2008/10/21/since-ive-been-loving-you/</link>
		<comments>http://arunchaganty.wordpress.com/2008/10/21/since-ive-been-loving-you/#comments</comments>
		<pubDate>Tue, 21 Oct 2008 18:30:40 +0000</pubDate>
		<dc:creator>arunchaganty</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[poetry]]></category>
		<category><![CDATA[coffee]]></category>

		<guid isPermaLink="false">http://arunchaganty.wordpress.com/?p=95</guid>
		<description><![CDATA[Once when the heart did flutter, Every moment passing only to draw us closer To glance upon you, my thoughts stuttered, To breath you in, so refreshing, yet so dear. As you moved through me, a warmth filled my chest I was at your every beck and call I swore I would withstand the test [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=arunchaganty.wordpress.com&amp;blog=3070899&amp;post=95&amp;subd=arunchaganty&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Once when the heart did flutter,<br />
Every moment passing only to draw us closer<br />
To glance upon you, my thoughts stuttered,<br />
To breath you in, so refreshing, yet so dear.</p>
<p>As you moved through me, a warmth filled my chest<br />
I was at your every beck and call<br />
I swore I would withstand the test<br />
A test of loss. I failed, and now I fall.</p>
<p>A craving left unsatisfied<br />
You have moved forward, without heed to my growing addiction,<br />
Without heed to the feelings of this body of but flesh and bone,<br />
My sensous brown coffee bean.<br />
<em><br />
Try as I might, I can&#8217;t kick the coffee habit.</em></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/arunchaganty.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/arunchaganty.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/arunchaganty.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/arunchaganty.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/arunchaganty.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/arunchaganty.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/arunchaganty.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/arunchaganty.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/arunchaganty.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/arunchaganty.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/arunchaganty.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/arunchaganty.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/arunchaganty.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/arunchaganty.wordpress.com/95/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=arunchaganty.wordpress.com&amp;blog=3070899&amp;post=95&amp;subd=arunchaganty&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://arunchaganty.wordpress.com/2008/10/21/since-ive-been-loving-you/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/53e94a4ce49581430189caf0d7beacfb?s=96&#38;d=monsterid" medium="image">
			<media:title type="html">arunchaganty</media:title>
		</media:content>
	</item>
		<item>
		<title>Vimjuta 0.1.1 and Online</title>
		<link>http://arunchaganty.wordpress.com/2008/10/21/vimjuta-011-and-online/</link>
		<comments>http://arunchaganty.wordpress.com/2008/10/21/vimjuta-011-and-online/#comments</comments>
		<pubDate>Tue, 21 Oct 2008 18:21:44 +0000</pubDate>
		<dc:creator>arunchaganty</dc:creator>
				<category><![CDATA[gsoc]]></category>
		<category><![CDATA[technical]]></category>
		<category><![CDATA[anjuta]]></category>
		<category><![CDATA[vim]]></category>
		<category><![CDATA[vimjuta]]></category>

		<guid isPermaLink="false">http://arunchaganty.wordpress.com/?p=92</guid>
		<description><![CDATA[I made a promise last week to come out with Vimjuta 0.2 over the previous weekend. I hate to say I broke the promise, the best I could come up with was a 0.1.1-ish &#8220;release&#8221; (it&#8217;s on SVN), fixing a very irritating and troublesome reference issue. I spent around 14 straight hours fixing that single [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=arunchaganty.wordpress.com&amp;blog=3070899&amp;post=92&amp;subd=arunchaganty&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I made a promise last week to come out with Vimjuta 0.2 over the previous weekend. I hate to say I broke the promise, the best I could come up with was a 0.1.1-ish &#8220;release&#8221; (it&#8217;s on SVN), fixing a very irritating and troublesome reference issue. I spent around 14 straight hours fixing that single issue, chasing my ref counts through Anjuta and fixing several inconsistencies along the way. I couldn&#8217;t find the time to fix the problems with the debugger and to re-implement some of the interfaces (mainly the search interfaces, which vim honestly has better functionality in). My new goal is to cut out about an hour every day of this week and work through the weekend (during which I am going home, away from the hectic campus life), and try and come up with a 0.2 release in time for Diwali (huge Indian festival). Wish me luck!</p>
<p>In other matters, I have finally made a small webpage for Vimjuta, hosted on my webserver at: <a href="http://arun.chagantys.org/projects/vimjuta/">http://arun.chagantys.org/projects/vimjuta/</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/arunchaganty.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/arunchaganty.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/arunchaganty.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/arunchaganty.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/arunchaganty.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/arunchaganty.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/arunchaganty.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/arunchaganty.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/arunchaganty.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/arunchaganty.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/arunchaganty.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/arunchaganty.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/arunchaganty.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/arunchaganty.wordpress.com/92/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=arunchaganty.wordpress.com&amp;blog=3070899&amp;post=92&amp;subd=arunchaganty&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://arunchaganty.wordpress.com/2008/10/21/vimjuta-011-and-online/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/53e94a4ce49581430189caf0d7beacfb?s=96&#38;d=monsterid" medium="image">
			<media:title type="html">arunchaganty</media:title>
		</media:content>
	</item>
		<item>
		<title>FOSS Events @ Shaastra 2008</title>
		<link>http://arunchaganty.wordpress.com/2008/10/11/foss-events-shaastra-2008/</link>
		<comments>http://arunchaganty.wordpress.com/2008/10/11/foss-events-shaastra-2008/#comments</comments>
		<pubDate>Sat, 11 Oct 2008 09:36:16 +0000</pubDate>
		<dc:creator>arunchaganty</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[technical]]></category>
		<category><![CDATA[foss]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[lug]]></category>
		<category><![CDATA[shaastra]]></category>

		<guid isPermaLink="false">http://arunchaganty.wordpress.com/?p=83</guid>
		<description><![CDATA[As always, I&#8217;m a week late on this post. Shaastra, our annual techfest wrapped up on the 5th of October. This last week has been terribly hectic with all of our teachers catching up on lost time. We handled three distinct &#8220;events&#8221;, namely a mini-FOSS conference, a HackFest, and of course the VC with Guido [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=arunchaganty.wordpress.com&amp;blog=3070899&amp;post=83&amp;subd=arunchaganty&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>As always, I&#8217;m a week late on this post. Shaastra, our annual techfest wrapped up on the 5th of October. This last week has been terribly hectic with all of our teachers catching up on lost time.</p>
<p>We handled three distinct &#8220;events&#8221;, namely a mini-FOSS conference, a HackFest, and of course the VC with Guido van Rossum. Looking back, we probably could have handled things better, but as a first attempt, I think we fared rather well. This is a retrospection of the event, in the hope that it will help others find out something that helped and a lot of things that didn&#8217;t.</p>
<p><span id="more-83"></span></p>
<h2>FOSS Conference</h2>
<p>Our motto for the FOSS events was to transform the passive user to an active contirbutor.<br />
<h3>Talk 1: FOSS Foundry</h3>
<p>Shreyas and I gave a talk, &#8220;FOSS Foundry&#8221;, that was aimed at teaching the audience how to approach developing or as Shreyas puts it, &#8220;scratching your itch&#8221;, and the various obstacles one faces along the way and how to tackle them. The talk was very ambitious, and modeled along the lines of AfC&#8217;s &#8220;User to Hacker in 90 minutes&#8221; that he gave at foss.in/2007. In that talk, Shreyas was AfC&#8217;s aide, and I was to play a similar role during this talk.  Unfortunately, there were a huge number of technical snags, ranging from projectors to failing internet connections, so the full awesomeness of Shreyas&#8217; talk was compromised.  Shreyas being a very dynamic and entertaining chap still managed to pull it together and entertain the audience. </p>
<p><a href="http://arun.chagantys.org/files/swatantrini/talk1.odp">Slides</a></p>
<h3>Talk 2: Luser to Superuser</h3>
<p>Kapil Hari Paranjape gave a talk on a very similar set of topics as Shreyas&#8217;, only more oriented perhaps to packaging issues, etc. (Kapil is the 2nd Indian Debian Developer). Kapil&#8217;s wide experience with computing, and giving talks really showed, and his presentation was huge success.</p>
<p>Slides (I haven&#8217;t gotten them yet. I will put them up here once I do)</p>
<h3>Talk 3: An Introduction to KDE development </h3>
<p>The next day, Akarsh Simha gave a talk on how to get into KDE development. The talk was slightly delayed due to issues with a preceeding sponsor talk. Our sponsors, NetApp, were very generous to sponsor us, and it was heartening to see that the speaker himself (Kartik something) is a contributor to GCC. The focus of their talk was very centered around the technical contributions of NetApp (which were actually pretty impressive). Akarsh&#8217;s talk again was plagued by techincal issues, but luckily an ssh -X through my system saved the day (my laptop got a lot of air time through out the FOSS events. Apparently it was the only linux laptop that the projectors liked).</p>
<p><a href="http://arun.chagantys.org/files/swatantrini/talk3.pdf">Slides</a></p>
<h3>Talk 4: The FreeSmartPhone.org framework</h3>
<p>The final talk, and definitely my favourite, was given by Sudarshan (Sup3rkiddo), on the FreeSmartphone.Org stack that he worked on during the summer. He showed off the simplicity of using python + dbus to control the phone. Later, during a one-on-one session with him (actually a two-on-one, Kirtika joined me in bugging Sudarshan), he taught me a lot of interesting aspects about sysfs and the &#8220;netlink&#8221; socket (which is a socket for kernel events).</p>
<p><a href="http://arun.chagantys.org/files/swatantrini/talk4.pdf">Slides</a></p>
<p>Except for the technical snags, I was happy with the talks. While I would have loved hardcore techincal talks like Sudarshan&#8217;s, the aim of the conference was to convert as many users into hacker wannabes as possible. Judging by the number of &#8220;repeat customers&#8221;, and the number of people who had a good chat with the speakers after the talk, I think we achieved this goal.</p>
<h2>HackFest</h2>
<p>The hackfest was definitely the ambitious thing we&#8217;ve ever tried. While Akarsh had attended a KDE.in hackathon, I had never done anything like it. The closest I had ever gotten was one or two sleepless nights spent hacking along side Akarsh during foss.in and before the GSoC Bangalore meetup. Those were great times, but the scale of it was incomparable with those of the Shaastra hackfest.</p>
<p>I had naively assumed that the people coming would be able to immediately jump onto a project and start hacking. I also had foolishly assumed that the turnout would be restricted to 20-odd people. I had accordingly prepared a presentation outlining some &#8220;low lying fruit&#8221; to attempt, and planned for a highly interactive session with everyone, guiding them into contributing. I had trustingly thought that all the systems would work. I was so very wrong.</p>
<p>More than 50 people had turned up, many of which had never even used linux before. We had no filtering mechanism in place, and almost every single system utterly failed. For the better part of an hour, utter pandamonium ensued. We couldn&#8217;t make any head way until some groups decided to leave. Shreyas advised us to segregate the participants into two groups, one for complete novices, and another for those more proficient at programming. We tried to help the former category through makefiles. For the latter category, we started with a brief introduction to version control, and I began to walk them through Tomboy code. I regret choosing Tomboy as a hackable, because a lot of people saw the fact that it&#8217;s in C# as a mental barrier. I couldn&#8217;t think of anything else at the time though.</p>
<p>The second day was a lot more comfortable, with a much reduced, but very enthusiastic crowd. Akarsh gave a nice session on including DBus support into Mcabber, a terminal chat client (that I incidentally introduced to Akarsh). I continued my Tomboy sessions, and then broke away and fixed a bug or two in my program (Vimjuta).</p>
<h2>Guido&#8217;s VC</h2>
<p>Despite the success of the dry run, it seemed that someteing *had* to go wrong&#8230; Skype would transmit video, but audio would work. And the funky VC equipment we had would transmit audio, but video was broken. After about 15 minutes spent in vain, we just decided to make it an audioconference. I did manage to throw together a quick picture slideshow of Guido&#8217;s pictures <img src='http://s2.wp.com/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' /> . The conversation between our moderator (Shankar Balachandran, a professor of the CSE department here at IITM) and Guido was very candid. We covered a lot of interesting topics. And of course we touched upon which editor he uses. Emacs.  *But* he did mention that he recommends vim to everyone and that emacs is saturated. He left off saying (paraphrased):</p>
<blockquote><p>
&#8220;Just go and do something you&#8217;ve never done before; something random and something you think you&#8217;ll never need in the future&#8221;
</p></blockquote>
<h2>The Group + Organizational Structure</h2>
<p>Officially, we just had 5 members working on the mash of events, with a very hazy line drawn between &#8220;coordinators&#8221; and &#8220;volunteers&#8221;. The five members were, Akarsh Simha (KDE, emacs-as-notepad user, core hax0r), Sanjeev Sripathi (responsible for contacting all the guest speakers, and keeping the adminsistrative hassle off our heads), Vikram S.V. (adminsistrative handler, and Debian point man), Kirtika Ruchandani (the always helpful extra hand) and last and I hope not the least, myself (GNOME dude, vimmr). Like any open source project, the work load was distributed on a volunteer basis, and this at times did cause delays when real life decided to rear it&#8217;s ugly head.</p>
<h2>The Community</h2>
<p>We got such great help from other GSoC students, project leads, and other members in the Indian FOSS scene (notably Pradeepto Bhatacharya, Arun Raghavan and Shreyas Srinivasan), without which we really wouldn&#8217;t have been capable of pulling the events off.. In many ways, I have to thank Google for their SoC program, because I got to know so many people through those hectic months, and the GSoC students who had come (Santhosh Vattam, Madhusdan, Sudharshan) really supported us. So to all of you, <em>thank you!</em> I tried to organize a hackfest around Tomboy, and was really grateful for Sandy&#8217;s help and encouragement. Sadly nothing came out of the hackfest, but atleast we tried.</p>
<p>
At the end of this awefully long monologue, my only regret during the entire event was not having actually made a patch. I&#8217;ve been so guilty of not managing time well enough to hack on my SoC project, or anything on my growing wishlist.  We touched the topic of a lot of SoC projects being &#8220;completed&#8221;, but not complete and not usable. I don&#8217;t want my project to go down that road. I have exams this week, but I promise Vimjuta-2.0 will release next weekend (17th &#8211; 19th)
</p>
<p>* Slides+Source for the GNOME Hackables <a href="http://arun.chagantys.org/files/swatantrini/hackfest/">here</a><br />
** Akarsh&#8217;s blog post on the same topic here</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/arunchaganty.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/arunchaganty.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/arunchaganty.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/arunchaganty.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/arunchaganty.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/arunchaganty.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/arunchaganty.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/arunchaganty.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/arunchaganty.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/arunchaganty.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/arunchaganty.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/arunchaganty.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/arunchaganty.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/arunchaganty.wordpress.com/83/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=arunchaganty.wordpress.com&amp;blog=3070899&amp;post=83&amp;subd=arunchaganty&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://arunchaganty.wordpress.com/2008/10/11/foss-events-shaastra-2008/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/53e94a4ce49581430189caf0d7beacfb?s=96&#38;d=monsterid" medium="image">
			<media:title type="html">arunchaganty</media:title>
		</media:content>
	</item>
		<item>
		<title>Big Red Button</title>
		<link>http://arunchaganty.wordpress.com/2008/10/01/big-red-button/</link>
		<comments>http://arunchaganty.wordpress.com/2008/10/01/big-red-button/#comments</comments>
		<pubDate>Wed, 01 Oct 2008 02:56:23 +0000</pubDate>
		<dc:creator>arunchaganty</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[shaastra]]></category>
		<category><![CDATA[story]]></category>

		<guid isPermaLink="false">http://arunchaganty.wordpress.com/?p=75</guid>
		<description><![CDATA[This is my entry for Shaastra&#8217;s Online Science Fiction Writing contest (Shaastra is my college&#8217;s annual technical festival). It was judged by Cory Doctrow, and won first place. I am estatic. In retrospect, I&#8217;ve noticed several places where I really screwed up my &#8220;flow&#8221; and lost &#8220;coherency&#8221; (quotes because I can&#8217;t exactly define either) and [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=arunchaganty.wordpress.com&amp;blog=3070899&amp;post=75&amp;subd=arunchaganty&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This is my entry for Shaastra&#8217;s Online Science Fiction Writing contest (Shaastra is my college&#8217;s annual technical festival). It was judged by Cory Doctrow, and won first place. I am estatic.</p>
<p>In retrospect, I&#8217;ve noticed several places where I really screwed up my &#8220;flow&#8221; and lost &#8220;coherency&#8221; (quotes because I can&#8217;t exactly define either) and other where I just pushed ahead too fast, but I guess Cory liked the underlying story (hey, I&#8217;m not complaining <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> ). Either way, credit where it&#8217;s due:</p>
<ul>
<li>Brave New World, Aldous Huxley</li>
<li>Dune, Frank Herbert</li>
<li>Kirtika Ruchandani for a proof read</li>
<li>The Acad block for instituting courses like BT101 (Introduction to Biology) and ID130 (Ecology and Environment) in a classroom of 120-140 students, without which I would never find the time to come up with a story line.</li>
</ul>
<p><span id="more-75"></span><br />
&#8212;</p>
<p style="margin-bottom:0;"><strong>Big Red Button</strong><strong><br />
</strong></p>
<p style="margin-bottom:0;">That uniform white light permeating through every corner of the room never failed to irk Johr. With no shadows, the room had this two dimensional touch that wasn&#8217;t particularly appreciated with most humans on the workforce. Perhaps it shed light on their two dimensional lives, a growing cause for discontent everywhere in the Empirum Galactica.</p>
<p style="margin-bottom:0;">Ever since the promulgation of the equal labour laws, proclaiming an equal footing amongst intelligent artificial creatures (most commonly known by the mildly derogative word “robots”), and men, huge waves of social and economic disturbances hit the shores of the Empire. On one hand you had the indisputable advantages of increased output and efficiency, leading to a steep rise in universal stocks (and CEO salary figures). On the other, you had ego malfunctions leading to mass resignations, and hordes of utterly jobless individuals. Of course, in the words of the Central Advisory Board (a distinguished set of economists who possessed the right combination of egotism and delusional capability to believe that they could predict and correct an economy spanning 1.4 million light years, with every form of trade possible):</p>
<p style="margin-bottom:0;">“<em>Ego is the biggest liability a company can have. It shrouds that which is real, and leads to an inefficiency in the firm, and thus the market.”</em></p>
<p style="margin-bottom:0;">Hypocrisy was certainly the order of the day.</p>
<p style="margin-bottom:0;">Still, many people (the real kind) saw this as a perfect opportunity to offload their work to their diligent peers, who couldn&#8217;t quite reject it. This slowly drew more honest workers finding “better” uses for their time, to reconsider their work ethic. At the end of one Galactic year, hidden employment reached an all time high of 78%. But Johr wasn&#8217;t one of them.</p>
<p style="margin-bottom:0;">It seemed like the universe as a whole had reached this new minimum of total energy. Nobody needed to do anything and nothing that needn&#8217;t be done was done. For any human task that needed doing, a machine could do it. Better.</p>
<p style="margin-bottom:0;">So, it was a very unexpected scene to see Johr restlessly pacing around, lost in lost thought. For 38 years, he had built systems of all scales and degrees of complexity, in the process founding the largest android manufacturing unit in the universe. He had brought the future of automation, today. In a way, his work was essential to making the law possible. Making artificial beings real enough to compete with humans. And not once did he look back once. Till now.</p>
<p style="margin-bottom:0;">A loud knock on his door shook Johr out of his dreams. “Don&#8217;t you think it&#8217;s getting a bit late? Shall we leave?”. Johr looked up, and he couldn&#8217;t really help himself. The voice was immaculate in it&#8217;s articulation, sensuous in pitch; perfect. Diana, his colleague was at the door. There was an aura of perfection around her. Her clothes were cleanly pressed, her hair was smooth and glossy (though rather boringly brown in comparison to some of the youth fashion statements), figure precise and even her nails were exact in dimension and proportion.</p>
<p style="margin-bottom:0;">“Ah, you are right. Let&#8217;s be off then. It&#8217;s not like I had much to do in any case”. He stood up, adjusted his suit, and proceeded to the exit, taking Diana&#8217;s hand along the way. They began to proceed through the lit corridors to the mass transit shuttles. Johr looked fondly at these marvels of social technology, carrying tens of thousands of people from where the were to where they needed to go. Or at least, where they thought they needed to go.</p>
<p style="margin-bottom:0;">“How about we take to the streets instead?”, Johr informally proposed to her.</p>
<p style="margin-bottom:0;">“Why the devil? It&#8217;s already 8:30, and you&#8217;d miss your dinner.”</p>
<p style="margin-bottom:0;">“Doesn&#8217;t matter, the ensuing discussion shall provide enough food for thought, my stomach be damned”.</p>
<p style="margin-bottom:0;">Hand in hand, they crossed the shuttle docking bay, and descended the elevator to the streets below. The streets weren&#8217;t quite as bustling as one would have expected by extrapolating population density. These days, if you wanted something, you simply had to punch it in a small black keypad, and it would be sent to you in the next goods dispatch (which were hardly minutes apart). Still, some old couples could be seen walking the streets, trying to stir up some old nostalgia that they hung on to.</p>
<p style="margin-bottom:0;">“Diana darling, I need to talk. I need somebody to listen or even just pretend to listen to what I say. I&#8217;m wondering, what&#8217;s life come to? When I was small, we had these simple engines. You screwed them to a block, pumped it some fuel, and wow you&#8217;re done. I used to play with these things while I was in the Creche. The other kids played with those small alphabet blocks, I played with this object of raw, unchained power. I put the damn thing on anything and gave it the power of motion. Now, look at one of these new fangled fusion propellers. Forget playing with it, I can&#8217;t even touch the damn thing without being incinerated. Like hell a kid is going to get his hands on that. I mean, it&#8217;s not quite that the block had somewhere to to go, but still, the thrill of watching it zoom, that&#8217;s what I&#8217;m talking about. The thrill of conquest.”</p>
<p style="margin-bottom:0;">Diana wore a face of conservative confusion. She really didn&#8217;t want to get into this, but at this point, it wasn&#8217;t like she had much of a choice. “I don&#8217;t mean to sound harsh or anything, but honestly, why would one want to put an engine on a damn block? What does it prove? What does it achieve? Isn&#8217;t it just a terrible waste of energy?”</p>
<p style="margin-bottom:0;">“Yes, I was quite the entropy bandit then. I really don&#8217;t have a reason. That&#8217;s my problem. Life&#8230; is so artificial. But in my head, I had purpose. I really convinced myself that the sole aim and goal of my life is the get that 3x3x3 block of alloy steel moving at 2/3<sup>rd</sup> the speed of sound. God only knows why. Now, don&#8217;t you grimace at the mention of God. There are those among us who still believe in it&#8217;s existence”</p>
<p style="margin-bottom:0;">She was more angsty now, “I, for one, consider them delusional fools. Surely the rational mind as advanced as yours can not believe in so shallow a concept as a god.”</p>
<p style="margin-bottom:0;">“Perhaps. But maybe there is a rational explanation for it somewhere. We often question ourselves too much. We need to convince ourselves that we have some <em>greater</em> purpose. As I said, I found some greater purpose in making engines, in creating robots; robots like you for example. There must be those who weren&#8217;t quite as lucky. They need something to believe in. Look at it like this. Slowly, we&#8217;ve replaced every component of our work life with a machine -”</p>
<p style="margin-bottom:0;">“But look at what possibilities machines have given you. Could you possibly create <em>me</em><span style="font-style:normal;"> if you did not have an engine, a drill or a screw?”. Anger was not quite the feeling that Johr had intended to raise. He took his time to reply, looking deeply at the road ahead, and at the strange buildings around him. The buildings in each sector had been remodelled to redirect wind flows through the city. As a result, all of them had the same aerodynamic shape made of the same material, and all colored the same. The net result, in Johr&#8217;s mind was the death of architecture. The death of beauty, and of the natural chaos of human order.</span></p>
<p style="margin-bottom:0;font-style:normal;">“No. I can&#8217;t deny that. Every machine widened our scope, our horizons. But at the same time, I feel, may be it narrowed another section, of our population. Since the advent of the automated fabricating unit, the welder no longer has a purpose to his life. He no longer makes choices of execution, he can no longer experiment and learn. All he has to do is press a button.”</p>
<p style="margin-bottom:0;font-style:normal;">“The welder&#8217;s job is so&#8230; menial. With a robot to take care of welding, he can move up, and do something else in life. Something like you.”</p>
<p style="margin-bottom:0;font-style:normal;">“Ha! My own life is becoming redundant. Slowly everything there is is becoming menial. Look at programming. 30-40 years ago, thousands of bright minds would punch out millions of lines of code, thinking that they were creating the future. Then we started to write programs that wrote programs, and made that task menial. I fear we have made thought itself menial. We have consecrated the holiness of the human mind by selling bit by bit every thing that supported it from underneath. Sure, thought still lives, but if one can not take into his own hands the power to forge that thought into reality, what&#8217;s the point of having the thought at all?”</p>
<p style="margin-bottom:0;font-style:normal;">“Why to increase the efficiency of the human race! Have you been forgotten the very precepts of society?”</p>
<p style="margin-bottom:0;">“<span style="font-style:normal;">To what </span><em>end</em><span style="font-style:normal;">? So another generation of men drone on in their drudgery to feed yet another generation, which grows to the same damn thing over and over again? Doesn&#8217;t the thought scare you?”</span></p>
<p style="margin-bottom:0;font-style:normal;">Diana was silent. She couldn&#8217;t say anything rational at this point, and was having second thoughts about the rationality of the direction the discussion was taking.</p>
<p style="margin-bottom:0;">“Doesn&#8217;t the thought that everything we&#8217;ve made is built upon this tiny pebble of the human impetus shock you?”, Johr continued. “Free Will. That&#8217;s what makes us get up every morning. For centuries, man has chose to get up, and to do something. But today? Today, what&#8217;s left to choose? Three hundred and twenty seven varieties of coffee, seventeen hundred flavours of chocolate, some obscene number of lipstick colors and flavours, and one button to start a factory at full capacity. And one more button to stop it. We&#8217;ve made our choice.”</p>
<p style="margin-bottom:0;">And on quite theatrical cue, the overhead trams stopped. The faint hum of the factories stopped. All that could be heard was the sound of the pleasant breeze directed by the dull aerodynamic buildings. And the soft sounds of breathing.</p>
<p style="margin-bottom:0;">“We&#8217;ve hit the reset button, dear Diana. I love you, I truly do, but you can never love me. Love is irrational. We as humans are irrational. We make the world only to break it again. Perhaps we are caught in this loop of artificial life. Perhaps it is we not you who are truly artificial. Perhaps we are the ones bound by Free Will, not freed by it. Perhaps.”</p>
<p style="margin-bottom:0;">With a tear in his eye, he hugged Diana, and flipped the power switch carefully nestled behind her right ear.</p>
<p>&#8212;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/arunchaganty.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/arunchaganty.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/arunchaganty.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/arunchaganty.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/arunchaganty.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/arunchaganty.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/arunchaganty.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/arunchaganty.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/arunchaganty.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/arunchaganty.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/arunchaganty.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/arunchaganty.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/arunchaganty.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/arunchaganty.wordpress.com/75/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=arunchaganty.wordpress.com&amp;blog=3070899&amp;post=75&amp;subd=arunchaganty&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://arunchaganty.wordpress.com/2008/10/01/big-red-button/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/53e94a4ce49581430189caf0d7beacfb?s=96&#38;d=monsterid" medium="image">
			<media:title type="html">arunchaganty</media:title>
		</media:content>
	</item>
		<item>
		<title>Saying Hi to Guido</title>
		<link>http://arunchaganty.wordpress.com/2008/09/13/saying-hi-to-guido/</link>
		<comments>http://arunchaganty.wordpress.com/2008/09/13/saying-hi-to-guido/#comments</comments>
		<pubDate>Sat, 13 Sep 2008 12:09:16 +0000</pubDate>
		<dc:creator>arunchaganty</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[shaastra]]></category>

		<guid isPermaLink="false">http://arunchaganty.wordpress.com/?p=66</guid>
		<description><![CDATA[Sure, it isn&#8217;t the most awe-inspiring of events, but then again you don&#8217;t get to talk to the Guido everyday. Besides which, a considerable amount of effort and FOSS pimpage went into this. The Guido, i.e. Guido van Rossum, will be doing a video conference (VC) at our annual techfest (Shaastra) this year. Because of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=arunchaganty.wordpress.com&amp;blog=3070899&amp;post=66&amp;subd=arunchaganty&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Sure, it isn&#8217;t the most awe-inspiring of events, but then again you don&#8217;t get to talk to <strong>the</strong> Guido everyday. Besides which, a considerable amount of effort and FOSS pimpage went into this.<br />
<span id="more-66"></span><br />
<strong>The</strong> Guido, i.e. <a href="http://www.python.org/~guido/">Guido van Rossum</a>, will be doing a video conference (VC) at our annual techfest (<a href="http:/www.shaastra.org">Shaastra</a>) this year. Because of certain scheduling issues, Guido will be doing the talk from home, using his Mac&#8217;s webcam. Our &#8220;VC&#8221; team has never ever held talks with anyone not using one of those super expensive VC equipments that all colleges and big companies own, so it was upto us to figure out how the heck to get it to work.<img class="alignright" title="Guido van Rossum" src="http://www.python.org/~guido/images/IMG_2192.jpg" alt="" width="166" height="250" /></p>
<p>It was a trivial enough of a task. I found out which protocol the VC equipment we have (it&#8217;s a Aethra VegaStar) uses; H.323. Then came the task of finding something that supported the protocol. Pre-assuming that the Linux solution sucks (which is obviously a huge error), we tried getting some software (for free) on Windows that supports the protocol. What do you know, none exists (and more over, NetMeeting <em>used</em> to have it, though it no longer does).</p>
<p>Ditch Windows, fire up Linux on my friend&#8217;s (S.V. Vikram) computer.  Unfortunately it  was running KDE and apparently they don&#8217;t have any video conferencing software supporting H.323.  Poking a KDE friend (Akarsh Simha), I got the reply: &#8220;GNOME is for n00bs&#8221;. The only inference I can gather is that in the <em><strong>real</strong></em> world, you reconstruct videos from tcpdump. In your head.</p>
<p>Being the n00b I was, I decided to take the easier route, ssh into my system, install ekiga, and run it (using X11 forwarding). Voila, it works, Shaastra is half saved. Enter the Mac side of things. A friend of mine owns a MacBook (and has been trying to sell Apple to me ever since), and we tried to start a video chat of our own. He starts iChat. What do you know, it doesn&#8217;t support H.323. Enter XMeeting, a Free solution. Works brilliantly. (It feels so good that I could *only* get this working using Free software).</p>
<p>This was a few weeks ago. We arranged a dry run with Guido last Friday (12th September), early in the morning here (Chennai, India). We get to the conference room which has a dedicated IP, and brilliant bandwidth (300Kb/s downloads anyone?).  Akarsh has Guido on his GTalk list, and we start to talk him through this. Unfortunately he&#8217;s under a firewall, glorious FAIL (we tried to use a STUN server, which also failed). He drops his firewall completely, but still no go. After lots of calls to our network administrators (who are on holiday), we reluctantly give up and decide to just use Skype. 2 minutes later, we are logged on to Vikram&#8217;s Skype account, and I am saying &#8220;Hi!&#8221; to Guido. Brief para-phrased excerpt of our conversation:</p>
<blockquote><p><strong>Me:</strong> Hello!<br />
<strong>Guido:</strong> Ah hello. Great. It works.<br />
(somebody knocks on Guido&#8217;s door)<br />
<strong>Guido:</strong> A second, my son is calling.<br />
(muffled)<br />
<strong>Orlijn (Guido&#8217;s son):</strong> Daddy, who are you talking to?<br />
<strong>Guido:</strong> Some guys from India. You want to say hi?<br />
<strong>Me (with a *huge* grin):</strong> Hi!!!<br />
<strong>Orlijn (slightly confuzzled):</strong> Hello<br />
<strong>Me:</strong> What&#8217;s your name?<br />
<strong>Orlijn:</strong> (something that sounds like Orelyn)<br />
<strong>Guido:</strong> Ok, now you have to go to bed.<br />
(Orijn leaves)<br />
<strong>Guido:</strong> So let&#8217;s try this with the firewall, because I&#8217;m a sitting duck right<br />
now<br />
<strong>Me:</strong> Ok.<br />
(still working)<br />
<strong>Guido:</strong> Great, so I&#8217;ll see you on the 4th then?<br />
<strong>Me (confused about the date):</strong> A second let me check. Yup<br />
<strong>Guido:</strong> Ok, bye<br />
<strong>Me:</strong> Good night!<br />
<strong>Guido:</strong> See ya</p></blockquote>
<p>Guido has seen every part of our team. One guy (Sanjeev) writes all the mails, one owning the GTalk account (Akarsh Simha), one owning the Skype account (S.V. Vikram), and finally one on the screen (Me <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ).</p>
<p><em>Without sounding too cheesy, I&#8217;d like to invite all FOSS-enthusiasts and hackers to Shaastra. We have a <a href="http://www.shaastra.org/2008/Events/FOSSConference">couple of good talks</a>, a <a href="http://www.shaastra.org/2008/Events/Hackfest">HackFest</a>, and infinite coffee (for hackers only).</em></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/arunchaganty.wordpress.com/66/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/arunchaganty.wordpress.com/66/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/arunchaganty.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/arunchaganty.wordpress.com/66/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/arunchaganty.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/arunchaganty.wordpress.com/66/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/arunchaganty.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/arunchaganty.wordpress.com/66/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/arunchaganty.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/arunchaganty.wordpress.com/66/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/arunchaganty.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/arunchaganty.wordpress.com/66/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/arunchaganty.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/arunchaganty.wordpress.com/66/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/arunchaganty.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/arunchaganty.wordpress.com/66/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=arunchaganty.wordpress.com&amp;blog=3070899&amp;post=66&amp;subd=arunchaganty&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://arunchaganty.wordpress.com/2008/09/13/saying-hi-to-guido/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/53e94a4ce49581430189caf0d7beacfb?s=96&#38;d=monsterid" medium="image">
			<media:title type="html">arunchaganty</media:title>
		</media:content>

		<media:content url="http://www.python.org/~guido/images/IMG_2192.jpg" medium="image">
			<media:title type="html">Guido van Rossum</media:title>
		</media:content>
	</item>
		<item>
		<title>Vimjuta 0.1 Released</title>
		<link>http://arunchaganty.wordpress.com/2008/08/18/vimjuta-01-released/</link>
		<comments>http://arunchaganty.wordpress.com/2008/08/18/vimjuta-01-released/#comments</comments>
		<pubDate>Mon, 18 Aug 2008 11:34:32 +0000</pubDate>
		<dc:creator>arunchaganty</dc:creator>
				<category><![CDATA[gsoc]]></category>
		<category><![CDATA[technical]]></category>
		<category><![CDATA[anjuta]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://arunchaganty.wordpress.com/?p=59</guid>
		<description><![CDATA[Vimjuta 0.1 &#8220;Take me to your leader&#8221; has released. Hurrah! Download Here Features: Tags / Symbols Viewer Debugger Support Stability! Known Bugs: You can&#8217;t run more than 1 session at a given time. This is because I&#8217;ve been using a DBus session bus instead of creating a peer-to-peer connection. In case the program doesn&#8217;t work, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=arunchaganty.wordpress.com&amp;blog=3070899&amp;post=59&amp;subd=arunchaganty&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Vimjuta 0.1 &#8220;Take me to your leader&#8221; has released. Hurrah!</p>
<p><strong><a href="http://anjuta-gvim.googlecode.com/files/anjuta-gvim-0.1.tar.gz">Download Here</a></strong></p>
<p><em>Features:</em></p>
<ul>
<li>Tags / Symbols Viewer</li>
<li>Debugger Support</li>
<li>Stability!</li>
</ul>
<p><em>Known Bugs:</em></p>
<ul>
<li> You can&#8217;t run more than 1 session at a given time. This is because I&#8217;ve been using a DBus session bus instead of creating a peer-to-peer connection. In case the program doesn&#8217;t work, kill any ghost gvim processes you have running.</li>
</ul>
<p><em>Missing Features:</em></p>
<ul>
<li> AutoComplete: AutoComplete should *technically* work, but I haven&#8217;t been able to get it it to work even with the existing editors.</li>
<li>Search / Selections : The current implementation is a bit buggy, so I&#8217;ve commented out the support. At any rate, vim&#8217;s search is infinitely better.</li>
</ul>
<p><strong>Boring Screencast (Redoux!):</strong></p>
<span style="text-align:center; display: block;"><a href="http://arunchaganty.wordpress.com/2008/08/18/vimjuta-01-released/"><img src="http://img.youtube.com/vi/x9mbitQjPy4/2.jpg" alt="" /></a></span>
<p>I finally managed to get a screencast. I&#8217;m still not sure what the problem was, but it isn&#8217;t recurrent, so I&#8217;m scared. It looks like I have some bugs to fix, sigh. The video shows a Symbol Browser (actually the plugin is called the Symbol Database. It&#8217;s some new and awesome SVN dope) and debugging working. At some point in the video, the program counter disappears. I don&#8217;t know why this is, but I have found that Anjuta makes a lot of duplicated Mark/Unmark calls which do sometimes overlap. The bug will be fixed shortly.</p>
<p><em>Installation Instructions:</em><br />
Unfortunately, the installation process for Vimjuta is a bit of a pain. Until Anjuta releases 2.6 (which will feature James&#8217; Git Plugin), my patches will not be included upstream.</p>
<p>You can always grab the latest version from SVN, and the release is r50. I&#8217;ve also hosted a tarball. To use the plugin, you need to have anjuta-svn (which you should get anyway due to sheer awesomeness). Copy the editor-multiple.diff and accels.diff to anjuta/, patch anjuta. Build, and install anjuta, and finally, build and install anjuta-gvim/. Further instructions can be found in the INSTALL folder.</p>
<p>The plugin on first run will install some configuration files at .config/anjuta/gvim/, namely, anjuta.vimrc (to make vim usable), and a &#8220;locked_keys&#8221; file which contains some keybindings that should never be remapped by anjuta (for example &lt;C-n&gt; or &lt;C-w&gt;).</p>
<p>Also, to have any fun with the plugin (or vim in general), install the awesome MiniBufExplorer (VimScript #159:</p>
<p>http://vim.sourceforge.net/scripts/script.php?script_id=159).</p>
<p><em>Ramblings:</em><br />
The past couple of weeks have been crazy. From closing bugs just minutes before the GSoC India meet, to being pulled into doing a ton of work for our college&#8217;s Golden Jubliee year, and finally fending off people who want me to do their bidding. But it&#8217;s there. Vim has assimilated Anjuta, and it&#8217;s only due time before Vim takes over the rest of the world.</p>
<p>I pushed out the &#8220;offical&#8221; release at approximately 11:59 p.m on Friday, which qualifies this release as an &#8220;Independence Day&#8221; special, and makes me an inch closer to James Bond. There have been so many changes between the last time I blogged about it and now, I hardly know where to begin.</p>
<p>Currently, the keybindings for vim and anjuta mush into each other a lot. The problem is that I need some Anjuta keybindings (like debugger support), and vim keybindings basically take the whole keyboard. A slightly hackish solution I&#8217;ve come up with was to unload all of anjuta&#8217;s accelerators, and then load another set especially for &#8220;Vimjuta&#8221;, and lock some special keys like &lt;C-n&gt; or &lt;C-w&gt; which was previously getting overwritten. This solution works by and large, but it&#8217;s an unstable solution, as other plugins can overwrite the key-mappings.</p>
<p>Another problem I faced previously was updating the embedded Vim window. From what I managed to gather, GtkSockets don&#8217;t emit signals, nor can you invalidate their rectangles. So when I moved the cursor remotely using DBus, it would not update on the screen, until I sent it some form of event (generally by scrolling the mouse). The vim &#8211;remote functions seemed to work, and I deduce the reason being that it updates a &#8220;window property&#8221; (part of the X11 ICCCM protocol). At this point, I&#8217;d like to thank Guido Von Rossum for Python, and Ali Ashafar for PIDA. I managed to find out how to set Vim&#8217;s properties properly. Now the symbol database and browser work properly.I have noticed how ready vim is for an IDE. It has over the years accumulated an quite a few IDE specific features, like inserting marks (useful for debugger support), remote file editing, etc. This of course made my life much easier. I also realized that I was wasting a lot of time on really unnecessary gui-fications of vim features (like search) instead of features like Debugger Support that vimmr&#8217;s really need. All I had to do was keep track of my debugger marks, and that was enough to bring Debugger support.</p>
<p>I hope that everyone likes the plugin, and I&#8217;d love to hear feedback.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/arunchaganty.wordpress.com/59/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/arunchaganty.wordpress.com/59/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/arunchaganty.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/arunchaganty.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/arunchaganty.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/arunchaganty.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/arunchaganty.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/arunchaganty.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/arunchaganty.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/arunchaganty.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/arunchaganty.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/arunchaganty.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/arunchaganty.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/arunchaganty.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/arunchaganty.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/arunchaganty.wordpress.com/59/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=arunchaganty.wordpress.com&amp;blog=3070899&amp;post=59&amp;subd=arunchaganty&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://arunchaganty.wordpress.com/2008/08/18/vimjuta-01-released/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/53e94a4ce49581430189caf0d7beacfb?s=96&#38;d=monsterid" medium="image">
			<media:title type="html">arunchaganty</media:title>
		</media:content>
	</item>
		<item>
		<title>Blackout</title>
		<link>http://arunchaganty.wordpress.com/2008/07/14/blackout/</link>
		<comments>http://arunchaganty.wordpress.com/2008/07/14/blackout/#comments</comments>
		<pubDate>Mon, 14 Jul 2008 20:01:59 +0000</pubDate>
		<dc:creator>arunchaganty</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[poetry]]></category>
		<category><![CDATA[night]]></category>
		<category><![CDATA[random]]></category>

		<guid isPermaLink="false">http://arunchaganty.wordpress.com/?p=55</guid>
		<description><![CDATA[(Dedicated to Kavitha, who has kept on poking me to write a non-technical post) Perched at queer angle upon your faithful chair. Working away through the wee hours of the night. Pumped by the loud stereo music, air guitaring as you see fit. Taking the lights and sounds for granted. Blackout. You hear the faint [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=arunchaganty.wordpress.com&amp;blog=3070899&amp;post=55&amp;subd=arunchaganty&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong> </strong><em>(Dedicated to Kavitha, who has kept on poking me to write a non-technical post)</em></p>
<p>Perched at queer angle upon your faithful chair.<br />
Working away through the wee hours of the night.<br />
Pumped by the loud stereo music, air guitaring as you see fit.<br />
Taking the lights and sounds for granted.</p>
<p>Blackout.</p>
<p>You hear the faint pitter-patter of the rain.<br />
The hurr of the machine world fades away.<br />
Sounds taken for granted, the background buzz of your life.<br />
The lonely night greets you to partake in its silence.</p>
<p>You can&#8217;t make a sound. You can&#8217;t strike a match.<br />
You can&#8217;t ruin the night.</p>
<p>The window opens, smell the freshness of a rainy night.<br />
That wonderful dusty odour tingles your senses.<br />
You hear that odd dog bark.<br />
You hear that odd truck slosh somewhere in the abyss.<br />
Silence.</p>
<p>You can&#8217;t make a sound. You can&#8217;t strike a match.<br />
You can&#8217;t ruin the night.</p>
<p>Thoughts flow unbidden into your head.<br />
You can&#8217;t filter them, you can&#8217;t categorize them.<br />
Mentally, you stand back and watch the chaos of your mind.<br />
occupy this new found vaccum.</p>
<p>You can&#8217;t make a sound. You can&#8217;t strike a match.<br />
You can&#8217;t ruin the night.</p>
<p>The hurr begins again, the lights flash back on.<br />
You are blinded by the light.<br />
The sounds hit you from every side, obtrusive and repulsive.<br />
The night is dead. Long live the night.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/arunchaganty.wordpress.com/55/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/arunchaganty.wordpress.com/55/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/arunchaganty.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/arunchaganty.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/arunchaganty.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/arunchaganty.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/arunchaganty.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/arunchaganty.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/arunchaganty.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/arunchaganty.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/arunchaganty.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/arunchaganty.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/arunchaganty.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/arunchaganty.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/arunchaganty.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/arunchaganty.wordpress.com/55/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=arunchaganty.wordpress.com&amp;blog=3070899&amp;post=55&amp;subd=arunchaganty&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://arunchaganty.wordpress.com/2008/07/14/blackout/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/53e94a4ce49581430189caf0d7beacfb?s=96&#38;d=monsterid" medium="image">
			<media:title type="html">arunchaganty</media:title>
		</media:content>
	</item>
		<item>
		<title>anjuta-gvim Preview</title>
		<link>http://arunchaganty.wordpress.com/2008/07/11/anjuta-gvim-preview/</link>
		<comments>http://arunchaganty.wordpress.com/2008/07/11/anjuta-gvim-preview/#comments</comments>
		<pubDate>Fri, 11 Jul 2008 08:00:19 +0000</pubDate>
		<dc:creator>arunchaganty</dc:creator>
				<category><![CDATA[gsoc]]></category>
		<category><![CDATA[technical]]></category>
		<category><![CDATA[anjuta]]></category>
		<category><![CDATA[gvim]]></category>
		<category><![CDATA[screencast]]></category>

		<guid isPermaLink="false">http://arunchaganty.wordpress.com/?p=54</guid>
		<description><![CDATA[I closed some big bad bugs yesterday, and managed to get a whole workflow (open a bunch of files, edit, save, close) working without any glitchy-ness. Most of the time. And while I&#8217;m no where near the quality required to ship this plugin, it feels great all the same. A phenomenally boring Youtube screencast: There&#8217;s [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=arunchaganty.wordpress.com&amp;blog=3070899&amp;post=54&amp;subd=arunchaganty&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I closed some big bad bugs yesterday, and managed to get a whole workflow (open a bunch of files, edit, save, close) working without any glitchy-ness. Most of the time. And while I&#8217;m no where near the quality required to ship this plugin, it feels great all the same.</p>
<p>A phenomenally boring <a href="http://www.youtube.com/watch?v=SXblwXN1duc">Youtube screencast</a>:</p>
<span style="text-align:center; display: block;"><a href="http://arunchaganty.wordpress.com/2008/07/11/anjuta-gvim-preview/"><img src="http://img.youtube.com/vi/SXblwXN1duc/2.jpg" alt="" /></a></span>
<p><span id="more-54"></span></p>
<p>There&#8217;s a very apparent bug in the video; it doesn&#8217;t change pages when the option is document is chosen from the Documents menu. I&#8217;ve already fixed it.</p>
<p>If you liked this plugin, well, unfortunately you&#8217;ll have to wait a while. There is a considerable amount of code required to be reviewed and there&#8217;s bound to be a lot of back and forth activity between Johannes and me. Hopefully, we can start the review process once Johannes gets back from GUADEC. If you absolutely can&#8217;t wait, I do have the patches required for the anjuta svn tree in my <a href="http://code.google.com/p/anjuta-gvim/source/checkout">svn repo</a>. The instructions are in the INSTALL file.</p>
<p>Getting this to work was quite a hassle because of the odd quirks of some Vim plugins. While a vanilla vim works fine (so far&#8230;), a vanilla vim is boring (not to mention not worth using). The objective of this project is to give you all the power of Vim + all the power of Anjuta, with as few compromises as possible.</p>
<p>One of the more frustrating issues I faced was with a plugin called MiniBufExploerer. MiniBufExplorer is a fantastic plugin that lets you look at all open documents at once, and at cycle through them with ease. I&#8217;d ideally like to package this with the Vim plugin, but I have to discuss those issues with Johannes first.</p>
<p>For some crazy reason, MiniBufExplorer (MBE) when opened with a single file gets into a position where the contents of the file are displayed<em> </em>with <em>MBE&#8217;s</em> buffer number. So lets say I have a file foo.c open (as buffer 2), and MBE occupies buffer 3. foo.c is a normal file (it&#8217;s &#8216;buftype&#8217; is empty), but MBE has a buftype of &#8216;nofile&#8217;. Now if I open another file bar.c (now MBE is displayed) and close it (MBE goes away), it opens foo.c <em>as</em> MBE, i.e. it&#8217;s buffer no. is 3 and buftype is &#8216;nofile&#8217;. Utter nonsense. The only work around I found for this was to set the MBE option: g:MiniBufExplorerMoreThanOne=1, which always keeps the MBE open.</p>
<p>I&#8217;m really worried with what other plugins might do. Making this plugin robust looks like a very daunting task. Any tips?</p>
<p>P.S. The glade file shown is the Maemo version of Dasher. The only reason I opened it was that it was in my recent documents list.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/arunchaganty.wordpress.com/54/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/arunchaganty.wordpress.com/54/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/arunchaganty.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/arunchaganty.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/arunchaganty.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/arunchaganty.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/arunchaganty.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/arunchaganty.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/arunchaganty.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/arunchaganty.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/arunchaganty.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/arunchaganty.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/arunchaganty.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/arunchaganty.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/arunchaganty.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/arunchaganty.wordpress.com/54/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=arunchaganty.wordpress.com&amp;blog=3070899&amp;post=54&amp;subd=arunchaganty&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://arunchaganty.wordpress.com/2008/07/11/anjuta-gvim-preview/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/53e94a4ce49581430189caf0d7beacfb?s=96&#38;d=monsterid" medium="image">
			<media:title type="html">arunchaganty</media:title>
		</media:content>
	</item>
		<item>
		<title>QuickSort</title>
		<link>http://arunchaganty.wordpress.com/2008/07/06/quicksort/</link>
		<comments>http://arunchaganty.wordpress.com/2008/07/06/quicksort/#comments</comments>
		<pubDate>Sun, 06 Jul 2008 10:13:38 +0000</pubDate>
		<dc:creator>arunchaganty</dc:creator>
				<category><![CDATA[technical]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[algorithms]]></category>
		<category><![CDATA[code]]></category>

		<guid isPermaLink="false">http://arunchaganty.wordpress.com/?p=52</guid>
		<description><![CDATA[QuickSort. It&#8217;s widely accepted as the fastest generic sorting algorithm around. It&#8217;s also very simple. A comment in the last article showed me this Haskell beauty: qsort [] = [] qsort (x:xs) = qsort (filter (&#60; x) xs) ++ [x] ++ qsort (filter (&#62;= x) xs) While my C implementations aren&#8217;t any where as beautiful, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=arunchaganty.wordpress.com&amp;blog=3070899&amp;post=52&amp;subd=arunchaganty&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>QuickSort. It&#8217;s <a href="http://xkcd.com/about/">widely accepted</a> as the fastest generic sorting algorithm around. It&#8217;s also very simple. A comment in the last article showed me this <a href="http://www.haskell.org/haskellwiki/Introduction#Quicksort_in_Haskell">Haskell beauty</a>:</p>
<pre>qsort <span style="color:black;">[</span><span style="color:black;">]</span>     = <span style="color:black;">[</span><span style="color:black;">]</span>
qsort <span style="color:black;">(</span>x:xs<span style="color:black;">)</span> = qsort <span style="color:black;">(</span><a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:filter"><span style="color:#006600;">filter</span></a> <span style="color:black;">(</span><span style="color:#006600;">&lt;</span> x<span style="color:black;">)</span> xs<span style="color:black;">)</span> <a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:."><span style="color:#006600;">++</span></a> <span style="color:black;">[</span>x<span style="color:black;">]</span> <a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:."><span style="color:#006600;">++</span></a> qsort <span style="color:black;">(</span><a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:filter"><span style="color:#006600;">filter</span></a> <span style="color:black;">(</span><a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:&gt;="><span style="color:#006600;">&gt;=</span></a> x<span style="color:black;">)</span> xs<span style="color:black;">)</span></pre>
<p>While my C implementations aren&#8217;t any where as beautiful, I&#8217;m quite satified with their efficiencies. I&#8217;ll keep the code to a minimum, and the let the graphs do the talking.</p>
<p><span id="more-52"></span></p>
<p>Introduction</p>
<p>The <a href="http://en.wikipedia.org/wiki/Quick_sort">quicksort</a> is kinda like the <a href="http://en.wikipedia.org/wiki/Heapsort">heapsort</a>, only not as strong (thus not as reliable). It is generally always  recursive, and basically consists of 2 steps (Divide and Conquer):</p>
<p>Conquer: Randomly choose an element x in the sorting set X. Seperate the set into two segments consisting of those lesser than and greater than x, X.1 and X.2</p>
<p>X = [4,7,2,6,89,3,5,7,12], x = 7</p>
<p>X.1 = [4,2,6,3,5]  X.2 = [7,89,12]</p>
<p>Divide: Do the same for X.1 and X.2</p>
<p>This will terminate when the size of X.1 and X.2 become less than 2.</p>
<p>A reasonable implementation of this can save on space in comparison with the mergesort (O(n)), with O(1) overhead. Interestingly, this algorithm does not guarantee O(nlog(n)) time; it has a worst running time of O(n^2), no better than Insertion Sort. It just happens that the <em>average</em> running time is O(nlog(n)), with much better coefficients than any other sort (actually, this is only true for comparison sorts, i.e. Heap, Merge, Binary, etc.).</p>
<p>A note, all these implementations have been run while running a normal gnome deskop, with just XChat and mocp running in the background. Let the graphs begin.</p>
<p><strong>Naive Vanilla Implementation</strong> (using a scratch buffer):</p>
<p><a href="http://chagantys.org/code/sort/quick/vaniila/quick.c">vanilla/quick.c</a></p>
<p><span style="text-decoration:underline;">Key Lines</span><br />
<code><br />
void sort (int len, int *list) {<br />
...<br />
pivot = rand()%len;<br />
...<br />
if (list[i] &lt; list[pivot])  buf[idx1++] = list[i];<br />
else buf[idx2--] = list[i];<br />
...<br />
</code></p>
<p><img class="aligncenter" src="http://chagantys.org/code/sort/quick/vanilla/quick-bezier.png" alt="Quicksort (With Bezier Filter)" /></p>
<p>Interestingly, this is not half as jumpy as merge sort, considering that merge sort was tightly asympototically bound to n*log(n) (i.e. it&#8217;ll stay to that value as you go higher and higher), and this implementation uses random numbers to generate the pivot. The performance is much worse than MergeSort (which had a worst performance of about 0.9 ms)</p>
<p><strong>Single Array Implementation</strong>:</p>
<p><a href="http://chagantys.org/code/sort/quick/single-arr/quick.c">single-arr/quick.c</a></p>
<p><span style="text-decoration:underline;">Key Lines</span><br />
<code><br />
SWAP (list[pivot], list[len-1]);<br />
...<br />
if (list[i] &lt; list[len -1]) {<br />
SWAP (list[idx], list[i]);<br />
idx++;<br />
}<br />
...<br />
SWAP (list[idx], list[len-1]);<br />
</code><br />
<img class="aligncenter" src="http://chagantys.org/code/sort/quick/single-arr/quick-bezier.png" alt="" /></p>
<p>Much better, though still a bit off the 0.9 of MergeSort. The method swaps the pivot element to the end of the list, and keeps track of the position of the last number smaller than the pivot (or actually, the position after it). And at the end of the algorithm, swaps the pivot into that location.</p>
<p><strong>Median Pivoting Implemenation</strong>:</p>
<p><a href="http://chagantys.org/code/sort/quick/median/quick.c">median/quick.c</a></p>
<p><span style="text-decoration:underline;">Key Lines</span><br />
<code><br />
pivot = (len &gt;&gt; 1);<br />
</code></p>
<p style="text-align:center;"><img class="aligncenter" src="http://chagantys.org/code/sort/quick/median/quick-bezier.png" alt="" width="640" height="480" /></p>
<p>Aha, <em>just</em> better than MergeSort. And all that just by replacing the rather heavy rand() function with a simple median (just take the middle element. len&gt;&gt;1 is equivalent to len/2. I don&#8217;t know why I used it here, compiler optimazations and all, perhaps just used to it after the nearest_pow excercise). I would never put something like that in proper code). Interesting to note the optimization difference.</p>
<p>(<em>Thanks to Ivic for pointing out an error: Earlier I had written len&gt;&gt;2</em>)</p>
<p><strong>Grouping Equal Elements Implemenation</strong>:</p>
<p><a href="http://chagantys.org/code/sort/quick/median/group-equals/quick.c">median/group-equals/quick.c</a></p>
<p><span style="text-decoration:underline;">Key Lines</span><br />
<code><br />
pivot = (len &gt;&gt; 1);<br />
</code></p>
<p style="text-align:center;"><img class="aligncenter" src="http://chagantys.org/code/sort/quick/median/group-equals/quick-bezier.png" alt="" width="640" height="480" /></p>
<p>Whoa! <em>Huge</em> improvements. This was with grouping the terms that were equal to the pivot, and excluding them from the Divide step. Notably, this makes much less difference on a random sort.</p>
<p><strong>[BEST] Insertion Sort Implemenation</strong>:</p>
<p><a href="http://chagantys.org/code/sort/quick/median/group-equals/insertion/quick.c">median/group-equals/insertion/quick.c</a></p>
<p><span style="text-decoration:underline;">Key Lines</span><br />
<code><br />
/* Insertion Sort */<br />
if (len &lt; cutoff)<br />
{<br />
for (idx = 0; idx&lt; len; idx++)<br />
{<br />
i = idx;<br />
for (tmp = idx; tmp&lt; len; tmp++) i = (list[tmp] &lt; list[i])?tmp:i;<br />
if (i == idx) continue;<br />
tmp = list[idx];<br />
list[idx] = list[i];<br />
list[i] = tmp;<br />
}<br />
return;<br />
}<br />
</code></p>
<p style="text-align:center;"><img class="aligncenter" src="http://chagantys.org/code/sort/quick/median/group-equals/insertion/quick-bezier.png" alt="" width="640" height="480" /></p>
<p>A minor incremental improvement. It just grazes 0.8 ms. It seems that QuickSort is more amenable to the insertion sort optimization than MergeSort.</p>
<p>I also have a graph for the single array implementation using the insertion sort.</p>
<p><a href="http://chagantys.org/code/sort/quick/insertion/quick.c">insertion/quick.c</a></p>
<p style="text-align:center;"><img class="aligncenter" src="http://chagantys.org/code/sort/quick/insertion/quick-bezier.png" alt="" width="640" height="480" /></p>
<p>Looks a bit chaotic, but that might be due to some freak processor usage.</p>
<p>Another set of implementations can be found at <a href="http://jeffreystedfast.blogspot.com/2007/03/quick-sort.html">Jeffery Stedfast&#8217;s place</a>. One thing he tried out was to &#8216;unrecurse&#8217; it by using a stack containing the extents of any stop (essentially, where the sub array you are sorting in one of the Divide steps begins and ends). I don&#8217;t see how this is different from what C is anyway doing, i.e. pushing the variables of a function call to a register, and then popping them later. There would be only the function call step (which is a jmp command, something that takes about 1-2 processor operations. On my machine (3.04Ghz) that would be about 3e-10 seconds). On trying to implement it, I found my implemention was probably very sucky, and was much slower than the un-modified program. However, for what it&#8217;s worth the previous implmentations (using a median) are all quite a bit faster that Stedfasts implementation (~1.04s on an array of size 5e6). According tho his post, his function is a bit faster than the glib qsort() function, and that also means mine is too <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .</p>
<p><a href="http://chagantys.org/code/sort/quick/median/unrolled/quick.c">median/unrolled/quick.c</a></p>
<p><img class="aligncenter" src="http://chagantys.org/code/sort/quick/median/unrolled/quick-bezier.png" alt="Quicksort (Using Median and Iterative Method)" /></p>
<p>Well, that&#8217;s all I have. You can of course find more graphs and the source code for all of these (and some boring modifications) at <a href="http://http://chagantys.org/code/sort/quick/">/quick/</a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/arunchaganty.wordpress.com/52/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/arunchaganty.wordpress.com/52/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/arunchaganty.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/arunchaganty.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/arunchaganty.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/arunchaganty.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/arunchaganty.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/arunchaganty.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/arunchaganty.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/arunchaganty.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/arunchaganty.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/arunchaganty.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/arunchaganty.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/arunchaganty.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/arunchaganty.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/arunchaganty.wordpress.com/52/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=arunchaganty.wordpress.com&amp;blog=3070899&amp;post=52&amp;subd=arunchaganty&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://arunchaganty.wordpress.com/2008/07/06/quicksort/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/53e94a4ce49581430189caf0d7beacfb?s=96&#38;d=monsterid" medium="image">
			<media:title type="html">arunchaganty</media:title>
		</media:content>

		<media:content url="http://chagantys.org/code/sort/quick/vanilla/quick-bezier.png" medium="image">
			<media:title type="html">Quicksort (With Bezier Filter)</media:title>
		</media:content>

		<media:content url="http://chagantys.org/code/sort/quick/single-arr/quick-bezier.png" medium="image" />

		<media:content url="http://chagantys.org/code/sort/quick/median/quick-bezier.png" medium="image" />

		<media:content url="http://chagantys.org/code/sort/quick/median/group-equals/quick-bezier.png" medium="image" />

		<media:content url="http://chagantys.org/code/sort/quick/median/group-equals/insertion/quick-bezier.png" medium="image" />

		<media:content url="http://chagantys.org/code/sort/quick/insertion/quick-bezier.png" medium="image" />

		<media:content url="http://chagantys.org/code/sort/quick/median/unrolled/quick-bezier.png" medium="image">
			<media:title type="html">Quicksort (Using Median and Iterative Method)</media:title>
		</media:content>
	</item>
	</channel>
</rss>
