Thursday, March 15, 2012

In Home Private Cloud

I am an IT consultant who works for various clients. One practice I have developed over the years is to create a dedicated VirtualBox virtual machine instance for each client. There are several reasons for this:

  1. I can keep the base OS of my laptop more pristine and reduce the number of applications installed on it by installing all the applications needed for a particular task in the VM.
  2. Most clients provide a remote VPN solution for working remotely and by installing the client on separate VM's I can avoid conflict. For example, if a work for two clients that have different versions of the Juniper SSL VPN I don't have to wait for each client to re-installed when I switch between the two.
  3. I can easily clone the VM and provide it to a colleague who has recently been on boarded to the project allowing them to become productive right away without having to laboriously setup a new environment.
  4. I can tailor the build process and development environment to each specific client without worrying about conflicts. i.e. I have an install of eclipse per VM with the necessary plugins installed for each project.
  5. Once I roll off the project I can archive the VM and then remove from my laptop to clear up space for a new machine.
  6. With VirtualBox I can RDP directly into the VM regardless of OS
#6 is  where the private cloud comes in. I have a heavy desktop replacement laptop that I use that has a horrendous battery life, weighs over 10lbs, and runs very hot. Alternatively, I have an inexpensive Acer netbook that is very light and has a great battery life. By docking my laptop and then connecting to it using RDP over Wi-Fi I get the best of both worlds: the extreme portability of a netbook with the power of a laptop.

I applied this same concept to a virtual machine I am using for an Open Source project. I built an HTPC over the Christmas break that has 8GB of RAM and an AMD FX-4600 processor. I am really surprised that in one room I can watch HDTV and then over WiFi run a large maven build in a VM at blistering speeds on the same machine with no noticeable impact.

I suppose I could migrate all my VM's to a public cloud like EC2. However, my VM's are several GB's and it would take several hours to upload it, not to mention installing any software on it or backing it up locally. I also have to pay for it and I would constantly need to worry about stopping them when I am not using them. Then there is the ambiguous question of software licensing where if I have a license for home use or in my rush accidentally install single use software on multiple VM's I have more legal risk if I export that VM to an external cloud provider than if I run the image at home.

For now I am content with running multiple VM's in my home environment for accessibility and speed.

Saturday, March 10, 2012

Coding as Entertainment

I am really blessed in that I am in a profession where I absolutely love what I do for a living. The old adage "find something you love to do and you'll never have to work a day in your life" is certainly applicable to me. In fact, strange as it sounds I actually find many aspects of my career so enjoyable that in my spare time I perform those activities as a form of entertainment!

 I am an avid video gamer who goes on gaming binges every once in a while playing the same game for hours on end. There are several reasons why I like to play video games, including interacting with intriguing story lines and character evolutions, the thrill of experiencing new environments and situations, and the sense of accomplishment in achieving victories and completing sagas.

Upon further self reflection I learned that I could experience many of those same positive aspects of gaming through Open Source coding. Solving complex design challenges  provides mental exercise and satisfaction. I personally receive a thrill when I successfully integrate multiple software components together to accomplish the implementation of a functional system. As I write the code and the software evolves it is as if it were a novel unfolding before me. A creative canvas that I can test new ideas and theories on resulting in a unique body of work, much more valuable than a list of XBox360 or PS3 achievement medals!

The take away from this is that don't let other people decide for you what is enjoyable or not. Too often there is a stigma attached to intellectual achievement in society which in reality is a petty excuse for mediocrity.  Focus on maintaining a positive attitude that will motivate you to maximize what you are capable of doing.

"Nothing can stop the man with the right mental attitude from achieving his goal; nothing on earth can help the man with the wrong mental attitude." Thomas Jefferson

Giving Back

After all these years of doing Internet searches to find solutions to technical hurdles I have come across I decided that I should finally contribute back with my own approaches to addressing difficult technical challenges.