Senior software engineer and systems architect with over 18 years of experience and a passion for solving difficult problems. I have a strong background in building web applications, enterprise systems, and highly scalable distributed systems using a variety of technologies, including Java, Ruby and Rails, Erlang, and Elixir.
I also have a passion for sharing my learnings and have spoken at various conferences including LambdaConf, ElixirConf, and CodeMash, as well as local technical meetup groups.
Senior Software Engineer
May 2017 – January 2018
As a senior backend Elixir developer at MeetEdgar, I was a member of the Ropig engineering team. Ropig is a new alert management system built on Elixir, Phoenix, GraphQL, and the Google Cloud Platform. Specific responsibilities included:
- Implement GraphQL APIs using Elixir, Absinthe, Phoenix, and Ecto.
- Create asynchronous backend services for sending alert notification messages using Elixir, GenStage, Google Pub/Sub, Google Cloud Datastore, SendGrid (for email), and Twilio (for SMS).
- Create and maintain open-source Elixir libraries available on hex.pm: external_service and wait_for_it
- Contribute several bug fixes and performance improvements to Kane and Diplomat, the open-source Elixir libraries for interacting with Google Pub/Sub and Cloud Datastore, respectively.
- Write blog articles about Elixir development on the Ropig Engineering Blog
May 2015 – April 2017
As a Senior Software Development Engineer at Basho, I was a member of the Riak core team. Riak, a distributed, fault-tolerant, NoSQL database, is written primarily in Erlang. My specific functions included:
- New feature development, performance enhancements, and bug fixes for Riak using Erlang and OTP.
- Test-driven development with EUnit, QuviQ's QuickCheck, and Basho's open source testing framework riak_test.
- Development of Riak's search component, known as Yokozuna, using distributed Solr as well as Erlang's gen_server, gen_fsm, and gen_event.
- Implementation of batching and asynchronous delivery of Solr operations for Yokozuna.
- Implementation of coordinated coverage query for efficiently listing object metadata across disparate nodes in cluster.
- Member of build and release management task force to optimize development workflow and reliability of build and release processes.
Senior Software Developer
August 2014 – May 2015
As a software developer at Ahalogy, I was responsible for development and maintenance of an
Internet-facing Ruby on Rails application, which allowed customers to effectively manage and
monitor activity on their Pinterest account. Specific activities included:
- Implementation of RESTful JSON APIs using Ruby on Rails, which were consumed by a front end Ember.js app.
- Creation of a custom analytics solution based on Ruby, Sidekiq, Keen.io, and Cassandra, which gave customers insights into the performance of content.
- Processing of high volume event logs using a two-level caching scheme for data augmentation,
which resulted in a 10× performance improvement over the previous implementation.
- Contributions to the open-source celluloid-pmap Ruby gem to use modern versions of RSpec and Celluloid and to fix a resource leak that led to runtime failures.
Agile Software Engineer
October 2013 – August 2014
Neo is a technology consulting agency specializing in digital product design and development.
At Neo, all of our project work followed agile principles and practices with a particular emphasis on the
Lean Startup methodology.
This included Lean practices such as innovation accounting, validated learning, and
build-measure-learn feedback loops, as well as such agile development practices as pair programming and
Specific clients and projects included:
In collaboration with a cross-functional team of developers, designers, and product owners, created
a service providing customized meal plans based on food preferences and calorie goals for thousands of subscribers.
Technical architecture and components included:
- A suite of three Ruby on Rails applications communicating via RESTful JSON APIs
- Custom rules engine based on ActiveRecord Scopes
- Dynamic scale of Heroku dynos and workers using HireFire
- Background jobs using Resque, and later Sidekiq
- PostgreSQL arrays, JSON columns, and randomized result sets
See the Neo Case Study for further details.
In order to support up to 50,000 smart devices connected to Nexia's central operations,
commissioned to fix or replace a Ruby-based communications bridge that was failing
to perform sufficiently under load. Details of the solution included:
- Implemented a high throughput communications bridge for all of Nexia's customers' connected devices.
The resulting system—based on Elixir, Erlang, RabbitMQ, and Redis—increased capacity by a factor of 50× compared to the Ruby
system that it replaced.
- Created a connected device simulator and load testing harness with Google's Go programming language.
- Contributed a critical performance enhancement to the open source AMQP Ruby gem, resulting in a
drastic 585× improvement in throughput
of RabbitMQ channel allocation.
As part of ICANN's effort to provide a more modern and interactive experience to their website, we designed and developed a completely new
ICANN.org website using Ruby on Rails. Specific roles and responsibilities included:
- Co-instructed training course on Ruby and Rails programming for ICANN developers.
- Pair programmed with ICANN developers to provide ongoing mentoring.
- Provided training and mentoring of ICANN developers transitioning from Java to Ruby and Rails.
- Introduced caching in key areas of the site to improve scalability and eliminate bottlenecks.
Release Engineer; Automation & Infrastructure Engineer
November 2006 – October 2013
Terracotta is a software company that specializes in increasing scalability, availability, and performance of Big Data applications,
primarily through use of its BigMemory product, an in-memory data management suite.
In my roles as Release Engineer and Automation/Infrastructure Engineer, responsibilities included:
- Owned the build and test infrastructure and processes for Terracotta's flagship products: BigMemory, Ehcache, and Quartz.
- Managed a large-scale Jenkins continuous integration enviroment including dozens of slaves and thousands of jobs.
- Designed and performed all release engineering tasks, including configuration management, versioning, building, staging, and promotion of software components.
- Developed tools, utilities, and applications in Ruby, Groovy, and Java.
January 2005 – November 2006
As part of Fidelity's outbound document services division, I was the lead engineer and system architect for the enterpriseAccess application,
which provides facilities and services for creating individualized mailers and brochures to Fidelity's customers. Specific responsibilities included:
- Led a mixed local and offshore team in the reimplementation and modernization of a crucial web application using Java, Struts, Hibernate, and Spring.
- Owned all aspects of application lifecycle, including design, development, release, and installation.
- Implemented build and test automation with Ant, and continuous integration with CruiseControl
- Served on expert working group focusing on application security.
Previous roles included:
Further details available on request.
Education and Certifications
The Ohio State University, 1992 – 1998
Course of Study: Computer and Information Science
Sun Certified Programmer for the Java 2 Platform (score 91%)
Sun Certified Web Component Developer for the J2EE Platform (score 93%)