I am a full-stack developer with a broad range of programming experience. Here are some of the technologies I've worked with:
- Some experience with: Go, Java, Scala, LISP/Scheme
- Experienced with: MySQL, PostgreSQL, Redis, MongoDB, DynamoDB
- Some experience with: Redshift, Riak, ElasticSearch
- 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
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
- 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
- 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
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:
- Engine.io PR #336 - Fixes a Socket.io resource leak that can be catastrophic when connections frequently open and close
- request PR #146 - Fixes mishandling of content-type setting for multipart POST requests
- node-sendgrid-web PR #4 - Fixes a socket hangup when sending a long email to Sendgrid
- director PR #65 - Fixes a minor documentation bug