An Emulation Rumination

In my lifetime I have spent my time using three software platforms that actually mattered in the outside world. The first was Berkeley Unix on a Vax in college (yeah yeah, you might not think this matters, but without BSD there is no Linux and more importantly, no Mach and no modern MacOS). The second was Windows. The third was, and continues to be MacOS X. I’ve also used Linux but in user land it’s similar enough to other Unix to not really matter to me as its own platform.

Occasionally one finds oneself needing to migrate between major platforms. I’ve had a lot of friends who had to go from using Unix in graduate school to Windows in the real world, for example. My advice to them was always simple: make a clean break. Don’t use emulation environments like Cygnus. The reason is simple: there is nothing worse than an emulator that almost works.

In the case of Cygwin and other systems of its ilk the problem is simple. You can try and fool me into thinking that I’m using a Unix shell and all the standard shell utilities, but when push comes to shove it’s inevitable that Windows semantics will leak through. Things like file system syntax, the process model, or something as mundane as how memory protection works will eventually shatter the illusion and the tools will not work right. As the user, you have to constantly look over your shoulder for this. Life is too short. Better to just learn the native way to do things instead.

Ever since the Intel Macs shipped, we’ve been in the same kind of situation with respect to running Windows software on our beloved Apple hardware. There are basically three choices, all of which have problems.

1. Bootcamp. Runs everything, but you can’t run the Windows stuff side by side with the Mac stuff.

2. VMWare or Parallels. Now you can run side by side, but not everything works.

3. Crossover. Like VMWare, but worse.

Now, the only reason I want to run Windows software is to play Valve games. The reasons are simple. I don’t need to run Office and the like. Blizzard games already run on the Mac natively. And as we all know, the only PC games worth playing are from [Blizzard or Valve](http://tleaves.com/2008/10/22 /minimum-standards/).

In particular, the only reason I installed Crossover in the first place was to run Steam and the supported Valve games. But, here’s the thing. It never really worked. It almost worked. Really though the experience was just like trying to run a Unix shell with Cygwin. Every time you turned around you noticed that you were not really in Steam, you were in something that looked like Steam on the outside but only worked about 75% of the time. Crossover also teased you with the possibility of installing non-Steam games to run on your Mac, but that experience was even worse. Most of the time you’d start the install process and it would chug along until you actually had to put in a content DVD, at which point it would fail. Again, you get the promise of a seamless experience but the reality of something that is only 3/4ths of the way there.

As negative as this sounds, I don’t mean to say that I don’t appreciate the effort. I really do. But the reality is that over the year and a half or so that I have tinkered with Crossover, all I’ve really accomplished in it is to replay about a third of Half-Life 2. The whole experience just never quite clicks. In fact, it’s nicer to use Steam inside VMWare than with Crossover.

Of course, now things have changed. Now Valve has announced that Steam and their major titles will be available on the Mac in a native port that will start shipping your computers next month some time. This is certainly grand news. What it means to me is three things.

1. All the PC games I want to play will be on the Mac.

2. No need to humiliate myself by buying a cheap Windows laptop for Valve games.

3. I can delete Crossover.

Now all I need to do is make sure my Half-Life 2 save file is in the “cloud.” I wonder how I do that.