I'm John, RafaelJohn9 on GitHub. I build the tools I wish already existed, usually right after something took far more pain than it should have. M-Pesa integrations. Setting up the same repo for the tenth time. A till that stops selling because the internet blinked. If I've fought it twice, I'd rather automate it once.

I also can't leave a black box alone. That's how I ended up writing my own BitTorrent client, a vector database from scratch, and most of the Under the Hood shelf on this site. Knowing what Git or SQLite is actually doing beats memorising the commands, and it's a lot less stressful when something breaks. Which it will.

Most of what I build is for Kenya first: shops where KPLC takes the power for the afternoon, fiber that falls back to a 4G hotspot, businesses that already run on WhatsApp and M-Pesa. That's the world OptiBiz AI was built for, and it won my team the Business category at the JKUAT 2025 Hackathon.

Code should be elegant, not clever. This site is where I write things down once they finally click, so the next person gets there faster than I did.

Currently brewing

~/.config

# the short version
editor:     vim          # fight me
shell:      bash
os:         linux        # obviously
languages:  [rust, python, javascript]
motto:      "if it's worth doing, automate it"
coffee:     true         # required dependency

On the shelf

Browse all 21 articles in the archive →

Latest chapter

Say hello

Email
john@kagunda.dev
GitHub
rafaeljohn9
LinkedIn
John Kagunda
X
@JohnKagunda_12