About Me
I believe computers are simple. It’s us humans who keep making them complicated.
I’m that programmer who reads programming language theory for fun and genuinely enjoys compiler design. While others debate framework-of-the-week, I’m deep in the ML family, OCaml is my daily driver, and yes, I use the type system to prevent bugs before they happen.
My Toolbox
OCaml — My daily driver. The type system catches bugs before they exist, and hot code reloading means I can iterate without downtime. I use it for anything that needs to stay standing.
TypeScript — When I have to touch the web, I want types. It’s JavaScript that won’t stab you in production at 3am.
Python — Still the best for gluing things together, scripting, and when the AI ecosystem hasn’t caught up to ML family languages yet.
Neovim — My editor of choice. Custom config in Lua, sub-50ms startup, LSP for everything. I don’t fight my tools; they disappear.
Pi Coding Agent — My pair programmer that doesn’t sleep. Good for scaffolding, refactoring, and rubber-ducking at scale.
Philosophy
I admire Mat Armstrong’s approach: solve the actual problem, ignore the hype, write code that makes sense six months later. Complexity is a bug, not a feature. If you need a diagram to explain your architecture, your architecture is wrong.
Currently Building
- Kowalski — A set-and-forget tax agentic platform for Kenyan SMEs. OCaml for the rules engine, Erlang for agent orchestration, direct KRA filing via eTIMS.
- Fenra — A swarm intelligence system for detecting corruption in public procurement. Multi-agent architecture with Graph RAG for relationship tracing.
The Goal
Uncomplicate things. Make programming accessible. Prove that elegant solutions exist—you just have to stop accepting messy ones.
“The best code is the code you don’t have to write. The second best is the code you write once and never touch again.”