Objective
Software engineer with seven years of experience developing a large Ruby on Rails/Javascript application seeking a
full-stack developer position
Experience
StreamSend, since 2011
General
-
Test-driven development in Ruby on Rails and Javascript using Vim, Git, and Bash in Tmux.
-
Built features. Fixed bugs. Wrangled deploys and Git branches. Wrote gems. Wrote ad-hoc scripts. Spelunked
logs.
-
Managed Jenkins, Capistrano scripts, and Webistrano configuration.
Upgrades
-
Co-managed upgrades of the site from Rails 2 to 3.2, and from Ruby 1.8 to Ruby 2, and almost to Rails 4.
-
Wrote code to handle character set encoding as part of the upgrade to Ruby 2. We had thousands of MySQL
customer databases containing text in many character sets stored in tables labeled as latin1.
Bug Fixes
-
Fixed data using the Rails and MySQL consoles. Tracked down bugs using Airbrake, NewRelic, logs, and the
code.
Deploys
-
Deployed code updates and schema migrations across ten app servers and 6,000 customer databases. Collected
updates, coordinated releases with developers and management. Wrote release notes. Debugged failed deploys.
Updated
Capistrano scripts as the server environment changed and as the application code was updated.
Docker
-
Dockerized part of the StreamSend environment for development. Updated Docker configuration for several
components.
QA
-
Wrote framework in Ruby for parallelizing our QA tasks with Capybara in Ruby. Browser-
based tests run on three servers, with 8 browser instances on each server, against
the application running on three QA app servers.
Tests are managed by Jenkins as a Continuous Integration system; a subset of the
-
QA tests run after each merge request is created in Gitlab. The full QA suite runs
nightly with four different configurations.
-
I wrote the base set of tests, to get us from scratch to having good coverage of the
system’s features. Subsequent tests were written by developers as they developed
features.
Ergonomic hardware and software
Keyboard, 2008-present
-
Built unique ergonomic USB keyboard using stretchable conductive fabric and 3D-printed plastic.
-
This is the keyboard that allows me to work.
-
Designed and hand-built the keyboard.
-
Wrote v1.0 USB firmware in embedded C.
-
Etched and soldered circuit board.
-
Built CNC router to cut foam.
-
Wrote scripts in Java to generate CNC G-code.
-
Designed plastic parts with OpenSCAD; printed with 3D printer.
MouseTool, 1997-2006
-
Designed and wrote software that clicks the mouse for you.
-
Sold MouseTool as shareware, then in 2002 partnered with Designer Appliances, maker of an innovative ergonomic
mouse.
-
Used C++ for Windows and Linux versions.
-
Successfully lobbied for MouseTool to be adopted as part of KDE’s standard accessibility tools.
-
Ported MouseTool to OS X using Objective C.
-
Also developed Windows-based stretch timer in Python.
Open Source
SacSOS
-
Set up server for Rails resource to provide information for Sacramento’s homeless population.
-
Reused code written for San Mateo by a Code 4 America brigade.
-
Fixed bugs. Updated the system for Sacramento.
-
Configured PostgreSQL and Nginx and currently host the site in an Ubuntu instance on DigitalOcean.
-
Dockerized the system for development.
git-commit-story
-
Ruby gem. Provides a “git commit-story” command that appends a Pivotal Tracker Story ID to each git commit
message.
KMouseTool
-
Open Source version of MouseTool, ported to Linux using QT. It is now part of KDE’s standard accessibility
utilities.
Education
1988
-
MA, Physics; University of Oregon, Eugene OR
1984
-
BA, Physics; Amherst College, Amherst MA
-
Thesis: Quantum Beates in the Density Matrix Formalism