Writing

Notes on mobile engineering, and a chronological series on how I ended up doing native iOS systems work.

Series · The Layer Underneath

Post 1 · Origin

Why iOS, why now.

July 2026 · ~5 min read

Looking back at two years — React Native intern → Flutter developer → native iOS. The arc wasn't wandering between stacks; it was narrowing and going deep.

Read →
Post 2 · SparkLink

Building real-time video calling on raw WebRTC.

July 2026 · ~7 min read

An over-built dream app, a Reddit post that blew up, and the WebRTC calling gig it led to — and why "just connect a call" is the easy 20%.

Read →
Post 3 · SparkLink

The rewrite I didn't ask for.

July 2026 · ~6 min read

A senior rebuilt our calling backend on LiveKit without telling me. I was furious — and wrong. Why a media server changes everything: recording, group calls, and the TURN server that finally beat Wi-Fi.

Read →
Post 4 · Flutter

Nobody noticed. That was the point.

July 2026 · ~6 min read

Four hours on a fifteen-minute tab switch — a LERP colour transition nobody ever mentioned. Why that silence was the goal, and why I'm prouder of it than the payment gateway on the same app.

Read →
Companion · Kabootar

Building Kabootar: login-less, untraceable video calling.

July 2026 · ~5 min read

A PIN-based, no-account WebRTC video call — how it works on Firebase signaling, and the honest bugs I never fully fixed (no TURN, a connection that won't fully close, earpiece-only audio).

Read →

Still to come — shipping a product end to end, the call-drop-on-connect bug, and the native-iOS systems work: the error-handling rewrite, security, and the Android port.