About
Our purpose is not to “write code”, but rather add value.
Platform and infrastructure engineer with 15+ years shipping software and growing teams. I build the delivery pipelines, application platforms, and multi-site data stores other teams ship against, along with the web applications that run on them. Just as much, I help teams learn to operate and recover what they run — instrumentation, incident response, and disaster recovery.
Open Source Contributions
A selection of my open source work, grouped by the kind of contribution — the projects I help maintain, the changes I’ve authored and merged upstream, work I have in review, and bugs I’ve reported and diagnosed.
Maintainer
powerhome/redis-operator
https://github.com/powerhome/redis-operator
A Go Kubernetes operator that manages highly-available Redis with Sentinel-based automatic failover. I help maintain it, as release owner from v1.8.0 through the current v4.4.1. That work brought HAProxy-based client routing, master/replica failover healing that disconnects clients from demoted nodes, and ongoing Kubernetes-version support. For my team, adopting it meant retiring commercial Redis Enterprise licensing in favor of an internally-run, open-source alternative.
Merged Upstream
HAProxy
https://github.com/haproxy/haproxy
The reliable, high-performance TCP/HTTP load balancer. I contributed an init-state server-configuration feature (commit 50322df) that closed a years-open issue and fixed a Redis-failover bug responsible for past production incidents.
Shopify/shipit-engine
https://github.com/Shopify/shipit-engine
Shipit is a deployment tool that makes shipping code better for large
teams who build and deploy GitHub repositories together. Contributing as
an outsider from 2019 to 2021, I reshaped part of its domain model —
renaming PullRequest to MergeRequest to make merge requests a
first-class concept — which cleared the way for Review Stacks
(PR #1102), the feature I authored: ephemeral, full-stack preview
environments spun up per pull request. Alongside that I hardened
operational internals: task timing on a monotonic clock, and recovery
from git-cache corruption.
derailed/k9s
https://github.com/derailed/k9s
A popular terminal UI for managing Kubernetes clusters. I contributed the Gruvbox light and dark skins (PR #1088).
percona-xtradb-cluster-operator
https://github.com/percona/percona-xtradb-cluster-operator
Percona’s Kubernetes operator for XtraDB Cluster. I contributed a fix merged upstream (PR #521) that resolved a crash when the operator pod started without a HAProxy PodDisruptionBudget.
rubyforgood/mutual-aid
https://github.com/rubyforgood/mutual-aid
Mutual Aid is when people get together to build community by voluntarily sharing resources with each other. Mutual Aid groups are more concerned about local resiliency than global campaigns, and prefer solidarity before charity. I contributed a series of changes hardening the Docker-based development environment for new volunteers.
In Review
basecamp/kamal
https://github.com/basecamp/kamal
Basecamp’s tool for deploying web applications anywhere. I’ve proposed a SOPS secrets adapter so Kamal can pull deploy-time secrets from a SOPS-encrypted file (PR #1906), along with the accompanying documentation (kamal-site PR #201). Both are open and under review.
Reported and Diagnosed
rubocop/rubocop
https://github.com/rubocop/rubocop
I reported a correctness bug where a Style/InvertibleUnlessCondition
autocorrection could silently break application logic (issue #11800).
percona-xtradb-cluster-operator
I reported that the example configuration ships a sourceRetryCount that
diverges from MySQL’s default and breaks replication on routine source
restarts (issue #2523).
PagerDuty/terraform-provider-pagerduty
I reported a “product limit exceeded” failure when updating a service’s escalation-policy reference (issue #1025).
Side Projects
resque-alive
https://github.com/indiebrain/resque-alive
A Kubernetes liveness probe for Resque, written in Ruby, so a stuck or dead worker is restarted automatically rather than silently draining the job queue.
asdf-guile
https://github.com/indiebrain/asdf-guile
An asdf version-manager plugin (Shell) for installing and switching between GNU Guile versions.
.files
https://github.com/indiebrain/.files
My personal dotfiles: a modular Emacs Lisp configuration and shell setup, organized with GNU Stow and still actively tended.
futurist
https://github.com/indiebrain/futurist
A Ruby take on futures and promises, inspired by Celluloid’s block-based futures, that transparently backgrounds work by forking processes.
Talks
Git Internals
https://github.com/indiebrain/talks/blob/master/git_internals/git_internals.org
Explains the inner workings of git, and sheds some light on how the internal structure of git as a data store shapes its user interface.
Git Workflow
https://github.com/indiebrain/talks/blob/master/git_workflow/git_workflow.org
Treats version-control history as project metadata: a workflow built for reason-ability (what, exactly, is in production?), communication, and a semantic commit history that records the intent code alone can’t.
Release It!
https://github.com/indiebrain/talks/blob/master/release_it/release_it.org
A brief, messy history of releasing software — from ENIAC and the 1968 “software crisis” to how modern practices arrived at continuous, lower-risk delivery.