Virtual Machines

If you haven't yet had the pleasure of using virtual machines (VMs) you really need to try this stuff out. The reason I bring this up is that if, like me, you're playing with building server infrastructure for an Arduino, Raspberry Pi, iOS, Android or some other client project, you'll appreciate not having to mess up your main machine while you experiment.

There's only one caveat to using VMs. Computer hardware. If the machine you're using is "weak" then it will struggle to run VMs. Ideally you want a good CPU: it doesn't have to be recent or top of the line, but cheap or low-end CPUs can be a problem. You'll know this is the problem when you start a VM and your whole computer responds very slowly.

Otherwise you need RAM and storage. If your computer has 2GB of RAM or less you need to be careful about which operating systems you install in your VMs and how many you run simultaneously. Basically each VM wants it's own RAM. If Windows 10 runs nicely with 4GB RAM then running a Windows 10 VM will mean your computer should ideally have 8GB of RAM. Likewise with storage. If a basic Windows 10 installation needs 8GB of hard disk space, then running a Windows 10 VM will mean your computer should have at least 16GB.

My daily driver is a MacBook Pro. I'd say it's my "machine of choice" but it's more the machine of dictate. I want to develop for iOS; I therefore have an Apple computer. There's no way around that. However, since leaving the world of Windows - and after being a Windows domain IT Manager for over a decade, I can't say I've missed it a bit. It's gone and that's great. When I need Windows there's a VM for that.


I had a 2011 MacBook Air that saw me through my Computer Science degree and was an absolute gem. While working with my daughter one night I managed to throw a glass of wine into the keyboard. Yep. I powered it down, flipped it over, opened the shell and disconnected the battery. After pouring the wine out and drying everything down I started it up again. It started, the CPU ran 100% and was totally unresponsive. Couldn't use the keyboard, trackpad, network, nothing. Long story short the Apple Store wrote up a repair work order for more than the value of the machine. Insurance wrote it off and I paid the upgrade to get this MacBook Pro.

Now left with a MacBook Air that was written off and worthless except for selling it for parts on eBay I had nothing to lose. I pulled it down, every plug, screw and board. After shooting everything full of circuit board cleaner and paying particular attention to cleaning plugs and sockets I put it back together. Result? You bet. It's now my eldest daughter's "new" laptop. It's been perfect ever since. Score!

Oh, and what did I lose on the MacBook Air while it was dead? Nothing. All my files were on Dropbox and my code was up to date on various source control services online. It pays to back up!

Since I'm on Apple's platform I've paid for Parallels. This at the time seemed to be well worth the $80-odd I paid for it. I certainly have had no issues with it. And the performance is great. The PC I have under my desk was built as a virtual machine server. It runs a quad-core CPU and 8GB of RAM which, at the time was maxed out for a standard motherboard. I ran that on VirtualBox. At the time VirtualBox didn't look like your average operating system. It really was a hypervisor only. The interface was a text-based thing that looked like DOS (if you're old enough to remember that!)

At one job I managed servers hosted on VMWare. At another everything was running on Microsoft HyperV. So I've been around the block with virtualisation. But I haven't got to know any of these products intimately and I haven't kept up to date with them for a few years, with the exception of Parallels.

So what advice do I have for someone who's new to virtual machine technology? First, understand that machine virtualisation is a big field. At the top end you have software worth millions of dollars per year to run massive server farms for the likes of Google and Amazon. At the bottom end you have free editions for home/personal/desktop use. So if you go to the VMWare site to download it, don't get scared off by all the high-powered, high-price stuff. These guys all operate the freemium model. If use the stuff personally you're likely to recommend it at work. When you use it at work you pay for it.

Second, what machine virtualisation technology gives you is the ability to run multiple operating systems on one computer. They can all do this. They all do it well. When shopping around between the major vendors you won't find a big disparity in this core functionality. All of the differentiators will be secondary or tertiary issues: "one click install", "host file system integration" or whatever.

Third, don't pay for it! Unless you depend on it and can justify the outlay to get what you want. The very best virtualisation software is out there FOR FREE!

Lastly, have a look at a comparison (LifeHacker) if only to get a list of the main players in the game.

Download one. Play with it. Google for tutorials if it's not obvious how to get it to do what you want.

That is all.