Articles

  1. Protobuf has no null: evolving a schema without breaking old messages

    Adding a field, making it optional, making it required, removing it, adding a sealed subclass... each of these is a decision about bytes that were written months ago. How k2pb makes those decisions explicit.

    5 min readkmpprotobufk2pb

  2. k2pb: Protobuf for Kotlin Multiplatform, without the surprises

    Why I wrote my own Protobuf library when kotlinx.serialization already has one, and why it now runs the whole serialization layer of a point of sale.

    5 min readkmpprotobufkspk2pb

  3. An audio visualization with Jetpack Compose

    Yet another Jetpack Compose article, this time with a bit of Audio, to make your animations a bit more dynamic!

    5 min read

  4. Ktlint: a great 1st experience

    Code generation is often perceived as a compile-time security. We're ready to pay it by increasing the build time. But what if a linter was a replacement for compile-time safety while delivering a better code.

    8 min read

  5. Should I use Jetpack ViewModel?

    All new shiny libraries are not good for all projects, it has to responds to a real problem first. Let's see if you should pick Jetpack ViewModel.

    10 min readjetpackmvvmviewmodel

  6. RxJava2 subscribeOn: How to use it

    subscribeOn is an operator that can be easily used in the wrong place and lead to subtle bugs and even ANR. Some tips to avoid the pitfalls.

    6 min read

  7. RxJava2 puzzle: Do you understand subscribeOn?

    In my experience, the operator that has the lowest degree of understanding, and could definitely backfire at you in unexpected ways.

    4 min read

  8. RxJava2 puzzle: Subscription threading

    Understanding subscribeOn is required, but that's not always enough.

    4 min read

  9. RxJava2 puzzle: Scheduler as 3rd parameter

    Should we use the scheduler as 3rd parameter for methods like timer/interval?

    3 min read

  10. Minimalist Dagger for multi-modules

    How to make Dagger as simple as Koin, even with multiple modules.

    5 min readdagger

  11. Minimalist Dagger

    How to make Dagger as simple as Koin

    6 min readdagger

  12. TDD failures?

    Discovered old videos about TDD and understood why I failed at it... til now!

    4 min read

  13. Android ImageSpan autosizing

    Story: How we use Java reflection to achieve autosizing text & images while aligning multiple lines.

    7 min read