Sam CooperinBetter ProgrammingHow I Fell in Kotlin’s RunBlocking Deadlock Trap, and How You Can Avoid ItThe blocking coroutine builder can kickstart your coroutine journey, but you need to know the risks—and the alternativesOct 25, 202310Oct 25, 202310
Sam CooperinBetter ProgrammingThe Big Difference Between Flows and Channels in KotlinStop worrying if flows are hot or cold, and focus on good old-fashioned encapsulation insteadMar 205Mar 205
Sam CooperinBetter ProgrammingBreaking try-catch-finally in KotlinShould you use Kotlin’s generator functions?Jan 29, 20231Jan 29, 20231
Sam CooperinBetter ProgrammingThe Truth About Kotlin’s Non-Cancellable Coroutine ContextIt doesn’t actually do anything — but does that matter, or could its name alone be enough to make it useful?Aug 20, 20231Aug 20, 20231
Sam CooperinBetter ProgrammingThe Silent Killer That’s Crashing Your CoroutinesThere’s only one safe way to deal with cancellation exceptions in Kotlin, and it’s not to re-throw themFeb 20, 202310Feb 20, 202310
Sam CooperinBetter ProgrammingDemystifying Kotlin’s Channel FlowsWhy does Kotlin have two almost identical flow builders, and which one should you be using?Dec 5, 20232Dec 5, 20232