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.

Skills Summary

I program mostly in Python, which is my strongest language, and in my most recent position I used a lot of Ruby and Javascript (plus Node.js), and some Scala. 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 used to use PHP, and have retained some of my ability to diagnose issues related to it, though I prefer not to use it anymore. I have a reading comprehension of C, which I taught myself years ago on my spare time, and which has enhanced my understanding of OSes and other programming languages.

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.

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 worked for a few years 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 Authorize.net and PayPal.

I have been deeply involved in the design and coding of web applications, especially REST APIs, where I have most enjoyed using Starlette. I think that Flask is a good Python framework, and would generally choose a minimalist framework like it if the circumstances permit. I have used Ruby on Rails and its PHP equivalent, CakePHP, but these would not be my first choice for a new project. From 2010 through 2012 I worked extensively with Backbone.js. Before using web frameworks that employ the MVC pattern, I became interested in MVC through 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 aughts, 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 was the administrator and developer of a group of 18 Drupal sites at the American Museum of Natural History.

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 later PostgreSQL, since 1999.

Professional Software-Development Highlights

DevOps Project Highlights

Writing and Speaking Samples

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

Employment History

Formal Education