I’ve programmed computers since I got a TI-83 graphing calculator for high school algebra; learning TI-83 BASIC in high school, figuring out the “right” or at least “best” ways to work with it was a fun challenge. After that, I learned the typical PHP/MySQL environment during the general-education years of college, and Perl from coworkers at a job.

During this time (2003-2005), I also picked up a book about Python, on the recommendation of friends online. It remained unopened, as PHP was easy to get deployed and the Python book didn’t immediately launch into making and deploying web applications.

I found a job working for Prof. Jennifer Collins, a meteorology professor at USF, doing general/light software work. Prof. Collins ran a rooftop weather station, and wanted to make this weather data, along with images from RADAR and satellite services, available on a screen in the building’s lobby. The first thing I tore in to was the TCL and PHP setup that served weather images, current conditions, and historic data. Images came from the McIDAS software, data from a directory full of tens of thousands of CSV files (one for every ten minutes the weather station ran).

At the same time, my good friend Sam Stephenson recommended that I learn Rails, then in an early pre-1.0 version. Writing the application was easy and quick, however the CGI process for serving each page was not. I got to experience the “joy” of configuring FastCGI on 2005-era Fedora Linux, and eventually got to use Zed Shaw’s fantastic Mongrel app server (once it supported directory prefixes, which he released literally the second day I was working with it).

Since then, I’ve worked with Ruby nearly constantly, even in extremely hostile/incompatible situations. I worked for a little over a year performing security audits for a large enterprise-y client. In one research project for auditing, I needed a VBScript file to scrape configuration information from a Windows machine. Instead of suffering VBScript (a truly awful language,) I wrote the bare minimum to load a few different configuration entry types, and templatized the rest to be driven by a Ruby application.

In the next installment, I’ll go into how I developed this into a career.