zsmb.coBack in business

The conflation problem of testing StateFlows

StateFlow behaves as a state holder and a Flow of values at the same time. Due to conflation, a collector of a StateFlow might not receive all values that it holds over time. This article covers what that means for your tests.


Celebrating 5 years of Kotlin on Android ➟

Five years ago, at the 2017 Google I/O Keynote, Kotlin became an officially supported language for Android development. With this post, let's celebrate by revisiting that initial story, some important steps along the way, and by looking at the ongoing efforts by Google to support Kotlin.


5 years of Kotlin on Android — the extended interviews ➟

Interview material for the 5 years of Kotlin on Android celebration that did not make it into the main blog post.


Migrating to the new coroutines 1.6 test APIs ➟

See the steps we took to migrate our samples to the new APIs, and then get started on migrating your own project!


Wrap-up 2021

Another year over, a new one's almost begun. Here's a brief summary of what I've done in this one.


Adventures in Tracking Upload Progress With OkHttp and Retrofit ➟

Tracking file upload progress can have some unexpected complexities. This article tells the story of how we refined our implementation of this feature in the Stream Chat Android SDK.


All About Opt-In Annotations

Have you ever encountered APIs that show warnings or errors when you use them, saying that they're internal or experimental? In this guide, you'll learn everything you need to know about opt-in APIs in Kotlin: how to create and use them, and all their nuances.


A Bit of Gradle Housekeeping

While cleaning is traditionally a spring activity, let me invite you to do it at the end of summer this time around. In this article, we'll take a look at some Gradle configuration that you can probably clean up in your Android project.