January 14th, 2004

I was going to blog about my failed hard drive, but that’s sort of a nonstory, except that Murphy’s Law was in effect as much as possible when it came to backups and the failure itself. It’s surprising that I lost as little data as I did.

So instead I’ll ramble about why I hate Linux.

Don’t get me wrong: I’ve been using Linux since the summer of 1994, when my lab partner in a hardware course pointed me at it (I think this was related to running a MIPS simulator on UNIX). Back then, the Slackware distribution came on many floppy disks (this was a time when CD burners were rare) and version 1.0 of the kernel had just been released. I loved mucking about with Linux then - I was a gung ho nerd ready to deal with thirty floppies copied from the lab (two of which always were bad), compiling my own source distributions, etc. Note this was also the time when I mucked about with CONFIG.SYS on MS-DOS just to squeeze out the extra few bytes necessary to get Wing Commander to run correctly; so masochism was not foreign nature.

Fast forward ten years: I’m old, and I’m lazy. I expect things to just work. I really can’t be bothered to deal with compiling, especially that now I get paid to type make a lot. I don’t want to build other people’s code just to get my damn hardware to work.

Case in point: I bought a FireWire USB/2.0 enclosure for a spare hard drive that was sitting around (which wasn’t actually spare, it was a backup for the hard drive that failed - Murphy’s Law in action). The enclosure is a great device - open it up, connect a hard drive or CD-ROM to the standard IDE cable and power supply inside it, power it up (standard power cable), and plug it in (FireWire 400/800 and USB 2.0). After getting the hard drive formatted on an XP box, here’s how it fared with the three machines I have sitting on my desk:

Windows XP: worked with either FireWire or USB 2.0 cable. No driver installation needed, drive came up automatically as E:. To remove: right click on the little green arrow at the bottom of the screen, select “Remove hardware.”

Mac OSX: plug in FireWire cable. No drive installation needed. The drive is automatically mounted under /Volumes (note that this is an NTFS formatted filesystem!). To remove: drag icon on Desktop to Trash.

Linux (RedHat 9.0): plug in FireWire cable. Nothing. Look at dmesg. Hmm, no mention of a file system. After much googling I find out that the related kernel module is called sbp2 - and that there is no hot plug support, so the module sometimes needs to be unloaded to get the drive to be recognized. Even after that, the drive masquerades as a SCSI device. Totally intuitive, huh? So I end up having to type:

rmmod sbp2
modprobe sbp2
mount /dev/sda0 /mnt/removable -t ntfs

Hmm, that failed. Yep: no default NTFS support in Linux. Nuts. Googled to the Linux-NTFS Project, figured out which kernel I have, downloaded and installed the right RPM, and finally it’s working - except there’s no write support, so I can just read my music off the drive, and nothing else. Sigh.

Don’t get me started on Linux programming topics. Why oh why is getrusage() so incomplete? Why are shared libraries so badly implemented? Whose brilliant idea is it to make C++ binary compatibility such a fucking nightmare to deal with?

I feel like I can make many unfounded and inflammatory comments which will get zealots riled up, but I’ll just make one: noone really wants to deal with ugly grunge work unless they get paid to deal with it. And that’s the problem in open source: noone gets paid to do it, and it’s that kind of grunge that is often absolutely necessary even if it’s not glamorous. Polishing the user experience for hot plugging FireWire drives is grunge. getrusage(MAX_RSS, …) is grunge. What unpaid programmer really wants to go implement that sort of thing? I certainly don’t.

End nerdiness.

Leave a Reply

© 1999-2008 Julian Fong