2010 marked the first W2-free year for the residents of Chaos Central in more than 45 years. No, we didn’t get laid off from $JOB like so many Americans: after dabbling for years in part-time consulting, we’ve taken the plunge and are now completely self-employed. While we still have to wait until the end of January 2011 for the 1099 forms to trickle in, we do need to start estimating our taxes early, to make sure our quarterly payments track with the IRS’ estimate of what we should owe. So, off to the wholesale club to pick up this year’s copy of Intuit’s Turbo Tax, which we’ve been using for the past ten years or so.
Chaos Central is a Unix shop (this is the Unix Curmudgeon’s blog, after all), and the development projects haven’t justified adding an Apple with OS/X to the stable of machines, so TurboTax and other Intuit products do present some problems for us. For several years, we’ve maintained a Microsoft Windows system for the sole purpose of running TurboTax. Since the demise of our aging Windows installation (see our November post, “5640 Reasons to Not Use Windows” for the whole story), we’ve relied on Oracle’s VirtualBox virtualization application to run Quicken 2010 under a Windows XP license that came with a machine that has long since died. We also have clone of the XP system that succumbed to a ClamWinAV bug, running under Citrix XenServer.
The system running under XenServer–thank goodness we ran the clone process as part of our evaluation of XenServer–was the one under which we’ve been running TurboTax, so it was a logical choice for this year’s version. Alas, the remote desktop capabilities of XenServer just weren’t up to the video calls that TurboTax uses (what the Unix Curmudgeon refers to as “stupid Microsoft tricks”), so we copied last year’s TurboTax files from that system to the system running under VirtualBox, and TurboTax installed just fine, and loaded our profiles from last year. In fact, it installed remotely, as the VirtualBox server is in the Realizations Fabric Arts studio, and the XenServer system is in the Information Engineering Services office, one floor up at Chaos Central.
Being too lazy to trot the TurboTax CD downstairs, the Unix Curmudgeon simply looked up the block device that the CD was mounted from (sr0), then ran ‘dd if=/dev/sr0’ piped to an SSH session that launched ‘dd of=Turbotax.iso’ on the VirtualBox server. Both XenServer and VirtualBox allow you to use ISO images as virtual CD/DVD drives, so there is really no reason to burn CD or DVDs from downloads to install virtual machines.
This is still a bit of a pain, as running Windows programs in this way requires you to actually run Windows itself. Worse, Windows is an unruly virtual machine, as it tends to gobble up as much CPU and memory resources as you assign to it. Windows is also an unruly remote desktop server, as it doesn’t respond well to the remote mouse movements, resulting in much frustration, though the presentation on the VirtualBox server console itself is adequate. The virtualized XP installation on the XenServer is there now for the sole purpose of providing the XenCenter console. Citrix apparently intended XenServer to be used for virtualizing Windows Server instances, so the XenCenter, naturally, only runs on Windows.
Our preference, if we must run applications that are only available for Microsoft Windows, would be to run them under Wine, the WINdows Emulator, an Open Source tool that runs under Linux, that translates Windows system calls into Linux system calls. Unfortunately, many applications rely on Microsoft intrinsic shared libraries (DLLs) or use so-called “undocumented” tricks to perform well under Windows, so they can’t readily be run under Wine, which is a feat of reverse engineering that dozens of Linux programmers who can’t give up their favorite Windows-based games or killer applications (like Adobe Photoshop) have devoted much time to getting to run under Wine, by trial and error. TurboTax is one of those applications that, since it incorporates some direct memory accesses as part of the protection mechanism (an example of an Undocumented Stupid Microsoft Trick), just can’t be run in emulation easily. But, since virtualization emulates the Windows hard drive, these tricks can be safely executed in the Unix environment without harm to the host or the client application realizing the disk sector it was writing to was simply a block of bytes in a file on a larger system. The other trick is to successfully map Windows video tricks onto a virtual video card and then translate it into an image that can be displayed on an X Window system terminal. Some applications that make extensive use of the Active-X protocol, of which Microsoft is so proud, render “active” regions in such emulations as blacked-out areas on the display.
So, you say, “Why don’t you Unix Curmudgeons just use Windows, as $DEITY intended?” Because, dear reader, whereas the Microsoft Vision is “One user, One computer,” for us, in the words of the vision of the late, great Sun Microsystems (now part of Oracle), “The Network Is the Computer.” The Windows user experience is limited by system settings for “desktop” or “server” priorities, while Unix systems can be fine-tuned to meet almost any unique computational environment, and the fundamental philosophy of Unix promotes equitable sharing of resources among hundreds of processes, which may be owned by many different users, with complete security. On my screen at the moment are complete graphical desktop presentations from a half-dozen different computers running different versions of Linux, and individual applications running on those and other computers, from which I can cut and paste text as if they were all running locally. This is a concept of which most Windows users cannot even conceive, even though the web browser, that universal window into the broader network, offers some of this capability. We grudgingly use Windows only for applications for which workable equivalents are not available in Unix, and will stop using it when they do become available for our preferred systems.