The Importance of Being Virtualized
The Importance of Being Virtualized
Of all the 90’s sitcoms, there will always be a soft spot in my heart for Home Improvement. No, it wasn’t because of a crush on Pamela Anderson or JTT. Deep down I’m a tools guy.
There are all manner of tools and gizmos I’ve found useful for Getting Things Done. In another era I might have been a blacksmith or a disciple of Zhu Shijie. In this life, software is my trade and the bit is my bread and butter. I used to be an avid reader of Lifehacker and Mind Hacks before discovering it was much more rewarding to surround myself with really great people in the industry.
You should not judge a book by its cover, but I encourage you to judge a company by its tools. Working at Google was a bit of a field day as they have an army of extremely gifted people turning out more tools than Craftsman. Software development, debugging, virtualization – you name it and they’ve got a tool to help. At Hunch, we’ve amassed a collection of scripts, caching systems, and database tools to help make development more efficient (and your recommendations better). Each engineer has a development environment that is a full copy of our entire website (code base, batch jobs, db, etc). While this can be a great boon for the software development process, it is also resource heavy and not always attainable by every programmer (especially for smaller jobs).
- Install a web framework (django, rails)
- Configure a web server (magnum-py, apache, nginx)
- Install and configure additional applications (openID, e-mail verification, password management, user-to-user messaging, wiki, blog)
You may also be developing on a system where you do not have root access. Add multiple projects and different software versions into the mix and you’ve got yourself a nice little code management nightmare.
However, I’m happy to see a number of efforts to make this process less of a headache. The first is Pinax, a Django-based platform for quickly developing websites. It comes with a bunch of pluggable Django apps that are ready-to-use out of the box, and your entire project is sandboxed for easy movement between machines. Despite the unfortunate name, I’ve used Pinax for both personal and professional projects and have been quite impressed. Another tool offering similar virtualization and app management is dsandbox, or what I might call Pinax-lite. While not as feature rich, dsandbox is lightweight, gets the job done, and is for those who believe you shouldn’t bring a gun to a knife fight.