Monday, May 25, 2009

Religious Wars

I work at a place that is 100% Windows OS driven. Despite Microsoft's release of Vista, we are solidly XP Professional.

When I chose a computer for home, I picked an iMac. With the advent of Apple's OS X, with its core based on the unix-like Darwin (nee' Mach) operating system, I was attracted to the chance to use a *NIX box and take advantage of the multitude of software available. It is a bit harder slog, if one opts to download and compile source code for thing, but it is a very good, and very educational, way to work. And the native OS X look and feel is very good. I won't say better than XP, although I prefer it. I will remain unchurched in the OS religious wars.

Still, there are things available on XP that I like. I have had a lot of fun, and learned a great deal, using Microsoft's Express Editions of their compilers for C++ and C#. It is not impossible to do the same sort of programming on the Mac, and I am learning some of this, too. But MS has a pretty extensive evangelization effort for their compilers, and there is a large body of work that I wanted to take advantage of, so I had been doing some development on my XP laptop.

However, I recently discovered something called VirtualBox, a Sun Microsystems product that allows one to run other operating systems (called 'guests') under an existing operating system (called the 'host'), like *nix or OS X. I got a copy of Ubuntu linux and began running it, and was impressed by the performance, so I decided to get a copy of XP and load it as well. Having seen it work with Linux, I was not too surprised to see XP boot without a hitch.

VirtualBox comes with software called "guest additions", which allow certain guest operating systems tighter integration with the host, and with the underlying hardware. In the case of XP, this allows some access to serial and USB ports, and allows more screen resolution. Apparently it makes things faster, but I installed them immediately, so I didn't see.

Despite running beautifully on my Mac, all the pointedly irritating things about XP persist. Connecting to a network printer was far harder than it should have been. I set up the damned network here, and my Mac and my wife's PC (where the printer is located) are not 6 feet from one another. I fiddled with it for half an hour, but it did eventually work.

From a philosophical point of view, there is something awesome about virtualization, running an OS on another OS. As hardware become ever more powerful, we can make any hardware look like any other hardware to software. I am not doing this idea justice by sitting here, slack-jawed, but at the moment, that is all I can do.


About 60% of what I do every day at work now involves me writing software. Of that, the largest part is LabVIEW, but this has begun to expand into C++ and C# as well. There is a tremendous amount of overhead involved in writing software, but the payoff is that once the programming is finished, if it is well-written, it is possible to get data at a rate unimaginable in the absence of the automation the software provides.

That describes pretty well why I put up with writing software- automation of data collection makes it worth the headache. Only, as I do it more and more, it becomes much less of a headache, and something altogether different. It has become a means of thinking about the world. The algorithmic mindset, I find, complements the scientific. I have heard it said that programming should not be an experimental science. Well, in the hands of an experimental scientist (at least this one), it most certainly is.

I cannot imagine programming to do something like accounting or database management or business systems, though I am quite happy to use the fruit of such labor. It would not be something I could stomach, I suspect.

But getting things to do stuff...this is intoxicating, and I like it a lot.

In the process of doing experiments, I have learned a little about programming microcontrollers. I can't pretend that programming a microcontroller to run a dishwasher sounds like crazy fun, but it doesn't sound bad, either.

The key is that the combination of software that allows one to control things, coupled with chemical and other scientific knowledge, allows the creation of systems of fairly awesome power. I am keen to try to learn more, and hopefully post some of my non-professional experiences here. "The man" owns my professional experiences. Not that I am complaining. I'm pretty happy to be in the employ of "the man" in times as tough as these.