Use a VM for your development environment
For many years, I developed software (mostly LAMP and Ruby on Rails) on a MacBook and MacBook Pro. It was always a struggle to have the right stack installed for various projects. Mac Ports became my weapon of choice. Even then, there were enough differences between my development, staging, and production environments to cause unexpected problems. Managing different versions of databases, libraries, etc. was never simple.
At the beginning of 2010, I was fed up with Steve Job’s reality distortion field and defected back to the PC camp. Greeting me with open arms was Windows 7, an OS that I continue to praise. However, I longed for my bash prompt and open source stack.
The solution was to run a VMware VM with Ubuntu as the guest operating system. This solved many problems.
My development machine became consistent with my staging and production servers. I can have a different VM for projects requiring different stacks. No more trying to make my laptop a superset of all environments. When bringing on additional developers to the project, I simply hand them a copy of the VM. Voilà. Their entire development environment is ready to go. No more wasting an entire day on configuring your laptop. I chose VMware because it is available on Windows, OS X, and Linux and the same VM can run unaltered on all three platforms. VMware offers snapshots, so you can easily roll back to a known state if you really mess things up. Now that it’s 2011, a client project requiring OS X has forced me back into Apple’s extortion pricing. This time, however, I will be using the VM solution. I highly recommend it.