Sebastian and Márton chat with Rod Johnson, the creator of the Spring Framework. Rod tells the story of how Spring was born more than two decades ago, and shares his recent journey of coming back to the JVM and discovering all the fun of being a newcomer to Kotlin.Resources: Expert One-on-One J2EE Design and Development: Rod Johnson Oh the Places You'll Go! Shoulders of Giants: Languages Kotlin Learned From | Andrey Breslav Revamping and Extending Kotlin's Type System | Ross Tate Scala in 2018 Keynote | Rod Johnson But Java has pattern matching! | Alejandro Serrano MenaHosts: Sebastian Aigner – Website | Bluesky Márton Braun – Website | Bluesky Guest: Rod Johnson – Twitter | LinkedIn Timeline:(0:00) Intro(0:52) The origins of Spring(6:40) You need a business model(8:21) Consistency is key(9:39) Sustainable open source(14:22) Parallels with JetBrains and Kotlin(15:29) Rod’s journey around the JVM(20:48) Shoulders of giants(22:34) The newcomer experience(24:40) LLMs write great Kotlin(30:34) “You can start without great pain”(33:32) Extension functions(36:15) Too much magic?(37:56) Rod’s feature wishlist(39:37) Versioning and compatibility(41:19) Ecosystems and interop(43:34) Kotlin type system evolution(46:27) Kotlin with Spring(52:24) Learning Spring with Kotlin(54:46) Kotlin in 5 years?(1:00:39) Rod’s current work(1:03:58) Wrap-up
--------
1:05:07
Building KMP Libraries: The RevenueCat Story
Sebastian and Márton discuss building KMP libraries with Jay Shortway, the author of RevenueCat’s Kotlin Multiplatform SDK for in-app purchases.Resources: RevenueCat KMP SDK How we built the RevenueCat SDK for Kotlin Multiplatform Hybrid SDK Architecture at RevenueCat ttypic/swift-klib-plugin on GitHub RevenueCat/purchases-kmp on GitHub Consider moving `Instant` and `Clock` to the standard library · Kotlin/kotlinx-datetime RevenueCat openingsHosts: Sebastian Aigner – Website | Bluesky Márton Braun – Website | Bluesky Guest: Joop Korteweg – Twitter Timeline:(0:00) Intro(0:44) What’s RevenueCat(4:00) In-app purchases are hard(7:22) The multiplatform SDK(12:44) The demand for KMP(16:30) Hiring and team structure(18:42) SDKs for any framework(21:27) Building on native SDKs(23:45) Improving iOS linking(24:54) The SDK is on GitHub(26:05) Benefits of building on native(28:18) Designing a common API(33:21) Add-on modules for SDKs(37:30) Instant in the standard library(38:04) Returning results from the API(39:53) API design decisions(44:57) Codegen opportunities(45:48) The best things about KMP(47:07) KMP improvements wishlist(48:28) The KMP journey(49:45) Wrap-up
--------
52:24
Becoming a KMP Expert
Sebastian and Pamela discuss what it means to be an expert in Kotlin Multiplatform, with the help of a panel of experts! Learn about why it's interesting to dive deep into a certain technology, recommendations on how to learn advanced topics, and general advice on how to get the most out of using KMP.SKIEKMP libraries: whyoleg/cryptography-kotlinInteresting code to explore: JetBrains/kotlin Kotlin/kotlinx-datetime Kotlin/kotlinx-io Kotlin/kotlinx.coroutines Cartesian product by Jake Get an invite!Ecosystem wishlist: wasmJs support in SQLDelight Compose Multiplatform support in MapLibreLearning resources: Kotlin Multiplatform build setup from scratch with Sebastian Sellmair KEEP - Kotlin Evolution and Enhancement Process HexFormat proposal and discussion Uuid proposal and discussionMore KMP experts: Kevin Galligan Bluesky Twitter Russell Wolf GitHub Twitter multiplatform-settings Jesse Wilson GitHub Sebastian Sellmair Twitter Salomon Brys TwitterHosts: Sebastian Aigner Website Pamela Hill Blog BlueskyGuests: Jake Wharton Website John O'Reilly Website KMP samples on GitHub Konstantin Tskhovrebov Mastodon Tadeas Kriz Mastodon Bluesky(0:00) Introductions(1:40) Why be a KMP expert?(9:14) First steps to being an expert(16:38) Respecting each platform(24:04) Libraries for KMP(27:45) Advanced learning resources(38:18) Ecosystem wishlist(43:03) Exercising your KMP skills(48:15) Shoutouts to other experts(51:34) Wrap-up
--------
52:43
Going from Swift to Kotlin with Skip
In a slightly unconventional episode, Sebastian and Márton talk to the founders of Skip, an iOS-to-Android, Swift-to-Kotlin transpiler solution. Marc and Abe have a background working on both Apple platforms and the JVM, and their latest project is a bridge across these two ecosystems.
Skip
Skip.tools on GitHub
Contributing to SkipUI webinar
kdoctor
Hosts:
Sebastian Aigner
Website
Bluesky
Márton Braun
Website
Bluesky
Guests:
Abe White
Twitter
Mastodon
Marc Prud'hommeaux
GitHub
(0:00) Weather (2:02) Introductions (3:10) Elevator pitch (3:45) The initial idea(6:14) Pivot around the server-side (8:35) Skip(.tools) (8:56) The target audience (9:58) What about Android devs? (12:11) The current state (14:57) Pricing and components (16:43) Contributing to SkipUI (18:55) Reimplementing everything (23:07) The Skip stack (26:17) Wrapping JVM types (28:27) Writing Kotlin in Swift?! (29:56) Tooling support (32:02) There’s a Gradle project! (34:39) iOS API coverage (38:24) Platform differences (40:10) Data storage (44:31) Building on JVM libraries (46:42) JSON problems (48:00) Testing the Skip stack (51:42) SwiftUI to Compose (58:21) IDE experiences (1:03:35) Conclusion
--------
1:04:57
Platform Integrations in Kotlin Multiplatform with Russell Wolf
Sebastian introduces the new co-host of the podcast, in a special episode recorded on location at droidcon New York! Joined by Russell Wolf, author of the multiplatform-settings library, we discuss the conference, different code sharing approaches for Kotlin Multiplatform, and how to build great multiplatform libraries.
droidcon New York
When sharing isn’t caring: Using platform-specific code in Kotlin Multiplatform (Russell’s talk)
Compose Multiplatform on iOS: On the Road to Stable (Seb’s talk)
Composing an API the *right* way (Márton’s talk)
The deprecated Accompanist WebView implementation for Jetpack Compose
russhwolf/multiplatform-settings on GitHub
Kotlin Multiplatform database libraries
Room
SQLDelight
Dependency injection libraries
Koin
Kotlin-inject
ViewModel for Kotlin Multiplatform
Hosts:
Sebastian Aigner
Website
Márton Braun
Website
Guest:
Russell Wolf
GitHub
Twitter
Timestamps
0:00 Intro at home
2:02 Intro at droidcon NYC
4:23 Russell’s talk topic
8:14 Code sharing approaches
12:28 Wrapping native APIs
16:18 Attempted segue
16:35 Designing reusable APIs
18:02 Actual segue
18:14 multiplatform-settings
20:23 Supported platforms
24:05 SharedPreferences challenges
26:20 Observable preferences
29:51 Secure storage
30:55 Windows again
31:36 Library code as reference
33:15 Testable library code
35:05 Initializing a KMP library
38:18 Database libraries
40:55 Dependency injection
44:40 Outro