Initial upload

This is a dump from the backup, since the web server took a crap. It's
not nice and cleaned up - this is the code I worked from in the book. If
you find a problem, please put an issue in, or even better - fix it and
submit a pull request! The goal here is to become a better programmer,
right!