Skip to content
How Major Metros Run on KMP episode artwork

Mar 5, 2026 1 hr 39 min

How Major Metros Run on KMP

from Talking Kotlin Hosted by Talking Kotlin

Every time you tap through a subway gate in New York City, you’re using Kotlin Multiplatform! In this episode, we sit down with Paweł Kwieciński from Masabi to explore how they brought a decade-old Java codebase to KMP, powering ticket validation across mobile apps, embedded devices, and backend systems for public transit agencies worldwide. Resources: Masabi J2ObjC (Java to Objective-C translator) Google Workspace Migration to Kotlin Large Scale Changes with AI – Uber | Ty Smith KotlinX DateTime Ktor (Client & Server) Burst library (archived) Java ME (Micro Edition) Mbed TLS SQLDelight Compose Multiplatform JetBrains AI Assistant & Junie Hosts: Sebastian Aigner – Website | Bluesky Márton Braun – Website | Bluesky Guest: Paweł Kwieciński Timeline: (0:00) Introduction (1:12) What is Masabi? (3:03) How does Kotlin fit into this? (6:30) System architecture overview (8:33) Embedded SDK and mobile apps (10:33) Ticket inspectors and validators (13:22) Offline operation (16:29) The KMP decision (24:42) Evaluating alternatives (27:21) Planning the migration (33:28) First lines of Kotlin (43:45) Translating Java to Kotlin (53:22) AI-assisted code translation (56:39) Early AI era challenges (1:05:01) Testing challenges (1:08:22) KMP dependencies (1:11:34) Domain-specific dependencies (1:16:55) Java ME and C interop (1:23:22) Backend-client sharing (1:26:59) Current status (1:31:48) Future plans: CMP (1:36:26) Wrap-up

Episode details come from the podcast's RSS feed.

Embed this episode

Ready to play

How Major Metros Run on KMP

0:00 1:39:25

No transcript yet.

Requests help us decide what to transcribe next.

Frequently asked questions

How long is this episode of Talking Kotlin?

This episode is 1 hour and 39 minutes long.

When was this Talking Kotlin episode published?

This episode was published on March 5, 2026.

Can I download this Talking Kotlin episode?

Yes. Use the download control on the episode player to save the publisher-provided media file.