Episode 10: New Year Special, 2010 Edition

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 :)

December 31, 2009 • Posted in: Uncategorized • 5 Comments

Episode 9: A Note to Myself

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 8: Recap

Despite a large number of exceedingly uncool events taking place in my life (along with a small but encouraging number of astonishingly cool events) I have managed to neglect my blog completely. Episode 8 of A Series of Uncool Events offers you this exclusive, once-in-a-lifetime chance at catching up with the oh-so-exciting happenings in the life of a doubleplusawesome geek destined to become a gazillionaire in the (very) near future.

I was going to say something doubleplusawesome, but I forgot what. Anyway, here’s a list.

Well, that’s all folks. Now you know what I’m up to. Here are a few disjointed thoughts that do not warrant a post of their own.

Okay, enough random thoughts. Off to work. I have an operating system to compile.

June 3, 2009 • Posted in: Life, Things I Did • 4 Comments

Episode 7: Parenting License

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.

May 18, 2009 • Posted in: Life, Opinions • 4 Comments

Episode 6 ½: Chromium on Mac

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:

Chromium on Mac

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.

May 12, 2009 • Posted in: Reviews • 3 Comments

Episode 6: Getting Things Done

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.

April 26, 2009 • Posted in: Life • No Comments

Episode 5: Something to Do

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

April 24, 2009 • Posted in: Life, Programming • 3 Comments

Episode 4: Things Nobody Will Ever Tell You (At Least Not Nicely)

I have found that students of computer science (CS) and information technology (IT) in most Indian colleges have several misconceptions about programming and computers in general. This seems to be a common problem in other parts of the world, too. I’ve made a list of some of the most common problem areas, and I’m posting it here for the benefit of annoyed geeks all over the world who have to explain these things over and over to that annoying but hawt girl who never goes out with them. No offense meant to any annoying but hawt girls who might be reading this right now. Would you like to go out with me? I’m free this Friday at 7:00 PM.

Note that most of the problem areas I have listed deal with C++ and the Turbo C++ IDE. This is because most Indian colleges teach C and C++ in the first two years of the CS/IT course.

I will keep adding new points to this list as I encounter them. Leave your suggestions in the comments section of this post.

Episode 3: Ergonomics, Thou Art a Bitch

Update [March 31]: Added a pic 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.

Ergonomic
Nevermind the floral pattern.

Now get off my lawn.

March 30, 2009 • Posted in: Life • 6 Comments

Episode 2: What Grinds My Gears

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.

March 27, 2009 • Posted in: Life, Opinions • 2 Comments