About Me
I'm a backend engineer with over a decade of experience building systems that move money, messages, or both. My journey started with a CS degree, followed by roles at startups and established tech companies where I've worked on everything from payments platforms to developer tooling.
I specialize in the JVM ecosystem, with expertise in Spring Boot, Kafka, and Postgres. I'm passionate about boring technology used carefully — measure before you optimize, fail toward duplicates not loss, and read the source code when the docs are wrong (they often are).
When I'm not coding, I'm writing technical articles, building small tools, and contributing to open-source. I believe in learning in public and sharing knowledge with the developer community, especially the unglamorous middle of the stack where the interesting bugs actually live.
Through this site, I document what I learn, share practical tutorials, and showcase the projects I’ve built. My goal is to write the articles I wish had existed when I was figuring this stuff out the first time.
Skills & Expertise
Backend
- Java & Spring Boot
- Kafka & event-driven systems
- Postgres & query optimization
- REST & gRPC API design
- Transactional outbox pattern
Observability
- Micrometer & Prometheus
- OpenTelemetry & tracing
- Grafana dashboarding
- GC log analysis
- Cardinality discipline
Infrastructure
- Kubernetes & Docker
- CI/CD with GitHub Actions
- Terraform & IaC
- Helm & GitOps
- Testcontainers
Experience
Principal Engineer
2022 — PresentNorthwind Payments
Own the eventing backbone (Kafka + outbox) and the money-movement API surface. Drove the migration off a dual-write publish path that was losing ~12 events/million to a transactional outbox that hasn’t lost one in 18 months.
Staff Backend Engineer
2018 — 2022Helio Logistics
Built the order-tracking pipeline (Spring Boot, Kafka, Postgres) from a prototype to 4k events/sec. Owned the GC and latency work that took p99 from 800ms to 90ms without a rewrite.
Senior Engineer
2015 — 2018Cobalt Systems
Distributed scheduling and job execution for a data platform. Learned, the hard way, why "we’ll just use a database as a queue" is a sentence that ages poorly.
Software Engineer
2012 — 2015Indigo Health
First job out of school. Java, a little Clojure, and a lot of on-call. Where I learned that the alert you ignore at 2pm is the page you get at 2am.
Education
B.Sc. in Computer Science
University of Technology
Graduated with honors. Focused on distributed systems, database internals, and concurrency. Senior project: a distributed task scheduler that taught me more about partial failures than any course did.
Get In Touch
I'm always open to discussing distributed systems, the JVM, or why your Kafka consumer is misbehaving. Whether you have a question or just want to argue about the outbox pattern, feel free to reach out.