Full-stack and platform engineer in Kampala, Uganda. I work mostly on backends, payments, and the Kubernetes and cloud infrastructure around them.
Right now I run Outlyz, a multi-tenant SaaS for distribution businesses. It's live with paying water, LPG, and brewery keg distributors. I built the EFRIS tax-compliance integration with the Uganda Revenue Authority, an offline-first point of sale on event sourcing, and a deposit ledger that tracks every refillable container by serial number.
Before that I led a 9-engineer team at BPOSeats through a Vue and build-tooling migration, and I was the founding engineer at Afriven, where I ran the GKE platform, Terraform, and zero-trust networking. CKAD and JSNAD certified.
- tessera · a consent-gated remote access broker in Go, on the standard library with no dependencies. A consultant asks for access, an insider taps approve, a scoped and audited tunnel opens for the session. mTLS end to end, the relay never sees plaintext.
- lumen · a self-hosted collaborative document editor with inline AI. Real-time editing on Yjs CRDTs, threaded comments, and a two-node LangGraph for the writer and editor passes.
- horus · an Electron app for debugging Kubernetes incidents across clusters. Root-cause analysis for crashes and scheduling failures, and a request tracer that follows traffic from ingress to pod.
- chattr · multi-user video calls on a custom mediasoup SFU. Simulcast for adaptive quality, and end-to-end encrypted chat where the room key lives in the URL fragment so the server only sees ciphertext.
- event-sourced-bank · a CQRS and saga reference on Postgres, with a double-entry ledger and a health endpoint that proves the books balance.
I send small fixes to tools I run in production. A few that merged:
- Kubernetes · fixed broken command examples in the task docs, including a wrong label key in the Debug Services guide that returned nothing.
- OpenTelemetry JS · corrected the CompressionAlgorithm import in the OTLP gRPC exporter example.
- LangGraph.js · added a missing reducer import to a state-management example.
- NestJS · corrected a pipe class name in the file upload guide.
- Better Auth · clarified that organization-owned API keys still require a user.
- Languages: TypeScript, Go, Python
- Backend: NestJS, Node.js, FastAPI, RabbitMQ
- Infrastructure: Kubernetes, GCP, AWS, Terraform, Docker, GitHub Actions, Ansible
- Data: PostgreSQL, Redis, MongoDB, Weaviate



