Episode 1: Perspective Shift

Note: I originally posted this article on a personal blog I ran when I was in my late teens and early twenties. I discovered in May 2020 that the Internet Archive had preserved the contents of that blog in its entirety, including some of the media. That blog was an important part of my personal history, so I reposted all of that content on this website for archival purposes. While my politics, opinions, and outlook on the world have changed radically since I wrote those posts between 2009 and 2011, it’s good to know that I was as much of an idiot then as I am now.


Somewhere in the depths of my hard disk, lies a small RTF file titled “Goals for 2009″. It has largely been forgotten. It was an ill conceived idea, anyway. The RTF said: “write at least 150 blog posts this year”. Evidently, whoever typed in that number did not belong to civilized society. Want to smell my feet?

I, too, had dreams. I dreamt of an age where man does not suffer from writer’s block, where little children have no trouble coming up with blog posts containing just the right balance of bad advice, irrelevant anecdotes and mindless drivel, where tiny flying hippos put clever words right into your mouth while Douglas Adams explains the exact meaning of the number 42 to Why the Lucky Stiff on the radio. I realized my quest for such a world was futile. To write, you must think. Unfortunately, on average, I have only two modes of thinking. They are:

  1. Mmmmmm … wha? Bugger off.
  2. def writeBlogPost(clevernessFactor):
        # TODO: figure out a better algorithm for this.
        for word in randomize(oxfordEnglishDictionary, clevernessFactor):
             blogPost += word

Now my perspective on life, the universe and everything has changed. I have have realized that pure awesomeness is not a substitute for good thinking. That means I’m not qualified to write clever articles that provide wholesome entertainment for the entire family. I ask myself: what, then, will you do with this blog you paid Rs.4500 for?

This is what: I will try to post here every day. Even if it’s mindless drivel. Even if it leads to invisible sock-pixies spreading chalk powder over my toenails. Even if nothing I write makes sense. This is the perspective shift. I don’t need to write deep, insightful, Hacker News-worthy posts to justify my investment. Something that was meant to be an outlet for thoughts, emotions and opinions seems to have become a dead weight I need to carry around. No more. I shall now write for the sake of writing, not for the sake of making a point or getting more hits.

Episode 1 ends here. You may now be awed.

Thoughts on Using a Mac as a Development Platform

Note: I originally posted this article on a personal blog I ran when I was in my late teens and early twenties. I discovered in May 2020 that the Internet Archive had preserved the contents of that blog in its entirety, including some of the media. That blog was an important part of my personal history, so I reposted all of that content on this website for archival purposes. While my politics, opinions, and outlook on the world have changed radically since I wrote those posts between 2009 and 2011, it’s good to know that I was as much of an idiot then as I am now.


This post was inspired partly by this Reddit post.

Take my opinions on the Mac as a development machine with a grain of salt, since I’m neither a professional programmer, nor do I contribute to any major open source projects. I’m still in the early stages of hackerdom, and most of the code I write is either for learning, part of simple scripts I write to automate tedious tasks or, more recently, part of small desktop apps I write using the Cocoa libraries. Even though I haven’t written or worked on any complex piece of software, I grew up using Linux and open source software and have been exposed to many different programming languages (before I settled on Python as my language of choice). I installed Fedora Core 1 (or was it FC2?) just for fun when I was 14 and ended up using various Linux distributions for about four years before I bought my MacBook.

I bought the MacBook about 8 months ago, and started learning Cocoa for writing desktop apps for the Mac, and I’m loving every bit of it.

All right, here’s my list.

The Good Parts

  • Mac OS X is UNIX under the hood. Heck, launch Terminal.app and have fun playing with awk, grep, sed and friends – the same stuff one would use under Linux. OS X also comes with Perl pre-installed. I have no idea if Python and Ruby are parts of the core system, but they’re definitely parts of Apple’s Developer Tools package.
  • You can grab all your favorite editors and languages off MacPorts, which is very similar to Debian’s APT (actually, it’s closer to Gentoo’s emerge tool).
  • Most Linux applications run perfectly on Mac OS X. In fact, many of the lesser known apps have Linux and Mac OS X ports, but no Windows ports. The Transmission BitTorrent client is one example.
  • I believe the UI of my OS has a profound effect on my productivity. The OS X UI has been designed to not draw attention to itself unless you look very hard. Contrary to popular belief, OS X does not have any eye candy, unless you consider smooth transitions from boot screen to login screen to the desktop eye candy. Exposé and Spaces look like eye candy to someone who has never touched a Mac before, but they are productivity features which just happen to be beautifully designed. A stock Ubuntu system with Compiz has much more intrusive eye candy than a stock OS X system.
  • If you’re looking for a new programming language and a new set of APIs to learn, then there’s no better choice than Objective-C and Cocoa (this is exactly what I’m learning these days). After having written a few apps using Cocoa, you will never want to go back to writing apps for Windows or Linux. The API is consistent and well designed, and contains classes for the most common tasks you might wish to perform in a desktop app. Interface Builder is awesome in the true sense of the word, and unlike most other IDEs, XCode is fast, responsive and almost a pleasure to use (almost, because I still prefer the editing capabilities of Emacs over any other editor).
  • No tinkering with config files, no hardware driver issues, minimal maintenance, no slowdowns over time, no malware issues and not having to do an apt-get upgrade every three hours. The it just works nature of the Mac has given me more time to work on my own code, rather than spending most of my time finding ways around other people’s mistakes.

The Bad Parts

  • If you’re writing commercial applications, then Windows is the way to go. Apple will never have significant market share on your average desktop, since both Windows and Linux can run on anything from a Rs.25000 ($500) Zenith desktop to a custom built, Rs.65000 ($1360) gaming machine, whereas the Mac OS runs only on Apple hardware.
  • Macs don’t play well with other operating systems. Installing Windows using BootCamp works fine and dandy, but running it for a long time causes my MacBook to heat up to over 65ºC. While installing Linux on a Mac is easy, it’s not officially supported by BootCamp, and getting it to play well with the hardware requires many hacks and workarounds.
  • Customizing a Mac is not easy. Linux allows you to customize every aspect of the OS, and even Windows allows a certain level of customizability, but the Mac allows none. Be prepared to either install unsafe hacks that mess with the OS or just STFU and follow the One True Way of Steve Jobs.
  • Be prepared to pay for quality. The software-wants-to-be-free culture of the Linux world is not acceptable in the Mac world. If you can’t pay up, then have fun using unstable ports of clumsily put together GTK apps under the X-Server.

Even though the Mac has its own disadvantages, I’d rather use a Mac than a Windows/Linux machine for development any day.

Airtel’s Dirty Secret and My Letter to the TRAI

Note: I originally posted this article on a personal blog I ran when I was in my late teens and early twenties. I discovered in May 2020 that the Internet Archive had preserved the contents of that blog in its entirety, including some of the media. That blog was an important part of my personal history, so I reposted all of that content on this website for archival purposes. While my politics, opinions, and outlook on the world have changed radically since I wrote those posts between 2009 and 2011, it’s good to know that I was as much of an idiot then as I am now.


Update: The petition failed. My letter to Airtel was ignored, and TRAI thinks the Airtel Customer Care guys are qualified enough to do something about the new FUP. The new limits have already been discussed to death here. So much for net neutrality.

Update: TRAI seems to not really care. They replied to me with a link to a page containing Airtel’s customer care numbers and a few email addresses, along with a few office addresses. It looks like Airtel have noticed the IBF petition, though. I haven’t seen an advertisement for over 24 hours, and my speeds are back to normal. I’ll email a link to this post, as well as a link to the IBF petition to Airtel just in case (thanks to @ankurb for pointing out the email addresses.).

Two days ago, Airtel Broadband was probably the best ISP in New Delhi and the NCR, not because of the monthly plans they offer (the plans are expensive ) but because Airtel cared about their customers. That was, of course, two days ago. For the past two days, the Airtel folks have been intercepting their users’ HTTP requests to show them full page ads of their DTH services. Here’s one, if you haven’t seen it already.

If you’re thinking that’s bad, wait until you hear what they did next. After you have used a certain amount of bandwidth in a month, your internet speed is halved. This happens only for users of the exceedingly overpriced “unlimited” plans.

A few disgruntled users over at India Broadband Forums have started a petition. You can sign it here. I also sent off an email to the TRAI requesting them to take a look into the matter. Even though I haven’t had good experiences with trying to contact government offices via email, I believe it was worth a try. It would be fun to see how they react to IBF’s online petition. What follows is the full text of the email I sent to the TRAI.

Subject: Complaint Against Malpractices by Airtel Broadband

Thousands of Airtel Broadband (the broadband service provided by Bharti Airtel) users have noticed that after having used a certain amount of bandwidth, the speeds of their so-called “unlimited” broadband connections are halved. This clause was not mentioned in the original Airtel ToS (Terms of Service), and the customers were not notified of the change. Airtel have also been intercepting users’ HTTP requests to show them large, full page ads before they allow them to continue to their requested destination. This is an invasion of the users’ privacy, and another change in the original ToS which the customers have not been notified of. More details of the issue are available here: http://afup.broadbandforum.in/

As a college student, I rely heavily on the Internet for course related information, the majority of which is in the form of audio and video which requires several gigabytes of unrestricted bandwidth per month. Letting this issue go under the radar will mean thousands of college students who use Airtel Broadband will suffer. People also use their broadband connections for bandwidth intensive tasks such as video conferencing and VoIP, collaborative software development and content distribution. If Airtel is allowed to continue with their anti-consumer practices, thousands of users who rely on a fast, cheap Internet connection for their livelihood will be inconvenienced.

I request you to kindly file a formal complaint against Bharti Airtel.

Thanking you,
Ankur Sethi

I urge anybody who has contacts in TRAI to try and make a formal complaint against Airtel. Everyone else can still contact them at any of the email addresses or telephone numbers mentioned here.

My Adventures at the Zonal Transport Office

Note: I originally posted this article on a personal blog I ran when I was in my late teens and early twenties. I discovered in May 2020 that the Internet Archive had preserved the contents of that blog in its entirety, including some of the media. That blog was an important part of my personal history, so I reposted all of that content on this website for archival purposes. While my politics, opinions, and outlook on the world have changed radically since I wrote those posts between 2009 and 2011, it’s good to know that I was as much of an idiot then as I am now.


Whenever I hear someone mention a government office of any sort, I find myself thinking of middle aged women who look strangely like that distant aunt of yours who likes to give you unsolicited advice because “.. youngsters like you need the guidance of your elders.”. I associate government ventures with forgotten, derelict buildings and old Wipro computers running Windows 98. If I’m feeling particularly depressed, I conjure up terrifying visions of office chairs from the last century which have been patched up so many times they’ve started looking like abstract art. Equally frightening are the visions of their owners, who have been sitting in those demented pieces of office furniture for so long that the furniture has morphed to acquire the shape of their bums, as a result of which nobody else can ever be expected to use the same chairs unless they have the same bumprints.

When I walked into the zonal transport department this morning to apply for my learner’s license, this is exactly what I expected. I was relieved to find out how wrong I was.

The first thing that hits you when you walk into the office is the fact that there are no middle aged women who look like your distant aunt. After you’ve had a mental victory dance, you realize that the place isn’t as dreary as you would expect a government office to be. It has a strange sort of cheerfulness. Not the “Yay! I’m so happy!” kind of cheerfulness, but the kind of cheerfulness you find in workplaces where every employee is satisfied and prides himself on a job well done. The computers are all HCL workstations (with LCD screens!) running Windows XP (not really something you can be proud of, but at least it’s better than Windows 98 ). You can see ergonomic chairs behind every desk. A large LCD television adorns one of the walls. The lighting is top notch, and the tiled floors make the ambience even brighter.

(The office also seems to have a competent sysadmin. I first realized he was competent when I saw him getting frustrated at the guy at counter 3, who couldn’t get something very simple to work. He swore in the glorious sysadmin tradition, “What did you motherfuckers eat this morning?”, drawing curious glances from the people near counter 3, and a glance of deep understanding and appreciation from me.)

The only thing that reminds you it’s still a government office you’re dealing with is the long queue at counter A, where you have to submit the filled in license form along with an ID and a proof of address. Since I was early, I didn’t have to stand in queue for too long, but others were not that lucky. At counter B, a young girl took my photograph, signature and fingerprints, a procedure that took 30 seconds. I was told to go to counter 7 for a few tests.

The person sitting at counter 7 first gave me a color blindness test, which was basically an Ishihara Color Test. After that, I was given a simple questionnaire. It was nice to see that the transportation department has a sense of humor. Here are a few questions that struck me as hilarious –

Q: Why should one give more room to cyclists while driving?

  1. Two wheels are unstable
  2. They might turn anywhere, anytime
  3. They have a right to more space on the roads
  4. None of these

(I couldn’t figure this one out.)

Q: While driving at night:

  1. Drive slow and look out for cyclists and pedestrians
  2. You reach your destination faster
  3. Cyclists and pedestrians don’t come out at night
  4. None of these

Q: While driving at a high speed:

  1. You reach your destination faster
  2. One must adhere to the speed limit
  3. You have more fun
  4. None of these

Q: Two wheelers can carry:

  1. Only one person
  2. Two people – one in the front and one in the back
  3. As many people as you can fit on it
  4. None of these

Q: There are different speed limits on the road because:

  1. Everyone is in a hurry
  2. Buses take up too much space
  3. Most people don’t drive in their own lanes
  4. There are many different kinds of vehicles on the roads

(Another one I couldn’t figure out, so I marked option 4 because it was the most rational.)

The rest of the questions dealt with road signs, driving skills and road laws. There were total 30 questions.

The test took less than ten minutes, and the entire process took less than an hour (including the time it took for the person at counter A to fix a broken printer). This is the first time I’ve gone to a government office and haven’t spent the day there. It seems like the Indian government has realized that lengthy procedures actually cost them money. I just hope other government offices take a cue from the transportation office.

In other news, I finally get my very own car. It’s ten years old, doesn’t have an air conditioner and has a radio that works only when you’re not in the mood for music. But the features don’t matter. What matters is that I finally have a car. Take that, environment friendly public transport!

Computer Science FAIL – Higher Education in India

Note: I originally posted this article on a personal blog I ran when I was in my late teens and early twenties. I discovered in May 2020 that the Internet Archive had preserved the contents of that blog in its entirety, including some of the media. That blog was an important part of my personal history, so I reposted all of that content on this website for archival purposes. While my politics, opinions, and outlook on the world have changed radically since I wrote those posts between 2009 and 2011, it’s good to know that I was as much of an idiot then as I am now.


Update (March 13): He’s back, but now he’s simply shying away from what he doesn’t know.

Update: The professor in question has been reported and is now banned from taking any more classes.

This piece might come across as one intended to bad mouth my own college, but I have a sneaking suspicion that things aren’t all rosy in other parts of the country either.

I suppose every geek has had this same feeling before. You take a seat in the front row of your first Introduction to Programming lecture, all worked up about the fact that here, finally, is a class you can be on top of. The professor walks in, gives a little introduction, and you realize it’s going to be a long, long semester.

Today I decided to make a list of all the atrocities committed by my Introduction to Programming professor. I wasn’t expecting much because, even though he sounded like a complete knucklehead to the geek inside me, I was sure he at least knew the textbook inside-out. I was, as one would expect, wrong. So, hackers, get ready to cringe. Here’s my list.

  • … Linux is basically a DOS based OS.
  • These days we are using 128 and 256 bit processors.
  • A compiler is a software that converts code written in a particular programming language to machine code. To compile a program, you must hit ALT+F9. (It took me a while to realize he was talking about the Borland Turbo C++ IDE from 1992, a prehistoric compiler Indian colleges use for all C and C++ courses.)
  • The object code generated by a C++ compiler is almost identical to that produced by a Java compiler.
  • The first high level language was Ada, also known as Smalltalk. (This was a big WTF moment.)
  • The second high level language was COBOL, which was an improvement over Ada. (Cringe, cringe, cringe.)
  • FOTRAN came after COBOL. (No, “FOTRAN” is not a typo. This is what he said.)
  • FOTRAN, COBOL, Ada and Smalltalk were not general purpose languages.
  • This one is classic: C was the first language to run on UNIX systems. All languages before C ran only on Windows.

I still haven’t completely recovered from the shock.

Learning New Programming Languages and APIs – What I Was Doing Wrong

Note: I originally posted this article on a personal blog I ran when I was in my late teens and early twenties. I discovered in May 2020 that the Internet Archive had preserved the contents of that blog in its entirety, including some of the media. That blog was an important part of my personal history, so I reposted all of that content on this website for archival purposes. While my politics, opinions, and outlook on the world have changed radically since I wrote those posts between 2009 and 2011, it’s good to know that I was as much of an idiot then as I am now.


For the past few months, I have been trying to learn how to write GUI applications for the Mac. The two best toolkits for this task are Cocoa and Qt. Since I have never written any GUI code before and none of my projects have ever been very complex, learning these two libraries turned out to be a tough nut to crack. After many months of trying to become proficient at writing GUI code and failing, I have finally found out what I was doing wrong all this time. The fact that I have finally grasped Qt using my new methods is proof that my old methods had some very serious flaws. The following points are written in context of learning new APIs and languages, but they apply equally well to anything else you might ever want to learn.

Hand-Holding Doesn’t Get You Anywhere

What I Did Wrong: I looked for a book on Qt which made understanding GUI programming concepts simple for a beginner such as myself.

Correction: Such a book does not exist. Picking up a For Dummies book (or something equivalent) means shooting yourself in the foot. If you expect people to guide you step-by-step through learning difficult subjects, you should probably not be writing code at all.

Immerse Yourself in the Material

What I Did Wrong: I searched hard for a book that would teach me Qt from beginning to end. I spent hours reading reviews, blog posts, forums and back covers searching for the One Book.

Correction: One source is never enough, and the One Book does not exist. The best way to learn any new API or language is to completely immerse yourself in the material. Subscribe to mailing lists, hang out in IRC channels, read blog posts, articles and tutorials, help people out at StackOverflow, read code written by the experts, try to modify existing code, add new features to your favorite application and talk to people who know the stuff well. Oh, and buy a good book.

Don’t be Systematic

What I Did Wrong: I tried to systematically study the material from the first chapter to the last, completing every exercise given in the text.

Correction: Being systematic is the biggest mistake I made while learning Qt. Trying to be systematic will only tire your mind as you tediously work through some trivial exercise the author thought was important. Programming is a creative activity. The most painless way to learn something is to just let your brain run wild. Speculate, dream, design, experiment. Skip the boring exercises and do only the ones you find interesting or, better still, make up your own exercises. When you find yourself unable to complete the task you put yourself up to, skip around the book and try to find a way to solve the problem.

Taste Things First

What I Did Wrong: As I read through the material, I typed the code samples into my editor to see what the author was trying to say. I moved on to the next chapter only when I had tried out every code sample and completed every exercise in the current chapter.

Correction: When you’re reading through the material for the first time, always read it like it’s a novel. Instead of focussing on how you can accomplish a certain task, focus on what you can accomplish. This way, you will know the strengths and weaknesses of your tools before you sit down to code. Most importantly, you will know where to look for the functionality when you actually need it. Reading the material quickly makes it seem like you’ve accomplished a lot in very little time which keeps your brain from getting bored. Also, it makes reading through it the second time (this time focussing on the details) much easier.

Aim High

What I Did Wrong: Whenever I didn’t understand something, I told myself it was okay. Whenever I felt stupid because I couldn’t grasp a simple concept, I told myself to relax. I thought it was okay to fail, and that not many undergrads even know about Qt. Hell, I thought, there are so many great hackers who didn’t even know how to program at my age.

Correction: When you’re evaluating yourself, always compare yourself to the people who are better than you. If you think you’re stupid, you probably are.

These techniques were partly based on this article. Check it out, it’s pretty good.

My Code Dojo

Note: I originally posted this article on a personal blog I ran when I was in my late teens and early twenties. I discovered in May 2020 that the Internet Archive had preserved the contents of that blog in its entirety, including some of the media. That blog was an important part of my personal history, so I reposted all of that content on this website for archival purposes. While my politics, opinions, and outlook on the world have changed radically since I wrote those posts between 2009 and 2011, it’s good to know that I was as much of an idiot then as I am now.


Update (March 27): It failed. It’s gone now.

From the site: [Uncool’s Code Dojo] is a database of short, fun programming tasks that can be solved in under a week’s time.

Here’s a problem – I’ve just learned this new do-all-end-all-super-mofo programming language but I don’t know what to do with it. The Code Dojo is my contribution to bored programmers everywhere who share the same feeling.

Visit the Dojo at http://dojo.uncool.in

Jingo!

Note: I originally posted this article on a personal blog I ran when I was in my late teens and early twenties. I discovered in May 2020 that the Internet Archive had preserved the contents of that blog in its entirety, including some of the media. That blog was an important part of my personal history, so I reposted all of that content on this website for archival purposes. While my politics, opinions, and outlook on the world have changed radically since I wrote those posts between 2009 and 2011, it’s good to know that I was as much of an idiot then as I am now.


Everyone knows about Satyam, so talking about it here would be pointless. I think whatever happened will be good for the industry in the long run. I have no idea how Satyam has survived for so long, considering how bad their services really are (at least the consumer-facing ones). I also don’t know why Hewitt and Mercer thought Satyam was a good employer. They treat their employees like slaves. Anyway, that’s not the point of this post.

Here’s the BusinessWeek article about Satyam. As with most BusinessWeek articles, this is mostly just repeating what everyone else has been saying for the past 24 hours or so. The rest of it is just filler content. What’s really interesting is the comments section at the end of the article. Take a look yourself.

I’m summarizing the opinions held by the highly intellectual demographic which forms BusinessWeek’s main audience. Here is what people think about India (yay, us!) –

  • We are all thieves and liars.
  • All of us have an IQ of 81, which means all of us are more or less retarded.
  • We brag too much.
  • We pee in public.
  • We suck because we wash our asses instead of using toilet paper.
  • We don’t wash our hands before eating.
  • This one is interesting – india is also kashmir. Um, what?
  • South Indians should not be trusted because they are ugly and dark-skinned.
  • … Indians are really ugly looking with miserable accents.
  • Despite all of the above, the whole world likes India and Indians.

Some interesting facts emerge about Americans, Pakistanis and the English (”Britishers”) –

  • Americans are thieves and beggard.
  • People from America and Europe are ugly because their faces look like a mixture of salt and red pepper.
  • Pakistanis are filthy and have an IQ of 70.
  • Kashmiris are good but Pakistanis are bad.
  • Pakistanis are extremely corrupt people. All of them have inferior stature compared to India. They are all lean and thin. Indians are well fed and strong. This is evident from the fact that India has won 4 wars till date and Insha Allah we will win the next war against Pakistan also.
  • All Asian countries are 3rd world garbage dumps. Only Japan is developed because it is controlled by the West. If it was run by Japanese, it would be another 3rd World cesspool.

Every single one of the posters is, of course, a misinformed idiot. The worst thing is that BusinessWeek isn’t really concerned about the quality of content on their website. I have seen more intellectually stimulating content than that at 4Chan.

The power of social media, anyone?