Wednesday, November 13, 2013

My Raspberry Pi Bramble Goes to College

I am proud to have a son who is a freshman at Bard college and who is taking Operating Systems (Comp Sci 326).  The professor teaches this class using Raspberry Pis, and it is really cool to see what kinds or projects they are doing.  Everyone has to do a class project, and my son has decided to do a parallel merge sort using the Raspberry Pi bramble using some kind of either divide-and-conquer, or master-slave architecture.  He hasn't decided yet how to arrange things.

I think it's more fun to watch him consider all of the pros and cons of different designs than try to sort it out myself.  My original goal for the bramble was to create a parallel environment to perform computations for my neural networks course (Coursera, "Neural Networks for Machine Learning").  However, we did everything in octave in a single Linux image, and it was really fast.  I coudln't figure out a better way to architect the computational environment.  This was my first experience with a numerical methods package, and I was duly humbled as a nube (my expertise is in operating systems and middleware).

My next idea was to simply run the World Community Grid on each node to create an array of individual elements that were admittedly slow, but which might perform respectably in aggregate.  Enter my son, and his idea for parallel merge sorting.  I'm going to get the bramble back at the end of the semester, and we'll play with it then to see what is possible from a WCG standpoint.  If I'm lucky, my son will have other ideas that will take us for another adventure in computing.

Friday, November 8, 2013

Virtual Machines and How I Use Them

Virtual Machines are nothing new.  I provisioned my first KVM on a Linux machine probably 5 or 6 years ago, and it  didn't go very well.  You really had to understand how a collection of different parts fit together, and then have some luck to make it all work at once.  My biggest problem was network settings - nothing ever seemed to work right.

Things really got better a couple of years ago.  I started with VMWare, and was impressed with how well it all worked, but was really disappointed to realize that I couldn't provision my VM on one physical device, and then run it on another unless I bought a license.  I settled on VirtualBox, because I need to run the same VM on either a Linux or a Windows host.  I'm very impressed with how well things work - from sharing drives and clipboards to the ease with which networking and printing is handled.  Just make sure you have your VMs set up to build and use the VirtualBox guest additions.

I now walk my VM on a passport drive between my home and work machines, and things run flawlessly.  My work requires my hard drive to be encrypted, which is a good thing, because in the event that that my drive is lost or stolen, the data on it is safe.  I also get multiple copies of my environment - one on each physical machine, and one on the backup drive.  Having suffered a head crash on my work machine before and dealing with the re-building effort, I sleep well knowing that I have redundant versions of my machine.

In a similar way, I use a VM for all of my MOOCs.  I've built up a set of notes and projects for 3 courses now, and this information is precious to me.  My VM is a container for all of my things, and I don't worry about losing it.

In a few weeks I'm attending a hands-on lab to install and configure an OpenStack environment (http://www.meetup.com/OpenStack-New-York-Meetup/events/144883832/).  This requires two VMs so that we can simulate working in a multi-node environment, all within a single laptop.  So not only are VMs convenient and secure when encrypted, they allow you do do things that just can't practically be done with physical hardware.  VMs have really become an essential part of my computing life, and I can't imagine working without them.