Saturday, August 2, 2008

Back to Linux, again.

My first adventure with Linux was installing Ubuntu 5.04 (Hoary Hedgehog) on my server in mid-2005. At the time, I was still essentially a rabid gamer, and couldn't possibly conceive of installing a non-Windows operating system on my primary computer. None of my Computer Science classes at SJSU required a Unix-based operating system, OS virtualization was in its infancy (I'd say it still is), and the WINE project hadn't gotten very far with 3D acceleration.

When I took up an interest in Linux, it wasn't to change the operating system of my desktop, but of my home server. I've long had a home server, back before they were trendy. Since about 7th grade, I've run a private website of one kind or another, and I quickly left the realm of Tripod, Angelfire, and Geocities for build my own server. The server gave me full control over my content, and comparatively limitless space to store the pictures and sound clips I wanted to include in my "web posts" (the term "blog" didn't even exist back then).

So, I downloaded a copy of this new OS "Ubuntu" and burned it to a CD. So far, so good. What happened next is something that the informed reader knows all too well. A recent XKCD comic encapsulates it nicely:

Some time later, I found myself fairly competent poking around Ubuntu, and I tended to come home from a class only to hop onto the server via VNC and start breaking things. I got bored, and started inquiring into what else I could make the system do, now that I had unprecedented control over the machine.

Digging around in my big box of computer parts, cables, USB trinkets, and dust, I discovered an old Hauppauge WinTV tuner card I had somehow obtained from one of my sister's friends when I was in high school. I threw it into the server, and started Googling (genericide for the win) Linux applications which could make use of this hardware. I quickly came across MythTV, and the next day I was the proud owner of a "FreeVo". Inevitably this led me to constructing a serial port infrared receiver, installing LIRC, and using a standard universal remote to control MythTV.

For a long time following, the server worked as a media center pc (again, before that was the name for it) and my roommates and I enjoyed free low-quality recordings of our favorite tv shows. MythTV had a lot of bugs at the time, and would frequently crash, which forced me to repair something every couple of days. Ubuntu was only in its second incarnation then, and things didn't "just work" consistently, yet.

At some point later on, I quit World of Warcraft (for the first time, hehe) and installed Ubuntu on my desktop as my primary operating system. I was fairly confident at this point that I could make the transition, but I wanted to keep Windows XP as a secondary operating system just in case. To do so, I used Partition Magic to split up my partition into two, and left Windows XP on the smaller one.

Almost immediately I started having troubles because of the transition. See, migrating a server platform to another is pretty straightforward, because you don't use the machine to open spreadsheets, play games, or visit websites. I had to install WINE and Internet Explorer, because my school's web application for viewing student records was a rotten piece of crap and truly didn't work on FireFox. I had to use my Windows partition for Excel, because OpenOffice didn't handle cell merging quite the same as PHP PEAR, which I had used for my job to build an Excel writer for cost sheets. I also had constant problems with my wireless card, because the wireless stack support in Ubuntu was practically nonexistent at the time. I had to use ndiswrapper and reference the Windows drivers for my wireless card, to keep it running.

Things eventually ironed themselves out, but within the year I took a job writing a Windows standalone application and was forced to switch back to Windows. I've been using Windows since then (late 2006) and complained occasionally. Mostly, I've been waiting for Linux to improve. And boy, has it.

With my newest job came the requirement of eventually purchasing a server to power the application. Naturally, my first choice was Ubuntu Linux, and I was more than impressed with how far the OS has come since I left it. Setting up the professional-grade server went so well, it made me reanalyze my current setup at home. See, now I work in an office, so I can do whatever the hell I want to my desktop.

Before venturing back into Linux, I checked nonstandard issues I knew I'd have to solve. I researched the new Atheros wireless stack, VMWare Server and VirtualBox, how to setup Ubuntu to network with my Apple Time Capsule, and checked to see if the various applications I occasionally use have Ubuntu equivalents. In every category I was satisfied, so I transferred all my Windows data to the Time Capsule and nuked my partition tables.

So far, Ubuntu has been running very nicely. I had no problems setting up my dual screens, ATI graphics, Compiz Fusion, and Samba networking for my Time Capsule. I did have troubles with VMWare Server (mostly due to the fact I'm running 64-bit), so I decided on VirtualBox for any Windows-related testing. Neither supports 3D acceleration, so I'm probably stuck with using WINE-compatible only games/programs, or finding a Linux alternative. OS virtualization still has a long way to go. Also, VirtualBox doesn't support OSX, which bothers me as a developer, since I'm primarily a Java programmer and want to be able to test on XP, Vista, OSX, and Linux GTK.

Every now and then I'll get a random kernel panic that drops me out of X11, but I haven't diagnosed the problem yet, because it's only happened a couple of times. Now, I do get occasional bugs like this on my MacBook Pro as well, so it's not like this is the end of the world. I understand no operating system is perfect, and there's likely a couple hundred thousand reported cases of exactly the same bug I'm having, so I figure I'll wait for one of the automatic updates to eliminate it.

The developers of Ubuntu have done a great job of keeping pace with OSX, and surpassing XP and Vista in terms of stability and gloss. Everything that is said to work simply works. I don't have to fight with a task manager to kill applications when they stall for no reason. I don't have to question why half my paging file is full, when I just booted up. I don't have to use a firewall, antivirus, or adware protection. But most importantly, I don't have to wait 196 minutes (not joking) for 30MB of files to copy to my Time Capsule.