Saturday, August 29, 2009

Snow Leopard and the Beginning of an Era

Mac OS X 10.6 Snow Leopard is out!

I don't remember the last time I was so excited about an operating system release. From my pre-Apple years, it would have to be Windows 98. Indeed, that was the last non-Mac operating system that I was last genuinely excited about getting to use.

Right-click menus would slide now, and there was this weird thing called "Screen Font Smoothing" (from Plus! 98) which made me just want to fire up MS Word and type things into it for no reason.

It was everything I knew and loved before, but that little bit cooler. Old things felt new. That is such a cool feeling. Incremental updates.

Car-makers work by incremental improvements. Facebook works that way. GMail works that way. It makes sense: stand on your previous achievements.

Even fast-food outlets work that way! You like the McDonalds' Filet-O-Fish? Well, here's the Double Filet-O-Fish! They have those in Singapore now; I haven't tried them. But "[they're] lovin' it!"

My core point: revolutions should only be made when they're absolutely necessary. Revolutions for the sake of it is, frankly, too much democracy.

It's like that cardinal rule of movie remakes: never remake a good movie, no matter how old it is. Nobody is ever going to remake of Lawrence of Arabia, or Terminator 2.

Snow Leopard is an incremental update. A lot of PC users wonder why the Mac community gets so excited about "service packs." Well, a service pack isn't some fundamental law of the universe, friends, it's just a phrase coined by Microsoft which arbitrarily means possibly a speed-bump, better security, bugfixes, and minor feature updates.

Well, OS X updates are arguably not service packs for a few reasons. It is true, OS X updates represent very few significant user-land updates. Off the top of my head, the only headline grabbers were Expose (introduced in OS X 10.3 Panther), Dashboard (introduced in OS X 10.4 Tiger), and Time Machine and Spaces (introduced in OS X 10.5 Leopard). Apart from that, the biennial "300+" features is mostly marketing fluff.

But despite relatively few user-land updates OS X changes extensively under-the-hood between releases. New APIs and frameworks, much of which had been very fluid up until OS X 10.4 Tiger, have been the real changes in OS X updates. An operating system is only as good as the software that is developed for it, so Apple has been targeting the developer market very aggressively since OS X debuted, and you can plot the quality of third-party software for OS X with each subsequent release.

OS X, at 10 years old, is still a fairly young operating system and only really matured at the user and developer level OS X 10.4 Tiger. Not unlike how KDE 4.0, 4.1, and 4.2 are memories I'm trying to block, and how Microsoft is trying to forget Vista ever happened, the transition to the point of Snow Leopard's maturity has been a long one.

Snow Leopard marks the beginning of an era, even though it is, from the user perspective, a service pack. And Mac-lovers will gladly pay, while PC people think its mass-hysteria. But it's not, really. It's not.

You know there's something wrong with your theory when it implies multitudes of people are crazy. Between you being right about everyone being mad and you being wrong because you missed something, statistically, chances are you've missed something.

The explanation is simple: Apple maintains a momentum in its release cycle, and doesn't charge an arm and a leg for it, which is why people gladly pay them for these kinds of upgrades.

At USD 499 (Vista Ultimate's original price), you darn right better not be paying for service packs. Apple charges less per release (steady at USD 129, Snow Leopard has been their first release to break that pattern at USD 29), and releases it more frequently.

It's the community, stupid!

It's a once-in-two-years event now, the operating system release. It's something users have now come to expect. It is a steady, incremental, predictable release cycle, which doesn't reinvent the wheel, or throw users off-balance every time. Once every two years, the Mac community wakes up from its torpor and everyone is abuzz about their "paid service pack."

Microsoft, however, is anything but steady. I don't say this with contempt, but with sadness: I wish they didn't drop the ball so badly. I waited till the cows came home for Longhorn after the disappointment that was Windows XP.

For all the love Windows XP gets now, let's not forget that Windows XP was a disappointment until SP2. The only thing it was, was stable, and that's only relative to their previous releases which is setting the bar quite low (and arguably what they did to make everyone fawn over Windows 7, including myself).

XP was insecure and slow, and came with those awful message pop-ups that made life very difficult for an everyday user out of the box. After using commodity hardware to "locally assemble" my own machines to consistently horrible results, they started losing my mindshare by that point.

By the time SP2 came out and things started settling down to some semblance of sanity, I had moved into the loving arms of OS X 10.2 Jaguar. An operating system which also happened to be border-line unusable, but in my books was a step-up from Windows XP pre-service packs. Not because it was stable, because Windows XP was actually quite stable, despite being slow as molasses. No, not because it was fast, because it wasn't all that much faster than XP.

OS X 10.2 Jaguar had one killer feature: it wasn't Windows.

I hated the PC world so much at that point, I'd have settled with an abacus.

I had lost all faith in computers by that point. I think to this day, I never quite figured out how to install a modem driver in Windows 9x properly. Yes, I might be an idiot, but I’m an otherwise functioning adult who could install other drivers, so why not this one?! I had to take my PC to the workshop for them to take a look at my himem.sys to make my Transport Tycoon work. Randomly failing commodity parts was the bane of my existence, and was touted as the most compelling feature of the PC “ecosystem.”

You can keep your ecosystem.

When I came to the National University of Singapore in June of 2003, and I went to the laptop fair, I made a beeline to the Apple store, and didn't look any other way. I bought a 13.1" iBook G3 at 900 MHz: an underpowered, over-priced machine that only ideologues and die-hard fans would buy, but a machine I loved to bits and used for a good 4 and a half years.

I was just glad to be rid of that damned "Personal Computer."

It was only with the introduction to Linux in 2004, and a steady observation of its internals that I slowly started regaining some faith in the world of computing. I think it was only until very recently that I've started thinking (once again) hey! Computers are kinda cool!

Everything was so neat and clean in the Linux world, it really made an impression on me. Directories for configuration files, clean scripts with consistent interfaces to start and stop services, different ways of interacting with the computer (the CLI or the GUI), solutions to operating system problems which aren't "do a reinstall." What a breath of fresh air! This stuff actually works.

And Linux didn't (and doesn't, to this day) do everything. But whatever it claimed it did, it did well. The rules were simple and elegant, and the philosophy facilitated the process, it didn't get in the way.

So, no thanks to Microsoft for that.

But that's okay. Let by-gones be by-gones. I switched loyalties, Longhorn became Vista, which crashed and burned spectacularly, Apple has been massively successful since, Firefox nudged IE out of cryonic hibernation, and Google has woken Microsoft up from its dominance-induced coma, and Windows 7 is coming about, and it's something even I'm a bit excited about.

And yes, Windows 7 is Vista SP2 and with ripped off ideas from the Mac OS X. And that’s perfectly fine.

I don't mind that OS X steals from Windows or that Window steals from OS X. That's what this is all about, it's a discourse, it’s competition, it’s an arms race. Going “me too!” is not only perfectly fine, but encouraged. Microsoft in the 2000s was so technically inept that Apple had the chance to implement a feature they announced as MBA-driven marketing hype before Microsoft themselves could do it (fast desktop search, now called Spotlight, released first in OS X 10.4 Tiger, well ahead of Vista's release).

I'd probably buy Windows 7 it if it was priced a bit cheaper. It's still too expensive after what they charged customers for Vista. Hopefully they'll slash prices, but I'm glad Microsoft is about to come back in the game again. Nothing is set in stone yet, we have to wait till the fat lady sings on this one, and its classic Microsoft to set the bar so low that even a whiff of “not-a-massive-failure” gets people excited, but the outlook is favourable.

The late 90s and most of the 2000s has been a period of stagnation in the computer world with Microsoft's unchallenged domination, which its competitors are to blame as much as Microsoft's predatory market practices.

Now, with competition returning in the browser world with the Phoenix-like comeback of Firefox from the ashes of Netscape, the second-coming of Apple thanks entirely to Steve Jobs, Google's steadily increasing boldness and earthy common sense, and Microsoft's (still-hyped and as of yet unsubstantiated) comeback with (the incremental update that is) Windows 7, we, the customer, have everything to gain. Competition is returning, and users clinging on to 9-year-old operating systems will hopefully be a thing of the past.

Interesting times are ahead.

Thursday, August 06, 2009

Perl as Glue, and the Ebbing of Mindshare

People have lovely things to say about Perl, and one of the first things you'll hear is that it's great glue. It's good for stringing things together, and making them work.

The problem with glue is that it doesn't constitute a "good solution" in the mind. We know of glue as something we apply on our shoe when it comes apart, just as a stop gap until we can finally get a new one. The Tata Nano is held together with glue to cut costs. Make no mistake, this is a technical achievement and an innovation, but we all know what people would rather have used: steel rivets, like what they use on the space shuttle.

Well, that's what the rich people get. Poor people get glue.

This is, of course, technically inaccurate: industrial strength glue holds everything from our iPods to our vehicles together. But the crisis has always been one of perception, not of reality.

Perl is a lot more than "handyman glue". It's like saying steel is good for nails and that's all it's good for. No, you can make ships out of steel as well.

This perception of Perl as that special, weird-looking wrench which fits into corners other wrenches can't fit into is what's holding it back as a serious language. People will only use it when their "normal" tools don't work, so they don't appreciate it's greater applicability.

But it's a difficult problem to solve. Because Perl is great glue. It's Soviet-gymnast-like flexibility is what makes it so powerful, as nails that holds your chair together, and as the stuff that makes up the hull of the USS Enterprise.

Perl has a long, varied, and continuing history in web applications, so it's really quite sad to see it having lost so much of its mindshare after having come so far. It's "sad" for me, because I'm only now at the cusp of my career as a web application developer; I wasn't around for the first 2 acts. So I have very little idea of what "mistakes" Perl must have committed in the past to now be relegated to the rusty toolbox of the IT world, but I'm sure there must have been some.

The company I work at is now seriously reconsidering continuing with Perl. We want to move to Java, and partly, even I'm convinced that a solution in Java is a more sustainable one. In fact, my only argument for sticking with Perl is a not exactly a shining vindication of Perl (although it is ultimately correct): we have too much momentum and expertise in Perl to drop it like a bad habit just yet. If we're going to do it, we have to plot a methodical and gradual migration away from it.

But in this current round of technical naval-gazing within my organization, even if I get everything I ask for, the next few years will see the end of Perl in yet another enterprise environment as we slowly transition to the suited and booted Java Enterprise Edition.

Recursive Dependency on CPAN

Trouble's a-brewin':
Recursive dependency detected:
=> Test::Harness
=> A/AN/ANDYA/Test-Harness-3.17.tar.gz
=> File::Spec
=> S/SM/SMUELLER/PathTools-3.30.tar.gz
=> Scalar::Util
=> G/GB/GBARR/Scalar-List-Utils-1.21.tar.gz
=> Test::More
=> M/MS/MSCHWERN/Test-Simple-0.88.tar.gz
=> Test::Harness.

Cannot continue.
This is the output from a CPAN shell. This is a fresh install of perl on Ubuntu Hardy Heron (LTS). The CPAN that comes built-in is obsolete, and an install Bundle::CPAN is in order at the CPAN shell after you've initialized it at the first run.

This problem can be fixed by manually installed the "offending" module, which in this case is Test::Harness. It needs to be installed but needs itself to install itself, which makes no sense (even for perl).

Exit CPAN, and go into your cpan directory:
cd ~/.cpan/Build/
cd Test-Harness[tab]*
perl Makefile.PL
make test
make install
Manually installing the module will break the recursive dependency. So fire up CPAN and breathe normally.

Hopefully this will come in handy to someone.

* CPAN distributes modules with the version number appended after the module name. So the build directory for Test::Harness v3.17 is called Test-Harness-3.17/. Sometimes it appends random strings at the end, so that a more recent download of the same Test::Harness v3.17 doesn't overwrite the old download. So press tab to let your shell take care of the details. Tab completion is your friend.


About Me

My photo
I write essays in my spare time on things that are important to me. The ones that I feel are any good, or make any sense, I put them up here. :)