Using virtual machines for development

Although I’m still enjoying my Mac, I’m spending most of my time on my Windows machine at the moment, because that’s where I’m doing most of my current development work. And after having merely dabbled with virtualization technology for a while, I’ve now made the full and complete move into the world of virtual machines (for development purposes, at least).

I did a clean reinstall of Windows back in August, and I had every intention of keeping it nice and clean and shiny…for at least a few months. Well, that didn’t quite work out. Download fever hit, and the normally slow accumulation of cruft turned into an avalanche of demos and betas. Then last week the PC said “forget it”, and refused to start up properly. It would get me into Windows, but without sound, network connectivity, or a clutch of other essential services.

Rather than wiping the hard disk and doing another reinstall, I tried doing a Windows “Repair”, i.e. sticking the Windows installation disk in the drive, and just letting the setup process smear itself all over the existing installation; and that did the trick. Incidentally, this is also where I first noticed that if you have a Google account (e.g. through Gmail), Google is now tracking links you have visited, and tells you if you how often you have visited a link before, and when the last time was you went there (via Google’s search results). Fortunately, I’ve given up on finding Google’s tracking behaviours creepy and intrusive.

Google's tracking information

Anyway, where this is all going is here: no more installing development tools or random crap on my main machine. It all goes into Virtual PCs now. I’ve created a couple of “base” VPC builds:

  • Vanilla Windows XP build (XP with all service packs and hotfixes, and Firefox.
  • Vanilla Visual Studio 2003 build (as above, but with VS2003, IIS, SQL Server, MSDN Library, FileZilla, and a few other basic widgets)

I’ll create more base builds when they become necessary (a Visual Studio 2005 build will happen very soon). Each project I’m working on now has its own virtual machine, cloned from one of these base builds. No more worrying about software I’ve installed for one project interfering with another, because they each have a whole machine for themselves. The virtual machines are portable, so I can bring them with me on my laptop; and if I need to reinstall Windows on my main machine, I no longer have to worry about all the pain and hassle of getting my development environment up and running again, because it’s as simple as grabbing a copy from my backup disk.

It’s very, very cool, and I should have done this a long time ago.

The only downside is that my Windows PC is a couple of years old now (Athlon 2500+, 1GB RAM), and using Visual Studio in the virtual machines is definitely slower than working on the host hardware. Not intolerably slow, but slow enough to make me wish for a multi-processor or dual core workstation upgrade, with another Gig of memory, so I could have more than one VM open at the same time. But this would also mean getting a new motherboard, which then means a new video card, and it all starts to get expensive rather quickly.

Never mind. It’s good enough for now, and it is more than worth it to avoid the hassle of software interference.

One Reply to “Using virtual machines for development”

  1. I’ve been wanting to play with virtual machines for some time, looks a bit scary though!
    Google was on the news today, only caught the last bit of it, something about businesses fearing how much info google collects about everyone/thing.

Comments are closed.