<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8993901435573921786</id><updated>2012-02-03T00:41:51.078-08:00</updated><category term='concrete_maths'/><category term='learning'/><category term='India'/><category term='maths'/><category term='startups'/><category term='politics'/><title type='text'>Pin Dancing</title><subtitle type='html'>Ravi Mohan's Blog</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>63</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-3822592119867914164</id><published>2011-10-08T01:44:00.000-07:00</published><updated>2011-10-08T01:54:54.575-07:00</updated><title type='text'>An unimportant person''s comment on Steve Jobs's death</title><content type='html'>Context: Everyone and his dog is hyperventilating on the internet about the death of Steve Jobs.&lt;br /&gt;&lt;br /&gt;Here is my opinion (which like most opinions isn't worth very much, but hey this is my blog).&lt;br /&gt;&lt;br /&gt;All men are mortal.&lt;br /&gt;&lt;br /&gt;Steve Jobs was a man.  (A great man, but still, a man.)&lt;br /&gt;&lt;br /&gt;[Modus Ponens] Steve Jobs was mortal too. &lt;br /&gt;&lt;br /&gt;Now he has died. The world endures. Life goes on. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Your&lt;/b&gt; (and my) time to depart will soon be here. The world will still endure. And life will still go on. &lt;br /&gt;&lt;br /&gt;I read somewhere that the one regret most people have at the moment of death is about how they should have done X or Y instead of A or B. &lt;br /&gt;&lt;br /&gt;Get back to work. Do X or Y instead of A or B. Die happy, when your time comes.&lt;br /&gt;&lt;br /&gt;To the degree one admires Jobs, emulating his virtues in your life is a more fitting tribute than another silly comment about how he was as influential as Plato and Aristotle (an idiot actually said this on HN).&lt;br /&gt;&lt;br /&gt;Update: on Stallman's comment on Steve Jobs' death. People have different ideas on whether a person's achievements were good or bad. This affects their judgement of whether a person's death was "good for the world" or not.&lt;br /&gt;&lt;br /&gt;Stallman thinks that the end of Steve's influence on computing (note: he clearly distinguished it from Steve's death itself) is a  good thing. And said as much. &lt;br /&gt;&lt;br /&gt;I don't agree. &lt;br /&gt;&lt;br /&gt;I think, for all his faults (and like you, me and every human who ever lived, he had some) Steve's influence was beneficial (overall) and I wish he'd lived longer. &lt;br /&gt;&lt;br /&gt;But I also think it is ok for people (including Stallman) to express their opinions, even when I find them not in agreement with my own. &lt;br /&gt;&lt;br /&gt;I look forward to the day when everyone (including me) will shut up about how other people should think exactly like everyone else.(or else we'll all get all self righteous and puffed up  and hyperventilative). &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And now I'll go back to coding. (Thank You for reading this far.You really should be doing something useful instead!)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-3822592119867914164?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/3822592119867914164/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=3822592119867914164' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/3822592119867914164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/3822592119867914164'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2011/10/unimportant-persons-comment-on-steve.html' title='An unimportant person&apos;&apos;s comment on Steve Jobs&apos;s death'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-4329606638067747978</id><published>2011-08-15T03:14:00.001-07:00</published><updated>2011-08-15T03:14:22.138-07:00</updated><title type='text'>On Owning a Kindle</title><content type='html'>&lt;br /&gt;&lt;br /&gt;I was gifted a Kindle a month or so ago. I like it for what it does.&lt;br /&gt;&lt;br /&gt;Should you buy one? If you are a book lover, one of those  people who always have a book on hand, or reach for one when you have an hour to spare, you definitely should. If you read  mostly technical or math books (which require a lot of flipping back and forth and good rendering of code or equations)or research papers, you won't get as much benefit as you ought to. &lt;br /&gt;&lt;br /&gt;I am well satisfied with the Kindle for allowing me to lug around about 300 books (I still have almost 3 GB left) so I can read on the bus, while waiting for someone, etc. I would have loved it if I could read math books and papers (pdf rendering on the (small) kindle is terrible) and also scribble notes (the kindle "make notes" functionality is awkward and unusable) but e-ink based readers are still in their early days. For what it does (enable you to carry around a few hundred fiction books it is awesome. For example, I have all the 20 Aubrey Maturin books and the dozen or so Jim  Butcher books in a 6 inch device. (E-Paper blows away IPad's screen for reading.) &lt;br /&gt;&lt;br /&gt;If I'd received the Kindle before the release of  George Martin's utterly terrible "A Dance With Dragons" (I should write a blog entry one of these days on how terrible it is - suffice to say that  the man has lost his touch) I could have spent 11$ on a kindle version instead of 54 $ (18 for the book, the rest for postage to India). The Kindle shines for fiction and light non fiction books. And you can avoid paying for the kindle editions by downloading "pirated" versions if you know where to look. I suspect it would work well for  magazine subscriptions too ( at least for those in which the written word is more important than glossy pictures).&lt;br /&gt;&lt;br /&gt;Somewhat tangentially, someone should write a piece of software that works like LaTex for math but generates flowable text. Tex is (print) page oriented.If you could just take a LaTex file and generate a kindle readable document out  of it,I suspect a lot of math/tech papers would find their way on to e-readers very fast. &lt;br /&gt;&lt;br /&gt; After having used the kindle for a while I am not surprised that Amazon sells more e-books now than paper books. I suspect the Kindle is a very potent weapon in Amazon's arsenal, that its competitors underestimate. If they make it work in the Indian context, (Amazon plans to launch in India in 2012 - I have no idea how much of a role they plan for the Kindle here), their competitors will get swatted aside like so many flies. (Hmmm I should write a post on how I see the Amazon-Flipkart battle shaping up in India. Interesting times we live in).&lt;br /&gt;&lt;br /&gt;Meanwhile, if you are a reader and can afford to buy a Kindle, you should. It (or something like it) is the future of reading.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-4329606638067747978?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/4329606638067747978/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=4329606638067747978' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/4329606638067747978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/4329606638067747978'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2011/08/on-owning-kindle.html' title='On Owning a Kindle'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-6182027461028973991</id><published>2011-06-27T23:11:00.000-07:00</published><updated>2011-06-27T23:37:07.717-07:00</updated><title type='text'>Two Roads Diverge - Machine Learning or IOS Dev?</title><content type='html'>Now that my latest project (for those interested in such things - 30 k lines of Haskell, 200 k lines of (mostly legacy) C/C++ code,  a few thousand lines of  Lua, signal processing, some NLP ish things) is "done done"[1] I have to choose  [2] a new project.&lt;br /&gt;&lt;br /&gt;Choosing a new project is always an exciting time, but also a mildly stressful one. For every choice made, a half dozen equally worthy alternatives have to be rejected. And I do a lot of agonizing over what is the 'right' project to take up. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;One way to maintain a sense of continuity among projects is to  examine what could have been done better on the finished project and see if you can build a project around fixing those deficiencies. &lt;br /&gt;&lt;br /&gt;Working on the last project exposed some flaws in my dev chops - I know nothing about Network Programming and this caused me to take longer than usual to fix a few nasty bugs that cropped up. So I'd like to take a couple of months off and work through Stevens's books and close this gap and then build some customized network monitoring tools which I could have used when my hair was on fire. Our visualization and rendering subsystem used an Open Source renderer that fell down on large datasets.  NLP algorithms in Haskell had to be painfully built one by one.  The Computer Vision library we used (Open CV) is a friggin mess that needs serious surgery. And so on.  Doing all that would multiply the existing codebase's power by a factor of 10. And also make good building blocks for new projects.&lt;br /&gt;&lt;br /&gt;And many ML projects have the strange property that completing them successfully  opens up even more ambitious projects. The folks who sponsored the last project want me to do more stuff for them.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Another way to choose a new project to work on is to find great people you'd like to work with  and build a project around what they are doing or are interested in. My stubborn refusal to move to the USA somewhat limits my choice in this regard - Not many people or companies in Bangalore are doing anything interesting in Machine Learning. But otoh a few people have bounced really (really really) interesting IOS projects (and start up plans) to me. On the one hand, this means I have to go over to the Dark Side and sell my soul to the evil but competent folks at Apple and learn Objective C and overpay for a MacBook and the annually renewed right to put software I write on hardware I already paid for and so on. Being a storm trooper for Darth Steve is a proposition that requires some thought. But on the other hand, I would be working with ultra competent devs again (Working alone, or as the only dev on a team is the only negative - and it is a small one - in my 'lifestyle'. Fixing that would rock). &lt;br /&gt;&lt;br /&gt;A third choice -  I actually thought  of sitting down and writing a book, just for a change of pace. I have a few ideas for some tech books I think are missing from thes shelves and every dev I pitched reacted with a variant of "I'd buy that RIGHT now - please please write it". What stops me  is that people who have written successful tech books say that it is a pretty thankless task, and with some exceptions, financially unrewarding (though your "prestige" goes up- something I don't care a rat's ass about). If I had to choose between spending a thousand hours writing a book and a thousand hours writing code, it is somewhat hard to choose the former.&lt;br /&gt;&lt;br /&gt;Hence the "two roads diverge" tone that permeates my thoughts. I could dive deeper into Machine Learning(and allied areas) or go do mobile app stuff. Choosing promises to be interesting. &lt;br /&gt;&lt;br /&gt;Two Roads Diverge and all that jazz[3]&lt;br /&gt;&lt;br /&gt;But first, before I have to make a choice, clear the backlog of people to meet (I thank you all for your patience and suffering my erratic  schedules), places to visit, things to do. (Metaphorically) lie on a beach somewhere with no computers in sight. Relax, refresh. Then decide. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[1] Most projects have an official "done " date and then a later "done done" date. In this case the project was 'done' some time ago and then a rookie dev  wiped out the source control repo while simultaneously trying to alter the  Haskell code (vs writing a minor script in Lua, which is what the situation called for), bringing the whole cluster down, causing the (non dev) owners of the project to send an SOS to me to get on a plane pronto and put out the fire.&lt;br /&gt;Some fences have been built to avoid this kind of FUBAR situation from happening again so now I am "done done"&lt;br /&gt;&lt;br /&gt;[2] One significant milestone in one's evolution as a developer is when you realize that you have more ideas than you can implement in your lifetime. You are even luckier when people pay you to implement them (vs being assigned to some Godawful Leasing System dev in  some enterprise dev body shop say)&lt;br /&gt;&lt;br /&gt;[3] - From Frost's poem, of course &lt;br /&gt;&lt;br /&gt;&lt;i&gt;Two roads diverged in a yellow wood,&lt;br /&gt;And sorry I could not travel both&lt;br /&gt;And be one traveler, long I stood&lt;br /&gt;And looked down one as far as I could&lt;br /&gt;To where it bent in the undergrowth.&lt;br /&gt;&lt;br /&gt;...................................&lt;br /&gt;&lt;br /&gt;I shall be telling this with a sigh&lt;br /&gt;Somewhere ages and ages hence:&lt;br /&gt;Two roads diverged in a wood, and I&lt;br /&gt;I took the one less traveled by,&lt;br /&gt;&lt;br /&gt;And that has made all the difference.&lt;br /&gt;&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-6182027461028973991?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/6182027461028973991/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=6182027461028973991' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/6182027461028973991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/6182027461028973991'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2011/06/two-roads-diverge-machine-learning-or.html' title='Two Roads Diverge - Machine Learning or IOS Dev?'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-3547344802745811596</id><published>2011-05-29T06:20:00.000-07:00</published><updated>2011-05-29T06:21:58.046-07:00</updated><title type='text'>"Civil-Society Hacker" barcamp at Google Gurgaon</title><content type='html'>Without extra comment, an email I received. If you are interested in this kind of thing and/or live near Gurgaon, maybe you should take a look. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;From:&lt;br /&gt;&lt;br /&gt;"Laina Emmanuel" &lt; lemmanuel@accountabilityindia.org &gt;&lt;br /&gt;&lt;br /&gt;Dear Ravi, &lt;br /&gt;&lt;br /&gt;I came across your blog while looking for hackers in India. I am looking for civil-society hackers who would like to use their programming skills to develop innovative solutions for governance. To facilitate a conversation between programmers and policy-makers, I am organizing (if it can be called organizing) a bar-camp at the Google Campus in Gurgaon, on "Technology, Transparency and Accountability" on the 5th of June.&lt;br /&gt;&lt;br /&gt;This bar-camp is being held by Accountability Initiative. Founded in 2008, Accountability Initiative is a research initiative that aims to improve the quality of public services in India by promoting informed and accountable governance. To this end, one of AI's key efforts is to develop innovative models for tracking government led social sector programs in India. The Centre for Policy Research, an independent and non-partisan research institute and think-tank, is the institutional anchor for this initiative. &lt;br /&gt;&lt;br /&gt;We have a wide variety of participants for the bar-camp ranging from policy-makers to technology-enthusiasts. We would be honored if you could also join us at this bar-camp and help show how hackers can contribute to governance.  Also, we would really appreciate it if you could forward this invitation to others who would be interested.&lt;br /&gt;&lt;br /&gt;Thanks and regards&lt;br /&gt;Laina Emmanuel&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;I have no affiliation with any of the organizations mentioned in the email. Write to Laina for details.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-3547344802745811596?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/3547344802745811596/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=3547344802745811596' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/3547344802745811596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/3547344802745811596'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2011/05/civil-society-hacker-barcamp-at-google.html' title='&quot;Civil-Society Hacker&quot; barcamp at Google Gurgaon'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-7118283200566663032</id><published>2011-04-08T02:52:00.000-07:00</published><updated>2011-04-09T07:50:40.533-07:00</updated><title type='text'>Why startups in India find it hard to hire devs</title><content type='html'>Mayank Sharma &lt;a href="http://mayanks.posterous.com/hiring-in-startups"&gt;wrote an interesting blog post&lt;/a&gt; about hiring difficulties for startups in India. He says the reasons are&lt;br /&gt;&lt;br /&gt;(1) The very good  devs can work for multinationals (Google,Microsoft etc) and local startups can't match the compensation.&lt;br /&gt;&lt;br /&gt;(2) Indian services companies have lock in contracts&lt;br /&gt;&lt;br /&gt;(3) No real history of non founders making lots of money from a startup&lt;br /&gt;&lt;br /&gt;(4) Those who do want to work for startups have "unreasonable expectations" (quotes mine, not his)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Manoj Govindan (who works for (startup) &lt;a href="http://www.perfios.com/"&gt;Perfios&lt;/a&gt; -  due disclosure - I reccomended him to Perfios -  guilty as charged! :-) ) responded with four reasons why these startups don't hold any allure for good devs&lt;br /&gt;&lt;br /&gt;(1) very few Indian startups offer &lt;b&gt;significant&lt;/b&gt; equity to early hires.&lt;br /&gt;&lt;br /&gt;(2) Many Indian startups give employees little say in strategic decision making. In the end, you are still a "coding body".&lt;br /&gt;&lt;br /&gt;(3) Signal/Noise ratio - too many "social this" "cloud that" clone startups out there than innovative ones. Noise attracts noise.&lt;br /&gt;&lt;br /&gt;(4) "Very good guys" like to make own technical decisions. Here they find them already made and locked in before they join. Often tech stacks are in place even before people actually decide what to do.&lt;br /&gt;&lt;br /&gt;I have some sympathy for both view points. Is the question such a complicated one though?&lt;br /&gt;&lt;br /&gt;There is a  simpler explanation. All the points above can be subsumed under  "Whenever there is a demand and supply gap, and some kind of free market mediating the two, prices rise".  That is it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Good devs, those with the combination of tech chops, communication skills, attitude and *ambition* (iow the exact type you want for your startup) are a  scarce resource generally and particularly so in today's market. Demand is very high (this fluctuates) and supply is very low (this is constant). In such a scenario, the price varies from very high to high. Right now it is very high. And that is it. &lt;br /&gt;&lt;br /&gt;You just can't buy gold for peanuts (speaking metaphorically. In reality you can trade a few truckloads for some gold). I can't.  You can't. It is a value neutral statement - just the way the market works. You can sometimes marginally route around the Iron Law of supply and demand - &lt;a href="http://www.zoho.com/"&gt;Zoho&lt;/a&gt; trains people who wouldn't be considered  for normal dev jobs for e.g - in effect, creating their own supply -  but you can't escape it.&lt;br /&gt;&lt;br /&gt;Even then, the argument goes, the "price" for good devs isn't necessarily all about money. True enough. &lt;br /&gt;&lt;br /&gt;Look at how Silicon Valley's startups (or even more narrowly, YC funded companies) hire good devs - If you can't match (or exceed) market price in terms of compensation you need to make it up with (a) significant equity and/or (b) advanced tech and/or (c) a compelling business model with some traction and/or  (d) a  "change the world" product (think &lt;a href="http://www.spacex.com/"&gt;SpaceX&lt;/a&gt;) or (e) credible, proven founders. This is true *everywhere*, not just in the valley, though details  and leeway differ. If you are a company trying to hire the very best developers, you have to pay the price somehow.&lt;br /&gt;&lt;br /&gt;The typical Indian "lean startup" fails on all counts - it  is often doing some whacky  buzzword heavy, content lite, mobile/social mini app, works on PHP and MySQL, has no money (and so offers bare minimum salaries), is often run by clueless MBA/undistinguished engineer types and will give a prospective employee 1% equity in  a doomed product for an endless 18 hour working day.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Why the hell would anyone half way technically good want to work with such outfits?&lt;br /&gt;Devs are sometimes economically stupid but they aren't *that* stupid. &lt;br /&gt;&lt;br /&gt;If they want to do interesting tech stuff they can go work for Google (Mountain View, not Bangalore!), start their own "great tech" companies, work on Open Source projects, work from home for US based startups doing interesting things or wait for Indian startups with cutting edge tech to proliferate, meanwhile drawing a steady salary and honing their skills. &lt;br /&gt;&lt;br /&gt;If you must stay in Bangalore,  but want great tech and a small company, go work for &lt;a href="http://www.gluster.com/"&gt;Gluster&lt;/a&gt;. All the tech and Open Source you want. Or apply to &lt;a href="http://tachyon.in/"&gt;Tachyon&lt;/a&gt;. Or &lt;a href="http://www.notionink.com/"&gt;Notion Ink&lt;/a&gt;. There are a *lot* of companies attempting technically interesting things in Bangalore these days. And there is space for many many more, if you have founder dreams.&lt;br /&gt;&lt;br /&gt;If you want to  do services web dev, and work with small teams of bright people in a great office atmosphere, they should go work for someone like &lt;a href="http://www.c42.in/"&gt;C42&lt;/a&gt;. Good company I vouch for. &lt;br /&gt;&lt;br /&gt;If you just want to get out of that crappy enterprise services bodyshop, but don't want to get stressed about whether your children will starve,  *and* want to do something "like a startup, but stable",go work for (a) someone with traction and funding, but aren't quite a startup any more (say &lt;a href="http://www.slideshare.net/"&gt;SlideShare&lt;/a&gt; or &lt;a href="http://www.inmobi.com/"&gt;Inmobi&lt;/a&gt; or &lt;a href="http://www.flipkart.com/"&gt;Flipkart&lt;/a&gt;) (b) work with one of the many offshore centres of product companies, who have plenty of money. (say &lt;a href="http://www.intuit.com/"&gt;Intuit&lt;/a&gt;,or &lt;a href="http://www.zynga.com/"&gt;Zynga&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;If you choose to be an employee (and it is an honourable choice), always make sure you are getting what you are worth -  be that in terms of money, equity or technical challenge or whatever your individual preference is. This is just plain common sense.&lt;br /&gt;&lt;br /&gt;If you want to be entrepreneurial and don't mind the stress, be a (co)founder, not an employee. That way you can still work on the latest social/mobile ripoff idea in PHP (or the blue sky idea in your own custom language!) and scrounge around for money, but you'll be in control of your destiny and won't have to factor in crazy bosses. ;-)&lt;br /&gt;&lt;br /&gt;Nutshell : The law of demand and supply explains all phenomena in a free market. If you are any good at programming, you have more options now than you ever did. If you want to hire such people, create a compelling value  proposition. If you aren't getting enough applications from qualified devs your "offer" isn't good enough. &lt;br /&gt;&lt;br /&gt;The End.&lt;br /&gt;&lt;br /&gt;EDIT: someone asked about good startups in Pune. The only Pune based startup I know of is &lt;a href="http://infinitelybeta.com/"&gt;Infinitely Beta&lt;/a&gt; (who have no problems recruiting afaik). But I am no expert on Indian startups.Do your research!&lt;br /&gt;&lt;br /&gt;EDIT 2: I dashed this off while waiting for a build to complete. Apologies in advance for any typos/flaws.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-7118283200566663032?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/7118283200566663032/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=7118283200566663032' title='15 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/7118283200566663032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/7118283200566663032'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2011/04/why-startups-in-india-find-it-hard-to.html' title='Why startups in India find it hard to hire devs'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-5034700203970894994</id><published>2011-02-04T07:01:00.000-08:00</published><updated>2012-01-19T01:16:46.139-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='maths'/><category scheme='http://www.blogger.com/atom/ns#' term='concrete_maths'/><category scheme='http://www.blogger.com/atom/ns#' term='learning'/><title type='text'>The repertoire method in "Concrete Mathematics"</title><content type='html'>&lt;a href=http://www.amazon.com/exec/obidos/ASIN/0201558025&gt;Concrete Mathematics&lt;/a&gt; by Knuth et al is a great book but there are a couple of places where people learning by themselves can stumble, fall and get lost. &lt;br /&gt;&lt;br /&gt;When I originally worked through the book I couldn't make head or tail of the "repertoire method" of solving recurrences. Eventually I did figure it out and sometime  later I wrote up what I understood and posted it on my (then) blog. It seems that a lot of people search for "Concrete Mathematics Repertoire method" on Google and it is my second most popular &lt;a href="http://ravimohan.blogspot.com/2005/03/levelling-up-in-math-land.html"&gt;blog post&lt;/a&gt; (The most popular post is &lt;a href="http://ravimohan.blogspot.com/2007/04/learning-from-sudoku-solvers.html"&gt;this one&lt;/a&gt;, fwiw)&lt;br /&gt;&lt;br /&gt;So I re-read the repertoire method post today and while it is correct, I can explain it better today so here goes. &lt;br /&gt;&lt;br /&gt;(What follows may not make sense to you if you are not working through CM (be warned!). Also be warned that  I have no formal training in mathematics, computer science or programming and am entirely self taught. So people with such training can probably explain things better. The following reflects only *my* understanding. That said, onwards!)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;By the time you hit the repertoire method section in Chapter 1 of Concrete Mathematics, you have been taught a simple method to find closed forms of recurrences. The essential algorithm is &lt;br /&gt;&lt;br /&gt;(a) make a table of the recurrence values R(n) for small values of n. &lt;br /&gt;(b) Eyeball the table to see if you can spot a pattern, &lt;br /&gt;(c) write down the pattern. &lt;br /&gt;(d) Prove (or disprove) the candidate closed form's correctness by Mathematical Induction over (a subset of) the natural numbers.&lt;br /&gt;&lt;br /&gt;You used this method, for example to solve the Josephus problem, so you know where to stand (in the circle of your idiot friends trying to commit mass suicide) so that you end up being the survivor), surrender to the Romans and become a historian for the ages).&lt;br /&gt;&lt;br /&gt;The repertoire method makes its (first) appearance in the generalization of the  Josephus recurrence. The constants 1 and -1 are replaced by alpha beta and gamma to give the more general recurrence&lt;br /&gt;&lt;br /&gt;f(1) = alpha&lt;br /&gt;f(2n) = 2*f(n) + beta&lt;br /&gt;f(2n + 1) = 2*f(n) + gamma~~~~~~~~~~~~~~~~~~~~~~~[1]&lt;br /&gt;&lt;br /&gt;Your job is to find f(n) such that this recurrence is true  for any values of alpha, beta, and gamma.&lt;br /&gt;&lt;br /&gt;So how do you do this? You use the only  technique you know (at this point in the book)  of making a table for small values of n and eyeballing it to spot a pattern (I am too lazy to reproduce the table here, go buy the book!). You don't spot a pattern for the f(n) but you do notice that all values of f(n) follow a pattern of &lt;br /&gt;&lt;br /&gt;f(n) = A(n)*alpha +  B(n)*beta + C(n)*gamma~~~~~~~~~~~~~~[2]&lt;br /&gt;&lt;br /&gt;This is a kind of template of what the final closed form will look like, depending of course on the values of A(n), B(n) etc&lt;br /&gt;&lt;br /&gt;Something very important happened here. You broke down a problem into smaller subproblems. You still don't know the value of f(n) but now you know that if you can find the values of the functions A(n), B(n), and C(n) you have solved f(n).&lt;br /&gt;&lt;br /&gt;Now you can find these values with your trusted "spot a pattern and verify with induction" (the only tool you have at this point) OR  you can use the (unexplained!) repertoire method.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The first bit of confusion arises because the authors do both. They guess values of all the three functions in n, A(n), B(n) and C(n) from the initial table, say (correctly) that proving that these values by induction is long and tedious and then they go ahead and  prove that the guessed value of A(n) is correct by induction! (to be fair they are solving for only A(n) and not all the unknowns simultaneously but though smaller this induction is still tedious. Try it. I did.)&lt;br /&gt;&lt;br /&gt;Or, in more detail, &lt;br /&gt;&lt;br /&gt;a value is guessed, (that A(n) = 2^m , m coming from rewriting n as 2^m + k as in the original Josephus problem - the book uses the letter l instead of k, I use k to distinguish easily from the number 1), beta and gamma are set to zero (remember the recurrence has to hold for *all* values of alpha, beta and gamma, including the selected 1,0,0) and  then the recurrence [1] is rewritten (using [2]) as  a recurrence in terms of A(n).&lt;br /&gt;&lt;br /&gt;I'll repeat that so it is clear what is happening&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Step 1: Guess a value for A(n), by eyeballing.We guess A(n)  = 2^m&lt;br /&gt;&lt;br /&gt;Step 2: Select alpha, beta and gamma so that the other two functions of n, B(n) and C(n), get eliminated from [2]. You can do this by selecting alpha = 1 and beta = gamma = zero.&lt;br /&gt;&lt;br /&gt;Step 3: Rewrite the equation &lt;b&gt;[2]&lt;/b&gt; (i.e the observed generalized form) in terms of the selected values of alpha, beta and gamma. You get f(n) = A(n).&lt;br /&gt;&lt;br /&gt;Step 4: Use this equation (ie f(n) = A(n)) and your chosen values of alpha, beta and gamma to rewrite the &lt;b&gt;original recurrence&lt;/b&gt;  (ie equation [1]) to get&lt;br /&gt;&lt;br /&gt;A(1) =  1 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[3]&lt;br /&gt;A(2n)  = 2*A(n)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[4]&lt;br /&gt;A(2n + 1) = 2*A(N)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[5]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now the problem becomes to prove that your guess (i.e, A(n) = A(2m + k) = 2^m) satisfies this new recurrence as expressed by [3] and [4] and [5].&lt;br /&gt;&lt;br /&gt;The authors state "Sure enough it is true (by induction on m) that A(2^m + k) = 2^m "&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The authors  don't show the induction but you can work out this (tedious but not difficult) induction. Only basic algebraic manipulation is required) &lt;br /&gt;&lt;br /&gt;Be aware that (a) the induction is &lt;b&gt;on m, not n&lt;/b&gt; and (b) the predicate to be proven has the form P_m: (A(2^m +k) =&gt; [3]   AND [4]  AND [5]). &lt;br /&gt;&lt;br /&gt;First, prove P_zero (as m starts from zero, though n starts from 1 - we need an induction on m, not n!). Then prove that P_m =&gt; P_m+1. (Weak Induction is sufficient).&lt;br /&gt;&lt;br /&gt;So we prove  (yay!!) that A(n) does = 2^m.&lt;br /&gt;&lt;br /&gt;You &lt;b&gt;could&lt;/b&gt; do the same for B(n) and C(n). Select values for alpha, beta and gamma to create recurrences in terms of B(n) only and then C(n) only, just as we did above for A(n), then use mathematical induction &lt;b&gt;over m&lt;/b&gt; to prove your guesses correct.&lt;br /&gt;&lt;br /&gt;In the book though, the authors &lt;i&gt;switch to the repertoire method to find B(n) and C(n)&lt;/i&gt;. This switch  is the first confusing bit - A(n) is found using a guess + induction (the old method - eyeball, guess, use induction). But then they switch - and the repertoire method  is used to find B(n) and C(n)  and the initial guesses as to their values are unused!&lt;br /&gt;&lt;br /&gt;Worsening the confusion is the fact that the repertoire method is not identified or explained explicitly at this point. As a student states in a margin note (great idea btw) "Beware: the authors are expecting you to figure out the idea of the repertoire  method from seats of pants examples instead of giving a top down presentation"&lt;br /&gt;&lt;br /&gt;The seat-of-pants example is actually enough if A(n),B(n) and C(n) are &lt;b&gt;all&lt;/b&gt; worked out with the repertoire method.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So let us solve the whole thing with the repertoire method (no induction)  and see how it works. Let us throw away the guesses about the values of A(n), B(n), and C(n). We'll assume we couldn't make any guesses for A(n), B(n) and C(n).&lt;br /&gt;&lt;br /&gt;All we have is the original recurrence  &lt;br /&gt;&lt;br /&gt;f(1) = alpha&lt;br /&gt;f(2n) = 2*f(n) + beta&lt;br /&gt;f(2n + 1) = 2*f(n) + gamma~~~~~~~~~~~~~~~~~~~~~[1]&lt;br /&gt;&lt;br /&gt;and our observation that f(n) always has the form &lt;br /&gt;&lt;br /&gt;f(n) = A(n)*alpha +  B(n)*beta + C(n)*gamma~~~~~~~~[2]&lt;br /&gt;&lt;br /&gt;ok so we don't know (and we need to find out) the values of A(n), B(n) and C(n) . &lt;br /&gt;&lt;br /&gt;The repertoire method (for this recurrence) works like this. &lt;br /&gt;(1) Guess a value &lt;b&gt;for f(n)&lt;/b&gt;.  (ie the guess is for the whole of [2] NOT a component A(n) as we did above!) &lt;br /&gt;(2)See if you can find values for alpha, beta and gamma to validate this guess. Rewrite &lt;b&gt;[1]&lt;/b&gt;, the original recurrence in terms of your guess for f(n). See if you can find values for alpha, beta and  gamma.&lt;br /&gt;(3) Substitute these values (of alpha, beta and gamma), back into [2]. You'll get an equation in terms of the three unknowns A(n), B(n) and C(n).&lt;br /&gt;(4)Repeat steps (1) - (3) till you have three &lt;b&gt;independent&lt;/b&gt; equations. &lt;br /&gt;(5)Solve for three linear equations in three unknowns. &lt;br /&gt;&lt;br /&gt;Done. &lt;br /&gt;&lt;br /&gt;Important: If you make a "wrong" guess you will end up with a useless equation like 0 = 0 or an equation that is not independent of the already derived equations and so on. If this happens, don't worry about it, try another guess till you do get three independent equations.&lt;br /&gt;&lt;br /&gt;In detail.&lt;br /&gt;&lt;br /&gt;I guess (the authors do too) that f(n) = 1. &lt;br /&gt;&lt;br /&gt;Rationale for the guess: f(n) = constant is the simplest possible formulation of f(n) (just for fun you might want to try f(n) = 0)&lt;br /&gt;&lt;br /&gt;Let us try substituting this in [1]&lt;br /&gt;&lt;br /&gt;f(1) = alpha becomes 1  = alpha (since f(n) is 1 for any n). &lt;br /&gt;&lt;br /&gt;similarly &lt;br /&gt;&lt;br /&gt;f(2n) = 2*f(n) + beta becomes 1 = 2*1 + beta so beta = -1&lt;br /&gt;f(2n + 1) = 2*f(n) + gamma   becomes 2*1 = 1 + gamma so gamma = -1&lt;br /&gt;&lt;br /&gt;so we have values for alpha,beta, gamma and f(n) and when we substitute back  into [2] we get &lt;br /&gt;&lt;br /&gt;A(n) - B(n) - C(n) = 1~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[6]&lt;br /&gt;&lt;br /&gt;ok!!!  we have the first equation.&lt;br /&gt;&lt;br /&gt;Now if we could get just two more independent equations like this we would have  three equations in three unknowns (and so solve by Linear Algebra). &lt;br /&gt;&lt;br /&gt;The authors use f(n) = n as their second guess and get A(n) + C(n) = n as their second equation.&lt;br /&gt;&lt;br /&gt;(This is a good guess too. After f(n) = k, f(n) = n is the next rung up the complexity ladder. But in this specific example we can do better - see below)&lt;br /&gt;&lt;br /&gt;and since they already proved that A(n) = 2^m by the "guess and use induction" method they don't need a third equation. They have two equations in two unknowns  and they solve to get the solution.&lt;br /&gt;&lt;br /&gt;But we don't have any guesses as to the values of A(n), so we can't plug that in. &lt;br /&gt;&lt;br /&gt;We guessed at f(n) = 1 and got the equation  A(n) - B(n) - C(n) = 1 and we need two more independent equations. We could re use the authors' f(n) = n guess and also cheat a bit and reuse the (non generalized) Josephus recurrence solution that we already proved that to "guess" that f(n) = 2k + 1. Then  alpha = 1, beta = -1 and gamma = 1, giving us the third  equation A(n) - B(n) + C(n) = 2k + 1. Three equations three variables. Solve. This gives the right answer too.&lt;br /&gt;&lt;br /&gt;But that feels like a cheat. What if we hadn't solved the Josephus recurrence before? How would we guess f(n) = 2k + 1? We could go with f(n) = n but we can do better. &lt;br /&gt;&lt;br /&gt;Since n = 2^m + k, we guess (our second guess)&lt;br /&gt;&lt;br /&gt;f(n) = 2^m&lt;br /&gt;&lt;br /&gt;and f(n) = k. (our third guess)&lt;br /&gt;&lt;br /&gt;(Rationale for these guesses. Since n is dependent on 2^m and k why not guess with the simpler variables rather  than f(n) = n, like the example in the book does? In this case this decision pays off spectacularly, giving the solutions for A(n) and C(n) directly and B(n) trivially )&lt;br /&gt;&lt;br /&gt;These give us the equations, (just like we worked out [4] above, try it!)&lt;br /&gt;&lt;br /&gt;A(n) = 2^m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[7]&lt;br /&gt;C(n) = k~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[8]&lt;br /&gt;&lt;br /&gt;and these two along with [6] give us B(n)  = 2^m - k - 1.&lt;br /&gt;&lt;br /&gt;Look ma! no induction !&lt;br /&gt;&lt;br /&gt;So now we have the values for A(n), B(n) and C(n) and now we can say that&lt;br /&gt;&lt;br /&gt;the solution to the recurrence&lt;br /&gt;&lt;br /&gt;f(1) = alpha&lt;br /&gt;f(2n) = 2*f(n) + beta&lt;br /&gt;f(2n + 1) = 2*f(n) + gamma    is (given n = 2^m + k as explained earlier in the  book)&lt;br /&gt;&lt;br /&gt;f(n) = (2^m)*alpha + (2^m - k - 1)*beta + k*gamma.&lt;br /&gt;&lt;br /&gt;Double checking,When alpha = 1, beta = -1 and gamma = 1 we get&lt;br /&gt;&lt;br /&gt;the solution to &lt;br /&gt;&lt;br /&gt;f(1) = 1&lt;br /&gt;f(2n) = 2*f(1) - 1&lt;br /&gt;f(2n + 1) = 2*f(n) + 1  (note: this is the original Josephus Recurrence)&lt;br /&gt;&lt;br /&gt;is (2^m)*1 + (2^m - k - 1)*(-1) + k*(1), which resolves to &lt;br /&gt;&lt;br /&gt;2k+1 which agrees with [1.9] (in the book).&lt;br /&gt;&lt;br /&gt;Hopefully now what the authors say about the recurrence method makes more sense, though the sentence structure at this point in the book is confusing  Let us take it apart - my comments in italics.&lt;br /&gt;&lt;br /&gt;"First we find settings for parameters for which we know the solution" &lt;i&gt;(the parameters here are alpha beta and gamma, the "solution"s are the various guessed values of f(n) &lt;b&gt;NOT&lt;/b&gt; A(n),B(n), C(n). We make guesses for A(n),B(n) etc when we are using the prove by Induction method. When we use Repertoire method, we guess for f(n) and *find* A(n), B(n) etc)&lt;/i&gt;;  &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;"this gives us a repertoire of special cases that we  can solve" &lt;i&gt;(the special cases are the independent equations in the unknowns A(n),B(n),C(n) and solving them gives us the values of A(n) etc)&lt;/i&gt;.  &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;"Then we obtain the general case"   &lt;i&gt;(the solution of recurrence [1], the general value of f(n) )&lt;/i&gt;   &lt;br /&gt;&lt;br /&gt;"by combining the special cases" &lt;i&gt;(In this case we combine the solutions of the equations which are the "special cases")&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;Hopefully that helped a bit. &lt;br /&gt;&lt;br /&gt;The repertoire method pops up all over CM in various contexts, and once you grasp it is easy to identify and use. Enjoy the rest of Concrete  Mathematics (which imho is a great, great book every programmer should have on his bookshelf)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-5034700203970894994?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/5034700203970894994/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=5034700203970894994' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/5034700203970894994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/5034700203970894994'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2011/02/repertoire-method-in-concrete.html' title='The repertoire method in &quot;Concrete Mathematics&quot;'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-351369175314122177</id><published>2010-12-11T06:41:00.000-08:00</published><updated>2010-12-11T19:47:38.190-08:00</updated><title type='text'>The answer to "Will you mentor me?" is</title><content type='html'>No.&lt;br /&gt;&lt;br /&gt;Thanks for understanding.&lt;br /&gt;&lt;br /&gt;Ok that was the nutshell version. If that answers your question, that's great.&lt;br /&gt;&lt;br /&gt;The more detailed answer is "No, I won't mentor you,but in this blog entry I will tell you what to do instead, to get where you want to go". And  I can reply with the url to this post the next time someone requests mentoring.&lt;br /&gt;&lt;br /&gt;I once wrote  a comment on Hacker News about what *I* learned about ending up with awesome mentors. Here it is, slightly edited so it reads a little better.&lt;br /&gt;&lt;br /&gt;(The OP asked) &lt;i&gt;Recently I have tried approaching a few good developers through their blogs about various matters including advice on how to go about some projects I'm undertaking but I am surprised at the unfriendly responses I have received. Maybe I have been going about it the wrong way but it got me thinking; Shouldn't the guys whose work we look up to be keen on what some of us young aspiring developers have to contribute to the community? I mean sure, we don't have the experience or skills some of these guys have(yet) but we still have some ideas that are viable with the right technical skills to back them. If any of them want to reach out and help nurture some potential talent, it may very well benefit all them in the end, whether financially or in terms of new ideas and experiences.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I commented thus&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;I have some experience in this, so let me try to explain a couple of things that I learned in the "school of hard knocks".&lt;br /&gt;&lt;br /&gt;Once upon a time I was in a situation where I thought I could contribute to something one of the best programmers in the world was working on so I sent an email (I got the address from his webpage) and said something to the effect of " you say on this webpage you need this code and I have been working on something similair in my spare time and I could write the rest  for you over the next few months because I am interested in what you are doing" and I got a 2 line reply which said (paraphrased) " A lot of people write to me saying they'll do this , but I've never seen any code yet so I am a little skeptical. Don't take it personally. Thanks. bye.".&lt;br /&gt;&lt;br /&gt;So in the next email (sent &lt;b&gt;a minute after I received his reply&lt;/b&gt;) I sent him a zipped file of code with an explanation that "this is what I've done so far which is about 70% of what you want" and he immediately replied saying "Whoa you are serious. That is refreshing .. ' and opened up completely, giving me a lot of useful feedback and very specific advice.  He is a (very valued) mentor to this day.&lt;br /&gt;&lt;br /&gt;Another time, I was reading a paper from a (very famous) professor at Stanford, and I thought I could fill in some gaps in that paper so I wrote a "You know your paper on X  could be expanded to give results Y and Z. I could use the resulting code in my present project. Would you be interested in seeing the expanded results or code" email and I got a very dismissive one line email along he lines of " That is an old paper and incomplete in certain respects, Thanks".&lt;br /&gt;&lt;br /&gt;So a few days later, I sent along a detailed algorithm that expanded his idea, with a formal proof of correctness and a code implementation and he suddenly switched to a more expansive mode, sending friendly emails with long and detailed corrections and ideas for me to explore.&lt;br /&gt;&lt;br /&gt;Now I am not in the league of the above two gentlemen, but perhaps because I work in AI and Robotics in India,which isn't too common, I receive frequent emails to the effect of "please mentor me", often from students. I receive too many of these emails to answer any in any detail, but if I ever get an email with "I am interested in AI/ Robotics. This is what I've done so far. Here is the code. I am stuck at point X. I tried A, B, C nothing worked. What you wrote at [url] suggests you may be the right person to ask. can you help?" I would pay much more attention than to a "please mentor me" email.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;In other words, when you asks for a busy person's time for "mentorship" or "advice" or whatever, show (a) you are serious and have gone as far as you can by yourself (b) have taken concrete steps to address whatever your needs are and (optionally. but especially with code related efforts)(c) how helping you could benefit them/their project.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Good  developers  are very busy and have so much stuff happening in their lives and more work than they could ever hope to complete that they really don't have any time to answer vague emails from some one they've never heard of before.&lt;br /&gt;&lt;br /&gt;As an (exaggerated) analogy, think of writing an email to a famous director or movie star or rock star, saying "I have these cool ideas about directing/acting/ music. Can you mentor me/give me advice?"&lt;br /&gt;&lt;br /&gt;I am replacing the words "app" and "technical" in your sentence below with "film" and "film making".&lt;br /&gt;&lt;br /&gt;"if I have an idea for a film that I want to develop, but my film making skills limit me, it would be nice to have people to bounce the idea off and have it implemented. "(so .. please mentor me/give me advice/make this film for me).&lt;br /&gt;&lt;br /&gt;Do you think a top grade director (say Spielberg) would respond to this?&lt;br /&gt;&lt;br /&gt;The fact that you at least got a 2 line response shows that the developers you wrote to are much nicer than you may think. They care enough not to completely dismiss your email, though they receive dozens of similar emails a week.&lt;br /&gt;&lt;br /&gt;As someone else advised you on this thread, just roll up your sleeves and get to work. If your work is good enough, you'll get all the "mentoring" you'll need. "Mentoring" from the best people in your field is a very rare and precious resource and like anything else in life that is precious, should be earned.&lt;br /&gt;&lt;br /&gt;My 2 cents. Fwiw. YMMV.&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;That says most of what I want to say.&lt;br /&gt;&lt;br /&gt;Some minor points now, addressing some points  raised in the latest emails. &lt;br /&gt;&lt;br /&gt;If you claim to be "very passionate about X" but have never done anything concrete in X I find it difficult to take you seriously. People who are really passionate about anything don't wait for "leaders" or "mentors" before doing *concrete* work in the area of their passion, however limited. Specifically wrt to programming/machine learning etc in the days of the internet and with sites like Amazon or the MIT OCW you have no limits except those you  impose on yourself.&lt;br /&gt;&lt;br /&gt;I hate to sound all zen master-ey but in my experience, it is &lt;b&gt;doing&lt;/b&gt; the work that teaches you what you need to  do next. Walking the path reveals more of the map.  All the  mentoring a truly devoted student needs is an occasional nudge here or an occasional brief warning there. Working with uncertainty is part of the learning. Waiting for mentorship/leadership/"community"[1]/ whatever to start working is a flaw that guarantees you will never achieve anything worthwhile. &lt;br /&gt;&lt;br /&gt;Ok pseudo-zen-master-mode off. More prosaic version - "shut up and code". Or make a movie on your webcam, Or write that novel. Whatever.  Your *work*  will, in time, bring you all the mentoring and community or whatever else you need. &lt;br /&gt;&lt;br /&gt;As always My 2 cents. Fwiw. YMMV. Have a nice day.&lt;br /&gt;&lt;br /&gt;[1] For some reason Bangalore is crawling with people who first want to form a community and then start learning/working/whatever. These efforts almost invariably peter out uselessly. First do the work. Then if you feel like "communing" talk to others who are also working hard.Please read &lt;a href="http://www.teamten.com/lawrence/writings/plan05.html"&gt;this&lt;/a&gt; , sent to me by my friend Prakash Swaminathan.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-351369175314122177?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/351369175314122177/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=351369175314122177' title='24 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/351369175314122177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/351369175314122177'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2010/12/answer-to-will-you-mentor-me-is.html' title='The answer to &quot;Will you mentor me?&quot; is'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>24</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-8127736116006535467</id><published>2010-09-09T21:59:00.000-07:00</published><updated>2010-10-31T02:21:07.216-07:00</updated><title type='text'>My Schedule for the rest of the year</title><content type='html'>- Starting tomorrow hack 12 hours a day as part of my current project. ( C &amp; Haskell, Machine Learning, if anyone is interested). Will be traveling to places without Internet connectivity. So expect to be mostly offline.&lt;br /&gt;&lt;br /&gt;- Oct end / Beginning of Nov: Back in Bangalore . Back online. Yay!&lt;br /&gt;&lt;br /&gt;- Nov end: complete paperwork/documentation/training blah blah,   Project handover.&lt;br /&gt;&lt;br /&gt;- Nov  end. This (phase of this)  project done. Whew.&lt;br /&gt;&lt;br /&gt;- December - somewhat free. I hope to release some Open Source code before EOY. Fairly old Scala code (so needs to be updated to Scala 2.8, add some comments and so on)  but should be useful to others. Paperwork for  Open Source release should come through before then.&lt;br /&gt;&lt;br /&gt;Jan 1, 2010. New Year. No definite plans but lots of nice opportunities. Problems of plenty. Touch Wood. (Update: "No definite plans" is no longer true. A couple of VERY interesting opportunities in the air. Life is good.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-8127736116006535467?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/8127736116006535467/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=8127736116006535467' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/8127736116006535467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/8127736116006535467'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2010/09/my-schedule-for-rest-of-year.html' title='My Schedule for the rest of the year'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-7672838758500452493</id><published>2010-09-01T20:06:00.000-07:00</published><updated>2010-09-03T09:14:47.499-07:00</updated><title type='text'>The Secret of Professional Happiness</title><content type='html'>I was talking to &lt;a href="http://www.cloudknow.com/"&gt;Prakash Swaminathan&lt;/a&gt; the other day and he said something that I thought encapsulated the essence of having a great professional life.&lt;br /&gt;&lt;br /&gt;(a) Work with people you admire, (b) on interesting projects and (c) work from home as much as possible. &lt;br /&gt;&lt;br /&gt;I could imagine dropping (c) if the other two criteria were met (though it does make a lot of sense in today's networked world) but whenever I've compromised on (a) or (b) life has sucked, &lt;i&gt;without exception&lt;/i&gt;. &lt;br /&gt;&lt;br /&gt;So children,learn from your elders. Always work with great people on great projects and avoid the corporate politics bullshit and you'll be happy professionally.&lt;br /&gt;&lt;br /&gt;Of course this assumes you are skilled enough (or are willing to work to get there) that awesome people want you on awesome projects but that is a different post altogether.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-7672838758500452493?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/7672838758500452493/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=7672838758500452493' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/7672838758500452493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/7672838758500452493'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2010/09/secret-of-professional-happiness.html' title='The Secret of Professional Happiness'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-2540433586328316254</id><published>2010-08-20T10:20:00.000-07:00</published><updated>2010-08-22T00:16:48.732-07:00</updated><title type='text'>Who (and what) I would like to see at DevCamp</title><content type='html'>Comments, requests and suggestions on my last post are pouring in (re: my last post). Thanks everyone. One of the folks who sent me email asked "Who would *you* like to see speaking at DevCamp, assuming they are in India and willing to deliver a talk,  and on what?"&lt;br /&gt;&lt;br /&gt;Hmm. Interesting question. I haven't really thought about this very deeply but here is a quick response(very busy day, no time to edit, link to home pages  etc, sorry)&lt;br /&gt;&lt;br /&gt;In no particular order,&lt;br /&gt;&lt;br /&gt;(1) Debashish Ghosh on deep Scala programming. This guy is really good.&lt;br /&gt;&lt;br /&gt;(2) Baishampayan Ghose on the technical aspects of paisa.com&lt;br /&gt;&lt;br /&gt;(3) Bhasker Kode on Erlang at Hover.in&lt;br /&gt;&lt;br /&gt;(4) Peter Thomas - guru on things Wicket-ey, speaking of things wicket-ey. (Due disclosure , old friend of mine)&lt;br /&gt;&lt;br /&gt;(5) Narayan Raman on *the evolution* of Sahi (and on running a company based around an open source tool he wrote. How cool is that?)&lt;br /&gt;&lt;br /&gt;(6) Anyone from c42 or ActiveSphere on the challenges of setting an n-man (n &lt; 7) consultancy and competing with the big boys (due disclosure  both companies built by ex tw -ers. I know a few of them)&lt;br /&gt;&lt;br /&gt;(7) Anyone (technical) from FlipKart. They seem to be doing good things (I am a satisfied customer) and I am interested in how they tackle the  huge challenges in building (for e.g) reccomendation systems.&lt;br /&gt;&lt;br /&gt;(8) Anyone at all in India doing serious work in Haskell (Scala would do).&lt;br /&gt;&lt;br /&gt;(9) Anyone building/working in a *technically* challenging startup (Notion Ink, say)  on their *technical* challenges.&lt;br /&gt;&lt;br /&gt;(10) ThoughtWorkers hacking on stuff, on what they are hacking on. TW ers in general have all kinds of side projects going. The two Viveks (Prahalad and Singh) would be a good start.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-2540433586328316254?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/2540433586328316254/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=2540433586328316254' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/2540433586328316254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/2540433586328316254'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2010/08/who-and-what-i-would-like-to-see-at.html' title='Who (and what) I would like to see at DevCamp'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-7856753538437971235</id><published>2010-08-17T00:54:00.000-07:00</published><updated>2010-12-02T21:27:27.138-08:00</updated><title type='text'>Speaking at DevCamp 2010</title><content type='html'>I'll be speaking at DevCamp 2010. &lt;a href="http://ravimohan.blogspot.com/2008/01/dev-camp-bangalore.html"&gt;As in 2008&lt;/a&gt;, I have a "menu" of topics that people can vote on and will select the topic at the very last minute. Since I don't use slides(in general) this isn't very hard  to pull off. More on this below.&lt;br /&gt;&lt;br /&gt;Dev Camp is interesting because in India, there aren't any "developer to developer" conferences. Most are either company sponsored events (e.g Sun/Oracle/Adobe Tech days) or are overrun by "evangelists" hired by MegaCorps to sell their crapware to developers. DevCamp attempts to head these people off by stating "DevCamp is an annual BarCamp style unconference for hackers, by hackers and of hackers that began in Bangalore in 2008 with code and hacking as its core themes" Some of these "evangelists" are shameless enough to crash the conf anyway, but the Law of Two Feet often takes care of that.&lt;br /&gt;&lt;br /&gt;So what do you talk about at DevCamp? (everything that follows is *my* opinion. I have nothing to do with the organizing of DevCamp) &lt;br /&gt;&lt;br /&gt;If you are any kind of hacker, you have a pet project running on the side. You are learning or doing something that might be of interest to other developers. So in the last devcamp I attended  (in 2008) someone was trying to replace JMeter with an equivalent Erlang tool and he gave a very interesting talk on the advantages and challenges of this approach. &lt;br /&gt;&lt;br /&gt;Bring your laptop and show us what you are working on. *Don't* make one of those slide heavy "Introduction to Blah" type talks that are prevalent at most Indian conferences (last year's PyConf India was a good example of this iirc. Hopefully this year is better). Your audience consists of  professional developers who  are quite comfortable with looking up stuff on the Internet. &lt;br /&gt;&lt;br /&gt;As the Dev Camp page puts it, "Assume a high level of exposure and knowledge on the part of your audience and tailor your sessions to suit. Avoid 'Hello World' and how-to sessions which can be trivially found on the net. First hand war stories, in-depth analysis of topics and live demos are best. ". Again some folks so try to sneak in "Introduction to Blah"  where X is the latest "hot" topic (Clojure or Android would fit the bill these days for e.g), but again "The Law of Two Feet" (mostly) takes care of them. &lt;br /&gt;&lt;br /&gt;If you want  to talk about Clojure don't do "An Introduction to Clojure". In the days of YouTube, Rich Hickey  can do that much better than you could. Talk about "How I built a Text Processing/WebcCrawler library in Clojure" or "My startup runs on Clojure" (and show us the code). Tell us what *you* know that few others do ("in-depth analysis") and/or show us interesting code  you wrote ("live demos"). If  someone were to do a talk on (for e.g)  how the Clojure *compiler* works and the tradeoffs in its design, that would be interesting to me. If you are recycling "Clojure has macros, woot!" I don't care.&lt;br /&gt;&lt;br /&gt;The other interesting aspect about DevCamps is how lightweight it is. There is none of the stuffiness associated with the usual company conferences. It is an *un* conference, like Barcamp, but without the legion of SEO marketing people, "bloggers", non-tech "founders" trawling for naive developers who'll work for free on their latest "killer idea"s etc who swarm Barcamp. BarCamp (imo) attracts fringe lunatics. DevCamp attracts (or should attract when it works well) competent developers.&lt;br /&gt;&lt;br /&gt;So, these are the things I could talk about at DevCamp. Since I work on Machine Learning and Compilers, the topics reflect that experience. I could talk about how to build a Leasing System in Java but I doubt I'd have anything interesting to say ;-).  &lt;br /&gt;&lt;br /&gt;Send me email if you have a preference (or leave a comment here). I'll talk about whatever has the highest number of votes on Sep 4. "Customer Development" for sessions woot? Email &gt; comments here &gt; twitter but any and all forms  of media are acceptable.&lt;br /&gt;&lt;br /&gt;The topics from highest to lowest number of votes registered at the time of writing are &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;(1)An In Depth Look at the Category Theory Bits in Haskell (expanded version of the old  Monad tutorial)&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;At DevCamp 2008, I presented a talk on "Understanding Monads" where the idea was that someone who knew nothing about Monads should come to the talk and walk out knowing how they work and when to use them.  Instead of giving vague analogies("monads are space stations/containers/elephants.." you build monads from the ground up using first class functions. The talk included, in its first iteration, the List, Maybe and State monads. Later versions (over the years I have given the talk a few times) broke down the Category Theory behind monads and how it helps in structuring programs. &lt;br /&gt;&lt;br /&gt;The latest version encompasses all the hairy Category Theory related  bits and pieces(Applicatives, Monoids, Functors , Monad Transfomers...) which impede programmers trying to learn Haskell/Scala/ML etc. I don't assume any theory/math background from the audience and introduce required formalisms. The good news is that this is a very polished and popular topic (and is trending highest in the number of "votes") . The bad news is that I am bored of this talk (but will still use it if it scores the highest number of votes).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;(2) Building a Type Inferencer in 45 minutes&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Static Type Systems, especially those more powerful than the Java/C# variety are a mystery to most programmers. This can be seen for example in how developers with a Java background  write "Java in Scala" than idiomatic Scala. The best way (and the Hacker's way) to understand how a Type Inferencer works is to build one. This session builds a Hindley Milner type checker with a couple of extensions. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;(3) WarStory: How I escaped Enterprise SW and became a Machine Learning Dev&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Self explanatory ;-)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;&lt;br /&gt;(4) Proof Technique for Programmers - A Developer's gateway to Mathematics (and Machine Learning)&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This comes out of something I observed in the Bangalore Dev community. A lot of people read "Programming Collective Intelligence" (a terrible book - read my HN "review" &lt;a href="http://news.ycombinator.com/item?id=208811"&gt;here&lt;/a&gt; - I am "plinkplonk". See also comments by brent)  and fancy themselves "Machine Learning" people ("we aren't experts but we know the basics". Ummm . No,  you don't :-P. )&lt;br /&gt;&lt;br /&gt;The sad truth is, you can't do any serious machine learning (or Computer Vision, or Robotics, or NLP or Algorithm heavy) development without high levels of mathematics. "Pop" AI books like PCI are terrible in teaching you anything useful.&lt;br /&gt;&lt;br /&gt;To quote Peter Norvig from his &lt;a href="http://www.amazon.com/review/RZ7FBFHHLJHYE/ref=cm_cr_rdp_perm"&gt;review&lt;/a&gt; of Chris Bishop's Neural network book (emphasis mine)&lt;br /&gt;&lt;br /&gt;&lt;i&gt;"To the reviewer who said "I was looking forward to a detailed insight into neural networks in this book. Instead, almost every page is plastered up with sigma notation", that's like saying about a book on music theory "Instead, almost every page is plastered with black-and-white ovals (some with sticks on the edge)." Or to the reviewer who complains this book is limited to the mathematical side of neural nets, that's like complaining about a cookbook on beef being limited to the carnivore side. If you want a non-technical overview, you can get that elsewhere (e.g. Michael Arbib's Handbook of Brain Theory and Neural Networks or Andy Clark's Connectionism in Context or Fausett's Fundamentals of Neural Networks), but &lt;b&gt;if you want understanding of the techniques, you have to understand the math&lt;/b&gt;. Otherwise, there's no beef. "&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;The "if you want understanding of the techniques, you have to understand the math" bit is true for all areas of ML, not just Neural networks. The biggest stumbling block (there are many ;-)) for most developers attempting to grok the underlying mathematics is the proof based learning method most higher level Math/Machine Learning books assume.&lt;br /&gt;&lt;br /&gt;E.g here is the *first* exercise of the *second* chapter of "Elements of Statistical Learning", a which (unlike PCI)  book you *should* read if you plan to do Machine Learning-ey things&lt;br /&gt;&lt;br /&gt;&lt;i&gt;"Suppose each of K-classes has an associated target tk , which is a&lt;br /&gt;vector of all zeros, except a one in the kth position. Show that classifying to&lt;br /&gt;the largest element of y amounts to choosing the closest target, mink ||tk − y ||, if the elements of y sum to one."&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;This "Given X, Prove Y" structure is how almost all books in the field teach things. Sure you should code up the algorithms, but doing such problems is how you get *insight* into the field. And algorithms have their own problems (pun intended). Open Cormen et al's "Introduction to Algorithms" and you'll find questions like (randomly opening the third edition)&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Problem 20.1 (e) Prove that, under the assumption of  simple uniform hashing, your RS-vEB-TREE-INSERT (Note vEB  tree == van Emde Boas tree) and RS-vEB-TREE-SUCCESSOR run in O(lg lg u) expected time.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Thus it turns out that for getting into many areas of interest, a knowledge of how to prove things is critical. You will make very slow or zero progress without that understanding. That is the bad news. The good news is, proofs are (relatively) easy for programmers to understand when presented the right way (acquiring &lt;i&gt;skill&lt;/i&gt; takes a while). I wasted many years learning this stuff in inefficient ways. Don't make the same mistake. &lt;br /&gt;&lt;br /&gt;Zero math background required. Just bring some paper to write on.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;(5) Trika - A Hierarchical Reinforcement Learning framework in Scala&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;A demo and discussion on an RL framework I built. I haven't yet cleared the paperwork to Open Source this (the process is like pulling teeth, long story), but I can still show it off.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;(6) Neuro genetic Algorithms - Theory and Applications &lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;An interesting branch of AI/ML with some elegant applications. Again live demo of a couple of interesting algorithms and talk about design/performance trade-offs.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;(7) Denotational, Operational and Axiomatic Semantics - Designing programming languages with mathematics&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This is of interest to people building their own languages. Most language implementations are adhoc "hacks". They don't have to be.&lt;br /&gt;&lt;br /&gt;If you plan to attend, let me know which of these topics strike your fancy. And if you are a reader of this blog, find me and say Hello. &lt;br /&gt;&lt;br /&gt;See you at DevCamp!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-7856753538437971235?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/7856753538437971235/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=7856753538437971235' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/7856753538437971235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/7856753538437971235'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2010/08/speaking-at-devcamp-2010.html' title='Speaking at DevCamp 2010'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-3566112975217690240</id><published>2010-07-17T03:13:00.000-07:00</published><updated>2010-07-17T03:55:07.056-07:00</updated><title type='text'>The New American Militarism</title><content type='html'>Excerpt from the preface of Andrew Bacevich's "The New American Militarism: How Americans are Seduced by War"&lt;br /&gt;&lt;br /&gt;&lt;i&gt;The final point concerns my understanding of history. Before moving into a career focused on teaching and writing about contemporary U.S. foreign policy, I was trained as a diplomatic historian. My graduate school mentors were scholars of great stature and enormous gifts, admirable in every way. They were also splendid teachers, and I left graduate school very much under their influence. My own abbreviated foray into serious historical scholarship bears the earmarks of their approach, ascribing to Great Men—generals, presidents, and cabinet secretaries—the status of historical prime movers.&lt;br /&gt;&lt;br /&gt;I have now come to see that view as mistaken. What seemed plausible enough when studying presidents named Wilson or Roosevelt breaks down completely when a Bush or Clinton occupies the Oval Office. Not only do present-day tendencies to elevate the president to the status of a demigod whose every move is recorded, every word parsed, and every decision scrutinized for hidden meaning fly in the face of republican precepts. They also betray a fundamental misunderstanding of how the world works.&lt;br /&gt;&lt;br /&gt;What is most striking about the most powerful man in the world is not the power that he wields. It is how constrained he and his lieutenants are by forces that lie beyond their grasp and perhaps their understanding. Rather than bending history to their will, presidents and those around them are much more likely to dance to history’s tune. Only the illusions churned out by public relations apparatchiks and perpetuated by celebrity-worshipping journalists prevent us from seeing that those inhabiting the inner sanctum of the West Wing are agents more than independent actors. Although as human beings they may be interesting, very few can claim more than marginal historical significance. So while the account that follows discusses various personalities—not only politicians but also soldiers, intellectuals, and religious leaders—it uses them as vehicles to highlight the larger processes that are afoot.&lt;br /&gt;&lt;br /&gt;Appreciating the limits of human agency becomes particularly relevant when considering remedial action. If a problem is bigger than a particular president or single administration—as I believe the problem of American militarism to be—then simply getting rid of that president will not make that problem go away. To pretend otherwise serves no purpose.&lt;br /&gt;&lt;br /&gt;..................&lt;br /&gt;&lt;br /&gt;The bellicose character of U.S. policy after 9/11, culminating with the American-led invasion of Iraq in March 2003, has, in fact, evoked charges of militarism from across the political spectrum. Prominent among the accounts advancing that charge are books such as The Sorrows of Empire: Militarism, Secrecy, and the End of the Republic, by Chalmers Johnson; Hegemony or Survival: America’s Quest for Global Dominance, by Noam Chomsky; Masters of War: Militarism and Blowback in the Era of American Empire, edited by Carl Boggs; Rogue Nation: American Unilateralism and the Failure of Good Intentions, by Clyde Prestowitz; and Incoherent Empire, by Michael Mann, with its concluding chapter called “The New Militarism.”&lt;br /&gt;&lt;br /&gt;Each of these books appeared in 2003 or 2004. Each was not only written in the aftermath of 9/11 but responded specifically to the policies of the Bush administration, above all to its determined efforts to promote and justify a war to overthrow Saddam Hussein.&lt;br /&gt;&lt;br /&gt;As the titles alone suggest and the contents amply demonstrate, they are for the most part angry books. They indict more than explain, and whatever explanations they offer tend to be ad hominem. The authors of these books unite in heaping abuse on the head of George W. Bush, said to combine in a single individual intractable provincialism, religious zealotry, and the reckless temperament of a gunslinger. Or if not Bush himself, they finger his lieutenants, the cabal of warmongers, led by Vice President Dick Cheney and senior Defense Department officials, who whispered persuasively in the president’s ear and used him to do their bidding. Thus, according to Chalmers Johnson, ever since the Persian Gulf War of 1990–1991, Cheney and other key figures from that war had “wanted to go back and finish what they started.” Having lobbied unsuccessfully throughout the Clinton era “for aggression against Iraq and the remaking of the Middle East,” they had returned to power on Bush’s coattails. After they had “bided their time for nine months,” they had seized upon the crisis of 9/11 “to put their theories and plans into action,” pressing Bush to make Saddam Hussein number one on his hit list.6 By implication, militarism becomes something of a conspiracy foisted on a malleable president and an unsuspecting people by a handful of wild-eyed ideologues.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;By further implication, the remedy for American militarism is self-evident: “Throw the new militarists out of office,” as Michael Mann urges, and a more balanced attitude toward military power will presumably reassert itself.&lt;br /&gt;&lt;br /&gt;As a contribution to the ongoing debate about U.S. policy, The New&lt;br /&gt;American Militarism rejects such notions as simplistic. It refuses to lay the&lt;br /&gt;responsibility for American militarism at the feet of a particular president&lt;br /&gt;or a particular set of advisers and argues that no particular presidential election holds the promise of radically changing it. Charging George W. Bush with responsibility for the militaristic tendencies of present-day U.S. foreign policy makes as much sense as holding Herbert Hoover culpable for the Great Depression: whatever its psychic satisfactions, It is an exercise in scapegoating that lets too many others off the hook and allows society at large to abdicate responsibility for what has come to pass.&lt;br /&gt;The point is not to deprive George W. Bush or his advisers of whatever&lt;br /&gt;credit or blame they may deserve for conjuring up the several large-scale&lt;br /&gt;campaigns and myriad lesser military actions comprising their war on terror. They have certainly taken up the mantle of this militarism with a verve not seen in years. Rather it is to suggest that well before September 11, 2001, and before the younger Bush’s ascent to the presidency a militaristic predisposition was already in place both in official circles and among&lt;br /&gt;Americans more generally. In this regard, 9/11 deserves to be seen as an event that gave added impetus to already existing tendencies rather than as a turning point. For his part, President Bush himself ought to be seen as a player reciting his lines rather than as a playwright drafting an entirely new script.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In short, the argument offered here asserts that present-day American&lt;br /&gt;militarism has deep roots in the American past. It represents a bipartisan&lt;br /&gt;project. As a result, it is unlikely to disappear anytime soon, a point&lt;br /&gt;obscured by the myopia and personal animus tainting most accounts of&lt;br /&gt;how we have arrived at this point.&lt;br /&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Great Book. Worth Reading.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-3566112975217690240?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/3566112975217690240/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=3566112975217690240' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/3566112975217690240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/3566112975217690240'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2010/07/new-american-militarism.html' title='The New American Militarism'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-722014898684165477</id><published>2010-07-07T22:50:00.000-07:00</published><updated>2010-07-08T03:18:00.447-07:00</updated><title type='text'>Acquistion Aftertaste</title><content type='html'>Mini-msft &lt;a href="http://minimsft.blogspot.com/2010/07/kin-fusing-kin-clusion-to-kin-and-fy11.html"&gt;asks&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;How big was the original iPhone team? How big was the KIN team? Why did one result in a lineage of amazingly successful devices in the marketplace, and the other become a textbook extended definition for "dud" ?&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;He goes on to quote an ex Danger employee&lt;br /&gt;&lt;br /&gt;"And finally, one Danger-employee's point of view of why they became demotivated:&lt;br /&gt;&lt;i&gt;&lt;br /&gt;To the person who talked about the unprofessional behavior of the Palo Alto Kin (former Danger team), I need to respond because I was one of them.&lt;br /&gt;&lt;br /&gt;You are correct, the remaining Danger team was not professional nor did we show off the amazing stuff we had that made Danger such a great place. But the reason for that was our collective disbelief that we were working in such a screwed up place. Yes, we took long lunches and we sat in conference rooms and went on coffee breaks and the conversations always went something like this..."Can you believe that want us to do this?" Or "Did you hear that IM was cut, YouTube was cut? The App store was cut?" "Can you believe how mismanaged this place is?" "Why is this place to dysfunctional??"&lt;br /&gt;&lt;br /&gt;Please understand that we went from being a high functioning, extremely passionate and driven organization to a dysfunctional organization where decisions were made by politics rather than logic.&lt;br /&gt;&lt;br /&gt;Consider this, in less than 10 years with 1/10 of the budget Microsoft had for PMX, we created a fully multitasking operating system, a powerful service to support it, 12 different device models, and obsessed and supportive fans of our product. While I will grant that we did not shake up the entire wireless world (ala iPhone) we made a really good product and were rewarded by the incredible support of our userbase and our own feelings of accomplishment. If we had had more time and resources, we would of come out with newer versions, supporting touch screens and revamping our UI. But we ran out of time and were acquired and look at the results. A phone that was a complete and total failure. We all knew (Microsoft employees included) that is was a lackluster device, lacked the features the market wanted and was buggy with performance problems on top of it all.&lt;br /&gt;&lt;br /&gt;When we were first acquired, we were not taking long lunches and coffee breaks. We were committed to help this Pink project out and show our stuff. But when our best ideas were knocked down over and over and it began to dawn on us that we were not going to have any real affect on the product, we gave up. We began counting down to the 2 year point so we could get our retention bonuses and get out.&lt;br /&gt;&lt;br /&gt;I am sorry you had to witness that amazing group behave so poorly. Trust me, they were (and still are) the best group of people ever assembled to fight the cellular battle. But when the leaders are all incompetent, we just wanted out. &lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;I guess we need another ThinkWeek paper on how to successfully acquire companies, too. Between this and aQuantive, we only excel at taking the financial boon of Windows and Office and giving it over to leadership that totally blows it down the drain like an odds-challenged drunk in Vegas. And the shareholders continue to suffer in silence. And the drunks are looking for their next cash infusion."&lt;br /&gt;&lt;br /&gt;Hilarious. You couldn't invent this stuff. But after my last stint at MegaCorp where my group blew through millions of dollars and delivered zilch (I got out early!), I am not surprised. Dumb dumber management structures have the irresistible property of stifling any innovation or effectiveness.&lt;br /&gt;&lt;br /&gt;Something I am watching is HP's acquisition of Palm. I know a couple of good people at HP but by and large the company is bloated and dysfunctional. It will be interesting to see what they end up  doing with the Palm assets.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The comments are hilarious on Mini's post.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;"If Roz and/or Andy doesn't go, what does that say about our supposed value of "accountability?" I for one am tired of accountability meaning "we move them over here and give them a smaller project and hope they resign." &lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Heh heh! Something like this just happened to someone at my ex employer. I've come to the conclusion that there is only one MegaCorp worldwide and the idea of separate companies is probably an illusion fostered to give the loser employee types the illusion of changing jobs in the hopes of life getting better ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-722014898684165477?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/722014898684165477/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=722014898684165477' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/722014898684165477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/722014898684165477'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2010/07/acquistion-aftertaste.html' title='Acquistion Aftertaste'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-819115848641658660</id><published>2010-07-01T22:50:00.000-07:00</published><updated>2010-07-01T23:13:50.167-07:00</updated><title type='text'>Why learn Compiler Implementation?</title><content type='html'>Yesterday a friend called up and asked what I was doing and, among other things, I said " I am building a compiler for a language with features X, Y and Z". He replied "But why do that?".&lt;br /&gt;&lt;br /&gt;Well I like building compilers, interpreters etc but there are good reasons why "mainstream" programmers should learn this stuff. &lt;br /&gt;&lt;br /&gt;As Hal Abelson of MIT (co author of SICP ) said&lt;br /&gt;&lt;br /&gt;"If you don't understand compilers, you can still write programs - you can  even be a competent programmer- but you can't be a master"&lt;br /&gt;&lt;br /&gt;Steve Yegge has an interesting, if more  verbose, post at  http://steve-yegge.blogspot.com/2007/06/rich-programmer-food.html&lt;br /&gt;&lt;br /&gt;One minor side effect of knowing this stuff is that you are immune to language fads. The local fanboi crowd is jumping off the somewhat creaky Ruby bandwagon and onto the gleaming Clojure one. Watch out  for  a lot of half baked blather on the wonders of Lisp by people with not much of a clue. But it will be amusing and help pass the time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-819115848641658660?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/819115848641658660/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=819115848641658660' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/819115848641658660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/819115848641658660'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2010/07/why-learn-compiler-implementation.html' title='Why learn Compiler Implementation?'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-4767090801778393225</id><published>2010-06-03T21:20:00.000-07:00</published><updated>2010-06-04T22:14:03.757-07:00</updated><title type='text'>Work from Home job for Kernel Hackers</title><content type='html'>Someone I know from Hacker News sent me this email (lightly edited) &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;"I am likely to hire one high-class Linux kernel engineer in November&lt;br /&gt;time. I would be interested to have information on any possible&lt;br /&gt;candidates that may fit the work.&lt;br /&gt;&lt;br /&gt;I am looking for people who are:&lt;br /&gt;&lt;br /&gt;- Enthusiastic about linux kernel work&lt;br /&gt;- Have working knowledge of CPUs, cache internals, SMP, concurrency,&lt;br /&gt;memory management. ARM/Embedded knowledge would be a plus.&lt;br /&gt;- Ability to bring out a solution on his own, even architect a design&lt;br /&gt;without my intervention.&lt;br /&gt;- Familiar with open source work flow, i.e. using git, knows how to&lt;br /&gt;create a clean patch that is well tested and send it by email.&lt;br /&gt;- Good communication skills, i.e. ability to write full English&lt;br /&gt;sentences with correct wording and no typos - you would be surprised to&lt;br /&gt;see how people even lack this.&lt;br /&gt;- Past work experience on the linux kernel would be helpful.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The work environment involves telecommuting from home with occasional&lt;br /&gt;yearly meetups. Most communication is done by email. We are all about&lt;br /&gt;core kernel development"&lt;br /&gt;&lt;br /&gt;When  he originally talked to me about this I had someone in mind but he decided to go to grad school and will be leaving India in August for the USA. If I had any kernel dev experience I would have taken it up myself - looks to be an awesome job.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So if anyone has the qualifications listed above and wants a cool job working from home, contact me with details of what you've done  and I'll connect you to the hirer.&lt;br /&gt;&lt;br /&gt;NB:I've got some emails wrt this post. Just to clarify, contact me with details of &lt;b&gt;&lt;i&gt;what you've done&lt;/i&gt;&lt;/b&gt; wrt kernel hacking/systems work. Links to submitted patches would be nice, as would any links to core systems code  of any kind. This is *not* a GSOC kind of mentored position and needs people with prior experience.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-4767090801778393225?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/4767090801778393225/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=4767090801778393225' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/4767090801778393225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/4767090801778393225'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2010/06/work-from-home-job-for-kernel-hackers.html' title='Work from Home job for Kernel Hackers'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-958942544058817257</id><published>2010-04-18T10:31:00.000-07:00</published><updated>2010-04-24T02:04:46.599-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='India'/><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>Thieving Tharoor Gets His Due</title><content type='html'>(Warning:- Indian Politics)&lt;br /&gt;&lt;br /&gt;My &lt;a href="http://pindancing.blogspot.com/2009/04/voting-against-shashi-tharoor.html"&gt; judgement about Shashi Tharoor&lt;/a&gt; is vindicated. The philandering, corrupt, "new hope" has been kicked out of the Cabinet for his clumsy attempt to reward his girlfriend with a 15 million dollar stake in an IPL team. His fanboi legion is out there on the internetz banging away with such gems like " What if he is corrupt? Others are even more corrupt" and "start a new party and you will be Prime Minister". &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Please Mr T, do try. &lt;br /&gt;&lt;br /&gt;His NRI following, who choose not to live in India, but want to have a say in its politics, must be heart broken. I mean, I can understand the appeal- Spend your productive years in the West and when the time comes to retire persuade a party to give you a parliament seat and after a 3 week campaign in a constituency you've never seen before and not even speaking the language of your constituents,  become Member of Parliament and then immediately a minister with zero experience as a politician or an MP, thus setting you free to "contribute" to India, enriching your girlfriend by millions of dollars - what's not to like? It is the ultimate NRI fantasy. &lt;br /&gt;&lt;br /&gt;Like all fantasies projected onto reality it does work once in a while, and invariably ends disastrously. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As MJ Akbar said in &lt;a href="http://www.mjakbar.org/siegewithin.htm"&gt;his blog entry&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;"Tharoor is writhing between a mistake and a misfortune. His mistake was to gatecrash a party without an invitation. He thought he could buy entry with Dubai and Gujarat money and spin out collateral political benefits by name-association with Kochi. He leapt to take the political credit when Kochi won the franchise. He is alleged to have taken financial rewards more surreptitiously. His friend Sunanda Pushkar's feeble claim that she is not a proxy is silly. You do not get sweat equity in perpetuity, which means free and forever, with a starting value of Rs 70 crore, for being an unknown executive of a Dubai company. There hasn't been a case of "cheque-payment culpability" of this order since the transactions that ended the chief ministership of A R Antulay in 1981. Nearly 30 years ago, Congress inexplicably tried to defend the indefensible before dumping Antulay so hard it virtually broke the warhorse's back. Mystery repeats itself.&lt;br /&gt;&lt;br /&gt;Tharoor's misfortune was to encounter an adversary who could out-Twitter him at high noon in the gunfight at IPL corral. Tharoor and Lalit Modi have more in common than sharp suits, sharp wits and a dogged commitment to the television cameras. Having achieved so much through effective use of the media, they were convinced their favourite weapon remained the best option. They went to war through the media. A veteran like Sharad Pawar would have told them, had they but asked that children in glasshouse nurseries shouldn't throw stones.&lt;br /&gt;&lt;br /&gt;Modi has one advantage over Tharoor; he is in the private sector. His accountability is to fiscal laws. Tharoor affects the image of the Congress at a time when the party cannot afford a greasy controversy. Tharoor is the first Congress minister in the Sonia Gandhi-Manmohan Singh government to be publicly pilloried for alleged corruption."&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I wouldn't put it past His Sliminess to wriggle his way back into some position of power. But for now, Good Riddance.&lt;br /&gt;&lt;br /&gt;Anyway he promised to make Trivandrum a "world class city" if he got elected. As Member of Parliament he can still work towards that. I supect he won't get a chance next time ;-). It would help if he knew some people in his constituency  and their problems  and/or spoke the language. Oh well now he has the time for all that. We'll wait and watch.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Mood: Delighted.&lt;br /&gt;&lt;br /&gt;Some advice for Mr  Tharoor: You have about 3 friends in the Congress Party hierarchy. Fortunately for you one of them is the Prime Minister. Get Dr Singh to have a pliable CBI officer do an "investigation" and then declare you innocent. Hey Presto get your ministry back and then we can figure out how to make 70 crores back(with interest). It would help if you could keep your mouth shut and not tweet your usual inanities while all this is going on. Good Luck! &lt;br /&gt;&lt;br /&gt;Meanwhile (non political) temperatures are soaring in Delhi. 52 degrees centigrade the other day. Any more and people will burst into flame.&lt;br /&gt;&lt;br /&gt;PS: I don't have access to the internet these days ( I had to make a special effort for this post - the taste of "I told you so" is too sweet )  so if any of the ex-minister's fanboys (yeah you "ppl"  or "tweeple" or whatever you morons call yourself these days) want to leave nasty anonymous comments like the last time I wrote about Saint Tharoor, you'll have to wait till I get back online (the middle of May, more or less).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-958942544058817257?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/958942544058817257/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=958942544058817257' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/958942544058817257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/958942544058817257'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2010/04/thieving-tharoor-gets-his-due.html' title='Thieving Tharoor Gets His Due'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-8934303913190798436</id><published>2010-03-21T10:05:00.000-07:00</published><updated>2010-03-21T10:07:39.499-07:00</updated><title type='text'>What to do when  "they" hate Indian developers</title><content type='html'>Some fellow posted on proggit&lt;br /&gt;&lt;br /&gt;&lt;i&gt;"Currently the top rated link on proggit is&lt;br /&gt;&lt;br /&gt;"What did I do wrong? (or, how are you supposed to hire a programmer?)"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And the first rated comment is&lt;br /&gt;&lt;br /&gt;What did I do wrong?&lt;br /&gt;In the end, we went with the Indian company&lt;br /&gt;Is this some kind of a clever troll?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As an Indian (and a partner at an Indian software consulting company), am I not supposed to be offended by this? Would your answer had been same had the company been an Israeli one? I see similar highly voted comments on proggit all the time, and its very infuriating, as obv. I generally like hanging out he&lt;/i&gt;re."&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;and titled it "Dear Proggit: why the hatred for India?"&lt;br /&gt;&lt;br /&gt;My answer&lt;br /&gt;&lt;br /&gt;"(I am an Indian programmer living in India) You are just being too sensitive. Except for some xenophobic rednecks, no one hates India. There are plenty of unskilled Indian "developers" especially in the enterprise sw outsourcing companies who can't code to save their lives and it is only natural that people who have been burned once are leery about outsourcing work to Indian companies.&lt;br /&gt;&lt;br /&gt;The way to fix this is to do good work, more specifically write great code. The Japanese did exactly this in manufacturing, turning around their reputation form a producer of cheap low quality gee gwas to master sof mnufacturing. Whining is useless.&lt;br /&gt;&lt;br /&gt;Just do good work. Then do better. Rinse. repeat. The reputation and "hate" will take care of themselves.&lt;br /&gt;"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I  am so tired of Indian developers being ultra "sensitive" and doing everything but write good code. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;An even shorter version of my answer is "Shut up and Code."&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.reddit.com/r/programming/comments/bg5me/dear_proggit_why_the_hatred_for_india/"&gt;full thread&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-8934303913190798436?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/8934303913190798436/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=8934303913190798436' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/8934303913190798436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/8934303913190798436'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2010/03/what-to-do-when-they-hate-indian.html' title='What to do when  &quot;they&quot; hate Indian developers'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-5776434332571085749</id><published>2010-02-23T20:02:00.000-08:00</published><updated>2010-02-23T20:07:53.214-08:00</updated><title type='text'>No getting away from me</title><content type='html'>An email (lightly edited) I  got from a friend working on Financial Software in London&lt;br /&gt;&lt;br /&gt;"Here I am minding my own business, doing my job testing/developing Trading strategies designed by one of the Quants + Traders and what do I hear -&lt;br /&gt;&lt;br /&gt;someone in the corner is talking about something very&lt;br /&gt;mathematical - it all sounds gobbledegook to me and then I hear the word "Re-inforcement Learning" (I know you work on  something like that) &lt;br /&gt;&lt;br /&gt;I walk over, say hi (to some French mathematicians from Ecole Poly) and casually inquire what they are talking about, comes the reply - Modern Statistical Learning for predicting market behavior and tuning algorithmic trade  strategies, &lt;br /&gt;&lt;br /&gt;On the Screen - Java code - author @Ravi Mohan&lt;br /&gt;&lt;br /&gt;There is no running away from you is there :-)&lt;br /&gt;"&lt;br /&gt;&lt;br /&gt;No there isn't! &lt;br /&gt;&lt;br /&gt; ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-5776434332571085749?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/5776434332571085749/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=5776434332571085749' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/5776434332571085749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/5776434332571085749'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2010/02/no-getting-away-from-me.html' title='No getting away from me'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-1264539892401020528</id><published>2010-02-18T23:31:00.000-08:00</published><updated>2010-02-19T19:00:58.541-08:00</updated><title type='text'>A Haskell Journey</title><content type='html'>Over the last couple of years, I've been  using Haskell (oddly enough) as a  scripting/shell  language, somewhat akin to bash,  to tie together various bits and pieces of code written in other languages. (See http://www.cse.unsw.edu.au/~dons/data/Basics.html for some shell like utilities).&lt;br /&gt;&lt;br /&gt;One of my goals for this year is to really master Haskell so I can use it as a primary language. As I dig in, I find there are two levels of Haskell. &lt;br /&gt;&lt;br /&gt;Level 1 consists of algebraic data types, pure (and lazy) functions, typeclasses and modules. Someone fluent in another language can (relatively) easily wrap their heads around this portion of the language and start programming. There are  plenty of tutorials and books (including  "Real World Haskell") that teach this style of Haskell usage.&lt;br /&gt;&lt;br /&gt;But, sooner or later one comes across code that is written in "level 2" Haskell - making heavy use of Monads, Monoids, Arrows and all  the other Category Theory goodness. Monads get an abnormal mindshare among would-be Haskell developers but there is more to Haskell than Monads.  No one has really written a comprehensive guide to this bit of Haskell. The nearest we have is the &lt;a href="http://www.haskell.org/sitewiki/images/8/85/TMR-Issue13.pdf"&gt;TypeClassopedia&lt;/a&gt; (warning, PDF) but that is more a collection of links for further reading than a detailed exposition. The Wikibook is uneven. RWH does a hop-skip-and jump over these bits - a correct decision given the focus and size of the book. &lt;br /&gt;&lt;br /&gt;What we really need is an "Advanced Haskell" book which assumes a knowledge of Level 1 Haskell and then lays out the CT bits in an orderly  fashion. Monads for example, are best understood from a Category Theory perspective than through some tortured analogy to Space Stations or Elephants or whatever. Some exposition of Type Theory would help too - a knowledge of kinds, for example is very useful to decode some of the advanced bits ( TAPL's last chapters have a good exposition iirc).&lt;br /&gt;&lt;br /&gt;In the absence of an "Advanced Haskell" book, the best option is to read the various papers, trawl the mailing lists and so on for answers to specific questions. I've learned some Category Theory before (and am fairly comfortable with Type Theory) so I haven't found this to be particularly hard but I can see how it could be (very) hard for someone without this background. Mastery of this level would be when I can code *fluently* with Comonads and such. I am not there yet.&lt;br /&gt;&lt;br /&gt;That said, Haskell is the most elegant language I've ever used and I plan to write a lot of code in it. I plan to open source some Haskell code over the next couple of months, so we'll see how much I've really understood!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-1264539892401020528?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/1264539892401020528/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=1264539892401020528' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/1264539892401020528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/1264539892401020528'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2010/02/haskell-journey.html' title='A Haskell Journey'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-9128291344831069721</id><published>2010-01-15T07:57:00.000-08:00</published><updated>2011-03-03T08:01:40.723-08:00</updated><title type='text'>Learning about Machine Learning</title><content type='html'>Bradford Cross has posted &lt;a href="http://measuringmeasures.blogspot.com/2010/01/learning-about-statistical-learning.html"&gt;an awesome blog post&lt;/a&gt; titled "Learning about Statistical Learning". If you  plan to  work in ML,  please, please read the post, buy some of the books and work through them. Could save you years of work if you are systematic from the beginning (I wasn't), especially if you are self taught (I am).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I work on  different domains (Robotics/Computer Vision/Simulation) from Bradford and so have a  different list of books. Please read Bradford's lists first. This is a supplement to his awesome post rather than a replacement. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;The first step&lt;/span&gt;..&lt;br /&gt;&lt;br /&gt;Learn proof techniques *first*. You'll make no serious progress till you do. The best book is &lt;br /&gt;&lt;br /&gt;Velleman's &lt;a href="http://www.amazon.com/How-Prove-Structured-Daniel-Velleman/dp/0521675995/"&gt;"How to Prove It"&lt;/a&gt; - reccomended by Bradford but I am repeating it here because this is &lt;b&gt;&lt;i&gt;critical&lt;/i&gt;&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Mathematics&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;In my experience you need to be somewhat comfortable with 6 branches of Mathematics before you can tackle ML. Imo, best to take a year and get these right before venturing into ML proper. (I know, it sounds awfully boring. I wasted a lot of time trying to shorten this step. In this case, the long way is the real shortcut) &lt;br /&gt;&lt;br /&gt;(1) Calculus - best "lite" book - &lt;a href="http://ocw.mit.edu/ans7870/resources/Strang/strangtext.htm"&gt;Calculus&lt;/a&gt; by Strang (free download) , &lt;br /&gt;&lt;br /&gt;best "heavy" books - &lt;a href="http://www.amazon.com/Calculus-Michael-Spivak/dp/0914098918/"&gt;Calculus&lt;/a&gt; by  Spivak,&lt;a href="http://www.amazon.com/Principles-Mathematical-Analysis-Third-Walter/dp/007054235X"&gt; Principles of Mathematical Analysis&lt;/a&gt; a.k.a "Baby Rudin"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(2) Some book on Discrete Math (don't know what to recommend here - I don't like Rosen's book)  + a good book on say Introduction to Algorithms by  Cormen et al  will do [*]  &lt;br /&gt;&lt;br /&gt;(3) Linear Algebra (First work through &lt;a href="http://www.amazon.com/Introduction-Linear-Algebra-Fourth-Gilbert/dp/0980232716"&gt;Strang's book&lt;/a&gt;, then &lt;a href="http://www.amazon.com/Linear-Algebra-Right-Sheldon-Axler/dp/0387982582"&gt;Axler's&lt;/a&gt;) &lt;br /&gt;&lt;br /&gt;(4) Probability (see Bradford's very comprehensive  recommendations) and &lt;br /&gt;&lt;br /&gt;(5) Statistics (I would recommend  &lt;a href="http://www.amazon.com/Introduction-Statistics-Data-Analysis-Roxy/dp/0495557838/"&gt;Devore and Peck&lt;/a&gt; for the total beginner but it is a damn expensive book. So  hit a library or get a bootlegged copy to see if it suits you before buying a copy, see brad's list for advanced stuff.) &lt;br /&gt;&lt;br /&gt;(6) Information Theory (&lt;a href="http://www.inference.phy.cam.ac.uk/mackay/itila/"&gt;MacKay's book&lt;/a&gt; is freely available online)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Basic AI&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Brad suggests &lt;a href="http://www.amazon.com/Machine-Learning-Tom-M-Mitchell/dp/0070428077"&gt;Mitchell's book&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;I think &lt;a href="http://www.amazon.com/Artificial-Intelligence-Modern-Approach-3rd/dp/0136042597"&gt;AIMA (3d Edition)&lt;/a&gt; is much better. ( I am biased. I wrote and maintained the Java code for a long while -- children, don't do this. Java is an terrible  language to develop AI algorithms in. If you need the JVM use Scala or Clojure -- and I think it covers a lot more than Mitchell does. Take a look at both. Pick one).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Machine Learning&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;NB: you need all the linear algebra, calculus etc  worked through before you hit this point&lt;br /&gt;&lt;br /&gt;In order, &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.com/Pattern-Recognition-Learning-Information-Statistics/dp/0387310738"&gt;"Pattern Recognition and Machine Learning"&lt;/a&gt; by Christopher Bishop, &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*then* &lt;a href="http://www-stat.stanford.edu/~tibs/ElemStatLearn/"&gt;"Elements of Statistical Learning"&lt;/a&gt; (free download).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Neural Networks&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;In order,&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.com/Neural-Network-Design-Martin-Hagan/dp/0971732108/"&gt;Neural Network Design &lt;/a&gt;Hagan Demuth and  Beale,&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.com/Neural-Networks-Comprehensive-Foundation-2nd/dp/0132733501"&gt;Neural Networks, A  Comprehensive Foundation (2nd edition)&lt;/a&gt; - By Haykin (there is a newer edition out but I don't know anything about that, this is the one I used)&lt;br /&gt;&lt;br /&gt;and  &lt;a href="http://www.amazon.com/Neural-Networks-Pattern-Recognition-Christopher/dp/0198538642/"&gt;Neural Networks for Pattern Recognition&lt;/a&gt; ( Bishop).&lt;br /&gt;&lt;br /&gt;At this point you are in good shape to read any papers in NN. My reccomendations - anything by &lt;a href="http://yann.lecun.com/"&gt;Yann LeCun&lt;/a&gt; and &lt;a href="http://www.cs.toronto.edu/~hinton/"&gt;Geoffrey Hinton&lt;/a&gt;. Both do amazing research.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Reinforcement Learning&lt;/span&gt; (again this is just stuff *I* happened to specialize in for various projects, so feel free to ignore)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.com/Reinforcement-Learning-Introduction-Adaptive-Computation/dp/0262193981/"&gt;Reinforcement Learning - An Introduction by Barto and Sutton&lt;/a&gt; (follow up with &lt;a href="http://rlai.cs.ualberta.ca/papers/barto03recent.pdf"&gt;"Recent Advances In reinforcement Learning" (&lt;/a&gt;PDF) which is an old paper but a GREAT introduction to *Hierarchical* Reinforcement learning&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.com/Neuro-Dynamic-Programming-Optimization-Neural-Computation/dp/1886529108/ref=sr_1_2?ie=UTF8&amp;s=books&amp;qid=1263575843"&gt;Neuro Dynamic Programming&lt;/a&gt; by Bertsekas&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Computer Vision&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.com/Introductory-Techniques-3-D-Computer-Vision/dp/0132611082/"&gt;Introductory Techniques for 3-D Computer Vision&lt;/a&gt;, by Emanuele Trucco and Alessandro Verri.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.com/Invitation-3-D-Vision-Yi-Ma/dp/0387008934/"&gt;An Invitation to 3-D Vision&lt;/a&gt; by Y. Ma, S. Soatto, J. Kosecka, S.S. Sastry.  (warning TOUGH!!)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Robotics&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;I know only about the software/algorithms side of Robotics and that too only Probabilistic Robotics. I don't know anything about hardware, electronics or Physics.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.com/Probabilistic-Graphical-Models-Principles-Computation/dp/0262013193/"&gt;Probabilistic Graphical Models: Principles and Techniques (Adaptive Computation and Machine Learning)&lt;/a&gt;  (strictly speaking not a robotics book, but  a lot of the theory in this book  is behind the algorithms in the next book&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.com/Probabilistic-Robotics-Intelligent-Autonomous-Agents/dp/0262201623/"&gt;Probabilistic Robotics (Intelligent Robotics and Autonomous Agents) &lt;/a&gt;by Thrun, Burgard and Fox (trivia Thrun also wrote the Robotics chapter in AIMA - did I tell you AIMA rocks as a first introduction to AI?)&lt;br /&gt;&lt;br /&gt;And that's all folks. Happy hacking!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[*] working though Cormen et al is a humungous task and can easily consume a year. Something like Goldman's new Algorithm book maybe more suited to programmers.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PS: I have been getting a lot of email asking *how* one should learn X or Y. I have no idea really. The above is a list of books  that worked for me and is provided only in the spirit of "these are good books that worked for me I don't know if they'll work for you." &lt;br /&gt;&lt;br /&gt;As to how I learned,  I just read books and papers,  try to understand, (a lot of banging head against wall  at this point) and try to solve problems and code stuff. Beyond that I have no advice on how to learn effectively etc. I am entirely self taught and have no idea how to teach this stuff. You probably need to talk to a good prof.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-9128291344831069721?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/9128291344831069721/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=9128291344831069721' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/9128291344831069721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/9128291344831069721'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2010/01/learning-about-machine-learniing.html' title='Learning about Machine Learning'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-8042496890741727660</id><published>2009-10-19T07:51:00.000-07:00</published><updated>2009-11-08T05:58:54.166-08:00</updated><title type='text'>Looking for an apartment in Bangalore! Help!</title><content type='html'>I am looking to rent a 2 BHK (2 bedroom, 2 bathroom hall kitchen) &lt;span style="font-style:italic;"&gt;apartment&lt;/span&gt; (not an independent house) in Bangalore, 1200+ sq ft. I want a quiet (so no ground floor flats), well lit (surprising how many apartments in Bangalore don't have good windows) apartment (with the usual "peripherals" - power and water backup, security, gym, swimming pool etc). Oh yeah and Airtel Connectivity. Airtel is the best ISP in Bangalore but don't cover all areas equally. I can't live without the Internetz - the main reason I don't live in Trivandrum.) &lt;br /&gt;&lt;br /&gt;If any reader of this blog is an apartment dweller and would forward me info on any "to rent" flats, I would be &lt;span style="font-style:italic;"&gt;very&lt;/span&gt; grateful. Navigating the completely broken apartment rental system in Bangalore is very painful. I would rather deal directly with the owner/renter if possible and not with a middleman, though  wouldn't mind paying for a really good broker. (Most are completely clueless and just waste my time).&lt;br /&gt;&lt;br /&gt;So if you know anyone renting a nice apartment, do send an email or tweet. Thanks in advance.&lt;br /&gt;&lt;br /&gt;PS: I am not changing my marital status (bachelor) or food habits (non vegetarian) to "qualify" for  an apartment! ;-)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Update: Found an apartment that meets all my criteria (Thanks to this blog entry! Thanks &lt;a href="http://vishy-ranganath.blogspot.com/"&gt;Vishy&lt;/a&gt;! Thanks &lt;a href="http://www.cloudknow.com/about/"&gt;Prakash&lt;/a&gt;! I owe you both a beer!). &lt;br /&gt;&lt;br /&gt;The agreement is not signed yet, but the owners seem to be very nice people so I don't anticipate much difficulty. Touch Wood.&lt;br /&gt;&lt;br /&gt;Update 2: The rent agreement was signed today. Thanks to everyone who sent in reccomendations. Blogs are useful things after all!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-8042496890741727660?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/8042496890741727660/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=8042496890741727660' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/8042496890741727660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/8042496890741727660'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2009/10/looking-for-apartment-in-bangalore-help.html' title='Looking for an apartment in Bangalore! Help!'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-1199863953713230838</id><published>2009-09-28T22:07:00.000-07:00</published><updated>2009-09-29T02:01:47.822-07:00</updated><title type='text'>Funding vs Hiring</title><content type='html'>From Hacker News,&lt;br /&gt;&lt;br /&gt;"Candidate A is a great programmer. He is unbelievably fast, very creative, has a lot of knowledge. He sees a problem and has brilliant solutions at hand very quickly. He just gets it. But he is not a team player. He'll go off and do stuff his way without telling anyone. Nobody sees his code before he's done. He hates discussions. He might just ignore any decisions that were made. And you never know if he'll quit tomorrow.&lt;br /&gt;&lt;br /&gt;Candidate B is not the most creative type. His code is acceptable but you can see his limited experience. He is still good and he certainly gets the job done but there's not much you can learn from him. But he's extremely reliable and very loyal. He's happy with any work that comes along. He's a very good team player. He will give his input but accept decisions once they're made. People enjoy working with him.&lt;br /&gt;&lt;br /&gt;What would you do? Pass on both of them? Hire A? Hire B? Wait for somebody who is a programmer as A but as reliable as B (and risk waiting forever)?"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Paul Graham responds&lt;br /&gt;&lt;br /&gt;"Incidentally, if you're funding rather than hiring, you generally want A. That's one reason I'd rather be an investor than a boss."&lt;br /&gt;&lt;br /&gt;(Full Discussion  &lt;a href="http://news.ycombinator.com/item?id=848276"&gt;here&lt;/a&gt;) &lt;br /&gt;&lt;br /&gt;Paul makes a subtle point (beyond the hypothetical candidate selection).&lt;br /&gt;&lt;br /&gt;Funders and bosses think, decide, and act differently. As do "BigCo" developers vs startup founders. &lt;br /&gt;&lt;br /&gt;Bosses want to control (or "boss around" ) their subordinates. Funders want to maximize chances of success. These are not necessarily identical, or even congruent forces.&lt;br /&gt;&lt;br /&gt; I was thinking of a "startup within BigCo" effort I was (briefly) part of and one of the fundamental mistakes made was that no one really acted like a founder or (more importantly) a funder. &lt;br /&gt;&lt;br /&gt;Talented (if not particularly aggressive) people, lots of money. One Year. Lots of meetings (Oh God were there meetings! We had meetings about meetings. Meetings to report results of *other* meetings. Meetings to discuss the agenda of forthcoming meetings...).  &lt;br /&gt;&lt;br /&gt;No product. No revenue. Lots of PowerPoint. &lt;br /&gt;&lt;br /&gt;Lots of hope.&lt;br /&gt;&lt;br /&gt;My prediction?  This effort will meander along for another year or so, produce some tiny revenue streams (eventually) and then die a quiet death. Which is a tragedy. The people involved (with a couple of exceptions) were all great and I would work with any of  them again in a heartbeat. The system was self defeating. &lt;br /&gt; &lt;br /&gt;PG nails it (again).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-1199863953713230838?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/1199863953713230838/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=1199863953713230838' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/1199863953713230838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/1199863953713230838'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2009/09/funding-vs-hiring.html' title='Funding vs Hiring'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-8368875067549514124</id><published>2009-09-26T20:08:00.000-07:00</published><updated>2009-11-17T08:01:50.786-08:00</updated><title type='text'>Let the Agile Fad Flow By</title><content type='html'>The blogosphere is ablaze with"duct tapers" vs "agilists". As usual, there isn't much logic behind all the fiery arguments.&lt;br /&gt;&lt;br /&gt;This is what happened. Peter Seibel interviewed Jamie Zawinski  about how he built the original Mozilla browser for his *great* book &lt;a href="http://www.codersatwork.com/"&gt;Coders at Work&lt;/a&gt;. In it, Jamie was scathing about design pattern cultists who kept waving the "Gang of Four"  book around and having intense discussions about the "right" pattern and so on, but couldn't write good  code to save their lives (Sounds like some people we encounter today? Read on!). Joel Spolsky, writing a review of the book took a dig at what he saw as the successors of the design patterns cultists - people who write books and attend conferences etc and wave &lt;span style="font-style:italic;"&gt;different&lt;/span&gt; books around. &lt;br /&gt;&lt;br /&gt;Robert Martin, one of the chaps who signed the Agile "Manifesto" wrote a very logic lite, but moderate(for him),  article juxtaposing "Duct Tape programmers" against what he calls "Clean Code" programmers. A few more bloggers took their lead from him and blew this  artificial dichotomy between "shipping" coders and "clean coders" into a full fledged blog war about (as usual) nothing much.&lt;br /&gt;&lt;br /&gt;The first thing to note is that this is a storm in a teacup. For all the fury on blogs and twitter, essentially people who really write great code and ship continue to do that, not paying any attention to these passing fads. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Software has, from the time it became important enough to build businesses round,  &lt;span style="font-style:italic;"&gt;always&lt;/span&gt; had flaky methodologies and people who try to sell them. &lt;br /&gt;&lt;br /&gt;Just in my experience, first there were the "OO  will save the world" hypesters, including the design patterns evangelists - this was the crowd Jamie encountered. Then there was RUP, then XP,  then agile, now "lean software". &lt;br /&gt;&lt;br /&gt;The common pattern in &lt;span style="font-style:italic;"&gt;all&lt;/span&gt; these fads (and a quick way to recognize these things as fads) is to realize that the set of people who try to sell methodologies and the set of people who are brilliant programmers, product designers and so on &lt;span style="font-weight:bold;"&gt;are completely disjoint&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Do a thought experiment. Think about some  brilliant programmers you know, the "change the world with code they write" type folks.  For me these are people like Peter Norvig and John Carmack and  Paul Graham and Linus Torvalds. You may have other heroes.&lt;br /&gt;&lt;br /&gt;Can you &lt;span style="font-style:italic;"&gt;imagine&lt;/span&gt; these people peddling agile? Just try envisioning it. Linus Torvalds trying to become a Scrum Master? &lt;br /&gt;&lt;br /&gt;Your mind will melt down.&lt;br /&gt;&lt;br /&gt; Think about people who've designed world changing products. (Jonathan Ives who designed the IPod for example)  Do &lt;span style="font-style:italic;"&gt;these&lt;/span&gt; people peddle methodologies or act as methodology consultants? Does Steve Jobs do this? Would Warren Buffet do this?&lt;br /&gt;&lt;br /&gt;Here is the secret. Nobody who is really good at programming/product design/marketing/business (or anything) will demean himself by trying to make money  telling &lt;span style="font-style:italic;"&gt;other people&lt;/span&gt; how to do what they are good at. They'd rather do whatever it is they  are best in the world at. World Champions may become coaches when they are old and tired and broken down, not when they can still play and win.&lt;br /&gt;&lt;br /&gt;The standard defence is "but, but, but  we are &lt;span style="font-style:italic;"&gt;coaches&lt;/span&gt;. Even Tiger Woods has a coach, Coaches aren't necessarily the best players".  &lt;br /&gt;&lt;br /&gt;Yes in &lt;span style="font-style:italic;"&gt;some&lt;/span&gt; fields coaches have value. The interesting thing is that it is  Tiger Woods chooses a coach,  and validates his coaches' skill by becoming the best golf player in the world, not the other way round.&lt;br /&gt;&lt;br /&gt; When Linus Torvalds hires Uncle Bob  to educate him about how to write Kernel Code better, or Tim Sweeney hires Ron Jeffries to help him design the next Unreal Engine, &lt;span style="font-style:italic;"&gt;then&lt;/span&gt; then yeah they are "coaches". The fact is, sports doesn't map to software all that well in this aspect. &lt;br /&gt;&lt;br /&gt;The best programmers don't hire "agilists" or "RUP Experts" or "Six Sigma Black belts" or whatever as coaches. If they have design issues to thrash out they talk to &lt;span style="font-style:italic;"&gt;other&lt;/span&gt; brilliant developers. Brilliant product designers might talk to &lt;span style="font-style:italic;"&gt;other&lt;/span&gt; brilliant product designers.&lt;br /&gt;&lt;br /&gt;Fact of the matter is, "agile coaches"(and other methodology vendors) are hired by some combination of  mediocre corporations, mediocre managers, and mediocre teams. Agile in particular rose in the enterprise world and that is where its focus (rightly) remains. So yes, if you work in the enterprise world, you sometimes get stuck with such "coaches" and get caught up in the latest methodology fads. It is just something that goes with the job. You might even want to &lt;span style="font-style:italic;"&gt;become&lt;/span&gt; such a "coach" figure than muck around with some 10 year old accounting module from hell. It is an easier life. More power to you.&lt;br /&gt;&lt;br /&gt;Now I'll tell you how to shut up an agile (or any other methodology evangelist). From &lt;a href="http://lukehalliwell.wordpress.com/2008/11/16/the-agile-disease/#comment-201"&gt;my comment&lt;/a&gt; on Luke Halliwell's blog post, "the Agile Disease"),&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;"&lt;br /&gt;The problem with agile is not “consultants” per se but “consultants” who have no credibility building and delivering great software.&lt;br /&gt;&lt;br /&gt;For Games, when John Carmack or Tim Sweeney advocate agile for game studios, I’ll listen.&lt;br /&gt;&lt;br /&gt;When its someone who has no product we can judge, advocates a methodology that failed in its very first project, where it originated (spare me the redefinitions of “failure” If the client kicked the team out that is “failure” enough for me) that is a different kettle of fish entirely.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Next time an “agile consultant” pitches for your money, ask him to show you code he has written that made a substantial change in your domain.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;“I wrote/ led-the-team-that created Doom/Unreal/World of Warcraft” is acceptable.&lt;br /&gt;&lt;br /&gt;“Oh yeah I created this uber cool enterprise system which you can’t look at and I don’t have any open source code, but I know how to write clean code and to “lead” teams, cross my heart” isn’t."&lt;/span&gt;&lt;br /&gt;"&lt;br /&gt;&lt;br /&gt;The key sentence is this, &lt;br /&gt;&lt;br /&gt;"Next time an “agile consultant” pitches for your money, ask him to show you code he has written that made a substantial change in your domain."&lt;br /&gt;&lt;br /&gt;The fact is &lt;span style="font-style:italic;"&gt;no&lt;/span&gt; agile consultant today has written any world changing code,nor have they  designed any world changing products (Imagine the guy who designed the IPod peddling a product design methodology for a living) or built or run  any world changing companies. &lt;br /&gt;&lt;br /&gt;The "coach" argument is dismissed easily too. If they are coaches, are their clients brilliant programmers? (this is where the Tiger Woods analogy falls down) It is always some El Crapola enterprise project *manager* who hires a methodology coach, never a great programmer, or team of great programmers (Do you think when Paul Graham, Robert T Morris and Trevor Blackwell were working on ViaWeb, they needed an "agile coach"?) . &lt;br /&gt;&lt;br /&gt;Coming back to the Jwz-Spolsky-Uncle Bob tangle, just think of who among these three is trying to sell you something. Jamie doesn't sell anything (well I think he sells drinks and entertainment at his club/bar/whatever but he doesn't sell anything programming related). Spolsky sells a Bug Database. Uncle Bob sells Training  Courses (via his company Object Mentor). &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now there is nothing wrong with selling anything in a capitalist world. But there is a motto every &lt;span style="font-style:italic;"&gt;buyer&lt;/span&gt; should live by, Caveat Emptor- Buyer Beware. It is upto &lt;span style="font-style:italic;"&gt;you&lt;/span&gt; to be on the defense against snake oil salesmen (of whatever category) and it is up to &lt;span style="font-style:italic;"&gt;you&lt;/span&gt; to ensure you don't spend money on being "coached" to become a good developer by people who aren't themselves great developers.&lt;br /&gt;&lt;br /&gt;TDD vs Duct Tape is a false dichotomy. There can be great design  and code  without TDD (or even unit tests) and rigorous TDD can result in terrible, ultra brittle codebases. (Private  joke for ThoughtWorkers of a specific era - anyone seen "Class FieldedBusinessObject " recently?! Those were the days!). &lt;br /&gt;&lt;br /&gt;TDD as a "design methodology" has no legs (See an agile "guru" &lt;a href="http://ravimohan.blogspot.com/2007/04/learning-from-sudoku-solvers.html"&gt;struggle to write a  Sudoku Solver&lt;/a&gt;). Having unit tests helps in regression testing and maintenance. That's it. If you need unit tests to "design" you aren't a great designer of software. Sorry. Sad but true.&lt;br /&gt;&lt;br /&gt;Every fad eventually dissipates and sometimes they leave behind (very small) nuggets of value. The "everything should be modelled with  Objects" fad passed (remember all the books from Booch and Rumbaugh and Iverson about how to do Object design?). Design Patterns are almost dead as a movement. Agile is facing a backlash (and will  die soon enough).  &lt;br /&gt;&lt;br /&gt;Will there be other as yet unimagined fads (and associated methodology consultant/certification types) who'll replace agile?  Of course. As long as fools with money are willing to be "coached" into improving their programming ability, there will be demand for such fraudsters and where there is demand, there will be supply. Whether you should be part of this supply/demand equation, and at what cost to your soul, you have to decide.&lt;br /&gt;&lt;br /&gt;Let all these distractions and squabbles flow by. Focus on doing good work (however you define good work). Learn from people who are really good in your chosen field. Shut out the babbling of the methodology vendors and consultants. &lt;br /&gt;&lt;br /&gt;So if you are a programmer trying to get better, just write the best code you know how. Then get better. Listen to people who are better programmers than you (Read "Coders At Work"!). Ignore the fads. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Update: jwz's &lt;a href="http://jwz.livejournal.com/1096593.html"&gt;reaction&lt;/a&gt; to this whole fiasco "It's such a strange article, in that it's mostly favorable to my point of view but with such a breathless amazement to it, like he's just discovered an actual unicorn or something. "Look, everybody! Here's a hacker who actually accomplished things and yet he doesn't fetishize the latest fads that I and all of my friends make our living writing about!" &lt;br /&gt;&lt;br /&gt;As &lt;a href="http://lukego.livejournal.com/"&gt;Luke Gorrie&lt;/a&gt; tweeted, "The takeaway from jwz C@W interview isn't "write crappy code,"but "quit your stupid enterprise job &amp; have an impact on the world""&lt;br /&gt;&lt;br /&gt;Amen!&lt;br /&gt;&lt;br /&gt;[1] What makes the book "Coders At Work" awesome and a book &lt;span style="font-style:italic;"&gt;every&lt;/span&gt; programmer should read, in my opinion, is that the author interviews  great &lt;span style="font-style:italic;"&gt;programmers&lt;/span&gt;, not random fad vendors. There is a lot of wisdom in the book.&lt;br /&gt;&lt;br /&gt;If he ever writes "Methodology Vendors at Work" how many people will buy a copy? ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-8368875067549514124?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/8368875067549514124/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=8368875067549514124' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/8368875067549514124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/8368875067549514124'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2009/09/let-agile-fad-flow-by.html' title='Let the Agile Fad Flow By'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-185653873449688026</id><published>2009-09-18T04:32:00.000-07:00</published><updated>2009-09-18T04:41:33.621-07:00</updated><title type='text'>Owen Rogers on "Releasing To Production Every Week"</title><content type='html'>My friend and ex-colleague (from my days at ThoughtWorks) was in India recently to speak at the CodeChef conderence, an invite only geek conference organized by Naresh Jain (another friend and ex-colleague from TW ! Did I mention I have awesome friends?) and has put his slides on "Releasing to Production Every Week" &lt;a href="http://exortech.com/blog/2009/09/16/back-from-bangalore-and-hyderabad-and-mumbai/"&gt;online&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Unfortunately I wasn't around when he was in Bangalore, but since he has put his slides online, (imo,) everyone in the business of producing software should take a look. (That is deploying *to production* every week btw). Owen is a brilliant, thoughtful developer, and it shows (e.g, see &lt;a href="http://exortech.com/blog/2009/02/01/weekly-release-blog-11-zero-downtime-database-deployment/"&gt;this blog entry&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;So what are you waiting for? Get the slides already!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-185653873449688026?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/185653873449688026/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=185653873449688026' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/185653873449688026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/185653873449688026'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2009/09/owen-rogers-on-releasing-to-production.html' title='Owen Rogers on &quot;Releasing To Production Every Week&quot;'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-4765408212998776420</id><published>2009-09-13T23:56:00.000-07:00</published><updated>2009-09-14T23:24:50.017-07:00</updated><title type='text'>Intuit acquires Mint.com for 170 million!</title><content type='html'>And my reaction is .... &lt;br /&gt;&lt;br /&gt;Bwaaaaa ha ha ha ha ha ha ha ha!!!!!&lt;br /&gt;&lt;br /&gt;People I worked with in Intuit will understand why I am rolling on the ground laughing and wiping tears of mirth. (especially those who attended the very first "generate ideas for GBD" meeting).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And there was this one manager who smirked when I said that Mint.com was a big threat to Intuit and that Intuit would eventually have to pay big money to acquire them, if the "startup within the company" efforts proceeded on their existing trajectory.&lt;br /&gt;&lt;br /&gt;Now who's the chump boyo? :-P  &lt;br /&gt;&lt;br /&gt;Don't get me wrong. Intuit had (and has) a lot of very nice people working for it, but it is hardly the most congenial environment for "startups".&lt;br /&gt;&lt;br /&gt;My (politically incorrect now doubt) opinion is that this is a *good* thing. Large companies with entrenched bureaucracies can be many things but the one thing they can't be is innovative. They *should* innovate by acquiring startups who do. In that sense this is a great deal. Intuit has the money. Mint.com has the people with the tech chops. Win Win.&lt;br /&gt;&lt;br /&gt;*If* handled correctly (big if) an Intuit backed Mint.com (however it is branded tomorrow) could be fearsome. But, as I said, it is a big if.&lt;br /&gt;&lt;br /&gt;From the WallStreet Journal.&lt;br /&gt;&lt;br /&gt;"Intuit plans to rewrite its Quicken Online software to be powered by Mint's technology."&lt;br /&gt;&lt;br /&gt;We'll check back next year to see how that goes!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-4765408212998776420?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/4765408212998776420/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=4765408212998776420' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/4765408212998776420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/4765408212998776420'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2009/09/intuit-acquires-mintcom-for-170-million.html' title='Intuit acquires Mint.com for 170 million!'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-6181552636777456642</id><published>2009-09-13T01:54:00.000-07:00</published><updated>2009-09-17T21:54:40.975-07:00</updated><title type='text'>Impressive Language Implementors</title><content type='html'>(expanded from a tweet)&lt;br /&gt;&lt;br /&gt;Slava Pestov just added &lt;a href="http://factor-language.blogspot.com/2009/09/advanced-floating-point-features.html"&gt;Advanced Floating Point support&lt;/a&gt; to Factor. A very impressive piece of work. As someone who works with large datasets and machine learning algorithms, I've been bitten by weird floating point "features" of many mainstream languages (For those who don't know how important FP is, take a look at &lt;a href="http://www.eecs.berkeley.edu/~wkahan/JAVAhurt.pdf"&gt;"How java Floating Point Hurts Everyone"&lt;/a&gt; (warning pdf) - an old paper but a good one, to get some background).&lt;br /&gt;&lt;br /&gt;Anyway, this got me to thinking of who (among language implementors) I am most impressed by and I came up with the people working on GHC (I think mostly Simon Peyton Jones, I could be wrong), Slava Pestov (Factor) and Rich Hickey (Clojure). All these implementations have this mind bending quality that if you read the source for a while, you'll *always* learn something new. The Lua implementation has this quality too.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In the second bucket (the "average") come the various Ruby implementations (and Python). yes you can learn stuff by reading the code, but it is mostly "ho hum"Ruby is a weird case. The JRuby and Rubinius implementations in particular,  have some clever ideas and have very bright people leading their efforts (as Slava pointed out on Twitter), but the original MRI implementation is so, for lack of beter words, brain dead, that *on the average*, Ruby implementation quality is only so so. (This is probably an unfair characterization but hey I was *tweeting*! You expect a reasoned thesis?!) &lt;br /&gt;&lt;br /&gt;If you want to see an undead zombie of a language (in terms of the suckiness of the implementation), look at PHP (the language sucks too but that is another rant).&lt;br /&gt;&lt;br /&gt;NB: I am talking of the  quality of the *implementation* of languages here, not the design of the language, though the two are often correlated.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-6181552636777456642?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/6181552636777456642/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=6181552636777456642' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/6181552636777456642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/6181552636777456642'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2009/09/impressive-language-implementors.html' title='Impressive Language Implementors'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-2023625757669657527</id><published>2009-09-11T12:40:00.000-07:00</published><updated>2009-09-15T01:00:36.762-07:00</updated><title type='text'>Sudoku in Coders At work</title><content type='html'>Once upon a time, I wrote &lt;a href="http://ravimohan.blogspot.com/2007/04/learning-from-sudoku-solvers.html"&gt;this blog entry&lt;/a&gt;. Peter Norvig references it (indirectly) in his interview  in Peter Seibel's great new book "Coders At Work". &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;"Seibel: Though your job now doesn’t entail a lot of programming you still write programs for the essays on your web site. When you’re writing these little programs, how do you approach it?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Norvig: I think one of the most important things is being able to keep everything in your head at once. If you can do that you have a much better chance of being successful. That makes a small program easier. For a bigger program, you need extra tools to be able to handle that. It’s also important to know what you’re doing. When I wrote my Sudoku Solver, some bloggers commented on that.&lt;br /&gt;&lt;br /&gt;They said, “Look at the contrast—here’s Norvig’s Sudoku thing and then there’s this other guy, whose name I’ve forgotten, one of these test-driven design gurus. He starts off and he says, “Well, I’m going to do Sudoku and I’m going to have this class and first thing I’m going to do is write a bunch of tests.” But then he&lt;br /&gt;never got anywhere. He had five different blog posts and in each one he wrote a little bit more and wrote lots of tests but he never got anything working because he didn’t know how to solve the problem. I actually knew—from AI—that, well, there’s this field of constraint propagation—I know how that works. There’s this field of recursive search—I know how that works. And I could see, right from the start, you put these two together, and you could solve this Sudoku thing. He didn’t know that so he was sort of blundering in the dark even though all his code “worked” because he had all these test cases.&lt;br /&gt;                                                                &lt;br /&gt;Then bloggers were arguing back and forth about what this means. I don’t think it means much of anything—I think test-driven design is great. I do that a lot more than I used to do. But you can test all you want and if you don’t know how to approach the problem, you’re not going to get a solution.&lt;br /&gt;&lt;br /&gt;Seibel: So then the question is, how should he have known that? Should he have gone and gotten a PhD and specialized in artificial intelligence? You can’t know every algorithm. These days you have Google, but finding the right approach to a problem is a little different than finding a web framework.&lt;br /&gt;&lt;br /&gt;Norvig: How do you know what you don’t know?&lt;br /&gt;Seibel: Exactly.&lt;br /&gt;&lt;br /&gt;Norvig: So I guess it’s two parts. One is to recognize that maybe there is a known solution to this. You could say, “Well, nobody could possibly know how to do this, so just exploring randomly is as good as everything else.” That’s one possibility. The other possibility is, “Well, probably somebody does know how to do this. I just don’t know what the words are for it, so I&lt;br /&gt;have to discover those.” I guess that’s partly just intuition and saying, “It seems like the kind of thing that should be in the body of knowledge from AI.” And then you have to figure out, how do I find it? And probably he could’ve done a search on Sudoku and found it that way. Maybe he thought that was cheating. I don’t know&lt;br /&gt;&lt;br /&gt;.&lt;br /&gt;Seibel: So let’s say that is cheating—say you were the first person ever to try and solve Sudoku. The techniques that you ended up using would still have been out there waiting to be applied.&lt;br /&gt;&lt;br /&gt;Norvig: Let’s say I wanted to solve some problem in biology. I wouldn’t know what the best algorithms were for doing gene sequencing or whatever. But I’d have a pretty good idea that there were such algorithms. Then I could start looking around. At another level, some of these things are pretty fundamental—if you don’t know what dynamic programming is, then you’re at a severe disadvantage. It’s going to come up time and time&lt;br /&gt;again. If you don’t know this idea of search in general—that you can make a choice and backtrack when you don’t need it. These are all ideas from the ’60s. It was only a few years into programming that people discovered these things. It seems like that’s the type of thing that everyone should know. Some things that were discovered last year, not everybody should know.&lt;br /&gt;    &lt;br /&gt;&lt;br /&gt;Seibel: So should programmers go back and read all the old papers?&lt;br /&gt;Norvig: No, because there are lots of false starts and lots of mergers where two different fields develop completely different technology and terminology, and then they discover they were really doing the same thing. I think you’d rather have a story from the modern point of view rather than have to follow all the steps. But you should have them. I don’t know what the best books are for that since I picked it up the hard way, piecemeal."&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Dr. Norvig is a much nicer (and wiser) person than I am. I (completely) agree with him that bloggers' blather (including mine) doesn't mean much and TDD is great as one (vs the only) tool in one's arsenal. &lt;br /&gt;&lt;br /&gt;That said, I &lt;span style="font-style:italic;"&gt;still&lt;/span&gt; think many so called "agile" "gurus" can't program for nuts, as Jeffries so amply demonstrates. It is hypocrisy of the first order that people who don't know how to program well advise the rest of us how to. The "agile" movement brimmeth over with such pseudo programmer snake oil salesmen.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;"These are all ideas from the ’60s. It was only a few years into programming that people discovered these things. It seems like that’s the type of thing that everyone should know."&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;"Should know" is correct. It is also true that most "developers" wouldn't know Dynamic Programming if it showed up at the front door and slapped them silly.  &lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;One&lt;/span&gt; reason for this is that most "enterprise" programming uses essentially two data structures, the List and the Hashtable and most language implementations provide default implementations of these. And a &lt;span style="font-style:italic;"&gt;lot&lt;/span&gt; of "programmers" do this all their lives and think they are cool because they drank the latest/greatest shiny methodology Kool Aid. And these folks get the "gurus" they deserve!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;"Seibel: What about the idea of using tests to drive design?&lt;br /&gt;&lt;br /&gt;Norvig: I see tests more as a way of correcting errors rather than as a way of design. This extreme approach of saying, “Well, the first thing you do is write a test that says I get the right answer at the end,” and then you run it and see that it fails, and then you say, “What do I need next?”—that doesn’t seem like the right way to design something to me."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;heh! heh!&lt;br /&gt;&lt;br /&gt; Anyway, it is great that something I wrote  got reflected, however indirectly, in this great book. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Coders at Work is a &lt;span style="font-style:italic;"&gt;great&lt;/span&gt; book with legendary programmers talking in great detail about many aspects of programming. It is very interesting how Peter Seibel (the author) has captured each "voice" so perfectly. Every programmer should read this book, *especially* if you are stuck in a sucky job writing leasing systems (or accounting systems or whatever). &lt;br /&gt;&lt;br /&gt;"What power would Hell have if those imprisoned there were not able to dream of Heaven?" as the Dream King says in Neil Gaiman's "The Sandman", but even at the cost of granting Hell some power, do &lt;span style="font-style:italic;"&gt;dream&lt;/span&gt; of Heaven, say I, for that way lies eventual redemption.&lt;br /&gt;&lt;br /&gt;This book provides a glimpse of what programming looks like for people who are already "in heaven".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-2023625757669657527?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/2023625757669657527/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=2023625757669657527' title='23 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/2023625757669657527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/2023625757669657527'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2009/09/sudoku-in-coders-at-work.html' title='Sudoku in Coders At work'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>23</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-6070446453672143607</id><published>2009-09-11T11:26:00.000-07:00</published><updated>2009-09-11T11:33:47.053-07:00</updated><title type='text'>"Coders At Work" is Awesome</title><content type='html'>An extract from Chapter 1&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;"Seibel: What about books? Are there particular computer-science or programming books that everyone should read?&lt;br /&gt;&lt;br /&gt;Zawinski: I actually haven’t read very many of those. The one I&lt;br /&gt;always recommend is Structure and Interpretation of Computer Programs, which a lot of people are afraid of because it’s Lispy, but I think does a really good job of teaching programming without teaching a language. I think a lot of introductory-level stuff focuses on syntax and I definitely saw that in the classes I had in high school and in the intro classes at Carnegie-Mellon during my brief time there.This is not teaching people to program; this is teaching people where the semicolon goes. That seems like the kind of thing that’s going to scare people away from it more than anything, because that’s not the interesting part. Not even to someone who knows what they’re doing.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;There was another book—what was it called?—about debugging, written by someone from Microsoft. It was about how to use asserts effectively. I remember thinking that was a really good book, not because I learned anything from it, but because it was the book you wish your idiot coworker had read.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Then there was another book that everybody thought was the greatest thing ever in that same period—Design Patterns—which I just thought was crap. It was just like, programming via cut and paste. Rather than thinking through your task you looked through the recipe&lt;br /&gt;book and found something that maybe, kinda, sorta felt like it, and then just aped it. That’s not programming; that’s a coloring book. But a lot of people seemed to love it. Then in meetings they’d be tossing around all this terminology they got out of that book. Like, the inverse, reverse, double-back-flip pattern—whatever. Oh, you mean a loop? OK."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;heh heh!&lt;br /&gt;&lt;br /&gt;This book is really good and I am sitting here and reading this instead of working (and I have a LOT of work to do). I'll do a full review later, but if you are any kind of programmer just go&lt;a href="http://www.amazon.com/Coders-at-Work-Peter-Seibel/dp/1430219483/"&gt; buy it&lt;/a&gt; already.&lt;br /&gt; &lt;br /&gt;@Peter Seibel Great Work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-6070446453672143607?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/6070446453672143607/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=6070446453672143607' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/6070446453672143607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/6070446453672143607'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2009/09/coders-at-work-is-awesome.html' title='&quot;Coders At Work&quot; is Awesome'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-8062156344093721034</id><published>2009-07-31T09:48:00.000-07:00</published><updated>2009-07-31T09:50:14.025-07:00</updated><title type='text'>Unplugged</title><content type='html'>I am unreachable, (especially by phone, which doesn't work where I am) till Jan 2010. Email will be answered, eventually. I am not available for any consulting assignments till 2010.&lt;br /&gt;&lt;br /&gt;See you next year! Have fun,&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-8062156344093721034?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/8062156344093721034/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=8062156344093721034' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/8062156344093721034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/8062156344093721034'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2009/07/unplugged.html' title='Unplugged'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-572413483528100802</id><published>2009-07-25T17:31:00.000-07:00</published><updated>2009-07-26T07:14:18.076-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='startups'/><title type='text'>Why do startups still use Java? Part 4 (conclusion)</title><content type='html'>(&lt;a href="http://pindancing.blogspot.com/2009/07/why-do-startups-still-use-java.html"&gt;Part1&lt;/a&gt;, &lt;a href="http://pindancing.blogspot.com/2009/07/why-do-startups-still-use-java-part-2.html"&gt;Part2&lt;/a&gt;, &lt;a href="http://pindancing.blogspot.com/2009/07/why-do-startups-still-use-java-part-3.html"&gt;Part 3&lt;/a&gt; of this series of blog posts, for anyone who needs some context)&lt;br /&gt;&lt;br /&gt;I got some time to think on a plane and distilled down the  rationale for using java in a startup to this question.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;br /&gt;"Is your startup going to need "average" programmers before your company makes significant amounts of money and/or gets funded?"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;"Average" could be interpreted different ways - "dumb" (either absolutely or relative to alpha coders you do have), "low energy" (due to lack of time to focus on programming/ wanting to go home after 8 hours of work/ whatver), "low experience" (hire people with no programming experience), etc etc.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;But all said and done, if you are going to need many average programmers on your project *before* you make (decent amounts of) money, then the decision to use Java (or C# or whatever the "mainstream" language is) is probably justified.&lt;br /&gt;&lt;br /&gt;The question is  a bit more subtle than it looks and has some circular reasoning baked in, but it serves to encapsulate all the reasons people select Java as a main programming language in a startup and can probably serve as a rule of thumb simplifying approximation.&lt;br /&gt;&lt;br /&gt;The bigger question is what &lt;span style="font-style:italic;"&gt;exactly&lt;/span&gt; does it mean for a &lt;span style="font-style:italic;"&gt;startup &lt;/span&gt;to depend on "average" programmers, (I can't think of a convincing example of such a &lt;span style="font-style:italic;"&gt;software&lt;/span&gt; startup, but I am sure they exist somewhere) but that is a question for another day!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-572413483528100802?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/572413483528100802/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=572413483528100802' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/572413483528100802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/572413483528100802'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2009/07/why-do-startups-still-use-java-part-4.html' title='Why do startups still use Java? Part 4 (conclusion)'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-9109937057971741967</id><published>2009-07-23T04:04:00.000-07:00</published><updated>2010-05-25T18:49:51.103-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='startups'/><title type='text'>Why do startups still use java? Part 3</title><content type='html'>For context, see the two previous blog posts on this topic :- &lt;a href="http://pindancing.blogspot.com/2009/07/why-do-startups-still-use-java.html"&gt;part 1&lt;/a&gt;, &lt;a href="http://pindancing.blogspot.com/2009/07/why-do-startups-still-use-java-part-2.html"&gt;part 2&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I was talking to yet another friend who is building a startup on the side (while holding down a 9 to 5 job) and after discussing his idea a bit I asked him the question "So why are you using java, given that you have very little time to work on your startup idea?" and after backing through the usual "problems" with more powerful languages, ("support", scalability etc - see the anonymous comments on my earlier blog entries on this topic) he said (paraphrased) &lt;br /&gt;&lt;br /&gt;"I guess the final reason is somewhat depressing. I would have definitely used Scala if I were say 5 years younger :P.  I am starting to feel that little bit of laziness when it comes to researching and learning things" .&lt;br /&gt;&lt;br /&gt;This was a great eye opener for me because my friend is a *good* programmer and not in the least "managerial".&lt;br /&gt;&lt;br /&gt;First, I am kind of unusual (some would say crazy, ;-)) in that I am still enthusiastic as I was ten years ago (or more than I was 10 years ago) about all things technical. I am perfectly happy reading a technical paper, or some  source code or a technical book on the bus, in the train, waiting for lunch, in bed before sleeping and so on. &lt;br /&gt;&lt;br /&gt;Second, I think nothing of working 2 days flat out and then crashing for 12 hours or working nights for a few months. &lt;br /&gt;&lt;br /&gt;Third, I don't have a wife and kids who (rightly) require attention (the girl friend is used to my crazy ways and very undemanding, bless her kind soul). I don't have  to feed the kids and send them to college so a 9 to 5 job isn't the necessary evil that it is to most folks. &lt;br /&gt;&lt;br /&gt;So (in matters relating to programming) I am still 20 years old in my head, with the whole world wide open and full of possibilities, while other people my age have to do what they can in the *very* limited time they have. Given this, upgrading to the latest greatest language/toolkit/ os/ whatever may have a lesser priority than would be apparent to someone like me.  My conceptual mistake is to extend my "mindset" to others. (yes once realized this is a obviously stupid idea!)&lt;br /&gt;&lt;br /&gt;So maybe one of the reasons some programmers choose java for a startup is that they are of an age where there simply isn't the time or energy to constantly upgrade. You are very productive with Java through sheer experience  and the time or energy to master a completely new ecosystem is simply not there.&lt;br /&gt;&lt;br /&gt;Which has some consequences of course - in that such a programmer can often be outcoded by a kid  whose innate brilliance and energy I enough to make up for the (relatively) old man's wisdom and experience. &lt;br /&gt;&lt;br /&gt;Which maybe why, historically, most of the technically ground breaking software startups have been founded by brilliant teenagers who can hack.&lt;br /&gt;&lt;br /&gt;Continued in  &lt;a href="http://pindancing.blogspot.com/2009/07/why-do-startups-still-use-java-part-4.html"&gt;Part 4&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-9109937057971741967?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/9109937057971741967/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=9109937057971741967' title='15 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/9109937057971741967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/9109937057971741967'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2009/07/why-do-startups-still-use-java-part-3.html' title='Why do startups still use java? Part 3'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-1254559869897511402</id><published>2009-07-22T18:20:00.000-07:00</published><updated>2009-07-23T01:17:33.137-07:00</updated><title type='text'>Managers, Makers and Meetings</title><content type='html'>When I last worked at MegaCorp, I would be in the office by 6.30 in the morning and leave by about 3.30 in the afternoon. This was non negotiable and part of the agreement I made with the company. I could work[1]  productively for about three hours before  the day's meetings and "manager work" started and the rest of the day usually went downhill very fast. I had some dim sense of "preserving my sanity"as a reason for doing this and it worked very well in this regard, but I could never explain clearly &lt;span style="font-style:italic;"&gt;why&lt;/span&gt; this worked so well.&lt;br /&gt;&lt;br /&gt;Now I know. Paul Graham writes an excellent &lt;a href="http://paulgraham.com/makersschedule.html"&gt;essay &lt;/a&gt; on the different notions of scheduling for managers and "makers". A must read for both managers and programmers.&lt;br /&gt;&lt;br /&gt;[1] At MegaCorp "work" had strange meanings - it was mostly measured in the degree you sucked up to your superiors (I am not being condescending here. I watched several masters of this art who would apply a frightening degree of focus on "managing upwards". Very educational but very scary), and how many meetings you attended. By God, did we have meetings. One of the reasons I left (not the most important one!) was that we started to have meetings about meetings and I came out of these dispirited and demoralized and completely drained.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-1254559869897511402?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/1254559869897511402/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=1254559869897511402' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/1254559869897511402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/1254559869897511402'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2009/07/managers-makers-and-meetings.html' title='Managers, Makers and Meetings'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-727154286312065742</id><published>2009-07-21T21:26:00.000-07:00</published><updated>2010-05-25T18:46:20.887-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='startups'/><title type='text'>Why do startups still use java? Part 2</title><content type='html'>In my &lt;a href="http://pindancing.blogspot.com/2009/07/why-do-startups-still-use-java.html"&gt;last blog entry&lt;/a&gt; I had asked the question "Why do startups use Java (vs more powerful languages - Clojure, Scala etc - on the JVM, or other languages like Haskell or Erlang)?" &lt;br /&gt;&lt;br /&gt;I had the opportunity to talk to a couple of ex-colleagues who are working on their startup (which, I predict will be *astoundingly* successful - these are very intelligent, well funded, capable  -even the"business" guys is a good programmer -  guys with some cool software) and I asked them this question and the answer was " (1) we find it hard enough to get good programmers. Adding a requirement for an unusual language will narrow the field (2) we don't have the time to train people. People should come on board ready to code. Unusual languages make this more difficult".&lt;br /&gt;&lt;br /&gt;Both are thoughtful responses. I have some thoughts on these, but they will have to wait for another  blog entry. Just throwing it out here for anyone interested.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Continued in &lt;a href="http://pindancing.blogspot.com/2009/07/why-do-startups-still-use-java-part-3.html"&gt;Part 3&lt;/a&gt; , &lt;a href="http://pindancing.blogspot.com/2009/07/why-do-startups-still-use-java-part-4.html"&gt;Part 4&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-727154286312065742?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/727154286312065742/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=727154286312065742' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/727154286312065742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/727154286312065742'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2009/07/why-do-startups-still-use-java-part-2.html' title='Why do startups still use java? Part 2'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-7904162661330703209</id><published>2009-07-18T22:59:00.000-07:00</published><updated>2010-05-25T18:47:52.044-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='startups'/><title type='text'>Why do startups still use java?</title><content type='html'>I can't imagine what competitive advantage using Java (or C#) to create a &lt;span style="font-style:italic;"&gt;startup&lt;/span&gt; provides &lt;span style="font-style:italic;"&gt;these&lt;/span&gt; days. I can see why the &lt;span style="font-style:italic;"&gt;JVM&lt;/span&gt; is sometimes a good idea. But java? &lt;br /&gt;&lt;br /&gt;The only advantage Java provides *these* days over something like Clojure or Scala (or Python or even a c + scripting language combination depending on domain, let alone more powerful languages) is that you can be sure an average dumbo "programmer" hired off the street won't run away screaming when introduced to the code base. But if you are a software *startup* (vs big, fat and slow MegaCorp), why would you want to hire "average" (we'll be kind here) programmers?&lt;br /&gt;&lt;br /&gt;I mean if you need a lot of libraries, use a better language on the JVM. If you need only a few, use the most powerful language you know. I would have thought it was obvious.&lt;br /&gt;&lt;br /&gt;Well I thought about it and found &lt;span style="font-style:italic;"&gt;an&lt;/span&gt; answer.&lt;br /&gt;&lt;br /&gt;Startups are not &lt;span style="font-style:italic;"&gt;necessarily &lt;/span&gt;founded by great programmers (who presumably are fluent in better languages than java or C#). They are often founded by MBA/business types who bring in a programmer they know and unsurprisingly enough these are the mediocre "enterprise" type of programmer. And they reach for what they know and are comfortable with, and hey presto, yet another j2ee/dotNet startup!&lt;br /&gt;&lt;br /&gt;COntinued in &lt;a href="http://pindancing.blogspot.com/2009/07/why-do-startups-still-use-java-part-2.html"&gt;Part 2&lt;/a&gt;, &lt;a href="http://pindancing.blogspot.com/2009/07/why-do-startups-still-use-java-part-3.html"&gt;Part 3&lt;/a&gt; , &lt;a href="http://pindancing.blogspot.com/2009/07/why-do-startups-still-use-java-part-4.html"&gt;Part 4&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-7904162661330703209?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/7904162661330703209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=7904162661330703209' title='20 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/7904162661330703209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/7904162661330703209'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2009/07/why-do-startups-still-use-java.html' title='Why do startups still use java?'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>20</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-366198050291153875</id><published>2009-07-18T07:08:00.000-07:00</published><updated>2009-07-18T07:13:25.745-07:00</updated><title type='text'>I've become some kind of weird clearing house</title><content type='html'>for good programmers looking for interesting projects/jobs. I know people doing interesting things  (startups or other interesting projects). I also happen to know some really good programmers (who are as rare in Bangalore as they are elsewhere). Sometime I am able to link the former to the latter. If I didn't have so much to do I would probably start something like "Really Cool Jobs for really cool programmers in India dot com".&lt;br /&gt;&lt;br /&gt;And since I connect only people I know personally, I can put my credibility behind them they are able to bypass multiple levels of interviews and such. Maybe there is a business model in there somewhere? (just kidding. I have enough to do for the next 10 years and my pile of "things to do" would be just as high).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-366198050291153875?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/366198050291153875/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=366198050291153875' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/366198050291153875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/366198050291153875'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2009/07/ive-become-some-kind-of-weird-clearing.html' title='I&apos;ve become some kind of weird clearing house'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-755684529159619754</id><published>2009-06-27T08:37:00.001-07:00</published><updated>2009-06-27T08:57:06.407-07:00</updated><title type='text'>Turning Down Projects (in a recession) Part 2</title><content type='html'>One thing I love about blogging is how it enables me to think clearly. I wrote about how I turned down a couple of "good" projects in my last blog entry and gave some reasons. But something kept nagging at me as to why I turned down these projects. &lt;br /&gt;&lt;br /&gt;I just realized that I turn down some projects because I don't want to be a part (*any* part, no matter how well compensated) of a mediocre project any longer. (I've had my share of mediocre projects, especially during my "outsourced enterprise" days. Been there, done that got the t-shirt -nutshell version -&gt;  life is not worth living when you spend 8+ hours a day on a sucky  project).&lt;br /&gt;&lt;br /&gt;Now I've decided to work *only* with good people on good projects, producing excellent code that provides great "customer value".&lt;br /&gt;&lt;br /&gt; Funnily enough, I seem to have made the decision and committed to it before I was consciously aware of doing so. &lt;br /&gt;&lt;br /&gt;Once upon a time a friend asked me to come work at his company(which will remain un named). Just as I began to turn it over in my mind, I heard myself say *very vehemently* " I'll beg on the streets  before I work for [company]". &lt;br /&gt;&lt;br /&gt;I was the one most surprised. But ...it felt right.  I *will* become a beggar rather than work for that company.&lt;br /&gt;&lt;br /&gt;And now I will never ever work on a project/company/team that doesn't make  excellence a goal and way of life.&lt;br /&gt;&lt;br /&gt;Life is too short to be mediocre. *Trying* for excellence and failing is better than compromising "successfully" with mediocrity.&lt;br /&gt;&lt;br /&gt;Ok, end epiphany. Back to regular programming!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-755684529159619754?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/755684529159619754/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=755684529159619754' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/755684529159619754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/755684529159619754'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2009/06/turning-down-projects-in-recession-part.html' title='Turning Down Projects (in a recession) Part 2'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-3057875273247870800</id><published>2009-06-25T23:48:00.000-07:00</published><updated>2009-06-26T05:30:55.997-07:00</updated><title type='text'>Turning Down Projects (in a recession)</title><content type='html'>As an independent "consultant", I get to hear a lot of project ideas. Most aren't worth listening to because it is just MBA types trying to extract free labor from technical people, but once in a while you come across some projects which are good or decent but you have to turn them down anyway.&lt;br /&gt;&lt;br /&gt;I was talking to a brilliant guy the other day who wanted me to come into his organization, take charge of his engineering team and ramp them up the effectiveness scale while simultaneously welding 6 different (java/j2ee) codebases into a single "suite". Generally when I am asked to do such "enterprise-ey" jobs, I just turn them down flat, but this guy was a very atypical manager and so I actually thought about it.&lt;br /&gt;&lt;br /&gt;It would take on the order of two years to get the desired effect and ramping up an indifferent technical team into a top notch team is one of  the hardest things in the world to do well (no matter what an "agile consultant" would tell you ;-)). After thinking about it for a bit, I decided that the opportunity costs of working two years on something like this is too high (for me). Besides, I'd rather build a new team of brilliant people than ramp up mediocre people and processes.&lt;br /&gt;&lt;br /&gt;Yet another project I turned down recently was a healthcare project that seemed promising. Unlike the usual MBA hallucinations this idea actually had a decent business model, clients waiting to give them money, real domain expertise and so on. The problem was that neither did they want to give away equity to the technical folks who built the product nor  would they pay a high enough amount of money to be worth the time and effort it would take. Their ideal deal was "we'll pay you a  modest amount now (NB: this is far better than the usual "work for us for free" deals most MBAs propose) and once you've built the product, we'll raise some VC funding (In my opinion, they had a good enough idea that VC funding wouldn't be a problem even in these times) and then  we'll give you a decent fee and that's it".&lt;br /&gt;&lt;br /&gt;Unfortunately (a) the nature of the product was that it couldn't be built by your garden variety enterprise programmer(some significant algorithmic challenges to overcome and some tricky programming to pull off) and besides they'd already tried this with some "enterprise outsourcing" folks and failed badly (b) a good programmer wouldn't take on this magnitude of work without a *huge* fee or  significant equity and (c) none of the founders were technical (they were doctors) and they couldn't see the sense of giving equity to someone akin to a carpenter or a mason. You don't give equity in your company to a carpenter who builds the tables in your company would you ? ;-)&lt;br /&gt;&lt;br /&gt;Which brings me to my central point. Even in this recession, practically every company I know (the bodyshoppers - Infosys, Wipro TCS Satyam etc being the exception)  is hiring (though more selectively than usual), people are still proposing projects (with funding available) to a degree where some one like me who doesn't even actively look for such projects or jobs can have the luxury of turning down what would seem very attractive terms.  I know people who would kill for a two year engagement with excellent pay, which was essentially what the first project I mentioned was.&lt;br /&gt;&lt;br /&gt;The one group of people who are really hit by the recession is people just out of college. Some really good people aren't getting entry level jobs, but I am not sure it isn't actually good for them in the long run. Working for Wipro or IBM Global or Accenture is a sure way to waste years of your life for not much return(as a few thousand people in Satyam just found out).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Somehat tangentially, one problem I see with people trying to do a startup/work as an independent consultant etc, is that very few people have any *distinctive* skills that give them a competitive advantage. Knowing J2EE or Ruby On Rails  (and possibly a smattering of "agile" or "lean software" or  whatever the latest fad is) makes you just like the ten million people already on the market, at least on paper. What do you know/what skills or advantages do you have  that (most) other people can't compete with you?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-3057875273247870800?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/3057875273247870800/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=3057875273247870800' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/3057875273247870800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/3057875273247870800'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2009/06/turning-down-projects.html' title='Turning Down Projects (in a recession)'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-1066034206595223398</id><published>2009-06-25T23:44:00.000-07:00</published><updated>2009-06-26T00:28:53.777-07:00</updated><title type='text'>Stop Twitter. More Blogging</title><content type='html'>I've been on twitter for a couple of months now and am getting tired of it already. Twittering does have its benefits, especially the need to shrinka thought to its bare essentials, but I find it detracts from my more thoughtful writing. &lt;br /&gt;&lt;br /&gt;Of course twitter wasn't intended to replace blogs, it seems more of an "update what you ae doing" thing. And I write quite a bit of the "thoughtful stuff"  on YCombinator, so the blog gets increasingly neglected.&lt;br /&gt;&lt;br /&gt;Well, time to change(back). I am traveling in internet access-less places till about the 10th of July. Once I get back I'll put my writing on a more regular schedule.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-1066034206595223398?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/1066034206595223398/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=1066034206595223398' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/1066034206595223398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/1066034206595223398'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2009/06/stop-twitter-more-blogging.html' title='Stop Twitter. More Blogging'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-4833057659936310660</id><published>2009-05-25T10:45:00.000-07:00</published><updated>2009-05-25T10:53:45.622-07:00</updated><title type='text'>Writers on Star Trek</title><content type='html'>George RR Martin thinks the new Star Trek Movie &lt;a href="http://grrm.livejournal.com/87221.html"&gt;sucks&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;"No spoilers here, just a resounding thumbs down. Take a pass."&lt;br /&gt;"the writing sucks start to finish, and the science fictional aspects are ludicrous even for STAR TREK."&lt;br /&gt;&lt;br /&gt;Orson Scott Card &lt;a href="http://www.hatrack.com/osc/reviews/everything/2009-05-10.shtml"&gt;thinks it was good&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;"this movie has everything else I could have wished for: good writing, good acting, a powerful story, and the kind of ethical-dilemma philosophy that Roddenberry faked."&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I found it interesting that two excellent writers had two diametrically opposite opinions on the  quality of the writing!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now, I am no trekkie. And I haven't seen the movie yet. I always thought Star trek was more soap opera than science fiction.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-4833057659936310660?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/4833057659936310660/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=4833057659936310660' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/4833057659936310660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/4833057659936310660'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2009/05/writers-on-star-trek.html' title='Writers on Star Trek'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-1897244710464999039</id><published>2009-05-22T07:07:00.000-07:00</published><updated>2009-05-22T12:41:32.764-07:00</updated><title type='text'>Interesting technical jobs in India?</title><content type='html'>The Indian IT "industry" has long been known for its tendency to hire people to grind through ultra grungy work that no one in the West wants to do and so is outsourced here. &lt;br /&gt;&lt;br /&gt;As an "independent consultant", I hear  all kinds of oddly structured project proposals and job offers and I am not sure if it is a trend, but over the last couple of weeks, I have been hearing about jobs with very non standard requirements - I know of a company using Erlang to do some AI-ey things, another doing Natural Language Processing with Scheme, yet another looking for people with Scala experience, and  quite a few looking for strong C skills +  deep algorithmic knowledge.&lt;br /&gt;&lt;br /&gt; As I said, I am not sure this is indicative of a groundswell of good jobs, but I think it s great that *some* people are trying to move away away from crap J2EE/RoR  enterprise crud (pun intended) jobs.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-1897244710464999039?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/1897244710464999039/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=1897244710464999039' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/1897244710464999039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/1897244710464999039'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2009/05/interesting-technical-jobs-in-india.html' title='Interesting technical jobs in India?'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-507954178467300042</id><published>2009-05-17T02:56:00.000-07:00</published><updated>2009-05-17T03:44:01.861-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>LTTE leader Prabhakaran rumored dead.</title><content type='html'>A preliminary report is &lt;a href="http://ibnlive.in.com/news/lankan-army-claims-prabhakaran-dead/92805-2.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;And I say, good riddance to bad rubbish. This inhuman s.o.b assassinated an Indian Prime Minister,  (Sinhalese) politicians, rival Sri Lankan Tamil politicians, recruited children to be cannon fodder and led thousands of his followers into death and desolation. On principle, I oppose anyone who kills innocents  in the name of some holy cause of religion or ethnicity or political belief.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Parallelly in India, the voters of Tamil Nadu have voted against the pro LTTE parties and handed them a convincing defeat. It is insane for a vocal minority in Tamil Nadu or the West to ask India to interfere in the another nation's internal affairs just because some people there speak the same language as some Indian Citizens. If this kind of reasoning  is valid, Pakistan's meddling in Kashmir is valid too. At best, it is a superficial activity like our own  NRIs (Non resident Indians) pontificating about what policies India should adopt while working towards American citizenships. Hypocrites all!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;No matter what happens in SriLanka, it is matter for *Sri Lankans* to resolve. India can use peaceful means to try influencing Sri Lanka for sure but sending the Indian Army to fight in Sri Lanka and arming/ tolerating the LTTE before that was stupidity of the first order. Sri Lanka will work out its  solutions as per the wishes of the Sri Lankans.&lt;br /&gt;&lt;br /&gt;To conclude, congratulations to the Sri Lankan Army. Now, if the Sinhalese leadership can follow military victory with a halfway decent political reform/reconciliation effort, that will be the end of this insurgency and this part of the world will have peace.&lt;br /&gt;&lt;br /&gt;Here is to hoping the Islamic terrorists get wiped off the pages of history as well. Hopefully Osama Bin Laden and his gang of fanatics will soon hang from the lamp posts too. Then the rest of us can get on with our lives in peace.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-507954178467300042?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/507954178467300042/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=507954178467300042' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/507954178467300042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/507954178467300042'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2009/05/ltte-leader-prabhakaran-rumored-dead.html' title='LTTE leader Prabhakaran rumored dead.'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-1360437817535847340</id><published>2009-05-15T21:22:00.000-07:00</published><updated>2009-05-17T03:15:13.925-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>Election Results today</title><content type='html'>The results to the parliament elections will be known in a couple of hours. Just a short note here to record my appreciation of how lucky I am to be living in a democracy. If I were born in China (for e.g, or North korea or Saudi Arabia ... ), I would probably have gone to the wall long ago.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; Even with all its ills and the wrong people winning sometimes (e.g Mr Shashi Tharoor, an audacious carpetbagger, is leading in my home constituency as I write this. Ugh!), democracy is still the best system in the world and I am blessed to live in one!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PS:Still many things to improve. Web coverage of the elections is abysmal. The Election Commission's website crashed. They  run the site on IIS/ WinXP (!!!).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-1360437817535847340?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/1360437817535847340/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=1360437817535847340' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/1360437817535847340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/1360437817535847340'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2009/05/election-results-today.html' title='Election Results today'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-1524873631912499784</id><published>2009-05-15T07:29:00.000-07:00</published><updated>2009-05-15T07:39:52.415-07:00</updated><title type='text'>JSF RoadKill</title><content type='html'>My friend Peter Thomas wrote an &lt;a href="http://ptrthomas.wordpress.com/2009/05/15/jsf-sucks/"&gt;excellent blog entry&lt;/a&gt; on the evolution (if zombie like undead shambling monstrosities can be said to "evolve") of the JSF "framework". If you work in enterprise programming you owe it to yourself to read this. If you don't work in enterprise software, but like horror stories, give it a quick glance. (and thank Merciful Heaven that you have better ways of putting bread on the table!).&lt;br /&gt;&lt;br /&gt;Oh and if a so called "architect" in your organization reccomended JSF for your project, strangle him with the nearest power cable!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-1524873631912499784?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/1524873631912499784/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=1524873631912499784' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/1524873631912499784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/1524873631912499784'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2009/05/jsf-roadkill.html' title='JSF RoadKill'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-8453995656016726907</id><published>2009-05-10T02:14:00.000-07:00</published><updated>2009-05-10T02:19:56.972-07:00</updated><title type='text'>Anyone (in Bangalore) interested in a D&amp;D (or GURPS) campaign?</title><content type='html'>I am putting together a campaign in between bouts of coding. Will probably be  a while before I finish, and still haven't thought of the logistics (where to meet, how often etc) so this is more to gauge interest. &lt;br /&gt;&lt;br /&gt;If anyone is running a group in Bangalore already, please let me know, I'd like to drop by and see how you run a (&lt;a href="http://en.wikipedia.org/wiki/Dungeons_&amp;_Dragons"&gt;D&amp;D&lt;/a&gt; or &lt;a href="http://en.wikipedia.org/wiki/GURPS"&gt;GURPS&lt;/a&gt;) campaign.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-8453995656016726907?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/8453995656016726907/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=8453995656016726907' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/8453995656016726907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/8453995656016726907'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2009/05/anyone-in-bangalore-interested-in-d-or.html' title='Anyone (in Bangalore) interested in a D&amp;D (or GURPS) campaign?'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-4256644182823938008</id><published>2009-05-08T10:36:00.000-07:00</published><updated>2009-05-08T10:38:29.166-07:00</updated><title type='text'>Twittering</title><content type='html'>&lt;a href="http://twitter.com/ravi_mohan"&gt;here&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;I am not completely convinced of the awesomeness of Twitter, but it seems useful to jot down thoughtlets not big enough for a complete blog entry.&lt;br /&gt;&lt;br /&gt;We'll see how it goes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-4256644182823938008?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/4256644182823938008/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=4256644182823938008' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/4256644182823938008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/4256644182823938008'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2009/05/twittering.html' title='Twittering'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-3880155916364553474</id><published>2009-05-01T06:04:00.000-07:00</published><updated>2009-05-01T07:14:19.353-07:00</updated><title type='text'>The Ruby on Rails Soap Opera</title><content type='html'>The RoR "community" has the tendency to break out into episodes of frenzy over the most absurd events - a "feature" I am personally grateful for, since it helps said community attract and retain a very specific type of software developer, thus keeping him away from the more pragmatic and well engineered frameworks, an unstinted blessing for the rest of us un-hip developers.&lt;br /&gt;&lt;br /&gt;The latest kerfluffle is about a presentation someone made at a conference.  (The one before that was the programmers at Twitter converting a chunk of their *own* code from Ruby to Scala - you get the idea).&lt;br /&gt;&lt;br /&gt;Anyhoo, if you have a couple of hours to kill and/or feel strongly about feminism/free speech, Martin Fowler does a good job of &lt;a href="http://www.martinfowler.com/bliki/SmutOnRails.html"&gt;extracting the main threads&lt;/a&gt; out of the maelstrom and clarifying the issues. The conclusions are a little shaky (especially the "win against the suits by promoting women" idea), but a brilliant job nonetheless.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So, beyond the fact that I am happy that this long dead and decaying horse is being whacked less and less as the days go by what do *I* think about the fundamental issues?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;"&lt;a href="http://www.paulgraham.com/say.html"&gt;I pensieri stretti &amp; il viso sciolto&lt;/a&gt;."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; ;-)&lt;br /&gt;&lt;br /&gt;No, I don't think what you think I think , but &lt;span style="font-style:italic;"&gt;pensieri stretti&lt;/span&gt; anyway. :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-3880155916364553474?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/3880155916364553474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=3880155916364553474' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/3880155916364553474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/3880155916364553474'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2009/05/ruby-on-rails-soap-opera.html' title='The Ruby on Rails Soap Opera'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-2638848103574482616</id><published>2009-04-10T05:59:00.001-07:00</published><updated>2009-04-10T06:01:13.076-07:00</updated><title type='text'>OK, back to work</title><content type='html'>I've been paying a little too much attention to this blog over the last couple of days. &lt;br /&gt;&lt;br /&gt;Now it is time to do some work!&lt;br /&gt;&lt;br /&gt;(don't expect comments to be answered/ responded to in any reasonable time frame. if anyone needs to say anything urgently use email)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-2638848103574482616?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/2638848103574482616/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=2638848103574482616' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/2638848103574482616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/2638848103574482616'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2009/04/ok-back-to-work.html' title='OK, back to work'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-5933760359730724790</id><published>2009-04-10T05:02:00.000-07:00</published><updated>2009-04-10T05:25:37.974-07:00</updated><title type='text'>Hey I know that lady!</title><content type='html'>Outlook India has an &lt;a href="http://www.tehelka.com/story_main41.asp?filename=Ne110409who_dares.asp"&gt;article&lt;/a&gt; on Ministhy Dileep, a DM (District Magistrate) who has been raising hackles in the badlands of Indian politics by scrupulously enforcing the laws.&lt;br /&gt;&lt;br /&gt;Ministhy was  my batchmate at the College Of Engineering Trivandrum. Ministhy was doing her BTech in Electronics while I "studied" Industrial Engineering. (The quotes around studied  == I was never  in class and was always doing other .. ahh .. interesting things, while Ministhy was a model student).&lt;br /&gt;&lt;br /&gt; Anyhow it is good to see her play such a crucial role in the functioning of our democracy. &lt;br /&gt;&lt;br /&gt;Way to go Mini!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-5933760359730724790?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/5933760359730724790/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=5933760359730724790' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/5933760359730724790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/5933760359730724790'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2009/04/hey-i-know-that-lady.html' title='Hey I know that lady!'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-1542061967949029833</id><published>2009-04-08T20:12:00.000-07:00</published><updated>2009-04-10T01:36:48.614-07:00</updated><title type='text'>The Agile Consultancy Scam</title><content type='html'>Luke Halliwell &lt;a href="http://lukehalliwell.wordpress.com/2008/11/16/the-agile-disease/"&gt;wrote&lt;/a&gt; a nice blog entry titled "The Agile Disease" as a reaction to some Scrum "Masters" trying to "agile enable" his (games) company.&lt;br /&gt;&lt;br /&gt;he says "The games industry is rushing headlong to Agile development methodologies just now; it’s a great source of excitement for some, with conference sessions and magazine articles left, right and centre, and “evangelists” spreading the word.&lt;br /&gt;&lt;br /&gt;I’m sick of it.  I can’t wait for the day when everyone realises how much of a fad-diet, religious-cult-inspired, money-making exercise it is for a group of consultants." &lt;br /&gt;&lt;br /&gt;Of course this brought all the usual suspects out of the woodwork, raining down hellfire and brimstone on poor Luke for daring to question their cult. (A similair thing happened when Alex Payne moved some backend components from Ruby to Scala because (surprise surprise) Ruby turned out to be an inappropriate choice for heavy duty infrastructure code - and  the *ruby* fanboi crowd crawled out of the woodwork to defend their particular illusions, but that's a post for another day).&lt;br /&gt;&lt;br /&gt;This post is a slightly reworded form of a comment I made on his blog so here goes and makes a different point than he does.&lt;br /&gt;&lt;br /&gt;I've &lt;a href="http://ravimohan.blogspot.com/2007/04/learning-from-sudoku-solvers.html"&gt;written before&lt;/a&gt; of the phenomenon by which people who can't  code for nuts set themselves up as "gurus" who make their living telling other people how to code.&lt;br /&gt;&lt;br /&gt;What's happening when so called "scrum masters"  advise game companies is a variation on the same theme - the blind trying to lead the sighted.&lt;br /&gt;&lt;br /&gt; *Most* of these so called agile "gurus", consultants, and "masters" of various stripes have experience only in enterprise software, and even there often don't write production code on a regular basis. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Of course, most of them (Kent Beck and Robert Martin being the exceptions) don't have any code we can look at to validate their claims of excellence. And yet these folks have no shame in selling their "wisdom" to game companies.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If I wanted to learn how to make good films, I would apprentice myself to or learn from the works of directors I consider *brilliant*. Why would I pay attention  to people who've never made a movie in their lives (leave alone a path breaking or massively successful movie) but still prattle on on how to make one?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If I were running a games company and I wanted   advice  on how to (better) develop games I'd listen to people who can claim things like "I developed or led the team that developed , Doom/Quake/Unreal/WoW, EVEOnline, Baldur's Gate ... let me tell you how I did it", NOT those who say "well yeah, once upon a time  I tried to write a sudoku program - I never could get it to work with my fancy methodology but I can teach you how if you give me lots of money to be a consultant or 'agile coach' ".&lt;br /&gt;&lt;br /&gt;When John Carmack or Tim Sweeney or Warren Spector or Peter Molyneux credit "scrum" with their success, I'll listen.  (Why do I think it will be a VERY long time before this happens? ;-)).&lt;br /&gt;&lt;br /&gt; Any moron who sat through a 2 day conference and claims "mastery" therefrom (which is what a "Scrum Master" is  - Scrum Certification  is the most brazen con game in the *history* of software methodology snake oil schemes)  and tells hard working developers how to organize their work should be smacked silly and booted out into the street pronto.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In another set of posts, Luke stomps the "software metrics" crowd. These people aren't as visible these days (or as deranged) as the Agile Sellers, but they do lurk in dark corners. But I'll let you read Luke's blog. He is a fine writer and knows what he's speaking about.&lt;br /&gt;&lt;br /&gt;PS: If you are an Agile Consultant trying to defend your livelihood, first send me the urls to code you've written with your cool methodology and *then* comment. As evinced above I have no patience for "codeless wonders".&lt;br /&gt;&lt;br /&gt; If you've written  a best selling ground breaking game using Agile, iow if you are someone of the calibre of Carmack or Sweeney and have used agile, *then* we have the basis of a discussion. Thanks in advance.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Update: This &lt;a href="http://groups.google.com/group/comp.games.development.programming.misc/browse_thread/thread/f30d52769e40b28b/4ddac89f8b244b6e"&gt;thread&lt;/a&gt; is a perfect example of some agile "gurus" (keep reading down the thread, you'll recognize the names) make perfect asses of themselves talking to games programmers. I couldn't invent this if I tried :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-1542061967949029833?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/1542061967949029833/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=1542061967949029833' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/1542061967949029833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/1542061967949029833'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2009/04/agile-consultancy-scam.html' title='The Agile Consultancy Scam'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-5299474811762202025</id><published>2009-04-08T01:00:00.001-07:00</published><updated>2009-04-08T10:41:37.991-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>Voting against Shashi Tharoor</title><content type='html'>I'll be writing a detailed blog post on this later, but S&lt;a href="http://en.wikipedia.org/wiki/Shashi_Tharoor"&gt;hashi Tharoor&lt;/a&gt;, who is the Congress candidate from Thiruvananthapuram in Kerala (my home state) is, in my opinion, the worst kind of carpetbagger ever in my electoral district's history and I will not be voting for him.&lt;br /&gt;&lt;br /&gt;He has never lived in Kerala (as far as I can make out), leave alone Thiruvananthapuram, can't speak the local language (http://ibnlive.in.com/news/tharoor-campaign-hampered-by-language-barrier/89617-37.html), has no political experience (I guess losing the fight to be the UN Secretary General *is* experience ;-)), can't stand being questioned on his beliefs (he walked out of a TV interview because he thought the crowd was "unruly")  and has no distinctive ideas I can make out from his writings. Apparently his academic qualifications and his diplomatic experience, such as it is is supposed to make up for his not being able to converse with his constituents, leave alone understand them. He was imposed on this constituency as a candidate, over ruling local part sentiment by the Congress "high command" which is another strike against him in my eyes.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I am electorally neutral and I don't belong to any political party, but I'd vote for anyone but Mr.Tharoor in this election.  &lt;br /&gt;&lt;br /&gt;Any Tharoor supporters on the intarwebz please don't bring up the Obama comparison. Obama is a Harvard grad , but he also has the street smarts of a Chicago politician, superb communication skills *and* ideas of his own.&lt;br /&gt;&lt;br /&gt;I hope and pray Mr.Tharoor goes down to a massive defeat, thus sending a signal to other would-be carpetbaggers. I'll go out on a limb here and predict that Mr T will lose badly in the 6 way contest. &lt;br /&gt;&lt;br /&gt;Of course, India being a democracy, I can only cast *my* vote as I see fit. If the majority vote goes to him, then he becomes my MP and that is as it should be. May that day never come!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-5299474811762202025?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/5299474811762202025/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=5299474811762202025' title='35 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/5299474811762202025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/5299474811762202025'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2009/04/voting-against-shashi-tharoor.html' title='Voting against Shashi Tharoor'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>35</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-2349480047961321651</id><published>2009-04-03T06:26:00.000-07:00</published><updated>2009-04-03T06:39:00.155-07:00</updated><title type='text'>I  need a new blogging platform</title><content type='html'>I notice I am not updating my &lt;a href="http://runningupstairs.blogspot.com/"&gt;technical blog&lt;/a&gt; because most of the things I want to write about need converting formulae (from Latex)  to images. Yes I could use javascript to convert at display time but what I really want is a blog engine that would recognize a latex entry and automatically do the conversions before the text leaves the server. I hate WordPress (and PHP) with a passion so that isn't an option. &lt;br /&gt;&lt;br /&gt;I have my nose well to the grindstone and have practically zero free time till September end. Then I'll probably whip out a tiny Django based blog engine with exactly the features I want and then it's good bye blogger.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-2349480047961321651?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/2349480047961321651/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=2349480047961321651' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/2349480047961321651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/2349480047961321651'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2009/04/i-need-new-blogging-platform.html' title='I  need a new blogging platform'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-4360824820581691705</id><published>2009-04-03T05:20:00.000-07:00</published><updated>2010-06-21T19:44:19.972-07:00</updated><title type='text'>Stuck in Code</title><content type='html'>An ex colleague let's call him.. uhh .. Vivek, who was my peer at  &lt;a href="http://pindancing.blogspot.com/2008/11/introducing-megacorp.html"&gt;MegaCorp&lt;/a&gt; many years ago who is presently VP of R&amp;D at [very well known company, a variant of MegaCorp] called up a few minutes ago to see if I could help make a connection to someone he wanted to meet up professionally with. I am fairly well connected in Bangalore, having lived here more than a decade. In the chit chat that followed he asked "So what are you doing right now? " And I answered, "well I was coding when you called ...". His response was "You are still stuck coding!!!?"&lt;br /&gt;&lt;br /&gt;Umm.. yeah. Kinda Sorta. I am still coding. I am not really stuck though. "Stuck" implies an involuntary inability to change position.&lt;br /&gt;&lt;br /&gt;My last job title had "Program Manager" in it. I've turned down multiple offers to "move up".. I am good at what I do, make more money than many "Directors" and most importantly am happy building systems (vs managing people who do).&lt;br /&gt;&lt;br /&gt;I think it is a very *Indian* (or perhaps Asian) thing to expect good developers to "move up" to be managers or directors or Vice Presidents. We are a very hierarchical society and people are very often judged on where we are seen to be on some arbitrary hierarchy. People who work with their hands (or their keyboards) are often considered "inferior".&lt;br /&gt;&lt;br /&gt;One of my friends who is an engineer at a Japanese automaker's Indian subsidiary told me about how the visiting Vice President (who was Japanese) rolled up his sleeves and jumped in to fix an engineering problem that had come up on the line and of the hush that fell on the factory floor with the Indian managers looking distinctly uncomfortable.&lt;br /&gt;&lt;br /&gt;Specifically in software, when is the last time you saw someone very high in the company hierarchy do a code checkin? My last boss at MegaCorp was hired later than I was and the first thing he said to me  when we met was (remember I was also a "manager" on paper), "You know, any monkey can code, but we need good managers". :-).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I think one of the main reasons is that we in India still don't have any local role models for people who made a great deal of money (or had a significant impact on the world) by writing code.&lt;br /&gt;&lt;br /&gt;Once we have our Torvalds and Stallmans and Brins and Pages  and Grahams and Norvigs "coding" won't be such a  dirty word after all.&lt;br /&gt;&lt;br /&gt;Meanwhile it is very amusing to see the contortions people go through to (a) deny that they are "just" developers or (b) "move up" to management. The lack of early stage startups doing innovative cutting edge software in India and the preponderance of "India Development Centres" (set up to grind through the crappiest work in the company) contribute to this state of affairs.&lt;br /&gt;&lt;br /&gt;Very occasionally the inverse happens. Once upon a time not very long ago I was working alongside a group of managers and there was some discussion about product financial strategy. I was asked what I thought and I went into some detail about the financial break up of a proposed initiative and some of the industry trends we would encounter and the strategy we should (have) adopt(ed). After the meeting, a "Manager(Strategy)" came up to me and said "Hey I didn't know you were in Product Mangement. I heard your title as 'Architect' My mistake". I had to smile and say "No mistake, I am a technical person not a manager, but that doesn't mean I can't read and think for my own". The poor fellow didn't know what to say.&lt;br /&gt;&lt;br /&gt;The funny thing is, in the Indian Software Industry, *most* "managers" (or directors or .. whatever their titles are) have no real power within the company at large and their responsibility is just to implement decisions made in California or Boston or Tokyo. The most important game is "climbing the corporate ladder" and the most important subgame is "suck up to the boss". Why would anyone (who has a choice) **want** that life? &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;At ThoughtWorks, when I worked there, we had an inside joke. Every technical person would call himself "Just a Developer" and there weren't any hierarchies among developers except ones of  peer acknowledged competence (though  I hear that things have changed and there's all kinds of intra developer hierarchy these days , based more on "years of experience" than skill levels, but that is hopefully just a rumour) .&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;When teams from other companies would visit us, as the round of introductions progressed, all the TW technical people would introduce themselves as "My name is  ... . I am Just A Developer". Sometimes the visitors would get completely bewildered at all the "low ranking" developers attending important meetings, and hilarity resulted.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To conclude, I am "just a developer". I choose to be one of "those people" :-). &lt;br /&gt;&lt;br /&gt;Thanks for your understanding. :-)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Update: The point I was trying to make is NOT that managers don't add value. Many of them don't to be sure, but  many of them do. And some add very significant value, sometimes far more than an individual developer can, especially in large corporations. &lt;br /&gt;&lt;br /&gt;my point was about how people *assume* that one wants to "move on" from being a developer or creator to someone who manages development.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-4360824820581691705?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/4360824820581691705/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=4360824820581691705' title='68 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/4360824820581691705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/4360824820581691705'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2009/04/stuck-in-code.html' title='Stuck in Code'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>68</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-4713505423128054783</id><published>2009-04-01T07:05:00.000-07:00</published><updated>2009-04-01T07:17:17.761-07:00</updated><title type='text'>DevCamp Bangalore is like BarCamp Bangalore</title><content type='html'>without all the vague weirdos (SEO folks, "entrepreneurs" who have "ideas" and are looking for some developers to "join the startup"/code for free, "movie enthusiasts" etc) who throng BCB. &lt;br /&gt;&lt;br /&gt;The idea of a devcamp is that it is an "unconference" for *developers* (hereby defined as people who work on interesting stuff, not a warm body who does J2EE/ ROR crap in the office and never breaks open an editor away from work). &lt;br /&gt;&lt;br /&gt;In an ideal case (a) there would no hangers on, everybody would be presenting (b) there would be no  "Introduction to Fad of the day" type sessions,  and more   "here is some code I was working on and here is what is interesting from an *experienced* programmer's pov" type sessions.&lt;br /&gt;&lt;br /&gt;DevCamp Bangalore 2 is &lt;a href="http://devcamp.in/wiki/Main_Page"&gt;being held at ThoughtWorks on April 10&lt;/a&gt;, 2009. So if you are a good developer with some insightful code to demo, please attend.  (I am not in Bangalore that weekend and so won't be attending. My experience report of last years Devcamp is &lt;a href="http://ravimohan.blogspot.com/2008/02/devcamp-report.html"&gt;here&lt;/a&gt;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-4713505423128054783?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/4713505423128054783/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=4713505423128054783' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/4713505423128054783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/4713505423128054783'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2009/04/devcamp-bangalore-is-like-barcamp.html' title='DevCamp Bangalore is like BarCamp Bangalore'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-7724922379107535275</id><published>2009-01-27T19:02:00.000-08:00</published><updated>2009-01-30T04:49:15.654-08:00</updated><title type='text'>The loss of magic</title><content type='html'>I recently watched (on YouTube) Linus Torvald's &lt;a href="http://www.youtube.com/watch?v=4XpnKHJAok8"&gt;Google Talk on Git&lt;/a&gt;, the version control system he developed. If you are any kind of programmer, it is well worth watching. Doing some research on Git (I use Subversion, and so fall into the category of people Linus reccomends be committed to a mental asylum.) I found the following statistic very impressive.&lt;br /&gt;&lt;br /&gt;(From Wikipedia)&lt;br /&gt;"The development of Git began on April 3, 2005. The project was announced on April 6, and became self-hosting as of April 7. The first merge of multiple branches was done on April 18.Torvalds achieved his performance goals; on April 29, the nascent Git was benchmarked recording patches to the Linux kernel tree at the rate of 6.7 per second. On June 16, the kernel 2.6.12 release was managed by Git."&lt;br /&gt;&lt;br /&gt;That is  *fast* development of a very complicated piece of software and serves to remind me how much of a gap there is between the best programmers and the rest of us. &lt;br /&gt;&lt;br /&gt;I've been (re)reading &lt;a href="http://www.amazon.com/Masters-Doom-Created-Transformed-Culture/dp/0812972155"&gt;"Masters of Doom"&lt;/a&gt; (a very nice read, whether you are a programmer or not - the book seems to be out of print and if you can't get a used copy a search of the internetz will yield a scanned pdf) and the part I find fascinating is how John Carmack grows and develops as a programmer. Working full time on enterprisey code, especially in India, serves to obscure the magic (and magicians) of  programming. Which is a little odd given that most good programmers get into programming for the magic, and then end up building fugly enterprise systems for the rest of their lives!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-7724922379107535275?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/7724922379107535275/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=7724922379107535275' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/7724922379107535275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/7724922379107535275'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2009/01/i-recently-watched-on-youtube-linus.html' title='The loss of magic'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-1514811229210087382</id><published>2009-01-11T06:27:00.000-08:00</published><updated>2009-01-11T06:32:47.862-08:00</updated><title type='text'>Satyam and Nemesis</title><content type='html'>from &lt;a href="http://www.livemint.com/2009/01/07213322/Truth-about-Satyam-Rise-and-f.html?atype=tp"&gt;Live Mint&lt;/a&gt;,&lt;br /&gt;&lt;br /&gt;"What separated Satyam from rivals such as a Tata Consultancy Services Ltd or an Infosys Technologies Ltd was Raju’s preference for executives and associates who spoke the same language he did: Telugu.&lt;br /&gt;“For Raju, family, caste and those who could speak Telugu came first. I am not saying he was not a professional, but other things being equal, he would look at things in that order,” said a former employee of Satyam Infoway Ltd,"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Any moron who'd run a company this way (and I've heard some horror stories fromSatyam including that of a high level manager who'd always conduct a meeting in Telugu, irresepctive of if the attendees spoke Telugu or not. India has about  22 official languages and over 2000 dialects) deserves everything he gets. &lt;br /&gt;&lt;br /&gt;Why would anyone want to work for morons like this? fwiw, My headhunter friends tell me they are seeing a flood of resumes from Satyam.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-1514811229210087382?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/1514811229210087382/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=1514811229210087382' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/1514811229210087382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/1514811229210087382'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2009/01/satyam-and-nemesis.html' title='Satyam and Nemesis'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-3529595483179502787</id><published>2009-01-11T06:16:00.000-08:00</published><updated>2009-01-11T06:33:24.703-08:00</updated><title type='text'>Christianity and Rome</title><content type='html'>"Christianity didn't conquer Rome, Rome took over Christianity" - this is what MegaCorp is beginning to feel like. &lt;br /&gt;&lt;br /&gt;The initial mandate from the CxO folks was to run [the division I work in] like  a startup and damn the corporate bureaucracy. In the last few weeks, however the walls have been closing in and I feel more and more like I am in a division in a large and slow moving company.&lt;br /&gt;&lt;br /&gt;Today is my birthday and I took some time off to think about what is important in life. Some of the key factors I came up with was working with good people and systems. The former holds good in MegaCorp (surprisingly enough) but the latter is very  classical dysfunctional corporat-ey. Tomorrow (Monday) I'm having a discussion with the powers that be and if certain things aren't fixable, I'm going back to my startup-y/ consulting y life style, where I can focus on providing customer value and pursuing technical excellence.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-3529595483179502787?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/3529595483179502787/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=3529595483179502787' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/3529595483179502787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/3529595483179502787'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2009/01/christianity-and-rome.html' title='Christianity and Rome'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-2775037011131921825</id><published>2009-01-08T05:29:00.000-08:00</published><updated>2009-01-08T05:40:40.207-08:00</updated><title type='text'>One Strength at a Time</title><content type='html'>An earlier version of &lt;a href="http://pindancing.blogspot.com/2008/11/introducing-megacorp.html"&gt;MegaCorp&lt;/a&gt; (let's call it Avalon) had extremely strong technical skills and moved very fast. Customer Focus was mediocre and this had deleterious effects. The present version (let's call it Valhalla) has very strong customer focus (it is almost religion) but extremely poor technical capabilities (to the point where the code bases and management structures are very dilbertian and would have given Avalonians heart attacks) and moves very slowly.&lt;br /&gt;&lt;br /&gt;Avalon had almost zero politics. Valhalla is very political. Both have good people though the "goodness" is focussed differently.&lt;br /&gt;&lt;br /&gt;I wish somewhere someone would combine technical  and managerial excellence and customer focus. That said my "I am here to build good products and politics be damned" mental shield seems to serve me well, though it is beginning to fray at the edges and I find myself occasionally asking if I should be doing something else.&lt;br /&gt;&lt;br /&gt;I'll give it some time  and then do a rethink.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-2775037011131921825?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/2775037011131921825/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=2775037011131921825' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/2775037011131921825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/2775037011131921825'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2009/01/one-strength-at-time.html' title='One Strength at a Time'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-5543814037954651070</id><published>2008-12-24T05:34:00.000-08:00</published><updated>2008-12-24T05:48:11.091-08:00</updated><title type='text'>Running through quicksand</title><content type='html'>MegaCOrp moves slooooooooooowwwwwwly. After years working as an independent, working at MegaCorp is like running through quicksand. Paul Graham was right. Large Companies are incapable of moving fast (and thus, incapable of certain kinds of innovation).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-5543814037954651070?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/5543814037954651070/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=5543814037954651070' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/5543814037954651070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/5543814037954651070'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2008/12/running-through-quicksand.html' title='Running through quicksand'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-3692043729875509571</id><published>2008-12-02T07:21:00.000-08:00</published><updated>2008-12-04T22:34:37.010-08:00</updated><title type='text'>Moshe's Tears</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_WD4ydpP4v1g/STVZ6FOnp3I/AAAAAAAAAD0/Vs37hyHQBoM/s1600-h/moshe2.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 208px;" src="http://3.bp.blogspot.com/_WD4ydpP4v1g/STVZ6FOnp3I/AAAAAAAAAD0/Vs37hyHQBoM/s320/moshe2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5275221392905185138" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_WD4ydpP4v1g/STVZyyj8r3I/AAAAAAAAADs/F3e0qpq9C88/s1600-h/moshe1.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 248px; height: 178px;" src="http://3.bp.blogspot.com/_WD4ydpP4v1g/STVZyyj8r3I/AAAAAAAAADs/F3e0qpq9C88/s320/moshe1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5275221267635285874" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I am a fairly even tempered person, but seeing the pictures of little Moshe &lt;a href="http://news.yahoo.com/s/ap/20081201/ap_on_re_mi_ea/india_moshe"&gt;calling for his mother&lt;/a&gt;, (killed by the sick Islamist f***s who attacked Mumbai) caused me to feel an unaccustomed emotion - rage.&lt;br /&gt;&lt;br /&gt;I love children, (and children love me - when I travel in a train for example, any kids around, generally end up playing with "Ravi Uncle" throughout the journey) and someone who makes children orphans to make some kind of ideological point, should just be stood against the nearest wall and shot.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-3692043729875509571?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/3692043729875509571/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=3692043729875509571' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/3692043729875509571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/3692043729875509571'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2008/12/moshes-tears.html' title='Moshe&apos;s Tears'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_WD4ydpP4v1g/STVZ6FOnp3I/AAAAAAAAAD0/Vs37hyHQBoM/s72-c/moshe2.jpg' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-80985399413262121</id><published>2008-12-02T04:50:00.000-08:00</published><updated>2008-12-02T07:15:12.607-08:00</updated><title type='text'>Recession? What recession?</title><content type='html'>These days, there is a lot of gloom and doom about the recession in the papers. I don't see any evidence of this "on the ground". Demand for good engineers is very high, in Bangalore  and in the United States. I have more job offers than I can shake a stick at. &lt;br /&gt;&lt;br /&gt;Every company I know is desperate for good developers, though they've slowed or stopped the "hire any warm body you can lay your hands on" type efforts.&lt;br /&gt;&lt;br /&gt;I must be missing something.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-80985399413262121?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/80985399413262121/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=80985399413262121' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/80985399413262121'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/80985399413262121'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2008/12/recession-what-recession.html' title='Recession? What recession?'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-7463911890077523056</id><published>2008-11-27T19:48:00.001-08:00</published><updated>2008-12-04T19:52:27.318-08:00</updated><title type='text'>Introducing MegaCorp</title><content type='html'>In the past I often wanted to write about something I saw in the office that made me stop and think, but I decided not to because it would mean I had to name names.&lt;br /&gt;&lt;br /&gt;So from now any organization I work for/with will be "MegaCorp" as in "Today at MegaCorp the CEO gave a speech on ... ". So "MegaCorp" is an amalgam of various companies I (or sometimes my friends) worked at, but I won't be giving specifics.&lt;br /&gt;&lt;br /&gt;So here is a story.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Once upon a time at MegaCorp, just as India and Pakistan went through one of the sham "we are going to nuke you off the face of the Earth" type bluster sessions, the American Consulate issued a notification to US citizens to leave India because of  "imminent threat of war", one American manager (let's call him Sam)  almost literally ran for his life, and the team was puzzled when he didn't turn up the next day. Yet another American manager (let's call him Bill) stayed cool (and stayed on) and went about business as if nothing had happened. In a week or two, the governments of India and PAkistan got tired of staring at each other and it was business as usual. The next time Sam said things like "We are all in this together. We are all MegaCorpers! " , the Indians just smirked. Bill got unstinting co operation for the rest of his stay at MC.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-7463911890077523056?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/7463911890077523056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=7463911890077523056' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/7463911890077523056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/7463911890077523056'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2008/11/introducing-megacorp.html' title='Introducing MegaCorp'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-8408982355794419127</id><published>2008-11-27T06:39:00.000-08:00</published><updated>2008-11-27T08:15:17.374-08:00</updated><title type='text'>Media Overdrive</title><content type='html'>As I write this, the terrorist attack in Mumbai has been going on for more than 20 hours. I won't add to the discussion on the event itself, but I have to note that the (Indian) media is frighteningly ineffective in delivering any real news. Not only was the news of the event released through twitter/flickr, but for all these twenty hours, the "professional" TV news has consisted of "going over to the Taj/Oberoi" where a barely English literate journalist would announce that he/she "heard a loud explosion". Umm yeah.... and?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-8408982355794419127?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/8408982355794419127/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=8408982355794419127' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/8408982355794419127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/8408982355794419127'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2008/11/media-overdrive.html' title='Media Overdrive'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993901435573921786.post-5726034712982015281</id><published>2008-11-26T04:39:00.000-08:00</published><updated>2008-11-26T05:12:13.887-08:00</updated><title type='text'>Money Off Obama's Campaign</title><content type='html'>A long time ago, when the Democratic and Republican primaries were still very much up for grabs, I conducted a survey amongst my friends as to who they thought would win.&lt;br /&gt;&lt;br /&gt;Actually I went further and asked them to rank the candidates in order of preference. &lt;br /&gt;&lt;br /&gt;As with all exercises of this nature, the answers revealed more about the participants than about any electoral prospects. Some patterns I observed - &lt;br /&gt;&lt;br /&gt;1. Most of the ultra feminist women (Yes I do have such friends though I be a staunch "anti feminist" myself!)  picked Clinton. Their choices were in order, Clinton, Obama, McCain , Huckabee. The more thoughtful of my women friends, who actually follow politics in some depth  were split between Obama and McCain for the top spot, followed by a grab bag of secondary choices (including Hillary).&lt;br /&gt;&lt;br /&gt;2. A very intelligent Christian friend chose  (in order) Huckabee, Obama, McCain, Clinton. This was a bit surprising because the person in question is hardly the fanatic/ conservative type.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;My choice was Obama/McCain/Huckabee-Clinton  - the latter two being somewhat equal in my eyes. The funniest bit was how some "clintonista" friends bet money (about a 100 $) on the fact that she would win. &lt;br /&gt;&lt;br /&gt;I was happy to take their money :-). &lt;br /&gt;&lt;br /&gt;When the primaries were over, these "feminist" friends switched to McCain to "avenge" Hillary. (I guess if they were Americans, these people would be PUMAs). I proposed another bet that Obama would crush McCain. Heh! Taking money twice from deluded people is a great deal of fun!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The latest thought process amongst these folks is that Hillary as SOS will "outshine" Obama. I would be happy to bet money on that too, if I could nail down a metric for "outshine" I could bet on. &lt;br /&gt;&lt;br /&gt;The mistake my friends make is that they get blinded by (a) their ideology - projecting all the unfairness ever perpetrated on women onto Clintons candidacy, no matter how foolish such projection be  (b) Obama's rhetoric- they (being intelligent)  sense that some of it is just vacuous/game playing and they "switch off".  &lt;br /&gt;&lt;br /&gt;In my opinion, Obama is the rare politician who combines the standard "negatives" we associate with politicians - ambition, a lust for power, dirty tactics and so on, with some of the virtues of the "ideal"politician - intelligence, empathy, vision etc. Throw in a frightening ability to stay focussed, organized and most importantly calm and emotionally stable in an unfolding crisis, and he makes the most formidable opponent one could ask for. Hillary was just outclassed politically, and duly pulverized. I am a great believer in the survival of the most competent. &lt;br /&gt;&lt;br /&gt;I never saw the sense of voting for "someone like me" whatever the axis of comparison. I would have thought this would be like selecting a general for your army or a CEO for your corporation. You make a study of the competencies needed *for a particular situation* and then select the best person  who fits. &lt;br /&gt;&lt;br /&gt;I "chose" Obama not because he is like me (I shudder at the thought of someone like me becoming POTUS) or because he somehow represents my ambitions. &lt;br /&gt;&lt;br /&gt;I concluded he had the best chance to win, just as someone who follows say boxing would know when one fighter just outclasses the others.&lt;br /&gt;&lt;br /&gt;When people *asked* me how I knew Obama would win I often spout something like&lt;br /&gt;&lt;br /&gt;"Hillary's autobiography is ghost written though the book title says "By Hillary Clinton" -  the names of the ghost writers are on an inner flap. Obama writes his own books."&lt;br /&gt;&lt;br /&gt;And people scratch their heads and think I said something very profound.&lt;br /&gt;&lt;br /&gt;Heh! I can be nasty at times.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993901435573921786-5726034712982015281?l=pindancing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pindancing.blogspot.com/feeds/5726034712982015281/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993901435573921786&amp;postID=5726034712982015281' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/5726034712982015281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993901435573921786/posts/default/5726034712982015281'/><link rel='alternate' type='text/html' href='http://pindancing.blogspot.com/2008/11/money-off-obamas-campaign.html' title='Money Off Obama&apos;s Campaign'/><author><name>Ravi</name><uri>http://www.blogger.com/profile/03630087669712445498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
