How Major Metros Run on KMP
Failed to add items
Add to basket failed.
Add to wishlist failed.
Remove from wishlist failed.
Adding to library failed
Follow podcast failed
Unfollow podcast failed
-
Narrated by:
-
By:
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