Compose on the Web: My First Tech Talk at Londroid

I’ve been attending meetups and conferences since 2023, always finding them daunting. This year, I decided to make myself even more uncomfortable by giving a talk.

In January 2025, I attended Google’s Speaker Training Workshop by Zack Akil. I had no plans to speak anytime soon—I was just curious. But it turned out to be one of the best sessions I’ve attended. Zack broke down the mechanics of storytelling in a way that made public speaking feel like a learnable skill, not a personality trait. I left feeling like maybe I could give a talk.

A month later, I was at a Londroid1 event at Monzo’s London office. I got chatting with Carl-Gustaf Harroch, and he mentioned they were looking for speakers. So I reached out—and the organisers kindly accepted my proposal.

By March, I delivered ...

Let iOS Developers Choose Dependencies in Your KMP SDK

I was building a Kotlin Multiplatform SDK that needed to support four analytics providers—Google Analytics, Facebook, AppsFlyer, and Amplitude. Each customer typically only uses one or two, never all four.

The Challenge: How to let developers pick and choose which analytics integrations to include, without forcing them to bundle everything?

The solution seemed obvious: build separate implementations for each analytics provider and let developers include only what they need.

On Android, this is straightforward—create separate Gradle modules, and developers pick which ones to add. Done in 30 seconds.

dependencies {
    implementation("com.example:shared:1.2.3")
    implementation("com.example:analytics-google:1.2.3")    // ✓ Just this
}

But on iOS? I had no idea where to start.

So I had two terrible options (or maybe more, but I could only think of these two):

Option 1: Bundle everything into one fat XCFramework. ...

Tried Reading the HTML Spec, Wrote a Parser in Kotlin

Recently, I got curious about HTML parsing—you know, that thing browsers do billions of times a day that we all take completely for granted.

How hard could it be? I thought, like every programmer before me who has wandered into this particular circle of hell.

Turns out: very hard. HTML parsing isn’t just about recognizing <div> tags and calling it a day. It’s a complex mess of state machines, error recovery, and edge cases with countless bizarre scenarios.

The good news? HTML parsing is a solved problem. It’s been thoroughly documented in standards like the WHATWG and W3C spec. I went with the WHATWG HTML Living Standard1 because it’s what all modern browsers actually implement, and it’s actively maintained. The WHATWG spec defines a parsing algorithm so intricate that implementing it correctly is genuinely challenging.

So naturally, I did ...