I used XP for a long time, and I was generally happy with it while I was using it. Now that I've gotten used to the Linux way of doing things, though, using Windows just annoys me. When I have to muck around in binaries just to change the text of the Start button, Windows isn't doing what I want. Most Linux programs come with reasonable defaults but also with well-documented configuration files that let you set things however you want them to be when you want to tweak stuff.

It might seem hard to believe, but I seriously use Linux because I find it more convenient. I set up my own home network using a Linux machine with several Ethernet interfaces and one wireless one. It runs a wireless access point that I can configure to allow connections based on any rules I wish. It's running a DHCP server and a DNS server to hand out IP addresses and aliases for services like printing (just print to http://printer:631/printers/laser_printer). I'm sharing a networked laser printer with anyone on my internal network, meaning I can fire up a print job from my laptop downstairs and it's finished by the time I get upstairs. I have a low-overhead firewall running to ensure only desired ports are accessible from the outside, and I have easy SSH access from wherever I can happen to connect on my laptop or cell phone.

I plan on deploying early-stage web software on this same machine for testing and evaluation. One ISP in my area offers a standard cable internet service that comes with 3 IP addresses. This means that I can fire up three different web servers listening on each address and run three different web sites from this machine without anyone knowing any better. Moreover, I can easily configure these servers to startup at boot time, so that I don't have to worry about starting everything up properly in the event of a reboot.

Speaking of reboots, it is a very rare occurrence for me; I can run my computer for months without ever having to restart it, even after a re-install of every program on my computer. The only time a restart is ever necessary is while switching to a new kernel version, and I think there are even ways around that, although I think it would be easier to just reboot. Windows requests a restart nearly every time a program is uninstalled or an update is applied. When I want to install a new program, I don't go searching on Google for one and worrying about viruses, or trying to find currently-maintained stuff on SourceForge; I merely type "esearch program_I_want" and get a list of matches, or I can look under meaningful categories in /usr/portage to find what I'm looking for if I don't know exactly what program I'm looking for.

I like a GUI just as much as anyone else; it definitely simplifies a lot of tasks. For really complex stuff, though, a GUI can get in the way as you have to go through several levels of menus to change an option that you may only need changed for one run, only to change it back later. With Linux, most programs do have GUI interfaces, but a powerful command line is only a Ctrl-Alt-T away, and Linux taught me not to be scared of it. Using the power of the command line, I can do things like playing a Stevie Ray Vaughan and Jimi Hendrix mix by typing

mplayer -shuffle `find /media/music -iname '*vaughan*' -o -iname '*hendrix*'`

On Windows I would either have to go through and select them all, have my files sorted in some special way, or write (or find) a program to do this for me. On Linux, tons of small tasks like these have virtually no overhead thanks to the power of its built-in command line and the programs that operate from it.

I just migrated from using mainly a desktop machine to a laptop I recently purchased. All I had to do was get the initial environment up and running, copy over /var/lib/portage/world from my old computer to my new computer and run "emerge -e world", then copy over my personal directory under /home/my_username, and my entire environment was identical to what it had been under my previous setup.

I'm sorry if it seems like I'm just running through a laundry list of features, and I'm aware that some of these things are possible on Windows, but my point is that I am getting functionality out my Linux machine that I never had while using Windows, and I've been able to find extensive online help and documentation for everything I've wanted to do, all without spending a penny. Sure, I may have invested a little extra time here and there, but that time wasn't wasted. While spending the time troubleshooting problems or setting my system up, I was also learning a lot more about how my computer worked. In most cases, the solution is a permanent one. In other words, when I've had a problem with my Linux machine, I've typically been able to find the solution and fix it for good. So many tasks on my computer can be automated, it's ridiculous, while I feel like my Windows experience involved constant maintenance.

Okay... that turned out much longer than I had expected, but I hope it's clear that I'm not with Linux for idealistic or monetary reasons, but because I legitimately find it to be more appropriate for what I want to do with my computer. I think that if more people put a little effort into understanding it (and as Linux gets more mainstream and user friendly), many people will begin to appreciate the things they can do with the full power of their computer in their grasp.

So back on the topic of Java, yeah... I have had trouble getting it running in my browser, but so few sites use it these days that it's just not a high-priority issue for me. If someone is expecting me to jump through hoops to get a site to work, that person has just lost a user, especially when there are so many alternative sites out there that work quite well with better-supported alternatives like AJAX or Flash.