<?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>Hrishikesh Barua &#124; code@deepinspace</title>
	<atom:link href="http://code.deepinspace.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://code.deepinspace.net</link>
	<description></description>
	<lastBuildDate>Wed, 25 Jan 2012 14:23:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>The operational mentality in software development</title>
		<link>http://code.deepinspace.net/2011/08/07/the-operational-mentality-in-software-development/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-operational-mentality-in-software-development</link>
		<comments>http://code.deepinspace.net/2011/08/07/the-operational-mentality-in-software-development/#comments</comments>
		<pubDate>Sun, 07 Aug 2011 13:42:34 +0000</pubDate>
		<dc:creator>hrish</dc:creator>
				<category><![CDATA[software development]]></category>
		<category><![CDATA[failure]]></category>
		<category><![CDATA[operations]]></category>

		<guid isPermaLink="false">http://code.deepinspace.net/?p=267</guid>
		<description><![CDATA[A talk by Theo Schlossnagle spurred this line of thought. The description of the talk is &#34;about the evolution of a career in web operations&#34;, but he talks more about the importance of thinking operationally by developers. In other words, he takes a different stance about the meaning of DevOps than what is prevalent. DevOps [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://velocityconf.com/velocity2011/public/schedule/detail/20406" target="_blank">A talk by Theo Schlossnagle</a> spurred this line of thought. The description of the talk is &quot;about the evolution of a career in web operations&quot;, but he talks more about the importance of thinking operationally by developers. In other words, he takes a different stance about the meaning of DevOps than what is prevalent. DevOps is usually described as increased collaboration between development and operations, with knowledge sharing between the two groups leading to better delivery.</p>
<p>&nbsp;</p>
<p>Theo Schlossnagle is of the view that developers need to take the operational view when writing code. It&#39;s a very valid point of view and something that I suspect most of us overlook.</p>
<p>&nbsp;</p>
<p>I&#39;m going to expand on what he said and share my ideas on that.</p>
<p>&nbsp;</p>
<p>Let&#39;s take the software you&#39;re writing now (assuming it&#39;s web software). Is it operable?<br />
	It probably does atleast these things</p>
<ul>
<li>Fulfills your requirements document</li>
<li>Passes your unit tests and integration tests</li>
<li>The UI is usable and responsive</li>
</ul>
<p>But is it operable? Once it&#39;s deployed, can it survive unprecedented load? Fringe cases? Subsystems going down? Third party services it depends on becoming unavailable?</p>
<p>	And present a front of graceful degradation as it does all this?</p>
<p>&nbsp;</p>
<p><strong>Selective Failure</strong></p>
<p>Most of the time, we stress systems before deployment, using load tests to simulate real world conditions. That takes care of one aspect. But most of us don&#39;t think of failures of selective systems, especially when the system is distributed and its components interact in complex ways. The latter is true of most big web applications.Handling selective subsystem failures is not purely an operations responsibility. The application has to be written keeping selective failure in mind.</p>
<p>&nbsp;</p>
<p>In the video, Theo brings up an analogy with security. Security is not a feature, but a way of thinking.</p>
<p>Sanitizing user input before putting it in a database query is not a feature.</p>
<p>Not allowing access to your internal web services is not a feature.</p>
<p>These are security restrictions you automatically think of when you develop.</p>
<p>&nbsp;</p>
<p>In the same way, operational thinking should not be a something postponed till deployment while writing code. It should be de rigueur in the design and development process.</p>
<script type="text/javascript" src="http://cdn.socialtwist.com/2008071112-2/script.js"></script><a class="st-taf" href="http://tellafriend.socialtwist.com" onclick="return false;" style="border:0;padding:0;margin:0;"><img alt="SocialTwist Tell-a-Friend" style="border:0;padding:0;margin:0;" src="http://images.socialtwist.com/2008071112-2/button.png"onmouseout="STTAFFUNC.hideHoverMap(this)" onmouseover="STTAFFUNC.showHoverMap(this, '2008071112-2', 'http%3A%2F%2Fcode.deepinspace.net%2F2011%2F08%2F07%2Fthe-operational-mentality-in-software-development%2F', 'The+operational+mentality+in+software+development')" onclick="STTAFFUNC.cw(this, {id:'2008071112-2', link: 'http%3A%2F%2Fcode.deepinspace.net%2F2011%2F08%2F07%2Fthe-operational-mentality-in-software-development%2F', title: 'The+operational+mentality+in+software+development' });"/></a>]]></content:encoded>
			<wfw:commentRss>http://code.deepinspace.net/2011/08/07/the-operational-mentality-in-software-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Some string matching</title>
		<link>http://code.deepinspace.net/2011/07/20/some-string-matching/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=some-string-matching</link>
		<comments>http://code.deepinspace.net/2011/07/20/some-string-matching/#comments</comments>
		<pubDate>Wed, 20 Jul 2011 16:52:36 +0000</pubDate>
		<dc:creator>hrish</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[levenshtein]]></category>
		<category><![CDATA[string matching]]></category>

		<guid isPermaLink="false">http://code.deepinspace.net/?p=258</guid>
		<description><![CDATA[This puzzle from Facebook&#8217;s engineering puzzles page is a good introduction to string matching. A solution is possible using an algorithm called Levenshtein distance. Let&#8217;s take the example on the puzzle page &#8211; TIHS SENTENTCNES ISS NOUT VARRRY GOUD It&#8217;s a munged up version of THIS SENTENCE IS NOT VERY GOOD The original problem statement [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.facebook.com/careers/puzzles.php?puzzle_id=17" target="_blank">This puzzle</a> from Facebook&#8217;s engineering puzzles page is a good introduction to string matching.<br />
A solution is possible using an algorithm called <a href="http://en.wikipedia.org/wiki/Levenshtein_distance" target="_blank">Levenshtein distance</a>.</p>
<p>Let&#8217;s take the example on the puzzle page &#8211; </p>
<blockquote><p>TIHS SENTENTCNES ISS NOUT VARRRY GOUD</p></blockquote>
<p>It&#8217;s a munged up version of</p>
<blockquote><p>THIS SENTENCE IS NOT VERY GOOD</p></blockquote>
<p>The original problem statement involves minimizing the score (number of changes necessary) to transform each word in the munged up sentence into words that are in a predefined <a href="http://www.facebook.com/jobs_puzzles/twl06.txt" target="_blank">wordlist</a>. It says nothing about grammatical correctness of the result.</p>
<p>So going by that, the score and the output sentence from my <a href="https://github.com/talonx/python-scribbles/blob/master/fb/breathalyzer.py" target="_blank">implementation</a> are respectively, 8 and</p>
<blockquote><p>TICS SENTENCES IDS NOT VAGARY GAUD</p></blockquote>
<p>From the standpoint of the original problem, this solution is correct.<br />
But not from a grammatical point of view. After some poking around, I realized it&#8217;s not possible for this program to spew out the correct version of the sentence without it being aware of English grammar rules. </p>
<p><strong>P.S. </strong>Without getting into grammar correction, of which I have no idea how to implement, I made a small change in the program as an experiment. The <a href="https://github.com/talonx/python-scribbles/blob/master/fb/breathalyzer2.py" target="_blank">second version</a> favours a smaller word whenever the scores for two are equal.<br />
And the result is (Score remains the same)</p>
<blockquote><p>TIS SENTENCES IS NOT VARY GOD</p></blockquote>
<script type="text/javascript" src="http://cdn.socialtwist.com/2008071112-2/script.js"></script><a class="st-taf" href="http://tellafriend.socialtwist.com" onclick="return false;" style="border:0;padding:0;margin:0;"><img alt="SocialTwist Tell-a-Friend" style="border:0;padding:0;margin:0;" src="http://images.socialtwist.com/2008071112-2/button.png"onmouseout="STTAFFUNC.hideHoverMap(this)" onmouseover="STTAFFUNC.showHoverMap(this, '2008071112-2', 'http%3A%2F%2Fcode.deepinspace.net%2F2011%2F07%2F20%2Fsome-string-matching%2F', 'Some+string+matching')" onclick="STTAFFUNC.cw(this, {id:'2008071112-2', link: 'http%3A%2F%2Fcode.deepinspace.net%2F2011%2F07%2F20%2Fsome-string-matching%2F', title: 'Some+string+matching' });"/></a>]]></content:encoded>
			<wfw:commentRss>http://code.deepinspace.net/2011/07/20/some-string-matching/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A study plan</title>
		<link>http://code.deepinspace.net/2011/04/02/a-study-plan/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=a-study-plan</link>
		<comments>http://code.deepinspace.net/2011/04/02/a-study-plan/#comments</comments>
		<pubDate>Sat, 02 Apr 2011 18:29:53 +0000</pubDate>
		<dc:creator>hrish</dc:creator>
				<category><![CDATA[learning]]></category>
		<category><![CDATA[self study]]></category>
		<category><![CDATA[statistics]]></category>

		<guid isPermaLink="false">http://code.deepinspace.net/?p=250</guid>
		<description><![CDATA[I have been formulating a self-study plan for some time now. The plan involves mostly math subjects, as I finally want it to culminate in data analysis/mining/AI/ML &#8211; which again are subjects I&#8217;ve always been interested in but never took up seriously. Looking at the experience of people who have done such a thing before, [...]]]></description>
			<content:encoded><![CDATA[<p>I have been formulating a self-study plan for some time now. The plan involves mostly math subjects, as I finally want it to culminate in data analysis/mining/AI/ML &#8211; which again are subjects I&#8217;ve always been interested in but never took up seriously. Looking at the experience of people who have done such a thing before, a solid foundation in the underlying math is absolutely essential. So, I&#8217;ve started off with statistics and probability. Having been out of touch for a long time (15 years!) with the basics of either of these, I chose to begin simply &#8211; Sheldon M Ross&#8217;s Introductory Statistics supplemented with <a href="http://www.khanacademy.org">Khan Academy</a>&#8216;s video lectures (These are perfect for brushing the dust from those rusty concepts). After finishing this I&#8217;ll aim for a book like <a href="http://www.amazon.com/Introduction-Probability-Dimitri-P-Bertsekas/dp/188652940X">Bertsekas</a> combined with MIT&#8217;s OCW lectures. </p>
<p>Have decided to put the solutions to the exercises I&#8217;m doing <a href="http://statsprob.blogspot.com/">here</a>.</p>
<script type="text/javascript" src="http://cdn.socialtwist.com/2008071112-2/script.js"></script><a class="st-taf" href="http://tellafriend.socialtwist.com" onclick="return false;" style="border:0;padding:0;margin:0;"><img alt="SocialTwist Tell-a-Friend" style="border:0;padding:0;margin:0;" src="http://images.socialtwist.com/2008071112-2/button.png"onmouseout="STTAFFUNC.hideHoverMap(this)" onmouseover="STTAFFUNC.showHoverMap(this, '2008071112-2', 'http%3A%2F%2Fcode.deepinspace.net%2F2011%2F04%2F02%2Fa-study-plan%2F', 'A+study+plan')" onclick="STTAFFUNC.cw(this, {id:'2008071112-2', link: 'http%3A%2F%2Fcode.deepinspace.net%2F2011%2F04%2F02%2Fa-study-plan%2F', title: 'A+study+plan' });"/></a>]]></content:encoded>
			<wfw:commentRss>http://code.deepinspace.net/2011/04/02/a-study-plan/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>gcc does not check out of scope names in unreachable code</title>
		<link>http://code.deepinspace.net/2011/01/29/gcc-does-not-check-out-of-scope-names-in-unreachable-code/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=gcc-does-not-check-out-of-scope-names-in-unreachable-code</link>
		<comments>http://code.deepinspace.net/2011/01/29/gcc-does-not-check-out-of-scope-names-in-unreachable-code/#comments</comments>
		<pubDate>Sat, 29 Jan 2011 18:07:03 +0000</pubDate>
		<dc:creator>hrish</dc:creator>
				<category><![CDATA[c]]></category>
		<category><![CDATA[gcc]]></category>
		<category><![CDATA[network programming]]></category>

		<guid isPermaLink="false">http://code.deepinspace.net/?p=229</guid>
		<description><![CDATA[While attempting to write a small HTTP server in C, I copied some code over from a previously written C file and immediately noticed a bug. Yes it&#8217;s a stupid beginner mistake &#8211; typing the assignment operator instead of the equals check. The thread of execution would never enter the else block. I corrected it, [...]]]></description>
			<content:encoded><![CDATA[<p>While attempting to write a small HTTP server in C, I copied some code over from a previously written C file and immediately noticed a bug.</p>
<pre class="brush: cpp; title: ; notranslate">
-- File httpd.c
#include &quot;../mynet.h&quot;

if(errno = EINTR) {
    //do something
} else {
    err_sys(&quot;read error&quot;)
}
</pre>
<p>Yes it&#8217;s a stupid beginner mistake &#8211; typing the assignment operator instead of the equals check. The thread of execution would never enter the else block. I corrected it, but the interesting part came when I tried to compile it.</p>
<pre class="brush: cpp; title: ; notranslate">
cc ../mynet.c httpd.c
</pre>
<p>mynet.c contains some handy helper functions that I&#8217;ve used in my other server classes. Guess what &#8211; the compilation failed with this message</p>
<pre class="brush: cpp; title: ; notranslate">
&quot;httpd.c:(.text+0x6a): undefined reference to `err_sys'&quot;
</pre>
<p>I checked my header and the err_sys function was nowhere to be seen. If this function is missing, how did my other class (from where I copied this code) compile previously?<br />
After some fiddling around I put the assignment operator bug back, and guess what? The code compiled fine. </p>
<p>Based on just these observations, we can conclude that the gcc C compiler ignored the unreachable (else) part of the code. It did not even check if the code inside the else block was legitimate. How far did this behaviour go? Let&#8217;s see.</p>
<pre class="brush: cpp; title: ; notranslate">
-- File httpd.c
#include &quot;../mynet.h&quot;

if(errno = EINTR) {
    //do something
} else {
    mocha(); //Undefined function
}
</pre>
<p>This compiles fine.</p>
<pre class="brush: cpp; title: ; notranslate">
-- File httpd.c
#include &quot;../mynet.h&quot;

if(errno = EINTR) {
    //do something
} else {
    asdf;
}
</pre>
<p>This correctly fails with an error.</p>
<p>So syntax checks are being done in code that is known to be unreachable, but there are no checks for undefined functions. A bug? I would say yes. Google did not turn up much except this old link &#8211; <a href="http://compgroups.net/comp.lang.c++.moderated/could-if-else-avoid-syntax-checking-compile-time-unreachable-code" target="_blank">http://compgroups.net/comp.lang.c++.moderated/could-if-else-avoid-syntax-checking-compile-time-unreachable-code</a></p>
<script type="text/javascript" src="http://cdn.socialtwist.com/2008071112-2/script.js"></script><a class="st-taf" href="http://tellafriend.socialtwist.com" onclick="return false;" style="border:0;padding:0;margin:0;"><img alt="SocialTwist Tell-a-Friend" style="border:0;padding:0;margin:0;" src="http://images.socialtwist.com/2008071112-2/button.png"onmouseout="STTAFFUNC.hideHoverMap(this)" onmouseover="STTAFFUNC.showHoverMap(this, '2008071112-2', 'http%3A%2F%2Fcode.deepinspace.net%2F2011%2F01%2F29%2Fgcc-does-not-check-out-of-scope-names-in-unreachable-code%2F', 'gcc+does+not+check+out+of+scope+names+in+unreachable+code')" onclick="STTAFFUNC.cw(this, {id:'2008071112-2', link: 'http%3A%2F%2Fcode.deepinspace.net%2F2011%2F01%2F29%2Fgcc-does-not-check-out-of-scope-names-in-unreachable-code%2F', title: 'gcc+does+not+check+out+of+scope+names+in+unreachable+code' });"/></a>]]></content:encoded>
			<wfw:commentRss>http://code.deepinspace.net/2011/01/29/gcc-does-not-check-out-of-scope-names-in-unreachable-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Working through UNP</title>
		<link>http://code.deepinspace.net/2011/01/09/working-through-unp/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=working-through-unp</link>
		<comments>http://code.deepinspace.net/2011/01/09/working-through-unp/#comments</comments>
		<pubDate>Sun, 09 Jan 2011 06:45:24 +0000</pubDate>
		<dc:creator>hrish</dc:creator>
				<category><![CDATA[c]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[network programming]]></category>

		<guid isPermaLink="false">http://code.deepinspace.net/?p=210</guid>
		<description><![CDATA[As I wrote previously, I&#8217;ve been working through Richard Stevens&#8217; Unix Network Programming (3rd Ed) Vol 1. It covers the basics of the Sockets API in UNIX and similar OSs. Unfortunately I&#8217;ve been able to devote time for this mostly on the weekends. This translates to slow progress because UNP goes into a lot of [...]]]></description>
			<content:encoded><![CDATA[<p>As I wrote <a href="http://code.deepinspace.net/2010/11/23/falling-through/" target="_blank">previously</a>, I&#8217;ve been working through Richard Stevens&#8217; Unix Network Programming (3rd Ed) Vol 1. It covers the basics of the Sockets API in UNIX and similar OSs.</p>
<p>Unfortunately I&#8217;ve been able to devote time for this mostly on the weekends. This translates to slow progress because UNP goes into a lot of depth about everything. This is a good thing, but it also means that I&#8217;ve to reread and review the last few pages everytime I try to pick up where I left off. This does not really help when I&#8217;m trying to understand concepts in depth. So what&#8217;s the solution? I&#8217;ll try to do a bit atleast 3-4 days a week from now on.</p>
<p>UNP is an amazingly detailed book &#8211; and as one of my colleagues said &#8211; &#8220;If you read that book properly, Stevens makes sure that there&#8217;s nothing left for you to know on the topic&#8221;. I agree.</p>
<p>Stevens wrote his own wrapper functions over common socket functions and used them in all the code examples in the book. The wrappers handle all error codes and portability issues (like IPv4/IPv6). These are included in a header unp.h (available in the back of the book as well as online on <a href="http://www.unpbook.com/src.html">http://www.unpbook.com/src.html</a>).</p>
<p>Some reviewers of the book gripe about this and say that this is an obstacle to learning the actual functions. But I think that there was no other way to do it without littering every example snippet with code for portability and error handling. The wrapper strategy makes it easier to follow the examples, and at the same time &#8211; as I found out &#8211; it makes you write those wrappers yourself. True, you can just include the unp.h header as you try the examples, but then you&#8217;ll never know what those functions are doing. I&#8217;ve found that creating my own header and writing the functions as I come across them, after looking at the book&#8217;s source code, works great. Most of them will end up identical to those in unp.h.</p>
<p>I&#8217;m pushing the examples I&#8217;m trying out into <a href="https://github.com/talonx/C-Scribbles/tree/master/net">github</a> &#8211; it&#8217;s a scratchpad so not everything might compile.</p>
<p>I&#8217;ve added a generic <a href="https://github.com/talonx/C-Scribbles/blob/master/net/mynet.h">startserver function</a> to my header &#8211; this takes a pointer to a function as an argument. The generic function starts a server socket (bind/listen/accept), forks a child when a client connects and calls the function that was earlier passed as an argument, abstracting out the actual serving part. The function pointer syntax was not hard to figure out &#8211; I&#8217;d read <a href="http://www.amazon.com/Expert-Programming-Peter-van-Linden/dp/0131774298">Peter van der Linden</a>&#8216;s algo on unscrambling declarations in C last week. Interesting how things add up!</p>
<script type="text/javascript" src="http://cdn.socialtwist.com/2008071112-2/script.js"></script><a class="st-taf" href="http://tellafriend.socialtwist.com" onclick="return false;" style="border:0;padding:0;margin:0;"><img alt="SocialTwist Tell-a-Friend" style="border:0;padding:0;margin:0;" src="http://images.socialtwist.com/2008071112-2/button.png"onmouseout="STTAFFUNC.hideHoverMap(this)" onmouseover="STTAFFUNC.showHoverMap(this, '2008071112-2', 'http%3A%2F%2Fcode.deepinspace.net%2F2011%2F01%2F09%2Fworking-through-unp%2F', 'Working+through+UNP')" onclick="STTAFFUNC.cw(this, {id:'2008071112-2', link: 'http%3A%2F%2Fcode.deepinspace.net%2F2011%2F01%2F09%2Fworking-through-unp%2F', title: 'Working+through+UNP' });"/></a>]]></content:encoded>
			<wfw:commentRss>http://code.deepinspace.net/2011/01/09/working-through-unp/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Falling through</title>
		<link>http://code.deepinspace.net/2010/11/23/falling-through/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=falling-through</link>
		<comments>http://code.deepinspace.net/2010/11/23/falling-through/#comments</comments>
		<pubDate>Tue, 23 Nov 2010 11:19:16 +0000</pubDate>
		<dc:creator>hrish</dc:creator>
				<category><![CDATA[c]]></category>
		<category><![CDATA[grok]]></category>
		<category><![CDATA[introspection]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://code.deepinspace.net/?p=159</guid>
		<description><![CDATA[When I was studying for my CS degree, the programming language we were taught was C. To be honest, I didn&#8217;t code much C in college &#8211; just what was necessary to scrape through the lab assignments. I did stay up one night writing Tetris in C with 2 close friends for an internal contest, [...]]]></description>
			<content:encoded><![CDATA[<p>When I was studying for my CS degree, the programming language we were taught was C. To be honest, I didn&#8217;t code much C in college &#8211; just what was necessary to scrape through the lab assignments. I did stay up one night writing Tetris in C with 2 close friends for an internal contest, but such occasions were rare. Pointers? Grokked them, but I suspect it was a very shaky understanding. For the rest of my years there, it was C for all lab projects. I didn&#8217;t dislike C, but I did find it tough for a first language. So as soon as I got a chance, I set out to do some side projects in Java (atleast I thought was writing Java). That was the end of my relationship with C, because my first (and current) job <a href="http://www.pramati.com"> post-college was and still is in a Java shop</a>.</p>
<p><br/>Fast forward 8 years. The products I&#8217;ve worked on till now have been in Java. Serverside Java, Infrastructure Java, Applications Java. An <a href="http://server.pramati.com/">appserver</a>, a <a href="http://www.dekoh.com/">desktop app</a>, a <a href="http://tellafriend.socialtwist.com/">SaaS app</a>. Abstractions, APIs, SPIs, Specifications, Javadocs, Objects talking to each other &#8211; it&#8217;s a satisfying, pleasant world if you like high level order.</p>
<p><br/>I made occasional forays into <a href="http://www.jroller.com/talonx/entry/learning_german_learning_python">Python</a> and <a href="http://code.deepinspace.net/2009/12/26/a-ruby-script-to-search-bookstores-online/">Ruby</a> for some side projects and scripting.</p>
<p></br>But lately, I&#8217;ve been wanting to code in a really low level language. Yes, like C. Let me rephrase that. I&#8217;ve been wanting to write code where I can be as close to the OS as possible, learn bit twiddling hacks, make low level system calls. I&#8217;m not sure what this desire was born out of. Maybe 8 years of Java. Maybe wanting low level control over what I was doing.<br />
<br/></p>
<p>So I&#8217;ve ploughed through K&#038;R the last couple of months. Bought Deep C Secrets. Regrokked pointers &#8211; properly, this time. Had a brief period of not knowing where to go after this, which resolved itself in the form of Unix Network Programming (Richard Stevens). I&#8217;m working through Vol 1 right now. It&#8217;s slow going at times, but I&#8217;m loving every moment. I&#8217;ve fallen through &#8211; the abstractions, the bytecode, the layers of objects &#8211; and reached the ocean floor.<br/><br />
<em>&lt;In the background, the <a href="http://en.wikipedia.org/wiki/Toccata_and_Fugue_in_D_minor,_BWV_565">Toccata ends, and the Fugue begins.</a>&gt;<br />
</em><br/></p>
<script type="text/javascript" src="http://cdn.socialtwist.com/2008071112-2/script.js"></script><a class="st-taf" href="http://tellafriend.socialtwist.com" onclick="return false;" style="border:0;padding:0;margin:0;"><img alt="SocialTwist Tell-a-Friend" style="border:0;padding:0;margin:0;" src="http://images.socialtwist.com/2008071112-2/button.png"onmouseout="STTAFFUNC.hideHoverMap(this)" onmouseover="STTAFFUNC.showHoverMap(this, '2008071112-2', 'http%3A%2F%2Fcode.deepinspace.net%2F2010%2F11%2F23%2Ffalling-through%2F', 'Falling+through')" onclick="STTAFFUNC.cw(this, {id:'2008071112-2', link: 'http%3A%2F%2Fcode.deepinspace.net%2F2010%2F11%2F23%2Ffalling-through%2F', title: 'Falling+through' });"/></a>]]></content:encoded>
			<wfw:commentRss>http://code.deepinspace.net/2010/11/23/falling-through/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Everybody&#8217;s Recommending</title>
		<link>http://code.deepinspace.net/2010/10/07/everybodys-recommending/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=everybodys-recommending</link>
		<comments>http://code.deepinspace.net/2010/10/07/everybodys-recommending/#comments</comments>
		<pubDate>Thu, 07 Oct 2010 15:35:24 +0000</pubDate>
		<dc:creator>hrish</dc:creator>
				<category><![CDATA[internet]]></category>
		<category><![CDATA[recommendation systems]]></category>

		<guid isPermaLink="false">http://code.deepinspace.net/?p=142</guid>
		<description><![CDATA[Is Google the only one who has possibly accumulated a lot of data on your online activities? Think again. Most of us use one of these - Facebook Twitter ShareThis Technorati/Digg/et al There&#8217;s a common aspect to all these networks/tools &#8211; all of them can potentially collect data about the online preferences of their users. [...]]]></description>
			<content:encoded><![CDATA[<p>Is Google the only one who has possibly accumulated a lot of data on your online activities?</p>
<p>Think again.</p>
<p>Most of us use one of these -</p>
<ol>
<li>Facebook</li>
<li>Twitter</li>
<li>ShareThis</li>
<li>Technorati/Digg/et al</li>
</ol>
<p>There&#8217;s a common aspect to all these networks/tools &#8211; all of them can potentially collect data about the online preferences of their users. So &#8211; do they? Some of them do.</p>
<p>Online preferences are links that you visit, which translates to things that you are interested in. This kind of data can be used to build up a profile of the user.<br/><br/>Think about it -</p>
<p>1.  Facebook knows what you share on facebook.com, knows what you &#8220;Like&#8221; among others&#8217; shared links, and now with OpenGraph knows what you &#8220;Like&#8221; on sites that have the Facebook Like button.</p>
<p>2.  Twitter knows what links you share, and now with t.co  &#8211; its own shortening service &#8211; it will know what links shared by others you clicked on (read &#8220;interested in&#8221;). From a <a title="http://blog.twitter.com/2010/06/links-and-twitter-length-shouldnt.html" href="http://blog.twitter.com/2010/06/links-and-twitter-length-shouldnt.html" target="_blank">Twitter blog post</a> -</p>
<p style="padding-left: 30px;">routing links through this service will eventually contribute to the metrics behind our Promoted Tweets platform and provide an important quality signal for our Resonance algorithm—the way we determine if a Tweet is relevant and interesting to users</p>
<p>3. ShareThis &#8211; if you&#8217;re logged into ShareThis, it knows what you shared.<br />
<br/>Links you share and visit provide a picture, albeit incomplete, of your online preferences.<br/><br />
The question is, how are these tools and services planning to use this data?</p>
<p>If you know what someone likes, you can recommend stuff to that person. A lot of sites do this already. These recommendations are based on multiple parameters. E.g. <a title="http://www.cs.umd.edu/~samir/498/Amazon-Recommendations.pdf" href="http://www.cs.umd.edu/~samir/498/Amazon-Recommendations.pdf" target="_blank">Amazon&#8217;s recommendation system</a> &#8211; which does a great job &#8211; uses collaborative filtering. Simply put, it uses data from your past purchases, ratings and I-Own-This history and from other users whose history is similar to yours. The more history you have on Amazon, the better your recommendations get.</p>
<p>Building a content recommendation system seems to be an obvious step once you have a data mountain of your users&#8217; likes. And this is what these sites seem to be doing but to achieve different ends.<br/><br />
E.g. Facebook &#8211; See slide #29 <a title="http://www.slideshare.net/CMSummit/ms-internet-trends060710final" href="http://www.slideshare.net/CMSummit/ms-internet-trends060710final" target="_blank">http://www.slideshare.net/CMSummit/ms-internet-trends060710final</a>. This has not happened yet, but what&#8217;s  stopping it, considering what <a title="http://www.readwriteweb.com/archives/facebooks_zuckerberg_says_the_age_of_privacy_is_ov.php" href="http://www.readwriteweb.com/archives/facebooks_zuckerberg_says_the_age_of_privacy_is_ov.php" target="_blank">Mark Zuckerberg said earlier this year</a> ?</p>
<p>Twitter has recommendation plans &#8211; <a title="http://groups.google.com/group/twitter-development-talk/browse_thread/thread/14d5474c13ed84aa?pli=1" href="http://groups.google.com/group/twitter-development-talk/browse_thread/thread/14d5474c13ed84aa?pli=1" target="_blank">http://groups.google.com/group/twitter-development-talk/browse_thread/thread/14d5474c13ed84aa?pli=1</a></p>
<p>ShareThis <a title="http://blog.sharethis.com/2010/04/20/influencers-engage-mederma/" href="http://blog.sharethis.com/2010/04/20/influencers-engage-mederma/" target="_blank">already has behavioural advertising in the works</a> with its segmentation technology.</p>
<p>The bottom line is &#8211; some of these services are going to use it to improve the end user&#8217;s experience &#8211; and will do so within the boundaries of their privacy policies. The rest &#8211; we don&#8217;t know.</p>
<script type="text/javascript" src="http://cdn.socialtwist.com/2008071112-2/script.js"></script><a class="st-taf" href="http://tellafriend.socialtwist.com" onclick="return false;" style="border:0;padding:0;margin:0;"><img alt="SocialTwist Tell-a-Friend" style="border:0;padding:0;margin:0;" src="http://images.socialtwist.com/2008071112-2/button.png"onmouseout="STTAFFUNC.hideHoverMap(this)" onmouseover="STTAFFUNC.showHoverMap(this, '2008071112-2', 'http%3A%2F%2Fcode.deepinspace.net%2F2010%2F10%2F07%2Feverybodys-recommending%2F', 'Everybody%26%238217%3Bs+Recommending')" onclick="STTAFFUNC.cw(this, {id:'2008071112-2', link: 'http%3A%2F%2Fcode.deepinspace.net%2F2010%2F10%2F07%2Feverybodys-recommending%2F', title: 'Everybody%26%238217%3Bs+Recommending' });"/></a>]]></content:encoded>
			<wfw:commentRss>http://code.deepinspace.net/2010/10/07/everybodys-recommending/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instance Initializers in Java</title>
		<link>http://code.deepinspace.net/2010/05/22/instance-initializers-in-java/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=instance-initializers-in-java</link>
		<comments>http://code.deepinspace.net/2010/05/22/instance-initializers-in-java/#comments</comments>
		<pubDate>Sat, 22 May 2010 16:27:11 +0000</pubDate>
		<dc:creator>hrish</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://code.deepinspace.net/?p=101</guid>
		<description><![CDATA[Take a look at this simple code Code Snippet 1 What do you think the output is? It&#8217;s this - In the beginning was the command line Created an instance The &#8216;hanging&#8217; braces at the start of the class definition are instance initializers. Most of us are more familiar with static initializers - Code Snippet [...]]]></description>
			<content:encoded><![CDATA[<p>Take a look at this simple code</p>
<p><span style="color: #0000ff;">Code Snippet 1</span></p>
<pre class="brush: java; title: ; notranslate">
public class Init {
    {
        System.out.println(&quot;In the beginning was the command line&quot;);
    }

    public Init()
    {
        System.out.println(&amp;quot;Created an instance&amp;quot;);
    }

    public static void main(String[] args)
    {
        Init init = new Init();
    }
}
</pre>
<p>What do you think the output is? It&#8217;s this -</p>
<pre>    In the beginning was the command line
    Created an instance
</pre>
<p>The &#8216;hanging&#8217; braces at the start of the class definition are instance initializers. Most of us are more familiar with static initializers -</p>
<p><span style="color: #0000ff;">Code Snippet 2</span></p>
<pre class="brush: java; title: ; notranslate">
static
{
    //Do stuff
}
</pre>
<p>Instance initializers (II) are not seen often in everyday Java code &#8211; so they might seem odd at first. They are executed every time an instance of that class is created, before the statements in the constructor are executed. (See <em>The Java Language Specification 3 </em>section 8.6).</p>
<p>One use of IIs can be to execute something whenever an instance is created, and the class has multiple constructors, without calling it in every single constructor.<br />
Another one which has become popular is populating collections during declaration, in the style of Ruby or Python single-line initializers -</p>
<p><span style="color: #0000ff;">Code Snippet 3</span></p>
<pre class="brush: java; title: ; notranslate">
private Set&lt;String&gt; names = new HashSet&lt;String&gt;() {
    {
        add(&quot;Rigel&quot;);
        add(&quot;Vega&quot;);
        add(&quot;Antares&quot;);
    }
};
</pre>
<p>This idiom was how I encountered IIs first while reading somebody&#8217;s blog.<br />
What is actually happening here?</p>
<ol>
<li>An anonymous inner class is created.</li>
<li>An instance initializer block is added to the anon inner class.</li>
<li>Objects are added to the instance of that class when the names variable is initialized.</li>
</ol>
<p>Now take this scenario<br />
<span style="color: #0000ff;">Code Snippet 4</span></p>
<pre class="brush: java; title: ; notranslate">
public class WrongUsage {

    private Set&lt;String&gt; names;

    {
        add(&quot;pleiades&quot;);
    }

    public void WrongUsage()
    {
        names = new HashSet&lt;String&gt;();
    }

    public void add(String name)
    {
        names.add(name);
    }
}
</pre>
<p>Based on what we have seen above, the names set is used before it&#8217;s initialized. So this throws a NullPointerException.<br />
Let&#8217;s take another case &#8211; similar to the above but involving inheritance.</p>
<p><span style="color: #0000ff;">Code Snippet 5</span></p>
<pre class="brush: java; title: ; notranslate">
public class MyHashSet extends HashSet {
    {
        add(&quot;pleiades&quot;);
        System.out.println(&quot;Added&quot;);
    }

    public MyHashSet()
    {
        super();
        System.out.println(&quot;After calling super&quot;);
    }

    public static void main(String[] args)
    {
        Set set = new MyHashSet();
    }
}
</pre>
<p>This runs, with the output being</p>
<pre>    Added
    After calling super
</pre>
<p>In this case, add() internally uses the inner HashMap inside HashSet which is initialized in the HashSet constructor. This implies that the instance initializer is invoked before the class constructor, but after the superclass constructor (The super call is redundant here. It will be called anyway).</p>
<p>So the sequence is</p>
<ol>
<li> Superclass initialization (this includes superclass instance initializers and constructor)</li>
<li> Current class&#8217;s Instance initializers</li>
<li> Current class&#8217;s Constructor</li>
</ol>
<p>This is why the code in Code Snippet 3 does not throw an NPE &#8211; because it&#8217;s a case of inheritance (the anon inner class is a subclass of HashSet)</p>
<script type="text/javascript" src="http://cdn.socialtwist.com/2008071112-2/script.js"></script><a class="st-taf" href="http://tellafriend.socialtwist.com" onclick="return false;" style="border:0;padding:0;margin:0;"><img alt="SocialTwist Tell-a-Friend" style="border:0;padding:0;margin:0;" src="http://images.socialtwist.com/2008071112-2/button.png"onmouseout="STTAFFUNC.hideHoverMap(this)" onmouseover="STTAFFUNC.showHoverMap(this, '2008071112-2', 'http%3A%2F%2Fcode.deepinspace.net%2F2010%2F05%2F22%2Finstance-initializers-in-java%2F', 'Instance+Initializers+in+Java')" onclick="STTAFFUNC.cw(this, {id:'2008071112-2', link: 'http%3A%2F%2Fcode.deepinspace.net%2F2010%2F05%2F22%2Finstance-initializers-in-java%2F', title: 'Instance+Initializers+in+Java' });"/></a>]]></content:encoded>
			<wfw:commentRss>http://code.deepinspace.net/2010/05/22/instance-initializers-in-java/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How Not to do Customer Service</title>
		<link>http://code.deepinspace.net/2010/04/19/how-not-to-do-customer-service/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=how-not-to-do-customer-service</link>
		<comments>http://code.deepinspace.net/2010/04/19/how-not-to-do-customer-service/#comments</comments>
		<pubDate>Mon, 19 Apr 2010 10:50:24 +0000</pubDate>
		<dc:creator>hrish</dc:creator>
				<category><![CDATA[internet]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[customers]]></category>
		<category><![CDATA[India]]></category>
		<category><![CDATA[online bookstores]]></category>

		<guid isPermaLink="false">http://code.deepinspace.net/?p=89</guid>
		<description><![CDATA[Anybody doing online business knows the importance of retaining and keeping their customers happy. How you do that depends on your specific business &#8211; but the starting point is always the same &#8211; Respond! Respond &#8211; on time, with a clear actionable, and follow up. This post is about how not to do customer service [...]]]></description>
			<content:encoded><![CDATA[<p>Anybody doing online business knows the importance of retaining and keeping their customers happy. How you do that depends on your specific business &#8211; but the starting point is always the same &#8211; Respond!</p>
<blockquote><p>Respond &#8211; on time, with a clear actionable, and follow up.</p></blockquote>
<p>This post is about how not to do customer service &#8211; and I am going to take a recent bad experience with one of India&#8217;s top online stores &#8211; <a href="http://www.indiaplaza.in">http://www.indiaplaza.in</a>. They sell books, among a lot of other things, and I have been buying from them since 2007.</p>
<p>I had ordered 4 books from them last month. 3 of them were shipped on time. When there was no news of the 4th one, I checked the Pending Orders page. It was not updated and stated that the book will be shipped by x &#8211; a date 4 days in the past. &#8220;Ok&#8221;, I thought, &#8220;let&#8217;s contact them&#8221;.</p>
<p>I sent off a mail to their customer service ID &#8211; which I had been using earlier. An autoreply came back saying that they do not respond to queries anymore from that ID, and I have to fill out a form on their site. That would raise a support ticket.</p>
<p>Which I did. And the form&#8217;s response promised that I would get a response within 24 hours.<br />
Which did not happen. And their phone number is hidden in a small Contact Us link &#8211; I did not find it.<br />
So I raised another ticket after waiting for a day. </p>
<p>Nothing happened.</p>
<p>At this point <em>I had no visible working way of contacting them</em> (apart from the phone number which I could not find. I attribute this to the fact that the most prominent &#8220;Help&#8221; link on their site is &#8220;Customer Support&#8221; &#8211; which points to the form mentioned above. That is what most people would click on).</p>
<p>So I went and posted my case on www.consumercourt.in &#8211; a site where consumers can go and post their grievances. Apparently that worked &#8211; for within 4 hours I got a call from Indiaplaza about the non-availability of the book. There was no apology, though. They promised to deliver it after 7 days. Now, this was extremely surprising. It indicated that their support team checks online complaint sites for issues with Indiaplaza, but do not check their own support system!</p>
<p>Anyways, nothing happened after 7 days &#8211; so I went through the same ticketing system again. This time there was a delayed response (thank goodness!) stating that the book was not available. &#8220;Fine&#8221;, I said, &#8220;Just refund my money&#8221;. They agreed to do it within 5 days.</p>
<p>Nothing happened (Do you see a pattern here?) . So I raised another ticket&#8230;and so on.</p>
<h3><strong>Four things they could have done better</strong></h3>
<ol>
<li>The deployment of a well thought out customer support system, which is convenient to use and not just built out of considerations like it&#8217;s easy to use for their support group or helps in cost cutting.</li>
<li>Responding to my query on their ticketing system within the promised time.</li>
<li>After not doing (2), followed by the incidents mentioned above, they could have taken extra care about this case. Once you piss off a customer, you have to do extra work to get him where he was before, and still more work to make him happy.</li>
<li>Build a better online buying system where the status of the order is updated automatically.</li>
</ol>
<p>The feeling that I have as a customer that I am being ignored, and especially after I have been billed, with prior experience not helping me to restore trust, is a damning indicator of what Indiaplaza lacks. They have just lost an old customer, and with the power of word of mouth these days, a lot of potential future customers as well.</p>
<p>Update: After raising another ticket, I finally got my refund. But I am not going back there <img src='http://code.deepinspace.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<script type="text/javascript" src="http://cdn.socialtwist.com/2008071112-2/script.js"></script><a class="st-taf" href="http://tellafriend.socialtwist.com" onclick="return false;" style="border:0;padding:0;margin:0;"><img alt="SocialTwist Tell-a-Friend" style="border:0;padding:0;margin:0;" src="http://images.socialtwist.com/2008071112-2/button.png"onmouseout="STTAFFUNC.hideHoverMap(this)" onmouseover="STTAFFUNC.showHoverMap(this, '2008071112-2', 'http%3A%2F%2Fcode.deepinspace.net%2F2010%2F04%2F19%2Fhow-not-to-do-customer-service%2F', 'How+Not+to+do+Customer+Service')" onclick="STTAFFUNC.cw(this, {id:'2008071112-2', link: 'http%3A%2F%2Fcode.deepinspace.net%2F2010%2F04%2F19%2Fhow-not-to-do-customer-service%2F', title: 'How+Not+to+do+Customer+Service' });"/></a>]]></content:encoded>
			<wfw:commentRss>http://code.deepinspace.net/2010/04/19/how-not-to-do-customer-service/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Dreaming in Code</title>
		<link>http://code.deepinspace.net/2010/02/28/dreaming-in-code/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=dreaming-in-code</link>
		<comments>http://code.deepinspace.net/2010/02/28/dreaming-in-code/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 13:06:46 +0000</pubDate>
		<dc:creator>hrish</dc:creator>
				<category><![CDATA[books]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[chandler]]></category>
		<category><![CDATA[development]]></category>

		<guid isPermaLink="false">http://code.deepinspace.net/?p=78</guid>
		<description><![CDATA[I finished reading Dreaming in Code last week. It&#8217;s Scott Rosenberg&#8217;s account of a software development team&#8217;s effort to build the ultimate Personal Information Manager (PIM). Led and funded by Mitch Kapor of Lotus 1-2-3 fame, the team goes through endless cycles of redesign, people issues and other upheavals. Rosenberg follows the team very closely, [...]]]></description>
			<content:encoded><![CDATA[<p>I finished reading <a title="http://www.dreamingincode.com/" href="http://www.dreamingincode.com/" target="_blank">Dreaming in Code</a> last week. It&#8217;s Scott Rosenberg&#8217;s account of a software development team&#8217;s effort to build the ultimate Personal Information Manager (PIM). Led and funded by Mitch Kapor of Lotus 1-2-3 fame, the team goes through endless cycles of redesign, people issues and other upheavals.</p>
<p>Rosenberg follows the team very closely, participating in their meetings, interviewing them and filling the narrative with his own insights.</p>
<p>If a developer were to read this book, s/he would recognize the events in it this as standard stuff when developing a product, and s/he would also identify with the team itself, with the occasional shaking of the head <img src='http://code.deepinspace.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>The software they set out to develop was based on Kapor&#8217;s vision of a game-changing PIM. They called it <a title="http://chandlerproject.org/" href="http://chandlerproject.org/" target="_blank">Chandler</a>, after one of Kapor&#8217;s loved crossbred dogs.</p>
<p><a href="http://www.chandlerproject.org/" target="_blank"><img class="alignright" title="Chandler Logo" src="http://chandlerproject.org/pub/Main/OsafSkin/chandler-project-logo-wiki.png" alt="" width="192" height="39" /></a></p>
<p>This was the pre-Web 2.0 era, where most things, including product releases took longer to happen. The browser had not yet become the first medium for delivering any consumer facing application. Desktop applications for collaboration still looked as if they had potential.</p>
<p>Chandler&#8217;s ultimate aim was to be a all-in-one tool where users could access their email, personal notes, calendar events and to do lists through one interface. Kapor visualized all these different data collections as isolated information silos. Chandler would break open and combine them. It would let you view and move around all these disparate things in a unified manner. You could tag a note with labels, and then put a date on it and make it a calendar event, or send it off as an email. Grand vision? Yes. It&#8217;s something I would personally prefer to have around to manage things.</p>
<p>Due to numerous reasons, Chandler was late in delivering its promise. Gmail came in 2004, and opened the floodgates of what was possible using new Web technologies. Firefox arrived, and forced Microsoft to relook at IE (and make it better). Chandler was yet to release its 1.0 version. The browser was fast overtaking the desktop.</p>
<p>We have been spoilt by the seamless interconnectivity provided by the Internet &#8211; it&#8217;s always there &#8211; home or office or a mountaintop &#8211; and with it, our data. Chandler did attempt a Web interface where you could access your data (which would be synced between your desktop and a central server), but it was too late.</p>
<p>The Chandler project is still on with many faithful developers. I tried out the latest version after finishing the book. My impressions? It still has a long way to go, going by the number of bugs I encountered, and assuming it can convince the Web 2.0 crowd to switch to a desktop application by the sheer force of its design and the things it is supposed to do.</p>
<p>The most interesting chapter in the book is &#8220;Methods&#8221; &#8211; where Rosenberg does a brief and very readable survey of the evolution of development methods over the years. This chapter can be read standalone even if you don&#8217;t read the whole book.</p>
<address>Note: The Chandler logo image linked to here is used under a <a title="http://creativecommons.org/licenses/by/3.0/" href="http://creativecommons.org/licenses/by/3.0/" target="_blank">Creative Commons Attribution License 3.0</a>.</address>
<address> </address></p>
<script type="text/javascript" src="http://cdn.socialtwist.com/2008071112-2/script.js"></script><a class="st-taf" href="http://tellafriend.socialtwist.com" onclick="return false;" style="border:0;padding:0;margin:0;"><img alt="SocialTwist Tell-a-Friend" style="border:0;padding:0;margin:0;" src="http://images.socialtwist.com/2008071112-2/button.png"onmouseout="STTAFFUNC.hideHoverMap(this)" onmouseover="STTAFFUNC.showHoverMap(this, '2008071112-2', 'http%3A%2F%2Fcode.deepinspace.net%2F2010%2F02%2F28%2Fdreaming-in-code%2F', 'Dreaming+in+Code')" onclick="STTAFFUNC.cw(this, {id:'2008071112-2', link: 'http%3A%2F%2Fcode.deepinspace.net%2F2010%2F02%2F28%2Fdreaming-in-code%2F', title: 'Dreaming+in+Code' });"/></a>]]></content:encoded>
			<wfw:commentRss>http://code.deepinspace.net/2010/02/28/dreaming-in-code/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

