A Workspace That Works with Everything

One of the problems I've always had with the setup of my computer is
that each operating system has one thing I want that it does best, and I
would have to either compromise in one or reboot to the other. On Linux,
it's the development environment - I've always been most productive in an
environment with a usable terminal and minimal UI. On Windows it's the
media software available (and the games); I can't live without Winamp (and
sometimes iTunes) for their device syncing capabilities and excellent
playback capabilities.

With the last round of upgrades to my primary desktop (a quad-core i7
and 12GB of memory) I've finally reached the point where I can have what
I've always wanted: a reliable way to run a complete development
environment and simultaneously use the Media software of my choice on
the same machine.

My system currently runs the following:

  • Windows 7 Ultimate as the host OS

  • VirtualBox 4 running the following 3 VMs (all Ubuntu 10.10)

  • A file server running Greyhole and Samba for redundant storage accessible from everywhere

  • A network core VM for locally hosting network services such as DNS and NIS. (oh, and a Minecraft server)

  • A development VM with the appropriate toolset for PHP development (Netbeans 7 and Firefox).


The features that make this all work:

  1. VirtualBox supports multiple monitors, so my development VM can span
    both my monitors, or only one if I need some windows-only tool on the other.

  2. Windows is the host OS, so it has all the access to the hardware it needs
    for device syncing with my Android phone and my iPod Touch. It's also a
    plus when I want to do some gaming; I can close the development VM to
    free up resources and since VirtualBox saves state it takes mere moments
    to bring it back up when I need it (typically under 30 seconds.)

  3. Ubuntu has excellent support for running in a VirtualBox container. I haven't
    had any issues with the VirtualBox guest additions and drivers.


In short, if you have a powerful enough machine, you can get the benefits of both
Windows and Linux simultaneously without having to give up anything due to
VirtualBox's great support within Ubuntu.

PHP Frameworks

The Boston PHP Meetup Group had a php framework bake-off yesterday that I attended. The following are my initial thoughts on the frameworks presented.

1. CakePHP and Symfony
I've bundled these two together since they seem largely based on the same philosophy: rapid development and deployment of an applications by assembling prebuild code around data models. I think they're pretty interesting and worth looking into especially when you need a rapid prototype of an application. I'll probably focus on Symfony since it seemed slightly more intriguing.

2. CodeIgniter
The description of CodeIgniter given by the presenter was that it's "a framework for web frameworks" and that seemed largely true through his demo. There's a lot more code necessary then for CakePHP and Symphony, but it seems to be a much more flexible framework then them as well. I'm definitely going to be looking into it a lot more to see what I can do with it.

3. Zend Framework
I was not really impressed by the demo of Zend Framework. It seems overly complicated without providing a significant gain in development speed. I doubt I'll look into it any further unless I come across something I need that it really excels at.

In summary:
Based on the demos I saw, I'll be looking into Symfony and CodeIgniter to be my frameworks of choice, Symfony when I need a rapid prototype and CodeIgniter when I need a very customizable base to work from. My caveat to this is that it's just a first impression and may change over time as I explore the functionality of the frameworks.

Mass GTUG Chrome Hackathon

Yesterday was the first Massachusetts Google Technology User Group (Mass GTUG) hackathon I've participated in, their Chrome Hackathon. It was a great experience with a pair of talks in the morning; one on building chrome apps (given by @jankleinert) and the other on hacking Chromium OS. The main even was the afternoon (from 1-5pm) devoted to developing interesting apps and extensions for Chrome. There were a total of 10 demos from the afternoon's work ranging from a Chrome extension for managing a todo.txt task list to a tool for collaboratively editing LaTeX documents.

My project for the afternoon was a social wallboard. I had it in enough shape to do a short presentation by 5pm, but I didn't manage to get all the features that I wanted in (4hrs really isn't very long.) I have a good start however and intend to keep working on the project. Hopefully I'll have something usable in a few weeks after I've had a chance to solidify the OAuth authentication flow with the social services; I implemented the base code for Remember the Milk and Flickr during the Hackathon but I plan on adding a fair number of additional services over time (Twitter, Google Calendar, Delicious, etc...)

My primary takeaways from the day of hacking are that if you want to have a good demonstration after one afternoon you really have to cut back on the scope of your project (i.e. don't involve too many third party services; especially ones with OAuth) and it would have really helped to have a team of people to distribute the load across and brainstorm with. Overall though, it was totally worth it and I'm looking forward to the next chance I have to participate in a Hackathon.