Tech CV

I am a web application developer, website engineer and system administrator, and database designer. I've been active in these fields since 1998, and most recently was the Senior Developer at The Digital Public Library of America.

I program mostly in Python, which is my strongest language, and in my most recent position I used a lot of Ruby and Javascript, and some Scala. I am uninterested in working any further with Ruby, and especially with Ruby on Rails, but I have a great deal of experience wrangling it as a programmer, and dealing with deploying it as a DevOps engineer. I'm very good with bash and Unix shells in general, having used them for more than a couple of decades now. I've done some work in Max/MSP (see my Cutupsampler project) and would like to do more some day. Going farther back, I used to use a lot of Perl and have had enough contact with Java to understand what I need in the capacity of a sysadmin. I am fluent in HTML5, XHTML, CSS, and XML markup in general. I prefer not to work with PHP, though I used it for many years, and have retained some of my ability to diagnose issues related to it.

Professional software-development highlights:

I've done a great deal of work in a DevOps capacity, using Ansible in addition to many of the Amazon Web Services products. I have created Vagrant virtual machines with VirtualBox and have created customized Docker images for deployment and development purposes. I eventually transitioned our organization over from running Ansible playbooks by hand, to employing Jenkins to provide a user interface on top of most of the organization's automated activities.

I believe strongly in writing good tests for all of the code I write, and have consistently realized the benefits of good tests in the development process. I have also experienced how good integration testing practices can save you from unforeseeable changes to external services and data sources. To this end, I have primarily used Jenkins to run Postman automatically on a schedule, and also triggered by the completion of build jobs. One showcase of my dedication to good tests is the test suite in the dplaapi app.

DevOps project highlights:

I have an experienced developer / engineer's level of familiarity with Elasticsearch, having provisioned and configured it for a large-scale production search engine at the DPLA, and having written mappings and analyzers for search suggestions and more-like-this queries; in addition to fine-tuning term searches.

I had an unenjoyable but educational few years of interaction with BigCouch (CouchDB), the No-SQL key / value database, which the DPLA used to run as its repository of record for library metadata documents.

I am adept in the Git revision control system, and used Subversion, CVS, and rcs before that. I have worked extensively with issue-tracking and project management software in the form of Redmine, Atlassian JIRA, Mantis, and Basecamp. Aspects of the Agile and Kanban methodologies have been useful in my projects.

I have designed and coded website APIs that were central to their organizations' technical missions, and I always aim for a RESTful, resource-oriented architectural style.

I have engineered and implemented a mission-critical payment system that integrates a commerce and subscription-based website with and PayPal.

I have been deeply involved in the design and coding of MVC web applications. Most recently, this has meant Ruby on Rails, but before that I had to contend with its PHP knockoff, CakePHP. From 2010 through 2012 I worked extensively with Backbone.js. Before becoming as invested as I am now in the MVC pattern, I became interested in its significance in projects with Zend Framework for PHP, and through self-guided investigations of Cocoa for Objective-C.

I have worked extensively with the Nginx and Apache webservers, configuring them to meet the complex needs of institutional hosting environments and high-volume web applications; and compiling, installing, and maintaining customized compliments of modules.

I have planned and implemented load-balanced server farms for websites that combine the the capabilities of Apache, mod_pagespeed, memcached, APC, PHP, MySQL, and dedicated f5 hardware to reliably deliver content and stay available in high-volume situations.

Going back to the early oughts, I have administered and customized the Drupal, WordPress, and Plone content management systems, and (going back to the 90's) have worked with Vignette to the extent of customizing another application to work with its database. I have been the administrator and developer of a group of 18 Drupal sites in an institutional environment, and in maintaining the software installation for these sites on their server.

I am expert in a variety of Unix and Unix-like operating systems: Mac OS X / macOS , Linux (Red Hat / CentOS, Debian / Ubuntu, Slackware), Solaris, and (to a lesser extent) BSD. I am well-versed in the Debian and Red Hat package-management systems, which I use to streamline the maintenance of custom packages when they are necessary. I have nineteen years of experience performance-tuning Unix-based web and database servers.

I have also been designing and performance-tuning relational databases running first on Oracle, then MySQL, and now PostgreSQL, since 1999.

Writing and Speaking Samples

Examples of documentation and instructional material that I have written at the DPLA.

Employment History