PinnedSam CooperinBetter ProgrammingShort Circuits, Bottom Types and the Vacuous BoomerangThe surprisingly useful explanation behind Kotlin’s funniest programFeb 5, 20235Feb 5, 20235
PinnedSam 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, 202311Feb 20, 202311
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 CooperBlameless Post-Mortem? Doesn’t Mean Nobody Messed UpPeople make mistakes, and no-blame culture is about acknowledging that, not denying itOct 22, 2023Oct 22, 2023
Sam CooperinBetter ProgrammingHow ChatGPT Wins Friends and Influences PeopleThe smooth-talking chatbot has dubious merchandise but textbook sales techniqueSep 25, 2023Sep 25, 2023
Sam CooperinBetter ProgrammingLock-Free Stacks Are Even Cooler in KotlinTreiber stacks are the coolest data structure you’ve never heard of, and tail recursion makes them even betterSep 22, 20233Sep 22, 20233
Sam CooperinBetter ProgrammingUnit Tests Aren’t Tests, They’re SensorsA good unit test doesn’t need to check whether the code works, just whether it’s changedSep 4, 20234Sep 4, 20234
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 ProgrammingDemystifying Kotlin’s Channel FlowsWhy does Kotlin have two almost identical flow builders, and which one should you be using?Dec 5, 20233Dec 5, 20233
Sam Cooper5 Pro Kotlin Dev Hacks For More Assertive CodeSerious pro Kotlin techniques for serious pro Kotlin devsJun 12, 20238Jun 12, 20238