<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
 
 <title>Lostronaut</title>
 <link href="http://blog.abi.sh/atom.xml" rel="self"/>
 <link href="http://blog.abi.sh"/>
 <updated>2012-01-14T08:20:03-08:00</updated>
 <id>http://blog.abi.sh</id>
 <author>
   <name>Abi Raja</name>
   <email>abimanyuraja@gmail.com</email>
 </author>

 
 <entry>
   <title>Review: The Party: The Secret World of China's Communist Rulers by Richard McGregor</title>
   <link href="http://blog.abi.sh/2012/01/03/br-mcgregor-the-party.html"/>
   <updated>2012-01-03T00:00:00-08:00</updated>
   <id>http://blog.abi.sh/2012/01/03/br-mcgregor-the-party</id>
   <content type="html">&lt;h1&gt;Review: The Party: The Secret World of China's Communist Rulers by Richard McGregor&lt;/h1&gt;

&lt;p&gt;If this book had been written just a little better, I'd give it 5 stars. The information presented is nothing but enthralling to a China outsider. The organization of the sections deftly enhances the content. In about 200 pages, McGregor successfully manages to give you a comprehensive intuition for how The Party operates, even if you have no prior knowledge of China. That's a towering achievement.&lt;/p&gt;

&lt;p&gt;The language, on the other hand, leaves much to be desired: it's your typical, found-on-your-doormat-every-morning dry journalistic prose, a style which seems to require (1) repeating things often, (2) providing a mini-summary before launching into the details of an anecdote and then (3), immediately following up with the obligatory but completely unnecessary summary (once again!) of the same anecdote, even while it's still (undoubtedly!) fresh in your mind unless you happen to have the memory capacity of a jellyfish.&lt;/p&gt;

&lt;p&gt;The book starts off slow but hits its stride in the third chapter and roars onwards from there on, leaving you sleepless and eager to see the &lt;i&gt;complete&lt;/i&gt; picture of the innards of the thing most aptly described as &quot;the organism that controls one quarter of the world's population&quot;. The anecdotes handpicked by McGregor range from internationally notorious scandals such as the Sanlu Milk tragedy to war stories of lesser known crusades against the Party by suppressed journalists from within. With each anecdote, McGregor reveals a side of The Party (these include organization, propaganda, army, economy, federal-provincial relations, anti-graft campaigns and other smaller ones) and how it exercises control over said side. Take the Sanlu Milk scandal. The infant poisoning incidents first came to the notice of the Sanlu board of the company right before the start of the Olympics, a momentous occasion for the nation and The Party. At the time, local state officials as well as the leaders of state-owned enterprises (including Sanlu) had been instructed very clearly by the Propaganda department in Beijing to specifically avoid any press mentions of food-related issues. And therein, arises the cruel catch-22 for local officials and the executives of Sanlu. On orders from Propaganda in Beijing, they were left with no choice but to cover up the incidents and silence, through pay-offs, the parents of the affected infants. When the scandal was eventually uncovered post-Olympics by Beijing, it reprimanded the local officials heavily and put many of the executives behind bars for life, demonstrating to the international community that it took its food safety measures seriously.&lt;/p&gt;

&lt;p&gt;Perhaps, the biggest realization for me — fret not, this isn't a spoiler — was that a communist government does not necessarily do better at long-term planning than its democratic counterpart. I'd always thought the converse was true. Singapore, for instance, can clearly take certain hard-line actions only because its ruling party never has to worry about getting re-elected. However, in China, this is certainly not the case. The Party is a massive beast that's in constant threat of exploding from the inside due to the insatiable hunger and greed of its own officials. Here's an astonishing nugget: If you take yearly GDP numbers reported by each province and sum them up, you'll end with a result significantly higher than the GDP number reported by the central authorities. Why? Because there's a very strong incentive for provincial party bosses to do better than their neighbors so they can move up the power structure of The Party and government. The reason The Party has succeeded in the massive economic transformation of the last 30-odd years emerges from studying the affects of this intense competition among party men and state officials: it's not the self-less lack of greed and self-sacrificing noble actions of individuals that have paved way for a greater collective, but precisely the opposite, it's the effective harnessing by The Party of the lust for power and money among officials that has bred a competitive (albeit short-term focused) system that pushes itself forward at a tremendous pace. That's what scientific communism is, not quite communism at all.&lt;/p&gt;

&lt;p&gt;The sociopolitical problems that plague China and the United States are so similar in many ways (and this is something that I really shouldn't be surprised about, but I did hold a rather naive view that human nature might be slightly different depending on cultural circumstances (perhaps, a victim myself of the boisterous Chinese self-posturing international propaganda)). The age-old conflicts between public service and personal wealth, between historical legacies and an uncertain future, between immediate gratification and long-term sustainability.&lt;/p&gt;

&lt;p&gt;Essential reading for anyone interested in the future of the world. An illuminating and exciting journey.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>December Songs</title>
   <link href="http://blog.abi.sh/2012/01/01/december-songs.html"/>
   <updated>2012-01-01T00:00:00-08:00</updated>
   <id>http://blog.abi.sh/2012/01/01/december-songs</id>
   <content type="html">&lt;h1&gt;December Songs&lt;/h1&gt;

&lt;div class=&quot;mix-img-container&quot;&gt;
    &lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;http://www.youtube.com/embed/-ICpS7Ahp9o&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;


&lt;ol&gt;
&lt;li&gt;&lt;em&gt;This is the Dream of Win and Regine&lt;/em&gt; by &lt;strong&gt;Final Fantasy&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Little Talks&lt;/em&gt; by &lt;strong&gt;Of Monster and Men&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Lakehouse&lt;/em&gt; by &lt;strong&gt;Of Monster and Men&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Rollercoaster&lt;/em&gt; by &lt;strong&gt;Kimya Dawson&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Kansas City&lt;/em&gt; by &lt;strong&gt;Okkervil River&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Add My Effort&lt;/em&gt; by &lt;strong&gt;The Weepies&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Be My Thrill&lt;/em&gt; by &lt;strong&gt;The Weepies&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;A Thing For Me&lt;/em&gt; by &lt;strong&gt;Metronomy&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Baby&lt;/em&gt; by &lt;strong&gt;Devendra Banhart&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

</content>
 </entry>
 
 <entry>
   <title>Review: Norwegian Wood by Murakami</title>
   <link href="http://blog.abi.sh/2011/12/31/br-murakami-norwegian-wood.html"/>
   <updated>2011-12-31T00:00:00-08:00</updated>
   <id>http://blog.abi.sh/2011/12/31/br-murakami-norwegian-wood</id>
   <content type="html">&lt;h1&gt;Review: Norwegian Wood by Murakami&lt;/h1&gt;

&lt;p&gt;Off the bat, I have to point out the bias in this review in true post-modern self-referential manner: I read this book as a break from Infinite Jest and that was a huge mistake. NEVER read any book with Infinite Jest if you're interested in writing reviews that so much as try to be fair to the author of the secondary book. IJ colors your life in its own special hue for the period you are reading it and it's hard — near impossible — for any novel that's composed of only a fraction of the words of IJ to match David Foster Wallace's prose or non-linearly of plot or the depth and variety of his characters.&lt;/p&gt;

&lt;p&gt;Now that the apology for this flawed review is out of the way, the reviewing shall commence! Norwegian Wood is a straightforward narrative about the not-particularly-interesting lives of young adults living in 60s Tokyo, where people commit suicide and give/get handjobs. The word &quot;lonely&quot; gets penned around a lot in Murakami reviews, but I didn't find Toru Watanabe, the narrating protagonist, particularly lonely at all. He was certainly withdrawn but the isolation wasn't visceral or even palpable. And there's of course Murakami's trademark obsession with English music/literature and a mild layer of anti-establishment campus politics but none of these really added much to the novel for me; the descriptions were vague and left too much to imagination (particularly so, for a non-Japanese reader such as yours truly).&lt;/p&gt;

&lt;p&gt;Having read another book by Murakami previously, &lt;i&gt;A Wild Sheep Chase&lt;/i&gt;, at the beginning of this one, I was struck by the linearity of it all. It is &lt;em&gt;too&lt;/em&gt; simple, uncharacteristically simple. &lt;i&gt;A Wild Sheep Chase&lt;/i&gt; is beautifully textured; when you turn the last page, you are left attuned in a startlingly fresh manner to the idea of living in this world of ours, with all of its cultural and sociopolitical legacies and the lonesome notion of being an individual. On other hand, in &lt;i&gt;Norwegian Wood&lt;i&gt;, it's just this 19-year-old telling his life story.  But soon, I came to understand that my suspicions were not unfounded after all. According to the translator's note, Murakami was, in this novel, experimenting with the style that characterizes Japanese mainstream novels. Hence, the single perspective, the atypical lack of magical realism, etc, etc. Considering the limitations of his selected subgenre, this is a very admirable piece of writing indeed, but as a selfish reader, I still find the novel flat and disappointing.&lt;/p&gt;

&lt;p&gt;The book is not without its merits, however. The conversation is flowing, and Murakami doesn't make you queazy or leave you off with cliffhangers. I like that about books sometimes, the advantage being that you can read these from start to finish in 2 or 3 sittings. The embedded morality is very clearly and directly expressed. The exploration of the complications in different types of romantic relationships is also real and emotionally engaging, explaining the mass appeal of the book that Murakami purportedly wasn't too comfortable with. But oh well, you get what you deserve for working within the boundaries of this rather limited genre.&lt;/p&gt;

&lt;p&gt;Definitely worth a swift, entertaining read; just don't hope for any revelatory wordily insights or beautiful metaphor-laden prose.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>November Songs</title>
   <link href="http://blog.abi.sh/2011/12/04/november-songs.html"/>
   <updated>2011-12-04T00:00:00-08:00</updated>
   <id>http://blog.abi.sh/2011/12/04/november-songs</id>
   <content type="html">&lt;h1&gt;November Songs&lt;/h1&gt;

&lt;div class=&quot;mix-img-container&quot;&gt;
    &lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;http://www.youtube.com/embed/-hBiGq4mEw8&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;


&lt;ol&gt;
&lt;li&gt;&lt;em&gt;Kids on the Run&lt;/em&gt; by &lt;strong&gt;The Tallest Man On Earth&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Song Against Sex&lt;/em&gt; by &lt;strong&gt;Neutral Milk Hotel&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;So Nice So Smart&lt;/em&gt; by &lt;strong&gt;Kimya Dawson&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Rollercoaster&lt;/em&gt; by &lt;strong&gt;Kimya Dawson&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Baby Love Child&lt;/em&gt; by &lt;strong&gt;Pizzicato Five&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Club Thing&lt;/em&gt; by &lt;strong&gt;Yoav&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Vomit&lt;/em&gt; by &lt;strong&gt;Girls&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Another Like You&lt;/em&gt; by &lt;strong&gt;Sean Fournier&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Station&lt;/em&gt; by &lt;strong&gt;Russian Circles&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

</content>
 </entry>
 
 <entry>
   <title>A Life Sentence for Possessing Child Pornography</title>
   <link href="http://blog.abi.sh/2011/11/14/life-for-child-porn.html"/>
   <updated>2011-11-14T00:00:00-08:00</updated>
   <id>http://blog.abi.sh/2011/11/14/life-for-child-porn</id>
   <content type="html">&lt;h1&gt;&lt;a href=&quot;http://reason.com/blog/2011/11/07/a-life-sentence-for-possessing-child-por&quot; class=&quot;link-post&quot;&gt;A Life Sentence for Possessing Child Pornography&lt;/a&gt;&lt;/h1&gt;


&lt;blockquote&gt;&lt;p&gt;Last week a Florida judge sentenced Daniel Enrique Guevara Vilca, a 26-year-old with no criminal record, to life in prison without the possibility of parole for looking at forbidden pictures. A jury convicted Vilca on 454 counts of possessing child pornography, one for each image found on his computer. Under Florida law, each count is a third-degree felony punishable by up to five years in prison. Sentencing guidelines indicated a minimum term of 152 years, although Collier Circuit Judge Fred Hardt had discretion to impose a lighter sentence if he concluded it was justified by factors such as constitutional infirmity or Vilca's mental health. &lt;strong&gt;&quot;Had Mr. Vilca actually molested a child,&quot; The New York Times notes, &quot;he might well have received a lighter sentence.&quot;&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>21</title>
   <link href="http://blog.abi.sh/2011/11/09/21.html"/>
   <updated>2011-11-09T00:00:00-08:00</updated>
   <id>http://blog.abi.sh/2011/11/09/21</id>
   <content type="html">&lt;h1&gt;21&lt;/h1&gt;

&lt;div class=&quot;poem&quot;&gt;
I guess this is growing up,&lt;br/&gt;
I guess this is growing up,&lt;br/&gt;
I guess this is growing up,&lt;br/&gt; 
I guess this is growing up,&lt;br/&gt;
Dammit.  
&lt;/div&gt;

</content>
 </entry>
 
 <entry>
   <title>Murakami and Individualism</title>
   <link href="http://blog.abi.sh/2011/11/07/murakami-and-individualism.html"/>
   <updated>2011-11-07T00:00:00-08:00</updated>
   <id>http://blog.abi.sh/2011/11/07/murakami-and-individualism</id>
   <content type="html">&lt;h1&gt;&lt;a href=&quot;http://www.newyorker.com/online/blogs/backissues/2011/08/haruki-murakami-and-individualism.html?printable=true&amp;currentPage=all&quot; class=&quot;link-post&quot;&gt;Murakami and Individualism&lt;/a&gt;&lt;/h1&gt;


&lt;p&gt;One of my favorite writer's obsession with America from afar.&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Murakami’s fascination with the West, with American metaphors and references, started early. He grew up as the only child of a high-school teacher in an unremarkable modern suburb near Kobe. There was nothing traditional about his childhood except the conformism of Japanese society, which he hated: the school uniforms, the petty rules, the group-mindedness, the submission of individual desires to collective familial duties. His escape from this social claustrophobia was to dream of America. In his words, he “tried to create a foreign country in my heart.&quot;&lt;/p&gt;

&lt;p&gt;Listening to Jim Morrison in the United States is not the same as listening to him in Japan. The Western metaphors, having lost their mystery, became redundant. “I no longer needed the props.” He then decided that, as a Japanese writer, he should be more directly involved with Japan—even, in his words, “take political responsibility.” This was an extraordinary statement. I asked him what he meant. “The most important thing,” he answered, “is to face our history, and that means the history of the war.”&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>October Songs</title>
   <link href="http://blog.abi.sh/2011/11/03/october-songs.html"/>
   <updated>2011-11-03T00:00:00-07:00</updated>
   <id>http://blog.abi.sh/2011/11/03/october-songs</id>
   <content type="html">&lt;h1&gt;October Songs&lt;/h1&gt;

&lt;div class=&quot;mix-img-container&quot;&gt;&lt;img alt=&quot;Merriweather Post Pavillion by Animal Collective&quot; class=&quot;mix-img&quot; src=&quot;/images/mixes/merriweather.jpg&quot;&gt;&lt;/div&gt;


&lt;ol&gt;
&lt;li&gt;&lt;em&gt;King of Spain&lt;/em&gt; by &lt;strong&gt;The Tallest Man On Earth&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;We Will All Be Changed&lt;/em&gt; by &lt;strong&gt;Seryn&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Summertime Clothes&lt;/em&gt; by &lt;strong&gt;Animal Collective&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;After Midnight&lt;/em&gt; by &lt;strong&gt;Blink-182&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Alina's Place&lt;/em&gt; by &lt;strong&gt;Fredrik&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Grand Junction&lt;/em&gt; by &lt;strong&gt;Computer Magic&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;You Won't Need Me Where I'm Goin'&lt;/em&gt; by &lt;strong&gt;How to Dress Well&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

</content>
 </entry>
 
 <entry>
   <title>The National Interest - The End of the American Era</title>
   <link href="http://blog.abi.sh/2011/11/03/national-interest-end-of-american-era.html"/>
   <updated>2011-11-03T00:00:00-07:00</updated>
   <id>http://blog.abi.sh/2011/11/03/national-interest-end-of-american-era</id>
   <content type="html">&lt;p&gt;&lt;a href=&quot;http://nationalinterest.org/article/the-end-the-american-era-6037?page=show&quot; class=&quot;link-post&quot;&gt;The End of the American Era&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A Harvard professor addresses the end of American ultra-dominance on the global stage from an American national interest perspective (emphasis mine).&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Instead of seeking to dominate these regions directly, however, our first recourse should be to have local allies uphold the balance of power, out of their own self-interest. &lt;strong&gt;Rather than letting them free ride on us, we should free ride on them as much as we can&lt;/strong&gt;, intervening with ground and air forces only when a single power threatens to dominate some critical region. For an offshore balancer, the greatest success lies in getting somebody else to handle some pesky problem, not in eagerly shouldering that burden oneself.&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>Embrace theory when it's practical</title>
   <link href="http://blog.abi.sh/2011/10/31/embrace-theory-when-its-practical.html"/>
   <updated>2011-10-31T00:00:00-07:00</updated>
   <id>http://blog.abi.sh/2011/10/31/embrace-theory-when-its-practical</id>
   <content type="html">&lt;h1&gt;Embrace theory when it's practical&lt;/h1&gt;

&lt;p&gt;There. That was simple enough to summarize in a 5-word title. To really understand what that means however, you have to agree with me that most programmers tend to run from theory at every opportunity. You agree? Well, if you don't, just glance over at the languages we use predominantly: Java and C/C++. LISPers will preach to you and have been preaching for the last 50-odd years the power of first-class functions. And yet, this theoretically and practically beautiful concept (which involves no sacrifice whatsoever on the part of the Java/C programmer) has taken years to arrive. Finally, in Java 8, we will have easy-to-write lambdas! Instead of first class functions and good generics, Java gives us boilerplate. I need not list here the arguments &lt;em&gt;for&lt;/em&gt; boilerplate the masses of Java programmers have given since the inception of Java. To me, it's incredible enough that someone can argue that boilerplate isn't bad, let alone that it is &lt;em&gt;good&lt;/em&gt;. Read &lt;a href=&quot;http://steve-yegge.blogspot.com/2007/12/codes-worst-enemy.html&quot;&gt;Steve Yegge's rant on Java&lt;/a&gt; and its obsession with code quantity for more on this. In the world we live in today, programmers tend to prefer more code and less theory.&lt;/p&gt;

&lt;p&gt;Almost got into rant mode there. Let's get back to the question at hand: okay, everyone is running from theory but what is theory good for anyways? Isn't the Internet and all other wonderful technology built in C/C++ and not some &quot;beautiful&quot; theorem proving language for good reason?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When theory becomes practical, we should be doubly delighted because we have not only discovered a good practical solution to our problem but we've also found a solution about which we know certain things/properties to be always true.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One sub-field in computer science has always been really theoretical in nature and that's algorithms. People don't just come up with an algorithm and be done with it because it runs &quot;pretty fast&quot; for them. They usually follow up with a detailed analysis of its complexity. As a result, we know optimal algorithms for many tasks and this is extremely powerful in practice. This means that we can stop optimizing that part of the system and focus on optimizing other parts of the system.&lt;/p&gt;

&lt;p&gt;Over the long arc of time, our goal as programmers surely is to write programs that don't fail (or are at the least, fail-safe) and have them run as fast as they can. The latter property is ensured by working on algorithmic theory but what about the earlier property? It falls to the programmer to ensure that the program doesn't fail but it's also the responsibility of the programming language and its compiler to ensure that the programmer doesn't make mistakes. And that's the sub-field in CS where the mainstream has been mostly devoid of all theory (I'm referring to the end-user/programmer's view of things, not the compiler writer's). As a collective, we use imperative languages that mimic the specific machine architecture extremely well. Of course, this story is only true after C &quot;won over&quot; LISP but ever since, imperative has been the mainstream. We produce more C/C++/Java code than ever before. The problem with imperative languages is that they deal directly with state (a lot of which is out of the program's control and is managed by the operating system or other programs or through I/O devices) and as a result, in an imperative world, you can't ever have a complete system that can be theorized well. The alternative is to of course think of programs as proofs (see &lt;a href=&quot;http://en.wikipedia.org/wiki/Curry%E2%80%93Howard_correspondence&quot;&gt;Curry-Howard isomorphism&lt;/a&gt;). And proofs are something that we know &lt;em&gt;a lot&lt;/em&gt; about. There's great deal of human knowledge about logic, set theory, functions. We can bring hundreds of centuries of thinking by the smartest mind to fruition in a practical way if we can only somehow implement theoretically well-founded programming languages.&lt;/p&gt;

&lt;p&gt;What does a theoretically well-founded language look like and what are some practical benefits that we can get out of it? It looks a lot like Haskell; Haskell has great theoretical foundations but is also increasingly practical. To be precise, Haskell's an approximation of this theoretical thing called &lt;a href=&quot;http://en.wikipedia.org/wiki/System_F&quot;&gt;System F&lt;/a&gt;. It's an approximation because there are things Haskell does not enforce. For example, you can have something be an instance of a Monad but not obey the laws of monads, due to the halting problem where you can have certain conditions that cannot be checked in a language like Haskell that allows for infinite recursion. Hence, there are other theorem-proving languages that are not quite as practical (yet) but do verify and enforce the monadic laws. But if we all used Haskell, that would already be two revolutions' worth of revolution.&lt;/p&gt;

&lt;p&gt;And now, here comes the exciting part! The practical benefits of using a language like Haskell. There are many many benefits but I'll only talk about a small subset of them here.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;(1)&lt;/strong&gt; Whole classes of errors are eliminated when you express the properties of your programmer in a manner that the compiler can understand. This is essentially the whole notion of types and draws from a long history of research into varied areas. It's like telling the compiler the &lt;em&gt;semantic&lt;/em&gt; meaning of this program, &quot;I want this program to figure out the most common female baby names in a certain zip code&quot; and it'll check that. But when you write a C program or a Python program, you can't do that too well because you don't have a very expressive type system. In this regard, Python is actually a step backward from C because you don't even have any static type-checking and you will not know about your bad variable name bugs until you actually execute that line of code. &lt;a href=&quot;http://en.wikipedia.org/wiki/Proof-carrying_code&quot;&gt;Proof-carrying code&lt;/a&gt; is one idea that's analogous except that it's far more explicit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;(2)&lt;/strong&gt; Haskell provides you with precise abstractions where you get all that good object-oriented stuff related to encapsulation and information hiding but in a stateless manner and with strict guarantees. Haskell models many algebraic structures from category theory which is one mathematical way to look to all algebraic structures (In case you want to delve more deeply into the category-theoretical view of things, I recently discovered &lt;a href=&quot;http://www.youtube.com/user/TheCatsters&quot;&gt;The Catsters&lt;/a&gt;, a series of 78 videos introducing category theory; if you're looking for something much more brief and directly related to application, &lt;a href=&quot;http://en.wikibooks.org/wiki/Haskell/Category_theory&quot;&gt;this&lt;/a&gt; is a great start).&lt;/p&gt;

&lt;p&gt;Algebraic structures are well understood and when you map these structures to the data that your program is manipulating, you get a ton of things for free. In Haskell for example, you have an entire module (&lt;code&gt;Control.Monad&lt;/code&gt;) worth of functions that you can immediately use in your programs if you make something a monad. And if someone else writes a function that works with monads, because a monad is defined precisely, mathematically and without variation across software packages, it's guaranteed to work for your Monad too. Accordingly, in Haskell, things like lists, the Maybe type and famously IO are all monad instances. You get higher levels of abstraction and a lot less duplicated code (which is, of course, one of the biggest — if not the biggest — evils in software construction). Rather than teach design patterns, we can teach truths about various categories and how these truths mirror applications in different domains. Usually, we are trying to distill truths from domains (which is an arbitrarily imprecise process because domains change while mathematical truths don't) but when we try to fit truths to domains, those truths will always be true. Just as in algorithms, if we know something is undoubtedly true, that's extremely powerful knowledge, it implies that a 100 other things are not true and we can avoid many design decisions. Fewer decisions means fewer places to make mistakes. &lt;a href=&quot;http://xmonad.org/&quot;&gt;XMonad&lt;/a&gt; is a great study in mapping well-understood algebraic structures to code/data and as result, gaining fail-safety and correctness.&lt;/p&gt;

&lt;p&gt;Besides increased abstraction capability, when you use algebraic structures, you also get precision. When you write software, you often create abstractions that work well most of the time but occasionally, there will be a couple exceptions whereby information leaks from the abstraction and then, you end up paying for these exceptions when bugs seep through these information leaks. But with precisely-defined algebraic structures, you can avoid creating leaky abstractions. A simple example in Haskell is that you can't ever perform I/O in a function unless you specify the return type of the function to be &lt;code&gt;IO a&lt;/code&gt;. This means that these functions should always run the same way, not fail randomly and give the same answer given the same arguments. In a different language, you might have a function that is seemingly completely pure but for example, uses the last cursor position (which most likely, uses an API that does some I/O). But because you don't want to pass the cursor position in through a chain of arguments let's say, you just do the I/O right there but then, now you have a function that might occasionally fail and a system that is become much harder to debug and more likely to fail because there's tiny bits of I/O happening in different places. Haskell's type system will prevent you from making such mistakes. This is a double-edged sword, however. With precision, you lose some flexibility. Haskell is getting better at handling these things: we are discovering new abstractions (zippers, monads are all fairly recent discoveries) that better encapsulate what we want to do with our programs and by allowing explicit exceptions (such as &lt;code&gt;unsafePerformIO&lt;/code&gt;) especially for debugging purposes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;(3)&lt;/strong&gt; Run-time testing for properties of programs that you can't test statically even with a language like Haskell is greatly improved with tools like QuickCheck. QuickCheck is a simple tool that lets you express properties about a function and verify that your function is doing what you want it to do.&lt;/p&gt;

&lt;p&gt;Let's say you write a sort function called &lt;code&gt;sort&lt;/code&gt;. Rather than write traditional unit-tests (where you'd only be testing a small subset of cases) like:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;haskell&quot;&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;sort&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;p&gt;You could write&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;haskell&quot;&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;sort&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;quicksort&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;p&gt;And QuickCheck will run through a 100 hundred test cases that it auto-generated including edge cases like empty lists and lists with non-unique elements.&lt;/p&gt;

&lt;p&gt;Or if you don't have a reference implementation to compare with, you can express the property directly. What it means to say that a list is sorted is that every element in that list is either equal to or smaller than the next element.&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;haskell&quot;&gt;&lt;span class=&quot;nf&quot;&gt;and&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;$&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;map&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;\&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;fst&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;snd&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;$&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;zip&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;a&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;tail&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;p&gt;QuickCheck also does a few other things that are really cool. Check it out.&lt;/p&gt;

&lt;p&gt;To conclude, Haskell is in no way the panacea (or the &lt;a href=&quot;http://news.ycombinator.com/item?id=3065672&quot;&gt;cure&lt;/a&gt;). I'm not even advocating a single language here. I only believe that as a community, we need to push towards making more theory practical in all aspects of computer science and software construction so we can write better code that is not a house of cards which might come crashing down at any time and potentially affect the lives of millions adversely. For those of us who are traditionally trained in universities, we maybe do one class on theoretical foundations of computation and maybe, another class on algorithms. Then, we never touch theory for the rest of our lives again. Let that not be case anymore because theory matters and theory will help us solve our problems once and for all better than trial-and-error ever will.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>One more time with feeling</title>
   <link href="http://blog.abi.sh/2011/10/30/one-more-time-with-feeling.html"/>
   <updated>2011-10-30T00:00:00-07:00</updated>
   <id>http://blog.abi.sh/2011/10/30/one-more-time-with-feeling</id>
   <content type="html">&lt;h1&gt;One more time with feeling&lt;/h1&gt;

&lt;p&gt;After a long hiatus, 'tis time to blog again. The world is a quite a different world since the last time I blogged with any regularity. 2011 and blogging is no longer so new or even cool. Facebook isn't just a website anymore. Our lives and the web are all mixed together. Offline and online are one.&lt;/p&gt;

&lt;p&gt;We are as much our thoughts as we are our body.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>World</title>
   <link href="http://blog.abi.sh/2011/10/29/world.html"/>
   <updated>2011-10-29T00:00:00-07:00</updated>
   <id>http://blog.abi.sh/2011/10/29/world</id>
   <content type="html">&lt;h1&gt;World&lt;/h1&gt;

&lt;div&gt;
We'll end up numb from playing video games  &lt;br/&gt;
and we'll get sick of having sex. &lt;br/&gt;
And we'll get fat from eating candy &lt;br/&gt; 
as we drink ourselves to death.  &lt;br/&gt; &lt;br/&gt;

We'll stay up late  &lt;br/&gt;
making mix tapes, photoshoping pictures of ourselves &lt;br/&gt;
while we masturbate to these pixelated videos &lt;br/&gt;
of strangers fucking themselves. &lt;br/&gt; &lt;br/&gt;

We are very busy people, &lt;br/&gt;
We are very busy people. &lt;br/&gt;&lt;br/&gt;

There's crusty socks &lt;br/&gt;
and stacks of pizza boxes &lt;br/&gt;
making trails straight to the bed. &lt;br/&gt;
And when we're done sleeping &lt;br/&gt;
we'll stay busy dreaming of the things &lt;br/&gt;
we don't have yet. &lt;br/&gt;
Well there's a long, long list of chores &lt;br/&gt;
and shit to do before we play, &lt;br/&gt;
oh let's just piss away the day.(piss away the day) &lt;br/&gt;
Crank call the cops down at the station, &lt;br/&gt;
just for friendly conversation, &lt;br/&gt;
requesting songs they never play; &lt;br/&gt;
Let's hear the one that goes like: &lt;br/&gt;&lt;br/&gt;

We are very busy people,&lt;br/&gt;
We are very busy people;&lt;br/&gt;
But we've always got time for new friends.&lt;br/&gt;&lt;br/&gt;

So come on over and knock on our door,&lt;br/&gt;
it's open whatchu waitin' for?&lt;br/&gt;
We might be sprawled out on the floor,&lt;br/&gt;
but we still make lovely company.&lt;br/&gt;
Pull up a chair, I'll pour some tea,&lt;br/&gt;
We'll shoot the shit, 'bout everything,&lt;br/&gt;
till you get sick of politics,&lt;br/&gt;
and flip on the TV screen,&lt;br/&gt;
we stare at the TV screen.&lt;br/&gt;&lt;br/&gt;

That Donnie Darko DVD has been repeating for a week,&lt;br/&gt;
and we know every single word.&lt;br/&gt;
(Every single word).&lt;br/&gt;
I've got an iPod like a pirate ship,&lt;br/&gt;
I'll sail the seas&lt;br/&gt;
with fifty thousand songs I've never heard-&lt;br/&gt;
And all the best of them go&lt;br/&gt;
Fa la la la la la...&lt;br/&gt;
Fa la la la la la...&lt;br/&gt;&lt;br/&gt;

We are very busy people,&lt;br/&gt;
We are very busy people;&lt;br/&gt;
But we've always got time for new friends.&lt;br/&gt;
Yeah.&lt;br/&gt;
Fa la la la la la...&lt;br/&gt;
Fa la la la la la... &lt;br/&gt;&lt;br/&gt;

&lt;span&gt;&lt;em&gt;Very Busy People&lt;/em&gt; by The Limousines&lt;/span&gt;
&lt;/div&gt;

</content>
 </entry>
 
 
</feed>
