2009-10-17

VirtualBox and Integrating Systems

When I first started programming, it seemed that the most important and problematic portion of a project was the project: getting an idea shepherded through design and programming and testing. Many small projects fell by the wayside because I couldn't focus on it long enough to complete it.

Now, finishing a single item is not too hard; what's hard is doing something useful with a single system. All of the really good data is on the web, inside Facebook and Twitter and Amazon. I recently decided to start exploring the world of Google Wave. I installed a Wave server inside a Turnkey virtual appliance running on VirtualBox. Like many things, Wave is based on something else: the OpenFire XMPP server. I spent most of my time downloading each item (Turnkey appliance, OpenFire server, Wave server) and a bit of time following some instructions online.

I feel this is really what modern development has come to: install a big pile of frameworks and paste your layer on top. Or in the middle. Or wherever it goes. Most of the time is integrating the many systems involved or figuring out which piece choked during this particular bug. Not that there's anything wrong with that... there's just a lot that needs to happen before anyone's able to do what they've set out to do (like writing a Wave client).

Really, most of my work today was documenting the process so that the folks over at Turnkey can produce a full Wave server appliance. Then most of the work for deploying a production Wave server would involve downloading a live CD, changing some settings, rebooting it, and allowing the traffic through the firewall.

VirtualBox and Turnkey are really changing how I view servers in general and development in particular. Now I can set up a clean LAMP server in about 45 seconds and start writing code. I can provide a high level of support to my clients or explore ideas without much up-front effort. I've even looked at some really exciting things, like a fully-configured Android SDK virtual device. Then you can fire up a whole new development toolchain without having to muck around with your development computer.

I'm really amazed at where things like virtualization has gotten us, and really looking forward to where we're going.