Episode 10: New Year Special, 2010 Edition

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.


It’s December 31st, 2009, at least here in New Delhi. A glorious year is ending, and another (potentially) glorious year is just around the corner. This is reason enough for me to put on my writing cap and add another pointless piece to A Series of Uncool Events.

Year 2008 was disappointing, to say the least. I’d love to write twenty paragraphs and explain in detail how sad year 2008 was, but that would be a waste of precious electrons. Point is, 2008 was a tragic, miserable, wretched year. Did I tell you it was distressing, depressing and pathetic? Let’s throw in “lamentable” and “piteous” for good measure. Yes, I love my thesaurus.

Now that we’ve established how gloomy year 2008 was, let’s move on to year 2009. 2009 was, in contrast, a wonderful year. It was an year of excitement, discovery and many, many changes. Here’s a quick rundown of the highs and lows of 2009, neatly categorized and methodically packaged for mass-consumption.

The Good

The Bad

The Ugly

So, that was year 2009. Year 2010 will be here in another 30 minutes. Let’s just hope it’s as beautiful as last year. Thank you for tuning in to A Series of Uncool Events. Good night, and a happy new year :)

Episode 9: A Note to Myself

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 is exactly what the title says it is. Just a small note to remind me what I should be focusing on. Spending a weekend playing with genetic algorithms in Scheme is a wonderful learning opportunity, but it detracts from some of the bigger projects I’m working on. Idle curiosity can do more harm than good if you’re trying to juggle college and code. Genetic algorithms can wait until Christmas.

Ongoing Projects

I never start projects. I bump into them. Sometimes they feel like a distant member of Grampa’s extended family. Other times, they feel like a close friend you’ve been dying to talk to for the past 6 months, but gosh darn it where’s his number? Unlike most seasoned hackers, I only have three large projects I wish to see to completion before I touch something new.

Interests

I’m a sad case, really. I need to write a blog post to remind myself what I’m interested in. If you don’t want your kids to turn out this way, make sure they take enough baths. Yes, even in winter.

High-level stuff bores me. I find I’m much more comfortable with C and C++ than Python. With that in mind, here’s a small overview of my fields of interest:

Lately, I’ve been reading up on electronics. I’ve barely scratched the surface of what’s possible with just a few cheaply available components, and I’m already shaking with excitement. College does not permit me to learn as much as I’d like to, but I’m slowly getting there. I’ll have something to show for my efforts in a couple of months. Let’s see what comes of this new obsession :)

Episode 7: Parenting License

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.


I watched The Dead Poets Society today. It’s about an English teacher who tries to teach his students how to live. Go watch it.

The Dead Poets Society struck a chord with me because I have been thinking about the same issues it talks about for the past few days. What got me thinking was a conversation I heard at a party last week. This is how it went:

Kid: But mom, I don’t want to eat right now.

Mom: It’s lunchtime. You’re going to eat that chapati right now.

Kid: Okay, ma.

Mom: Why are you using your left hand to eat? Can’t you do anything right?

(At this point, my mom goes over to talk to that annoying lady.)

Mom: Say namaste to aunty. Have you forgotten your manners?

… and so on …

The conversation itself is not offending. In fact, I clearly remember being told to eat with my right hand when I was a kid (a piece of advice that still doesn’t make sense to me). What offended me was the fact that the mother was barking orders, in a way that made me want to put my fork down and leave the room. That kid could not have been older than ten. Show some love, lady. You’re supposed to be his mum. Oh well. What goes around, comes around.

Another story. A guy we (we = my family) know just enrolled his ten year old son into a boarding school. The reason? “He is unruly. We can’t take care of him.” Yeah, right. Do you expect military-style discipline from a ten year old? As far as I know, ten year olds do not want to take over the world (yet). Their curiosity gets them into a lot of trouble, but whatever they do is well intentioned. My parents were visibly shocked.

No one without a parenting license should be allowed to raise kids.

Episode 6 ½: Chromium on Mac

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.


I have only used Google Chrome on Windows for a few minutes. That was a few months ago. Since then, I have been waiting eagerly for the Mac version.

The wait is (almost) over.

xAbhishek points out here that Google has finally started releasing Chromium binaries for the Mac, which means you no longer have to build from source. Note that these are nightly builds, which means pre-alpha quality.

Here are some observations:

Besides these little problems, Chromium is a well behaved Mac app. I expect the final release date for Chrome on Mac is very close. Oh, and here’s a screenie:

A screenshot of Google Chrome rendering the front page of this website. The browser window is notable for its simplicity and minimalism. There are very few UI controls on the screen, leaving most of the space on the screen for displaying the website.

Update (May 13): I clobbered together a quick hack (in Python) to download and install the newest Chromium build on Mac OS X. Download it here. I take no responsibility for deaths, injuries or nuclear explosions that might result from the use of this script.

Usage: type this in Terminal:

$ sudo python <PATH TO SCRIPT>/chromium_updater.py

… and hope that nothing bad happens.

Episode 6: Getting Things Done

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.


I’m currently on a mission to increase my productivity up to a respectable level. Right now, I don’t know about any metric that can effectively measure productivity, so I’m using a very simple metric of my own. Out of the total time not spent on life-sustaining activities (eating, bathing, bathroom breaks etc.), how much time do I spend on things that matter? Things that matter include: learning stuff, reading articles online (the news.YC kind, not the Digg/Reddit kind), programming, reading books, blogging, relaxing, pondering the ultimate question of life, the universe and everything, and spending time with family and friends (talking to friends on the phone is not “spending time” with them). Right now, the measure of my productivity should be between 5% and 10%. I want to get my productivity levels up to around 50%.

Some of the steps I’ve taken to increase my productivity are:

I’ve also added a productivity blog to NetNewsWire: 43Folders. I don’t have any particular affinity towards the self-help “industry”, but I find that some of the content on 43Folders is actually pretty good (none of that “you can do anything if you put your mind to it” bullshit that sounds nice but doesn’t really help). Another blog that looked interesting was ZenHabits, but I was put off by some of the cheesy posts I saw on the front page (”5 Foolproof Ways to Produce a Burning Desire for Your Goals”. WTF?).

Right now, my mind is less cluttered than it was a week ago. I’m much calmer, and I got a lot of work done today (got through a lot of dry Objective-C documentation, wrote this blog post, spent a lot of time with my parents and still had time left over for other stuff). This routine suits me. Now the only thing I need to fit in here is some light exercise.

Episode 5: Something to Do

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.


First things first. Python and Django programmer for hire this summer (June and July). If anybody in or around New Delhi needs something built, I’m your man.

Now, on to the trivialities.

The results for Google Summer of Code 2009 came out on April 21, and I failed to make it. According to my mentoring organization, I was one of their top picks, but failed to get in because I didn’t submit as many patches as the other students. No GSoC work means I have no commitments this summer. Akshay is trying to get a RoR job somewhere, and I think Apoorv has something planned, too. I feel I ought to start making my own TODO list now.

I have spent the past few weeks thinking about how much time I waste on worthless activities (something which led to a fight between me and Apoorv - he’s absolutely certain he’s not wasting any time). The agenda for April is to cut out all the time-sucking activities from my routine. I’ll probably read up on time management and check out what the GTD hype is all about. Also part of the agenda is keeping my workspace clean. Right now, I have a single table for everything - study, web browsing, movies, programming and food. I’m going to have to try and keep my work and fun areas segregated so that when I sit down in my work chair, my mind goes, “Okay, time to work. No more distractions.”

lut4rp tells me I need to get some code “out there”. A lack of Objective-C knowledge is preventing me from delving deeper into Cocoa, so I will be spending some time writing ObjC code and putting it up on GitHub for everyone to see (and laugh at). I really wish I could spend more time with Python, but I want to go indie with a few desktop apps and that’s something which Python fails to do well (at least on OS X). I want to push the limits of ObjC, just to see how dynamic it really is (so far, I’ve used it like a spiced up version of C). In my experience with the language so far, I have felt it is nothing compared to heavyweights of the dynamic world - Ruby and Python. I sincerely hope I’m wrong.

The next logical step after Objective-C is to sharpen my 1337 Cocoa skillz. The strategy this time is to leave the more advanced technologies for later. What’s the point of getting into CoreData or Keyring Services if I never plan to use them? As an aside, the Hillegass book is awesome, but I don’t think it’s written for people new to Cocoa. It reads more like a cookbook than an introduction to OSX programming. I’ll be using Apple’s docs + online tutorials (and refer to Hillegass if the need arises). Since I’ve already covered more than 50% of what is required to write decent OSX apps, my next steps are mostly going to center around getting familiar with the libraries available to me.

My one-post-a-day idea bombed, mostly because exams kept me busy. I had two weeks of exams, followed by a week of semi-rest, followed by a week of practical exams. Another round of practicals begins on Monday, which will be followed by ten days of semi-rest and another two weeks of exams. The last two months of the semester are always like this at IPU. I’m used to it now, so no worries :p

Episode 3: Ergonomics, Thou Art a Bitch

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 31]: Added a photo of my setup.

Owing to Google Summer of Code 2009, I have been spending more time using my MacBook than ever before—hanging out in IRC channels, building Haiku (the project I applied to), writing code and doing a lot of reading. The result? The entire last week spent dealing with severe back pains, shoulder pains, wrist pains and irritable eyes. I have never had these pains before. I remember days when I would spend eight hours in front of my PC without any kind of discomfort. Why now?

After some Googling, I figured out poor laptop ergonomics was to blame. In the past, I have felt some discomfort while working with my MacBook, and I have taken some steps to eliminate that. I got myself a new chair, and reduced the height of my desk by sawing off its legs. Apparently, it wasn’t enough. The problem with laptops is that if you manage to set up the screen in a comfortable position, using the keyboard becomes difficult and if you set up the keyboard in a comfortable position, you can’t read the screen.

With a desktop, you’re usually sitting up straight, with your head in its natural position and your eyes looking straight ahead of you at an angle of 90°. Your elbows, too, are positioned at an angle of 90° with your body and the keyboard is below the level of your chest. If you have a good chair then it supports your lower back, thus reducing back pains. When using a laptop, on the other hand, you’re sitting in a hunched position with your neck bent down. Since the keyboard is so small, your hands are placed unnaturally close to each other, resulting in wrist and shoulder pains. You have to bend forward to type, which kills your lower back.

An overwhelming majority of people who use their laptops as desktops recommend separating the keyboard and the screen. One way to do that is to buy a new screen. Since I don’t have that kind of money, I went with the second alternative—use a USB mouse and keyboard instead of the built in trackpad and keyboard. I already had a portable Logitech mouse, so I headed to the nearest Croma and picked up a Logitech Ultra Flat keyboard for Rs.649 (I know I could have had it for less, but the pain was too excruciating to bear for even one more day). Let me digress from the main post so I can tell you how awesome my new keyboard really is.

The Ultra Flat is smaller and more compact than the regular Logitech Classic keyboard. The keys are placed very close together, but that’s not a problem since they are much larger than the keys on a Classic. They are also softer and much more responsive. There seems to be some kind ’shock absorber’ at the bottom of each key, which slows it down as you press it. Whatever it is, it feels very comfortable. The entire experience of typing on the Ultra Flat could be summed up in one word: smooth. Oh, the best thing about the Ultra Flat? Spring loaded keys! There’s nothing more a geek could ask for.

Okay, back to ergonomics. There’s nothing much to tell now. The next step was to raise the height of the laptop to prevent neck pain. Introduction to Algorithms and The MINIX Book came to my rescue, and now my laptop is standing on the shoulders of giants. As of this writing, I have been working with my new setup for about 5 hours without discomfort. No more pains!

Update [March 31]: I just installed a nify application called KeyRemap4MacBook which allows me to remap several keys on my USB keyboard. The default layout of the bottom row on a regular keyboard is something like this: CTRL | WINDOWS | APPLICATION | ALT | SPACEBAR | etc. On the other hand, the default layout on the MacBook keyboard is like this: FN | OPTION | COMMAND | SPACEBAR | etc. I used a screwdriver to pop-off some of the keys from the UF, and rearranged the bottom row to this: CTRL | APPLICATION | ALT | WINDOWS | SPACEBAR | etc. Then I used KeyRemap4MacBook to remap the ALT key (listed as OPTION_L in the prefpane) to COMMAND_L and the APPLICATION key to OPTION_L. I also remapped CAPSLOCK to CTRL, and checked the Use Keypad as Arrow Keys option. After installing KeyRemap4Mac, the DEL, HOME and END keys have started functioning properly, too. Finally, I have my Windows keyboard set up (almost) exactly like my MacBook keyboard.

An improvised laptop stand built with books. A white plastic MacBook is placed on top of &#x27;Operating Systems&#x27; and &#x27;Introduction to Algorithms&#x27;. A keyboard and mouse connected to the laptop are placed on the table in front of the books. The tablecloth has a floral pattern with yellow flowers and green leaves.

Now get off my lawn.

Episode 2: What Grinds My Gears

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.


Buzzwords. This is what Wikipedia has to say about them:

A buzzword (also fashion word and vogue word) is a vague idiom, usually a neologism, that is common to managerial, technical, administrative, and political work environments. Although meant to impress the listener with the speaker’s pretense to knowledge, buzzwords render sentences opaque, difficult to understand and question, because the buzzword does not mean what it denominates, yet does mean other things it ought not mean.

Twitter has a crisp, concise sentence on their homepage that describes exactly what their service is all about. Someone must have worked hard coming up with that description. Here it is:

Twitter is a service for friends, family, and co–workers to communicate and stay connected through the exchange of quick, frequent answers to one simple question: What are you doing?

I’m going to take that description and have some fun with it.

There seems to be no mention of Web 2.0 there, so I’ll put that in. I’ll also toss in “real time”, because I can. The sentence now reads:

Twitter is a Web 2.0-based real time service for friends, family, and co–workers to communicate and stay connected through the exchange of quick, frequent answers to one simple question: What are you doing?

What about “empower”? I think I can squeeze that in somewhere. Since “friends, family, and co–workers” sounds too normal, I’m going to replace it with “end users”.

Twitter is a Web 2.0-based real time service that empowers end users to communicate and stay connected through the exchange of quick, frequent answers to one simple question: What are you doing?

“What are you doing?” is too easy to understand. It has to go. These days, “core competency” seems to be the hot new term in town, especially among entrepreneurs. I’ll re-phrase the blurb so I can throw that in, too.

Twitter is a Web 2.0-based real time service. Twitter’s core competency is empowering end-users to communicate and stay connected through the exchange of quick, frequent answers to one simple question: What activity is the said end-user engaged in?

Something about “rich media” would be nice. “quick, frequent” can be replaced by “holistic, crowsourced” and “question” becomes “query”.

Twitter is a Web 2.0-based real time rich media service. Twitter’s core competency is empowering end-users to communicate and stay connected through the exchange of holistic, crowdsourced answers to one simple query: What activity is the said end-user engaged in?

Change “stay connected” to something better, like “allowing them to initiate a synergizing convergence of thought and action”.

Twitter is a Web 2.0-based realtime rich media service. Twitter’s core competencies are empowering end-users to communicate and allowing them to initiate a synergizing convergence of thought and action through the exchange of holistic, crowdsourced answers to one simple query: What activity is the said end-user engaged in?

And that, folks, is what grinds my gears.

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:

Mmmmmm … wha? Bugger off.

And:

# TODO: figure out a better algorithm for this.
def writeBlogPost(clevernessFactor):
    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

The Bad Parts

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