I design and build distributed systems in Go, from device messaging and brokers to the Kubernetes fleets they run on.
Selected work
- mqttv5 A complete MQTT v5 client for Go, with failover, fan-out and durable delivery across brokers.3 multi-broker patterns
- VerneMQ Cluster fixes merged into an Erlang/OTP broker, and a chaos suite for testing them.6 PRs merged upstream
- argo-fleet Four ways to deliver one Git repository to a Kubernetes fleet, weighed up to 10,000 clusters.1 → 10,000 clusters modelled
How I work
- Measure before changing anything. Profiles, benchmarks and conformance suites decide, not intuition. mqttv5
- Make failure explicit. Validate before applying, fail closed, change all or nothing. argo-fleet, pkg/config
- Fix problems where they live, upstream when that is where the bug is. VerneMQ, Open source
Open source
36 merged pull requests across 20 projects, including telegraf, swag, FluentValidation, and vernemq.
Also built
- pkg/config typed, layered configuration; validated, hot-reloaded, redacted
- pkg/httpx retries, circuit breaking and caching as http.RoundTripper layers
- pkg/gowalker struct-tag plumbing for libraries configured by tags
- gitten repo sync across forges
- go-ci-actions Go CI caching
- charmap manifest value substitution