Resume

Also available as an ODT or PDF downloadable file.

Guiding Principles

Professional Experience

From Now On: September 2016-Present

Our clients are schools and event organizers. We create a custom mobile app for their fans, providing live event information such as gameplay information, audio streams, and more.

As a full-stack developer, system architect, and dev-ops lead, I build and maintain the web UI of the content management system that the clients interface with, design and maintain the backend architecture of the many services used in our system, and manage deployment and uptime for our services. These services are primarily written in JavaScript and run in AWS environments as part of a “serverless” stack.

When I arrived at From Now One, I inherited a large and incomplete code refactor and re-architecturing project, which I took from an unusable state to a fully functioning, well tested, battle-hardened webapp now used in production.

The web application and services were largely untested, but I introduced modern best-practices, including automated tests on all pull requests, code linting as part of those tests, and continuous deployment for the webapp. This has reduced our bugs and regressions significantly, and greatly reduced the time it takes to develop features and fix bugs.

My most recently completed project was a large re-architecture of our backend services, taking our existing monolithic services and migrating them from Azure to AWS, while breaking the different services apart into modular microservices. The migration took over a year to complete, cut the backend costs in half, and allowed us to handle a ~10x growth in clients.

While working at From Now On, some of the things I became very familiar with:

eDataSource: May 2012-September 2016

Designed and maintained data analysis tools and several public facing and business-to-business webapps. Oversaw several large software upgrades.

2012-2013

I helped develop software for analysis of email data, using aggregated data gathered from a panel of over 1 million active users.

I spent the first couple years primarily designing tools which analyzed emails, parsing financial data from third-party receipts that were frequently broken. The accuracy of the tools I designed was high enough that the tools and aggregated data were still used in predictive tools for financial investors several years later.

The generated aggregate data was stored in MySQL, in tables with many millions of rows. As part of the QA process, and as part of client driven requests, I was responsible for writing queries which were performant, even with very large tables and inadequate indexing.

2013-2016

Switched focus to full-stack work on a new webapp which presented email information to our clients, helping them determine effectiveness of email campaigns.

I was the lead for two big and painful software upgrades (Bootstrap 2.2 to 3.3, AngularJS 1.1 to 1.3). The upgrade process spanned more than a month and involved refactoring and changing hundreds of HTML and JS files, and tracking down dozens of difficult to find bugs.

Front-end lead of a two-person team designing a new feature which helped clients test email campaigns prior to sending them. The design had ~8 new screens, several new complex UI objects, and required the design of many new API endpoints.

2016

Worked with a team of 2-3 other developers on a redesign of one of our webapps, accessed by thousands of users per day. Due to our work we saw signup numbers increase and churn rate drop drastically. As part of the redesign, I designed and built the client and server side of the OAuth flow for Google, Yahoo, and Microsoft/Outlook, along with a complete test suite for it.

Toward the end I worked with a team of 2-4 in designing a new screen for our analytics webapp, which took aggregated data about a company and presented a view comparing that company’s metrics with the metrics of other companies, to let our clients know how their email campaigns were performing relative to their competitors. The feedback from our clients was very positive.

Although I was not the sysadmin, since we were a small team I learned some sysadmin and devops skills. In particular, I became familiar with many AWS offerings—SQS queues handling many millions of messages per month, Aurora for terabyte-sized databases, auto-scaling EC2s for our webapps and backend services, and S3 and Glacier to store hundreds of millions of files.

While working at eDataSource, some things I became very familiar with:

Prior to eDataSource

My professional career began at eDataSource, but prior to that for ~2 years I was doing private contract work with WordPress and PHP.

For about a year, during college, I built custom WordPress templates and plugins for a client, and for some friends, pro bono.

Personal Projects

Although I do learn quite a bit while working, my personal philosophy is to always be learning new things. Outside of work hours I build modules and websites, exploring new technology primarily in the JavaScript/npm world.

I’ve made and maintain a number of npm modules. A few that I am pretty happy with are:

Tech Stack for Personal Projects

I’ve created tools and products using many of these buzzwords: