Thursday, April 27, 2006

The supreme power of ignorance

I came across this post on reddit. It was supremely hilarious. It is a person going on and on about how Linux is an Evil European invention to take over America. Sadly, the person does not know that her own domain is hosted on a Unix machine, which is most possibly a Linux or BSD box. The comments are outrageous.

Usually I ignore such stuff, but this post had me laughing really hard. Lovely stuff. There is so much comic power in ignorance.

Paul Graham is fond of saying that the average blog is actually quite bad, but nobody looks at the average blog. People look at the best blogs, so the competition from blogs is actually quite significant. I think the argument works for supremely bad blogs as well. The usual newspaper report is bad, but the worst blogs are so outlandish that they are outright funny! This person for instance, is so clueless, that it is like a perfect stand-up act.

ShellyTheRepublican.com has pushed the limits of ignorance into uncharted territory. (to borrow something Jerrold Kaplan would say)

Sunday, April 23, 2006

Part of the mafia? Get into publishing.

Neha and I came across a book called "Applied Multivariate Statistical Analysis" by Richard Johnson and Dean Wichern, 5th edition. It is available on Amazon. For the small sum of $118 you can own this book which comes with a CD. It is all good till you look inside. The main features of this book include gems like "better highlighting" and important results are now "boxed". Apart from that, this new book is almost identical to the old edition. The one feature they don't tell you about is that the exercises have been relabelled. Page numbers are now inconsistent with the previous volumes, so if a student gets the old edition of the book, he is lost in class.

What does the 5th volume really add? A firm belief in the stupidity of teachers and students. Many texts now have these new editions, where the material is identical, but the page numbering and exercise numbering has been completely changed. Many of these come with a CD of data sets along with the book. I am not against CDs with data sets, but why not put it up online? Which university would mind having students download data sets? And this book has a CD with 342 Kilobytes of data. That can fit on a floppy, which tells you how tiny this information is. Even on the slowest dial-up connection, it can be downloaded within minutes. Why do we need a CD for that?

It is amazing how much students and teachers will take this rubbish. Here's an idea: why not use the old editions for a change. Let the students buy their texts online for $30 or so, which is much closer to their real worth than the sticker price of $118. Why not teach exclusively out of older editions to make it easier for students to learn, without having to take up an extra job at the local McDonalds, just to pay for the text-book.

That should teach the Publishing Mafia a lesson.

Sunday, April 02, 2006

The Open Source University

I was recently interviewing for an internship for this summer. This was the first time I had interviewed so extensively, and I was a little suprised at their focus. Most of them asked me about the work I did with Pootypedia instead of my college education. Every interviewer quizzed me about some random code-patching that I did last November. Nobody bothered with the courses I had taken. The college education on which I spend so much time was less valuable than little code hacking that I did for fun.

I think working with open source software makes a few strong statements about you. Firstly, it says that you are interested in computing, you do it in your free time, with no cash incentive, which can only mean that you love it. In management talk, this would be "strongly motivated", "driven", "proactive", and a few other words with lots of alphabets in them.

Secondly, it means that you are capable of working with existing software, and this I think is more important. In most projects at work, you do not have the luxury of starting from scratch. Most work involves maintaining someone's code, or adding features to an existing codebase. A lot of work is looking through someone's gnarly code and finding a bug, and then fixing it. Under time pressure, with little resources, and the developer either missing, or very reluctant to admit that it was his sloppiness that is causing you misery. Compare this situation to school, where every project requires you to start from scratch, implement something, and demonstrate that it works. These two require completely different skill sets. I don't know of any classes that teach you how to maintain code, or to understand someone else's code. Fixing a bug in Firefox says that you have the capability to enter unknown territory, find that bug, and smash it. It might not go on your resume, but it is documented, you are acknowledged as the fixer, and others benefit from this action of yours. If you fix a big bug in Firefox, Apache, or other high-profile Open Source projects, I would recommend putting it on your resume. Chances are, that will be the first thing a recruiter will ask you about.

Starting an Open Source project that fills a need is also a great way of getting recognition. If your project happens to be used by millions all over the world, people will know you, you will be invited to talks, and companies will be beating your door down to hire you. Starting and maintaining a project is clearly a lot more work, and finding an unmet need might be half the battle. Most of the easy problems are taken, and the tough ones remain undone for a reason: they are tough. If you can start a project, and take it to 1 million users, though, recognition is guaranteed.

The open source world, and software in general isn't about starting new projects, necessarily. It is about good utilities, and good contribution. A patch that brings a new capability to an existing project is much better than writing a new program altogether. Instead of writing a program to read WordPerfect documents, add Wordperfect support in Open Office or KOffice. This way you get all the existing users of these programs for free: which means more bug reports, bug fixes, and inclusion into the big distributions.

Now comes the strange part: you probably already have all the tools required to do this. If you are viewing this on a computer on which you can install any program, then you have everything required already. You can get a compiler (gcc), a debugger (gdb), some editor (emacs). But that is the small stuff. What you really need is the source code. This is where Open Source shines: the source code is there for you to look at, download, copy, deface or improve as you see fit. Without asking for permission. Without revealing that you're a 14 year old in a small Indian city, and your mom disapproves of your late night hacking. And if you contribute a bug fix, nobody cares that you are a 14 year old. Open Source is a brutal meritocracy. You, as a 14 year old kid can beat a 40 year old veteran software developer.

What is even more surprising is that competing projects don't mind cross pollination. You can do a bugfix for GNOME, and then fix something in KDE. Use emacs one day and fix a bug there, then give the vi developers some of your love by patching their code. Unlike the software industry, nobody in the Open Source world holds you from working with competing projects, there are no non-disclosure clauses, and no one-year waiting period, twiddling your thumbs and forgetting everything you learnt in your previous job. You could use some of GNOME's code to fix KDE's bugs, just as far as you acknowledge the original author.

In a year of bug fixing, you could get your name in twelve projects. All from your room, while your parents are blissfully unaware of your moonlighting hero-work. One high level techie in a very large and well-known software company told me that he would do this if he was my age right now.

Here's the Indian context. You could be a college student, unhappy at the intense competition for the IITs, RECs, or local Engineering colleges. (They aren't that good, believe me.) You could be a BA student, sad that the Engineering world has passed you by. You could be an engineering student, keen to see the real world, cut your teeth into world-class problems. You could be a school kid, eager to know what real software development is like. Or you could be super smart and itching to prove it. This is your opportunity. An invitation to the Open Source University: with no fees, great books and reference material, and some brilliant fellow students. You decide when you are smart enough to enter, and smart enough to leave. And if you do well, the world acknowledges you, and you get entries into your resume that can be independently verified by anyone in the world.

The strength of numbers and youth

Ever wondered why Bill Gates spends so much time in India, and why India is pretty much the only country where he spends so much public time?

It is because he needs India, and the Indian market. He needs India much more than India needs him.

Consider the current situation: Microsoft is at the top of the OS market in the US, where the government is unwilling to do anything meaningful about their monopoly status. In Europe, Microsoft is in a soup, partly because people don't trust them there. Hence the recent lawsuits, and the significant adoption of Firefox, OpenOffice and Linux in the area. Both China and India are big markets in both size, and growth potential. Microsoft wants a big piece of action in both countries. In both China and India, Microsoft software is absolutely free. Most computer hardware sellers give you any software you ask for, with a new computer. In the unfortunate case that you forgot to ask, you can buy a "installer" CD at the streetside. These CDs have all the software you'd need: Operating Systems, Office software,.. all in one easy packaging, and cost about Rs. 50. That's one US dollar. Like I said, software in India is all free. (And even then Linux is popular there. But that's a different story.)

So where does that lead us? China seems unwilling to support the large costs associated with running Microsoft products. Often, their government makes noise about this, supports the local Red Flag Linux, and forces Microsoft to keep their prices low. So Red Flag is more a bargaining card. (Aside from being a totally fun name!)

That leaves India. While Microsoft is aware of piracy in India, it loves the piracy, since it makes new computers users dependent on Microsoft for their needs. The dollars lost in today's sales will show up in handsome profits tomorrow. Also, India has a very small installed base of computers, in comparison to the West, and Microsoft would be sad to see Linux capture such a big chunk of the computer market. Thus the frequent visit to India, with Bill Gates at the centre of it all, to lure the Indians with his status as the world's richest man. And the Indian press loves mentioning how he is the world's richest man, again and again, till everybody is tired of the fact.

What India needs most is intellectual capability and choice in software. As the largest markets, if India and China choose to use Linux, Microsoft will no longer be the monopoly player. The OEM agreements in India are too loose, and software bundled with the hardware can be changed all too easily. This scares Microsoft. What would happen if 40% of the world decides that it needs Linux or BSD or Mac OS X on its machines, and not Windows? And imagine the nightmare if Indians and Chinese start contributing to Free and Open Source Software? Even at one bugfix for every thousand people, that is a mighty bug-fixing machine.

Both India and China may decide the direction of commodity software if they choose wisely. We need to learn our strength of numbers, and the strength of our youth. We need to have the confidence to stand up against a monopoly and say that we want a choice. We need to help out Linux, BSD, Apache, Firefox, and other Free and Open Source projects. Because in the end, Linux and Firefox belongs to us, while Windows XP and IE 7 never will.

So ignore Bill Gates altogether. He offers us dependance on an inferior technology. The Linux and BSD systems offer true freedom and independance from vendors. And they give us software we can own and control, and a position of power in the world: the power to say no to a convicted monopoly.