Iden Tumuhirwe
WritingWhatever's on my mind

Things I build, and things I just think about.

August 4, 2026 · 13 min read

I tried building a live stream translator. The whole thing hinged on where to cut the audio.

I wanted subtitles for streams in languages I don't speak. Whisper and a translation model get you maybe half of it. The rest is voice activity detection, bounded queues that shed load instead of falling behind, and a run of bugs that reported success on every stage while translating nothing at all.

Python · Whisper

July 24, 2026 · 17 min read

I wanted to play with custom MCP servers. I spent the night at the physical link layer.

The plan was a fresh VM to experiment with my own MCP servers and the rest of the AI stack. Standing between me and that was a second Proxmox bridge on a different network, which turned into a gateway error, a bridge that didn't exist, a dead physical link, and a DNS failure that wasn't even mine. I did not write a single line of MCP that night.

Proxmox · Networking

July 18, 2026 · 18 min read

Building a SQL assistant with a tiny LLM, where the model is the least important part

The pitch is always the same: type a question in plain English, get a real number back from the real database. You don't need a frontier model for that. A few-hundred-million-parameter model, a read-only replica, a curated reporting schema, and a paranoid validation pipeline will answer 'how much did Airtel collect today?' correctly, and the model turns out to be the easiest part.

AI · LLMs

July 17, 2026 · 28 min read

An LLM is a file full of numbers, and I mean that literally

I got tired of hand-waving 'it predicts the next token' at people, so I fell down a rabbit hole: a 1951 Shannon paper, an ARPANET RFC of two chatbots in therapy, the transformer paper itself. It ends with me training a language model in 80 lines of vanilla JavaScript and watching it insist the iphone launched sputnik.

AI · LLMs

July 15, 2026 · 14 min read

Bun rewrote itself in 11 days. Everyone argued about the wrong thing.

The Bun-to-Rust story got told as Zig versus Rust, then as a fight about memory safety, then as a founder feud. I think all three framings miss it. The interesting part isn't the language they left. It's what the rewrite quietly proved about what code is now worth, and what it conveniently skipped.

Opinion · Bun

July 14, 2026 · 6 min read

The free AWS tier still wants your credit card. The new sandbox doesn't.

AWS Builder Center now hands out pre-provisioned, throwaway AWS accounts you can deploy real resources into, no personal account, no card, no surprise bill. It's the first genuinely card-free way to touch real AWS, and it comes with exactly the constraints you'd expect for something free.

AWS · Learning

July 10, 2026 · 5 min read

The YouTube algorithm stopped recommending and started herding

My homepage used to feel like it knew me. Now it's a Shorts shelf, three reaction channels I never asked for, and a Subscriptions tab that quietly drops half the people I actually follow. This one's just a rant, and I know I'm not the only one having it.

Rant · Internet

July 7, 2026 · 9 min read

What building SubTrackr taught me about three processes pretending to be one app

I built a subscription tracker to get past tutorial-level SwiftUI, and the actual lesson was that an iOS app isn't one program. It's the main app, a widget extension, and a Live Activity, each running separately and mostly unaware of each other.

Swift · SwiftUI

July 4, 2026 · 6 min read

What building a Slack clone taught me about Elixir

I rebuilt Slack's core loop in Phoenix to see if the 'Elixir is great for real-time' claim actually holds up outside a conference talk. Notes on channels, presence, and the two-topic trick that made the sidebar work.

Elixir · Phoenix

June 24, 2026 · 7 min read

The hardest part of a GPS camera wasn't the GPS

A field-documentation app that geotags and timestamps photos sounds like a location problem. It mostly wasn't. The actual work was burning legible, correctly laid-out metadata onto a photo of unknown size, unknown orientation, and unknown content, using nothing but a Canvas and manual typography.

Kotlin · Android

June 18, 2026 · 6 min read

The making of a library I built to stop parsing DRF errors by hand

Every Kotlin client I've written against a Django REST Framework backend ends up with its own slightly-wrong error parsing code, copied from the last project. DRF Error Handler is me finally writing that code once, publishing it properly, and being reminded that publishing is the actual hard part.

Kotlin · Open Source

June 6, 2026 · 7 min read

A fake phone for a protocol three carriers can't agree on

USSD still runs half the mobile money and airtime menus in Africa, and every carrier speaks a slightly different dialect of it. I spent late May and early June building an Android simulator so I could stop testing that dialect against a real gateway every single time.

Kotlin · Android

January 8, 2026 · 7 min read

S3, CloudFront, and a WebSocket that kept dying at exactly 60 seconds

Static frontend on S3, CloudFront in front of it, a WebSocket backend for the real-time parts. It's a standard AWS pattern right up until you actually wire it together, and then it turns out a CDN and a persistent bidirectional connection don't agree on much.

AWS · CloudFront

November 12, 2025 · 5 min read

SAP Service Layer will tell you something broke. It won't say what.

I've spent a good stretch of my career integrating against SAP Business One's Service Layer, and the thing nobody warns you about isn't the data model. It's that when something goes wrong, SAP's answer is usually a number, not an explanation.

Rant · SAP