Virtualization software has come of age. Using virtualization, you can run an entire second computer (a virtual machine) as an application inside of your primary computer. The technology has caught on in the data center, where virtualization allows IT managers to make more efficient use of hardware resources by combining multiple logical servers into a single physical server, which has benefits for reliability and scalability. But with software like Microsoft Virtual PC and VMware Workstation for Windows, Parallels Desktop and VMware Fusion for the Mac, or VMware Workstation for Linux, this technology is available to the digital Bedouin as well. Here are four ways that I’ve found to incorporate virtual machines into the hectic web worker lifestyle.
Separate Working Environments – Are you doing PHP development for some clients and Rails work for others, with two different preferred ways of setting up your tools, path, and so on? Instead of constantly reconfiguring your machine, set up a VM for each client, and install just the tools you need in each VM. Then it’s a simple matter of working in the VM that you need, without worrying that you’ve forgotten to change some setting. The next step is to keep (and archive) a VM for each major deliverable. If a maintenance issue comes up in 6 months, you can quickly get back to exactly the code and tools you were using when you delivered things.
One Foot in Both Camps – If you’re a Windows developer who wants to switch to the Mac but who can’t afford to give up ASP.NET work (or who doesn’t want to let down existing customers), buy a Mac and run Windows in a VM (the opposite doesn’t work, because nobody is virtualizing OS X…yet). You can have your shiny new Mac toys whenever the pressures of legacy support don’t force you back into the Windows environment. You might even find that there’s a market for smart people who can speak in both dialects.
Virtual Client Server – Just about everything you might want to develop can be done on a single computer these days. But if you’re doing “enterprisey” work you might find yourself wanting to test against a separate server box running your database or web application. Rather than carting two laptops and a hub to the coffeehouse, virtualize that server and run it inside your existing laptop. Sure, it will be a bit slower that way, but you won’t look like the biggest geek on the planet either.
Living Less Dangerously – Do you find yourself forced to install beta software or version 1 releases that are less than perfectly stable? Or perhaps you’re the sort of technophile who just automatically gravitates to the latest and greatest. Living on the cutting edge can be fun, but it’s less fun when you find yourself having to repave and reinstall your entire operating system because you managed to destabilize the whole computer. Set up a VM named “Sandbox” and use it to test out all that cool new stuff. Then you can migrate applications to the real machine after they prove to be both useful and stable.
One tip: if you’re going to load multiple virtual computers into a single physical computer, you want to make sure that the box is loaded for bear. Max out the RAM with as much as you can buy. You’ll also find that there’s a substantial performance improvement to be had by keeping the virtual machine images on a separate hard drive, so it makes sense to buy a fast external FireWire or USB 2.0 drive to hold them.
Have you incorporated virtual machines into your mobile lifestyle? We’d love to hear about any novel uses you’ve come up with!