Ground Zero 13

Posted by timgoh
on Saturday, January 13

I do recall getting off the plane at the Beijing airport, but the more logical explanation is that I died in a plane crash and I am now in geek hell.

How else can you explain this?

timgoh@blackwater:~/docs$ ping slashdot.org
PING slashdot.org (66.35.250.150) 56(84) bytes of data.

--- slashdot.org ping statistics ---
27 packets transmitted, 0 received, 100% packet loss, time 26070ms

For comparison:

timgoh@blackwater:~/docs$ ping yahoo.com
PING yahoo.com (66.94.234.13) 56(84) bytes of data.
64 bytes from w2.rc.vip.scd.yahoo.com (66.94.234.13): icmp_seq=1 ttl=52 time=393 ms
64 bytes from w2.rc.vip.scd.yahoo.com (66.94.234.13): icmp_seq=2 ttl=52 time=401 ms

--- yahoo.com ping statistics ---
8 packets transmitted, 2 received, 75% packet loss, time 11759ms
rtt min/avg/max/mdev = 393.114/397.166/401.219/4.101 ms

and

timgoh@blackwater:~/docs$ ping google.com
PING google.com (64.233.187.99) 56(84) bytes of data.
64 bytes from jc-in-f99.google.com (64.233.187.99): icmp_seq=1 ttl=239 time=302 ms
64 bytes from jc-in-f99.google.com (64.233.187.99): icmp_seq=2 ttl=239 time=300 ms
64 bytes from jc-in-f99.google.com (64.233.187.99): icmp_seq=3 ttl=239 time=302 ms

--- google.com ping statistics ---
4 packets transmitted, 3 received, 25% packet loss, time 2999ms
rtt min/avg/max/mdev = 300.801/302.004/302.846/0.981 ms

Such little redundancy for Internet connections between entire continents is simply unacceptable. The silver lining is that aMule and Bittorrent are working fine. Expect less entries in the near future.

My Sentiments Exactly 0

Posted by timgoh
on Saturday, December 30

[1]

That said, have a happy new year one and all.


1 Sherman’s Lagoon (C) 2005 Jim Toomey.

YATE 1

Posted by timgoh
on Wednesday, November 29

That’s “Yet Another Thanksgiving Entry”. Well, this one is different from the rest. This one is… late.

So my friend from Berkeley was in town, and I was busy showing him around. I can’t begin to explain what a relief it was to have a Californian to talk with again. I must have said the word “dude” more times than in ten back-to-back showings of The Big Lebowski. I previously hadn’t used it while I was here—it somehow seemed unnatural to say it to anyone who wasn’t from California.

I’m going to be true to cliche and start listing some things I am thankful for. Firstly, the nifty laser mouse my pal brought over for me. Now if I start raving about it I’m going to sound like a Logitech shill, so I’m just going to say this: if you have not used a laser mouse before—you have no idea what you’re missing. It handles so much more smoothly than an optical mouse. And I’m not even a gamer (anymore). I got other shiny new hardware of course, but those were boring purchases such as new hard drives (I’m approaching 2 terabytes in total storage – I really should consider getting a NAS soon).

Another would be the forthcoming release of Pain of Salvation’s new album, Scarsick, in 2007. And of course the world tour that accompanies it. Suffice to say I will make it for one leg of the tour, costs be damned.

Lastly, the rebirth of the Rio Karma. Honestly, with a name like “Karma”, you just knew it had to be reincarnated some day. It was sad that Rio was shut down – what they had in the Karma was a quality DAP that could handle FLAC losslessly on its default firmware (no Rockbox needed). Despite being ugly as sin and having a track history of hard drive failures to boot, it had a devoted, if small user-base. Many users even bought two of them, the second to use when the hard drive of the first had failed. I’ll definitely be keeping an eye on this one – it may well be the first DAP i consider worthy of my purchase.

Typo Powered 4

Posted by timgoh
on Friday, October 20

I use Python with the Django framework at work, and I enjoy working with them. Django really simplifies development, and has some excellent sites built using it: have a look at Naples News Online and Lawrence.com

So when it came to putting this blog up, the first thought that came to my mind was “Ok, I’ll spend a couple hours putting up something basic with Django, and I can then add to it as I go along.”

Yep, trust my first instinct to be the most lazy time-saving one.

Then I realized that this option was just too easy. Having built an entire CMS with Django recently, I would learn nothing new by doing a simple blog with it.

So I decided this was an excellent chance to learn Ruby and RoR. I’d be killing two birds with one stone: diversifying my knowledge portfolio within the area of web development, and sating my intellectual curiosity as to why Rails has exploded over the past year or so.

Seemed simple enough. Checked out the Pickaxe book from my company library, and got the seminal Rails book too. Went through the tutorial, and subsequently put together a bare-bones blog app (sans a decent template and styling) in around half an hour.

Yes, that’s not a typo. Neither am I exaggerating. Rails is simply that fast. Bear in mind we’re talking bare minimum here—all my app was at that point was a simple wrapper around a BlogEntry model with Title, Body, and CreatedAt fields. But I could perform basic CRUD on it and have the results immediately reflected live. A minimalist blog I suppose. Django would be slightly slower, because it eschews the script/generate “magic” of Rails1.

Alright, there’s enough praise and hyperbole about Rails out there. No point adding my voice to the choir.

Anyway, from that base I planned to slowly bake in basic features like comments, tags, etc.

That’s when Captain Obvious paid me a visit saying, “You do realize that what you’re doing is a classic example of NIH syndrome.” I then realized that I could learn about Rails faster by using one of the blog platforms out there built on Rails and contributing back to it, instead of reinventing the wheel as I originally planned.

In the end I went with Typo. Not because I find it hilarious to have a blog that is “Typo Powered2”. And I did this despite the fact that their Trac page was down (and is still down) due to spam issues. Despite the fact its developers go by the rather dubious name of Leetsoft3. Despite the fact that Steve Yegge crucified Typo for its lack of documentation and difficulty of installation. I did find it easy to set up though, thanks to an excellent tutorial I found.

I initially chose Typo because it seemed to be the blog of choice for people playing around with Rails. I’ve stayed with it because its been a blast to use so far, despite the occasional bug I run into (which I could help with or at least look up if their Trac was up!) Lacks the polish of Wordpress et al, but makes up for it with some very nice glitz.

Thus for now, this blog is Typo Powered. It took me a long time to settle on an option—I went from self-built Django to self-built Rails to Typo, but I’m glad I took my time making a decision.


1 I’ll cover ideological differences between Django and Rails in the future when I’m more familiar with the latter.

2 I do find it hilarious, but that’s definitely not the basis of my decision-making.

3 OMGWTFBBQpewpew j00 lam3rz, everyone knowz its spelled as “l33t”!!!111one

Knowledge Portfolio 1.0 0

Posted by timgoh
on Friday, October 13

One of the biggest ideas I got out of the Pragmatic Programmer book is the need to invest in one’s knowledge portfolio.

I was fascinated by this idea, given that I had managed my own personal financial portfolio during college1, and enjoyed the thought process that went behind choosing which companies to watch and when was the correct time to buy.

So upon finishing that section of the book, I immediately set out to do a quick short-term portfolio. There has to be a reasonably short-term bias when you’re talking about programming—a technology that is de rigeur 5 years from now may not even exist today, so how can you plan to go about learning it?

Fans of LTBH need not worry though. There are long-term investments that can be made in a knowledge portfolio. But these are investments in concepts rather than technologies. For example, knowing about regular expressions, the inner workings of compilers, etc. This is knowledge that will not erode with time.

I have put up a Knowledge Portfolio page on this blog (also available in static link on the sidebar). It marks what skills I currently have and what I plan to learn next. Subsequently I will be adding a book backlog as well

You will note that this is a rather sparse portfolio. This is because I haven’t invested much capital (time) into it—I am still in the first year of software developer career. Two years of compulsory military service and two years of project management mean that I’m very late on the scene. So I will have to make up for lost time. Fortunately, the concepts learned doing computer science at my alma mater have helped me get up to speed.

I have not mentioned the main focus of this blog so far. Essentially, it is a chronicle of my journey as I learn my chosen craft of software development. It is a voyage of at least ten years according to Peter Norvig.

Hope you enjoy reading about my journey as much as I enjoy experiencing it.

Prelude

Posted by timgoh
on Tuesday, October 10

First post!

mischief

Not like there was anyone to snatch it away from me. But allow me the cheap thrill.

I guess I’m supposed to do an introduction here (convention over configuration!) . So, without further ado:

Why ‘progressive programmer’?

  1. Progressive is a reference to the kind of music I love most – progressive metal and progressive rock. More on this later.
  2. At the same time it is a tribute and homage to the Pragmatic Programmer, which is a book that greatly inspired me (and which has led to an entire publishing company).

Why ‘ProgProg’?

Because progressiveprogrammer.com was already being domain-squatted. Okay, so I’m not as original as I think. Anyway I was lamenting this fact to a friend and he was like “What about ProgProg?” And thus a future star yet another inane blog clogging up the Intarweb’s tubes was born.

Interestingly, unbeknownst to me at the time I registered this domain, www.pragprog.com does direct to the Pragmatic Programmer website1.

So, what is a progressive programmer?

Prog metal and prog rock are best defined as genres where the musicians constantly push the boundaries of music, defying the “rules” of regular music so to speak. Be it through composition structure, executing a concept for an entire album, or sheer virtuosity and technical prowess2.

Now I’m not deluded enough to think that I can push the boundaries of programming or computer science. I’m content to challenge my own limitations, and improve myself at my chosen craft – software development – day-by-day.

Wait a minute, aren’t “progressive” people hippie tree-huggers?

Well, I suppose the politically correct term is “liberals”. In the same way conservatives => right-wing neo-cons, and libertarians => anarcho-capitalists. Now that’s one analogy question you’d never see on the SATs.

Unfortunately, the term “progressive” does often refer to a liberal-minded person, so I have to include this disclaimer that I am not a liberal. I’m a libertarian. Same prefix, world of difference in meaning. Hopefully that’s the first and last time I have to talk politics.

And that’s all for now.

Don’t expect future posts to follow this FAQ format—I just thought it make for a more concise introduction, given my tendency to ramble3.


1 Don’t you accuse me of trying to capture traffic from typos—you’d have to be pretty damn uncoordinated to mistype an ‘a’ for a ‘o’ (hint: look at your keyboard).

2 Because of this, many prog fans are total musical snobs, dismissing most other genres of music as unoriginal and lacking creativity. Think of them as the musical equivalent of LISP hackers.

3 Oooh foreshadowing. Now you’re just dying to read the next post, aren’t ya?