Curriculum Vitae (technology)
Michael McClimon
michael [at] mcclimon [dot] org
Summary
I'm a backend programmer with a passion for writing tools to make it easier for my colleagues to do their work. My favorite projects to build are ones where my work improves everyone's lives without them really even noticing. I have a lot of experience changing the wings while the plane is in flight, and take pride in my ability to design and deploy software that solves problems elegantly and maintainably.
My portfolio has more extended commentary on some of my technical work.
Work Experience
MongoDB
Senior Software Engineer, DB Tools and Replicator (Feb. 2023–present)
- Designed and led implementation of mongosync’s embedded verifier, which does full document verification of data migrated by mongosync between MongoDB clusters. In the first 5 months after release, verification rates for migrations into Atlas rose from 0% to more than 70%.
- Designed and led implementation of the live upgrade feature for mongosync, which allows users to safely switch to a newer mongosync binary without restarting their data migrations. This feature saved an important customer many hours of compute resources by allowing them to upgrade a multi-terabyte migration in flight, rather than needing to restart it from scratch to get the latest bug fixes.
- Redesigned and drove improvements to mongosync’s release process to eliminate mandatory code freezes and increase developer productivity.
- Have been a valuable resource for junior engineers: two interns I mentored got return offers, I consistently get feedback from juniors that my guidance is helpful and valuable to their growth.
Fastmail
Senior Backend Developer (Feb. 2022–Feb. 2023)
Backend Developer (May 2017–Feb. 2022)
- Bootstrapped a new framework for customer support command-line tools, modernizing and systematizing them to make them both easier to write and easier to use.
- Was a primary developer on the creation of a new test suite for Fastmail’s backend code, helping to make our backend developers more confident and reliable in shipping changes.
- Wrote and deployed a branch management system (mint-tag) that creates branches from labeled PRs/MRs on GitHub/GitLab, now used to deploy both Cyrus and Fastmail.
- Wrote a test framework to improve existing Selenium test suites for both Fastmail and Topicbox, making their run times up to 8x faster and eliminating flakiness of existing tests.
- Rewrote and modernized the deployment process for the Cyrus mail server, removing many footguns and opportunities for error in the process.
- Rewrote the deployment process for Fastmail's monorepo, making deploy up to 5x faster and increasing confidence in the deployed artifacts.
- Was influential in driving process changes and improvements, especially to technical culture and code review.
Music Theory Online
Senior Editorial Assistant (2014–2023)
- Maintain existing PHP/MySQL infrastructure and while preparing more than 200 scholarly articles for online publication
FormAssembly
Software Developer (Summer 2014)
- Designed and implemented Selenium testing architecture for large PHP application in a startup environment.
- Maintained and refactored legacy code to bring in line with modern coding standards.
Center for the History of Music Theory and Literature
Digital Projects Specialist (2012–2014)
- Write and maintain infrastructure for digital humanities projects in PHP, JavaScript, Ruby, and Perl
- Design and implement smaller web projects for internal use.
- Modernize and refactor legacy Perl code.
Selected Publicly Available Work
Most of my professional programming output is work internal to Fastmail or MongoDB. This list is things a few open-source I did at Fastmail, plus various projects in other languages.
- mint-tag
- mint-tag performs git arcana to build deployable artifacts out of labeled PRs on both GitHub and GitLab
- my role: primary author and designer
- Synergy
- Synergy is Fastmail's Slack bot; it contains API clients for many external services (Slack, of course, but also GitLab, PagerDuty, Zendesk, and many others)
- my role: one of two primary developers
- Ix
- Ix is a JMAP framework for DBIx::Class. It powers Topicbox.
- my role: one of three primary developers; primary author of documentation
- pidgit
- pidgit was an early pandemic project; it's a reimplementation (incomplete) of git in Rust, to learn both rust and git
- my role: sole author
- handy-tools
- This is just a bunch of random tools I wrote for myself. I started doing it to learn Go, but now it's just the language I can write with thinking too hard, so if I want something in a hurry I'll add it there.
- my role: sole author
- Synergy clones:
this is my preferred language-learning project, because there are a lot of things to get up and running to make it go (websockets, HTTP APIs, asynchronous programming, and so on). I've written a few:- synergy-js (TypeScript)
- synergy-rust (Rust)
- synergy-go (Go)
Skills
This is not a complete list: I am neighborly toward many technologies!
- Programming languages (in descending order of expertise):
- Go
- Perl
- Python
- JavaScript/TypeScript
- Rust
- Ruby
- PHP
- shell
- Common Lisp
- Other software (in rough descending order of expertise):
- Git (expert)
- HTTP, REST APIs, JMAP
- various email technologies: IMAP, JMAP, SMTP, SPF, DKIM, DMARC
- MongoDB
- DNS
- macOS, Linux
- MySQL, Postgres, sqlite
- HTML/CSS
- LaTeX
Education
I have three degrees in music theory. They're not super relevant to work in programming, but I include them here for completeness. If you want to know more about it, there's more information on my theory CV.
- Indiana University – Ph.D., Music Theory (2016)
- Indiana University – M.M., Music Theory (2010)
- Furman University – B.M., Music Theory, magna cum laude (2008)