This is my standard resumé. For additional details on what I seek in a role and/or an employer, please see my hiring page.

Highlights

  • Python engineer since 2004.
  • Unix/Linux sysadmin since 2005.
  • Author and maintainer of multiple popular Python libraries, including but not limited to:
    • Fabric (fabfile.org), a task runner & SSH scripting library.
    • Fabric’s primary dependency, the SSH protocol implementation Paramiko (paramiko.org).
    • A modern successor to Fabric’s task management & subprocess feature set, Invoke (pyinvoke.org),
    • Alabaster (GitHub here), the default theme for the widely-used Sphinx documentation generator.
  • Contributor to a handful of other open source projects, notably Django and Graphite.
  • Member of the Python Software Foundation.
  • Co-author of the 376-page Python Web Development With Django (withdjango.com), 2008, Addison-Wesley. It was in the top ten best-selling Python books on Amazon and other retailers for about a year post-publication, and is still sold today.

Skills

  • Programming languages:
    • Good at: Python, Ruby, Unix shell
    • Hobbyist level: Clojure, Golang
    • Used to be okay at: HTML/CSS (including templating languages), JavaScript
  • Tools:
    • Cloud platforms: AWS, GCP
    • Configuration management: Chef, (some) Puppet
    • Data stores: PostgreSQL, Redis, MongoDB
    • Virtualization & containers: Xen, Docker, Vagrant
    • CI/CD: Jenkins, Travis-CI, Concourse
    • Secrets management: Vault
    • HTTP: NginX, Apache
    • Monitoring & metrics: Graphite, Nagios, Collectd, Diamond, InfluxDB
    • Logging/events/indexing: Rsyslog, Logstash, ElasticSearch, Splunk

Employment

  • November 2018 — present: Senior Engineer at MongoDB, Inc, San Francisco, CA
    • mLab was acquired by MongoDB; continued oncall and light support duties from mLab during acquisition migration period.
  • July 2016 — November 2018: Senior Software Engineer at mLab, San Francisco, CA
    • Overhauled and expanded an internal Python/Fabric deployment and cloud orchestration system (which managed mLab’s fleet of 10,000+ cloud hosts and nearly 1 million database instances).
    • Created per-developer development environments based on existing prod stack, with secrets management and VPN functionality on top.
    • Built a Concourse container-based CI stack for those new environments.
    • Built a fully automated cloud image (eg AWS AMI) creation and management system to replace existing ad-hoc workflow.
    • Prototyped a custom Duo Security two-factor authentication frontend.
    • Assisted in production, IT and office premises security operations.
    • Various production service investigations and troubleshooting.
    • Partook in the production pager rotation.
  • June 2012 — March 2016: (Lead) Operations Engineer at Urban Airship, San Francisco, CA
    • Overhauled and/or augmented orchestration tooling (Fabric), configuration management (Chef), truth database (Clusto), operating system packages (Gear/Mock/RPM) and build/CI server (Jenkins).
    • Implemented a Graphite metrics stack (2.6MM metrics/min), with focus on clustering, reliable transport and dashboards.
    • Built an IRC chatbot providing access to many production tools (config management, build system, deploy queue, orchestration, oncall escalations & paging, etc).
    • Promoted an engineering-oriented documentation culture.
    • Partook in the production pager rotation.
  • March 2012 — June 2012: Operations Engineer at CBS Interactive, San Francisco, CA
    • Whiskey Media was acquired (in part) by CBSi; continued supporting former Whiskey Media sites post-acquisition.
    • Created new development & production infrastructure for in-progress rebuild of Whiskey Media and CBSi web properties (e.g. Giant Bomb, GameSpot).
  • Jan 2011 — March 2012: Operations Engineer at Whiskey Media, San Francisco, CA
    • Implemented the following new support systems:
      • PostgreSQL streaming replication, backups & offsite backups.
      • Metrics gathering and monitoring/alerting system using Collectd, Graphite and Nagios, including custom dashboard application.
      • Centralized logging/parsing/indexing with Logstash and ElasticSearch.
    • Supported existing in-house deployment and configuration management systems, including custom Fabric development.
    • Troubleshot production environment.
  • Jul 2007 — Jan 2011: Systems Administrator/Developer at Digital Pulp, New York, NY
    • Developed customer CMS and e-commerce Web sites on various platforms.
    • Managed, monitored production Web servers for variety of clients.
    • Managed internal services: web/email/calendar, DNS, filesharing, SCM, bug tracking, networking (LAN, WAN connections, firewall/gateway, PBX).
    • Installed virtualization, monitoring and networked backup systems.
    • Wrote Django-based tool for generating Nagios, Bacula and djbdns configs.
  • Mar 2005 — Jul 2007: Python Developer at Stroz Friedberg, New York, NY
    • Created an intranet and evidence tracking system with Django and Plone.
    • Managed staging and production Linux systems for that application.
    • Supported forensics lab via scripting and other automation tasks.
  • Jul 2004 — Mar 2005: Interface Engineer at IconNicholson, New York, NY
    • Implemented design mockups as XHTML/CSS/JS webpages.

Education

  • 2004: B.S. in Computer Science at the University of Massachusetts, Amherst, MA