zsmb.coEst. 2017

How I Finally Memorized Modifier Ordering in Compose

For the longest time, I proudly had no idea of how Modifier ordering works, and would just guess and then guess again when something didn't look quite right. Here's how I finally ended up remembering how the ordering works.


Building a macOS screen saver in Kotlin

This article documents how I created my own custom screen saver for macOS, built almost entirely in Kotlin, using the powers of Kotlin Multiplatform compiled to macOS. Join me for a tale of Kotlin success and macOS failures.


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.