About

Jump to: Experience, Open Source

I am a full-stack developer with a broad range of programming experience. Here are some of the technologies I've worked with:

Programming Languages

  • Experienced with: Node.js, client-side Javascript, Python, Typescript, Bash, PHP, HTML, CSS
  • Some experience with: Go, Java, Scala, LISP/Scheme

Databases

  • Experienced with: MySQL, PostgreSQL, Redis, MongoDB, DynamoDB
  • Some experience with: Redshift, Riak, ElasticSearch

Infrastructure

  • Experienced with AWS tools: EC2, S3, Cloudfront, ELB, Route53, RDS, ElastiCache, DynamoDB, SES, SQS
  • Experienced with: Nginx, Convox, Docker, Heroku
  • Some experience working with a variety of provisioning strategies: Puppet, Salt, Elastic Beanstalk, and vanilla Bash scripts

Libraries, Frameworks, and Tools

  • Experienced with (frameworks): Express.js, Django
  • Some experience with (frameworks): Flask, Backbone.js, Bootstrap
  • Experienced with (libraries): jQuery, React, Socket.io, Underscore/LoDash, TastyPie
  • Some experience with (libraries): Too many to count!
  • Experienced with (tools): Git, Gulp, Browserify, NPM, pip
  • Some experience with (tools): Make, Maven, Subversion

Professional Experience

Director of Engineering Operations - Ride.com

March 2016 - present

  • Wrote a DeviceFarm CLI in Go, for automating AWS Device Farm tests and device groups.
  • Wrote a visualizer for Finite State Machines used on our backend (JS).
  • Wrote an integration test suite for testing chat interactions with our Bot (JS/Node).
  • Wrote a script for automatically setting up /etc/hosts with docker-machine (Ruby).
  • Managed migration of 20+ apps from a regular Heroku account to a Heroku Enterprise account.
  • Leader on devops for several engineering teams.

Freelance Software Engineer - Managed By Q

January 2016 - February 2016

  • Migrated from manually-managed EC2 instances to a containerized infrastructure, using Convox. From zero to production in four weeks.
  • Setup automated deploy pipeline using CircleCi and Jenkins, from local to staging to prod. Included Slack messages with clickable links to deploy.

VP Engineering - Managed By Q

July 2014 - September 2015

  • Built a flexible calendar/scheduling system from scratch (Python, Django, MySQL) to replace a manual-entry Google Calendar-based system
  • Built a scalable infrastructure for real-time monitoring/communication for company iPads in the field (Node.js, Redis, Redshift, Socket.io)
  • Pioneered automated test coverage reports for all repos, including backend (Python/Node.js) and frontend (JS)
  • Oversaw development of all major features and new systems, and frequently performed code reviews on all repos
  • Migrated from a manually-managed MySQL instance to an RDS-managed instance
  • Participated in full-stack automation of our provisioning and deployment, including frontend build processes, and Jenkins build/test/deploy scripts
  • Performed vital ops kung-fu in several instances, including getting our services running within 30 minutes of the CloudFront major outage on Thanksgiving 2014
  • First developer hired in-house
  • Grew team from just myself, to over 10 engineers and designers; highly involved in interview/hiring process
  • Managed several remote freelancers
  • Gave several tech talks as part of our weekly Engineering and Beering event

Freelance Software Engineer - Grey Healthcare Group

April 2014 - June 2014

  • Developed an HTML/JS iPad app with Excel-like spreadsheet capabilities, packaged for iOS with Cordova
  • Developed first-ever Javascript and PHP unit-testing practices used at GHG, and presented to the engineering department on testing and other programming best-practices
  • Lead developer of The Timeline Project (has since been defunct), including developing a custom text-wrapping library for images built using the GD PHP library with different/variable-width fonts

Senior Software Engineer - Onswipe

November 2011 - March 2014 (Onswipe was acquired by Beanstock Media in August 2014)

  • Inherited a legacy in-house RSS aggregator, which checked 2,000 feeds every 10 minutes
  • Re-architected and re-wrote RSS aggregator to eventually check 25,000 feeds every 60 seconds (Node.js, Redis, MySQL, MongoDB)
  • Implemented large-scale, customizable/programmable web crawler and scraper (Scala, DynamoDB)
  • Implemented "server-side rendering" engine using a headless Chrome browser on the server (Node.js)
  • Sole or lead maintainer on over 10 repos, including data abstractions and util libraries used company-wide (Node.js)
  • Fixed several hard-to-find bugs in our vanilla JS frontend
  • Implemented an experimental MRAID wrapper for HTML5/Javascript ads
  • Reported directly to CTO, and frequently worked directly with internal business users/stakeholders to develop new features and fix bugs

Computer Science Student - Northeastern University

September 2008 - September 2010, left before completing degree to pursue a career in startups

Open-source contributions

At Ride.com, I open-sourced by Device Farm CLI: devicefarm

As a fun experiment to play with TypeScript, I wrote a tic-tac-toe solver: tictac.ts

I'm proud to be proactive about finding, fixing, and pull-requesting bugs or missing features in open-source libraries I use. Thus I have contributed several small fixes to the open-source community: