The key thing that makes VMWare great for me is being able to treat an entire “machine” — operating system, software, everything — as a file. It’s nice being able to run more than one of them at a time though it would be faster if I had one of the newer chips with hardware support for virtualization, but the aspect of virtualization that keeps me using it despite the speed hit even though I actually have enough hardware to run everything on its own box is being able to treat the entire machine state as an easily copied file. I can move it between machines. I can run everything on one box if I have to. I haven’t even begun to take advantage of the API VMWare exposes for scripting control of making and controlling virtual machines.

I first started playing with VMWare back when they sold a “personal” license of VMWare 1.0 for $99. It was neat then, but I didn’t have much use for it. It was too slow for anything I thought to do with it. When they released VMWare Server beta a while back, I tried it again. It was still cool, and both machines and the software virtualization was much faster than it used to be, but I didn’t really have a use for it.

The last few weeks I have had a use for it. Hardware virtualization has been very handy in setting up development environments and moving them between the machines I use for development. It is as if VMWare is an editor for the file I’ve been working on — a development and test environment for a server.

If you do almost any kind of software development it is worth spending some time figuring out if virtualization might be useful to you. I have experience with VMWare and Microsoft’s Virtual PC. I also played with User Mode Linux. UML is neat but isn’t quite enough virtualization for what I wanted. So far, VMWare Workstation and Server have proven most useful as development tools to me, but I still use Virtual PC for my sacrificial Windows XP box — the “machine” I run untrusted apps on when I have to for some reason.