Experienced Senior Software Engineer who has made significant contributions to modern TDD practices through creating the influential VCR gem (which has been ported to over a dozen languages), maintaining the popular RSpec testing framework (which has over 130 million downloads), and co-authoring the recently released book, Effective Testing with RSpec 3: Build Ruby Apps with Confidence. Outside of my open source work, I help teams design and build robust, maintainable backend services while improving development practices to increase the frequency with which we can safely deploy.
Examples of My Work
I’ve created or contributed to dozens of open source projects, mostly in Ruby. You can find many of my contributions on GitHub and Rubygems. Notable projects and contributions include:
- VCR: I created this library to record your test suite’s HTTP interactions and replay them during future test runs for fast, deterministic, accurate tests. Has over 10 million downloads and has been ported to over a dozen other programming languages.
- RSpec: I’ve been the lead maintainer of this popular BDD-flavored testing framework since 2012. RSpec has over 130 million downloads and has inspired countless testing frameworks in other languages.
- Elixir: I’ve contributed a number of bug fixes and improvements to this programming language.
- Interpol and Plines were created as part of the Moz Pro data platform and have been running in production for years.
- Languages: Ruby (2007-present), Elixir (2015-present), .NET (2004-2006); dabbled with Haskell, Erlang, Lua, and Java
- Web Frameworks: Rails (2007-2011), Sinatra (2011-present), Phoenix (2015-present), ASP.NET (2004-2006)
- Relational Databases: MySQL (2007-present), PostgreSQL (2008), SQL Server (2004-2006), Oracle (2000-2004)
- NoSQL Datastores: Amazon S3 (2012-present), Redis (2011-present), Riak (2011-2012), Memcached (2013-2014)
Moz | Seattle, WA | Jan 2011 - Nov 2017
Senior Software Engineer
- Architected and built a service that collects 170m search engine rankings per day using Riak, Redis, and Sinatra. The service has been stably running in production since 2011 and provides the data collection for the most well-used feature of Moz Pro.
- Led development of our data collection and storage platform, which provides a standardized interface to collect data from Moz’s many backend systems and store it permanently in Amazon S3. This platform has managed the primary data collection and canonical data storage for Moz Pro since 2013.
- Led the migration of our Moz Pro data indexing pipeline and JSON API from a Ruby/Sinatra/Redis/MySQL solution to an Elixir solution using a SAN for data storage. The Elixir service cut the data processing time, storage costs and hardware needs by an order of magnitude, while providing valuable new features and running extremely reliably in production. This project is featured as a case study in the upcoming book Adopting Elixir: From Concept to Production.
- Led my teams to adopt practices that allowed us to safely deploy frequently (often multiple times a day), including:
- Code reviews for all new code
- Continuous integration using Travis CI for an always green master branch
- Feature flags for low-risk deployments of new features
- Metrics collection for insights and monitoring of our production systems.
Kashless | Seattle, WA | Jan 2009 - Jun 2010
Lead Software Engineer for Tippr.com (Mar 2010 — Jun 2010)
- Wrote most of the system’s back end processing, including the geocoding and credit card processing.
- Developed a REST-like HTTP API, for use by deal aggregators and for an iPhone app.
- Architected the site to be scalable, allowing large (680% increase) daily traffic spikes with no performance degradation.
- Took the code base from 0% test code coverage to > 75% code coverage using RSpec and Cucumber, allowing us to confidently deploy to production multiple times a day with no QA team.
- Setup a continuous integration server so that our dev team would be instantly notified of a broken build.
- Led a 3-member development team, making most of the architectural decisions.
Software Engineer for Kashless.org (Jan 2009 — Nov 2009)
- Developed most of the system’s back-end processing, including the conversation system, SMS and yahoo groups integration (via multiple rounds of asynchronous processing, screen scraping and email parsing).
- Also responsible for the Kashless API, Twitter integration and more.
- Maintained large (3000+) test suite that helped us regularly deploy with confidence.
Self-Employed Ruby on Rails Consultant (Dec 2009 – Feb 2010)
- Continued contracting with Kashless for kashless.org maintenance.
- Prototyped, built, tested and deployed a data-tracking web app for Level Field Property Management.
- Consulted with Desiring God ministries. Mentored their dev team, helping them learn and use BDD practices and tools. Implemented the search functionality of their new site using sphinx.
Qinhuangdao Foreign Language Professional College
Hebei Province, China | Aug 2006 - Aug 2008
Oral English Teacher and Website Developer
- Taught Oral English lessons to more than 400 students, improving their English fluency.
- Studied basic Chinese and put it into practice while traveling extensively around China.
- Learned Ruby on Rails and used it to build a website for the department of foreign affairs.
Consona | Kirkland, WA | Jul 2004 - Jan 2008
Software Developer, Customizations (Jul 2007 — Jan 2008)
- Trusted to work remotely from China without direct supervision.
- Built custom extensions to Consona’s .NET ERP platform based on customer requirements.
Software Application Developer (Jul 2004 — Aug 2006)
- Worked as part of a 17-developer team to create an ERP system using .NET and SQL Server.
Seattle Pacific University | Seattle, WA | Oct 2000 - Jun 2004
Finance Office Student Intern
- Developed finance reporting tools using SQL and Microsoft Access.
- Double Major: Bachelor of Science in Computer Science and Bachelor of Arts in Music.
- Cumulative GPA: 3.94; Major GPA: 3.99 (Computer Science) and 4.0 (Music)
- Graduated as a member of the University Scholars program.