Virtually sorting out development machines

By: Jason


One of my key responsibilities is to ensure that new developers at Globaldev can hit the ground running and code from their first day and one thing that can slow new starters down is setting up their Mac development environment.

When I joined Globeldev I inherited some existing set-up guides but these needed bringing up to date and a complete set of instructions was spread across several electronic and paper documents and in a few peoples heads!

Short of extracting the knowledge out of individuals and magically combining all the documentation I had a challenge on.

The biggest issue I had was testing the development set-up guide consistently. If I ran through the instructions and hit a problem, I could fix it and update the documentation but would it work from fresh start? The only way to be sure would be to wipe, re-install OSX and start again.

If I hit a few hurdles like that it might take some time to stop, reinstall each time, get back to where I was and try again – nightmare. I grabbed a coffee and blocked out the next few days.

I was contemplating a fairly complex (and legally dubious) hack to get OSX Snow Leopard working in a Parallels virtual machine when overnight (and seemingly in response to my predicament), I received an e-mail announcing the release of Parallels 7!

Whilst any major release of Parallels is worth getting excited about for the speed improvements that usually come with it, one particular feature of version 7 stood out more than any other:-

“Install Lion as a Guest Operating System”

Blam! My Day just changed.

That morning I ordered an update and installed Parallels 7 on my Macbook Air running Lion. Aside from the new Lion guest install feature (the main reason I wanted to try it out), I was blown-away by the performance improvements in version 7. So much so in fact I’ve since upgraded my own Parallels 6 install on my own MacBook Pro and installed a fresh copy of Windows 7, ditching my former bootcamp set-up.

Windows 7 now runs as a pure virtual machine and feels as fast (if not faster) than it did native under bootcamp. On my MacBook Pro SSD it boots in 6 seconds and when running full-screen I can’t tell it’s a virtual machine.

But, I digress. Back to my story.

So, Parallels 7 installed, blown away by performance etc. The next step was to install Lion as a virtual machine but how?

I clicked the Parallels menu :-

File > New > Virtual Machine > Install OSX Lion using the recovery partition


Less than 40 minutes later I had Lion running in a virtual machine and it was fast! After installing software updates I saved a snapshot of the “Vanilla” set-up and I was ready to proceed.

Snapshots became a key part of the next few hours as I systematically ran through the development set-up guide I’d updated previously, testing each stage, whilst taking snapshots along the way.

I now had the ability to test and rollback if it went wrong. The MySQL install failed and it wouldn’t start. No problem - I simply rolled back to my previously saved snapshot and tried again, correcting the set-up guide with the relevant fix.

A few hours later and I had fully tested the set-up guide from start, to finish and it worked flawlessly. I’d managed to remove redundant notes, update links and software versions, and streamline the guide for setting up each development environment (for Ruby on Rails or ColdFusion development).

Largely thanks to Parallels version 7 we’ve managed to get a concise and accurate set-up guide in place and I’m able to use my Virtual OSX Lion set-up to test this and any changes we make in future.

More importantly I also have some redundancy in terms of a “shake and bake” development machine I can fire up in a few minutes. This is ideal for a situation where we have a fault with a developer’s machine. We can now grab a spare machine, install Parallels 7 and boot up the virtual development environment in minutes, saving valuable time.

What challenges have you had with your development environment? Why not share your stories with us.

About the Author