Description
<p>Sebastian and Márton chat with Marcin Moskała about coroutines.</p><p><strong>Resources:</strong></p><ul> <li><a href="https://coroutinesmastery.com/" rel="ugc noopener noreferrer" target="_blank">Coroutines Mastery course</a></li> <li><a href="https://kotlinlang.org/docs/coroutines-overview.html" rel="ugc noopener noreferrer" target="_blank">Coroutines | Kotlin Documentation</a></li> <li><a href="https://github.com/Kotlin/kotlinx.coroutines" rel="ugc noopener noreferrer" target="_blank">kotlinx.coroutines</a></li> <li><a href="https://www.youtube.com/watch?v=QTX5_JV4TVU" rel="ugc noopener noreferrer" target="_blank">Taming Asynchronous Beasts | Marcin Moskała</a></li> <li><a href="https://www.youtube.com/watch?v=3vaAVtnrzAM" rel="ugc noopener noreferrer" target="_blank">Coroutine Debugging in IntelliJ IDEA | Alexey Merkulov</a></li> <li><a href="https://www.youtube.com/watch?v=VyBxy3_Mj6Q" rel="ugc noopener noreferrer" target="_blank">Lifecycles, Coroutines and Scopes | Alejandro Serrano Mena</a></li> <li><a href="https://www.youtube.com/watch?v=qJB5iX2cOu0" rel="ugc noopener noreferrer" target="_blank">Collect Like a Pro | Manuel Vivo</a></li> <li><a href="https://www.youtube.com/watch?v=nKCsIHWircA" rel="ugc noopener noreferrer" target="_blank">Untangling Coroutine Testing | Márton Braun</a></li> <li><a href="https://github.com/JetBrains/lincheck" rel="ugc noopener noreferrer" target="_blank">JetBrains/lincheck – Concurrent testing framework</a></li> <li><a href="https://slack-chats.kotlinlang.org/c/talking-kotlin" rel="ugc noopener noreferrer" target="_blank">#talking-kotlin on Kotlin Slack</a></li></ul><p><strong>Hosts:</strong></p><ul> <li> Sebastian Aigner – <a href="https://sebi.io/" rel="ugc noopener noreferrer" target="_blank">Website</a> | <a href="https://bsky.app/profile/sebi.io" rel="ugc noopener noreferrer" target="_blank">Bluesky</a> </li> <li> Márton Braun – <a href="https://zsmb.co" rel="ugc noopener noreferrer" target="_blank">Website</a> | <a href="https://bsky.app/profile/zsmb.co" rel="ugc noopener noreferrer" target="_blank">Bluesky</a> </li></ul><p><strong>Guest:</strong></p><ul> <li> Marcin Moskała – <a href="https://kt.academy/user/marcinmoskala" rel="ugc noopener noreferrer" target="_blank">kt.academy</a> </li></ul><p><strong>Timeline:</strong><br />(0:00) Introduction<br />(1:18) Branding discussion<br />(3:23) Handling preconceptions<br />(4:54) What are coroutines?<br />(7:17) Lightweight threads?<br />(11:07) Where coroutines live<br />(13:27) Sequence Builder Example<br />(17:37) The design of coroutines<br />(20:52) What Makes Coroutines special vs other languages?<br />(26:56) Coroutines vs Loom<br />(34:55) Easy to start, hard to master<br />(41:07) Common mistakes<br />(49:33) Flows<br />(58:52) Thinking about Flows<br />(1:02:41) Derailing the conversation<br />(1:03:55) Flows for single values<br />(1:12:27) Structured concurrency<br />(1:18:53) The 4 advantages<br />(1:24:40) Seb tries web dev / The web is broken?!<br />(1:31:15) collectAsStateWithLifecycle<br />(1:32:00) Gardening break<br />(1:36:23) Scopes and contexts<br />(1:43:22) Testing coroutines<br />(1:50:29) Lincheck<br />(1:51:32) Turbine<br />(1:55:05) Coroutines Mastery course<br />(2:01:43) Wrap-up</p>