41554 blogs Β· [ { "id": "01a0821a-453d-73ed-8f0b-c51ddb87f83c", "title": "Setting up Compose Multiplatform previews", "url": "https://zsmb.co/compose-multiplatform-preview-setup/", "published_at": "2025-07-29T07:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51ddc4810e0", "title": "How I Finally Memorized Modifier Ordering in Compose", "url": "https://zsmb.co/remembering-modifier-order/", "published_at": "2024-06-04T09:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51ddce0a363", "title": "Building a macOS screen saver in Kotlin", "url": "https://zsmb.co/building-a-macos-screen-saver-in-kotlin/", "published_at": "2024-03-05T12:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51ddd375f0c", "title": "The conflation problem of testing StateFlows", "url": "https://zsmb.co/conflating-stateflows/", "published_at": "2023-08-15T14:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51dddc46866", "title": "Celebrating 5 years of Kotlin on Android", "url": "https://android-developers.googleblog.com/2022/08/celebrating-5-years-of-kotlin-on-android.html", "published_at": "2022-08-17T19:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51dde27fefe", "title": "5 years of Kotlin on Android β€” the extended interviews", "url": "https://medium.com/androiddevelopers/5-years-of-kotlin-on-android-the-extra-bits-a7dcd17480a9", "published_at": "2022-08-17T18:50:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51ddecda1a4", "title": "Migrating to the new coroutines 1.6 test APIs", "url": "https://medium.com/androiddevelopers/migrating-to-the-new-coroutines-1-6-test-apis-b99f7fc47774", "published_at": "2022-06-29T20:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51ddfa9938e", "title": "Wrap-up 2021", "url": "https://zsmb.co/wrap-up-2021/", "published_at": "2021-12-31T09:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51de09d7e15", "title": "Adventures in Tracking Upload Progress With OkHttp and Retrofit", "url": "https://dev.to/zsmb13/adventures-in-tracking-upload-progress-with-okhttp-and-retrofit-1gff", "published_at": "2021-12-10T16:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51de18732c0", "title": "All About Opt-In Annotations", "url": "https://zsmb.co/opt-in-annotations/", "published_at": "2021-09-28T15:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51de1cf807d", "title": "A Bit of Gradle Housekeeping", "url": "https://zsmb.co/a-bit-of-gradle-housekeeping/", "published_at": "2021-09-01T20:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51de2aa76af", "title": "Keeping public API in check with the Kotlin binary validator plugin", "url": "https://dev.to/zsmb13/keeping-public-api-in-check-with-the-kotlin-binary-validator-plugin-2b6m", "published_at": "2021-07-14T07:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51de35ca59f", "title": "Announcing requireKTX", "url": "https://zsmb.co/announcing-requirektx/", "published_at": "2021-06-17T18:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51de3fc5e8a", "title": "Clean Chat Example App with Jetpack Compose", "url": "https://getstream.io/blog/jetpack-compose-clean-chat-example/", "published_at": "2021-06-08T18:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51de47d27e9", "title": "Pi Practice App in Compose", "url": "https://zsmb.co/pi-practice-app-in-compose/", "published_at": "2021-04-18T18:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51de4beb026", "title": "Prime Table Generator in Jetpack Compose", "url": "https://zsmb.co/prime-table-generator-jetpack-compose/", "published_at": "2021-03-25T16:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51de50802ff", "title": "Build an Android Chat app with Jetpack Compose", "url": "https://proandroiddev.com/android-chat-app-jetpack-compose-dec472140ff1", "published_at": "2021-03-19T15:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51de52f7ce8", "title": "Jetpack Compose: First Impressions and Learning Resources", "url": "https://getstream.io/blog/jetpack-compose-impressions-resources/", "published_at": "2021-03-05T19:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51de5983b27", "title": "Compose O'Clock", "url": "https://zsmb.co/compose-o-clock/", "published_at": "2021-03-02T16:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51de6947602", "title": "Publishing Android libraries to MavenCentral in 2021", "url": "https://getstream.io/blog/publishing-libraries-to-mavencentral-2021/", "published_at": "2021-02-04T16:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51de6b1d81e", "title": "Sealed goodies coming in Kotlin 1.5", "url": "https://zsmb.co/sealed-goodies-coming-in-kotlin-1-5/", "published_at": "2021-01-19T14:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51de76beb84", "title": "Wrap-up 2020", "url": "https://zsmb.co/wrap-up-2020/", "published_at": "2020-12-30T20:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51de7f7a4f8", "title": "Mastering API Visibility in Kotlin", "url": "https://zsmb.co/mastering-api-visibility-in-kotlin/", "published_at": "2020-11-04T17:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51de8282021", "title": "Effective Class Delegation", "url": "https://zsmb.co/effective-class-delegation/", "published_at": "2020-09-29T20:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51de8455f79", "title": "Krate, a better SharedPreferences experience", "url": "https://zsmb.co/krate-a-better-sharedpreferences-experience/", "published_at": "2020-09-09T16:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51de88da77e", "title": "Introducing 🌈RainbowCake", "url": "https://zsmb.co/introducing-rainbowcake/", "published_at": "2020-06-29T15:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51de96992a4", "title": "Fragment Lifecycles in the Age of Jetpack", "url": "https://zsmb.co/fragment-lifecycles-in-the-age-of-jetpack/", "published_at": "2020-06-18T16:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51de9a564be", "title": "Thoughts about Event Handling on Android", "url": "https://zsmb.co/thoughts-about-event-handling-on-android/", "published_at": "2020-06-09T18:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51dea412ccc", "title": "Thoughts about State Handling on Android", "url": "https://zsmb.co/thoughts-about-state-handling-on-android/", "published_at": "2020-06-04T14:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51dea5149fc", "title": "Designing and Working with Single View States on Android", "url": "https://zsmb.co/designing-and-working-with-single-view-states-on-android/", "published_at": "2020-05-25T17:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51deadd7f85", "title": "The Single-cable Dream", "url": "https://zsmb.co/the-single-cable-dream/", "published_at": "2020-05-10T09:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51deb71a44b", "title": "Anecdotes about web APIs", "url": "https://zsmb.co/anecdotes-about-web-apis/", "published_at": "2020-04-11T10:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51debf04f12", "title": "Coroutine Cancellation 101", "url": "https://zsmb.co/coroutine-cancellation-101/", "published_at": "2020-03-04T19:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51dec69410a", "title": "Let's Review: Pokedex", "url": "https://zsmb.co/lets-review-pokedex/", "published_at": "2020-01-07T14:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51decbe0b0a", "title": "Wrap-up 2019", "url": "https://zsmb.co/wrap-up-2019/", "published_at": "2019-12-27T09:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51decfa7f55", "title": "Getting Only Positive Feedback", "url": "https://zsmb.co/getting-only-positive-feedback/", "published_at": "2019-11-28T16:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51ded3ae5f5", "title": "Better Custom Views with Delegates", "url": "https://web.archive.org/web/20210621155927/https://blog.autsoft.hu/better-custom-views-with-delegates/", "published_at": "2019-10-17T14:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51dedb1d912", "title": "Book (P)review: Living by the Code", "url": "https://zsmb.co/book-preview-living-by-the-code/", "published_at": "2019-09-09T13:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51deea25250", "title": "Publishing an Android library to MavenCentral in 2019", "url": "https://web.archive.org/web/20210621172035/https://blog.autsoft.hu/publishing-an-android-library-to-mavencentral-in-2019/", "published_at": "2019-08-27T16:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51def29e322", "title": "Primaries Matter (a discussion of constructors)", "url": "https://zsmb.co/primaries-matter-a-discussion-of-constructors/", "published_at": "2019-08-12T18:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51defda2e95", "title": "The Dog Riddle", "url": "https://zsmb.co/the-dog-riddle/", "published_at": "2019-04-25T18:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51df083f694", "title": "Delightful Delegate Design", "url": "https://web.archive.org/web/20200513142755/https://blog.autsoft.hu/delightful-delegate-design/", "published_at": "2019-04-11T19:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51df11a2d24", "title": "Maintaining Compatibility in Kotlin Libraries", "url": "https://zsmb.co/maintaining-compatibility-in-kotlin-libraries/", "published_at": "2019-03-30T22:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51df1bd8ec8", "title": "A Deep Dive into Extensible State Saving", "url": "https://zsmb.co/a-deep-dive-into-extensible-state-saving/", "published_at": "2019-03-19T20:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51df2224104", "title": "An Early Look at ViewModel SavedState", "url": "https://zsmb.co/an-early-look-at-viewmodel-savedstate/", "published_at": "2019-03-14T20:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51df23023ad", "title": "Site History", "url": "https://zsmb.co/site-history/", "published_at": "2019-03-04T19:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51df2cf96fa", "title": "Managing Git configurations", "url": "https://zsmb.co/managing-git-configurations/", "published_at": "2019-02-25T18:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51df366d0d1", "title": "@JvmOverloads for Android Views", "url": "https://zsmb.co/jvmoverloads-for-android-views/", "published_at": "2019-02-22T11:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51df3d4c1dd", "title": "Retrofit meets coroutines", "url": "https://zsmb.co/retrofit-meets-coroutines/", "published_at": "2019-02-15T22:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51df3f7f397", "title": "Data classes aren't (that) magical", "url": "https://zsmb.co/data-classes-arent-that-magical/", "published_at": "2019-01-16T16:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51df4845e64", "title": "Wrap-up 2018", "url": "https://zsmb.co/wrap-up-2018/", "published_at": "2018-12-27T15:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51df529cdfc", "title": "A Confusing Dependency", "url": "https://zsmb.co/a-confusing-dependency/", "published_at": "2018-12-12T10:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51df530b1f3", "title": "AndroidX, one month in", "url": "https://zsmb.co/androidx-one-month-in/", "published_at": "2018-10-21T17:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51df5350496", "title": "KotlinConf '18", "url": "https://zsmb.co/kotlinconf-18/", "published_at": "2018-10-06T21:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51df5b5f549", "title": "Typical Kotlin", "url": "https://zsmb.co/posts/typical-kotlin/", "published_at": "2018-09-21T04:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51df5f74f32", "title": "From Java Builders to Kotlin DSLs", "url": "https://kotlinexpertise.com/java-builders-kotlin-dsls/", "published_at": "2018-07-11T06:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51df6621d0d", "title": "Kotliners 2018", "url": "https://zsmb.co/kotliners-2018/", "published_at": "2018-06-16T20:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51df6f3e453", "title": "The Other Side of Stack Overflow", "url": "https://zsmb.co/the-other-side-of-stack-overflow/", "published_at": "2018-06-02T19:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51df7273557", "title": "On \"From Java to Kotlin and Back Again\"", "url": "https://zsmb.co/on-from-java-to-kotlin-and-back-again/", "published_at": "2018-05-24T06:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51df78f3cdf", "title": "Top 10 Kotlin Stack Overflow questions, pt 3 - nulls and such", "url": "https://zsmb.co/top-10-kotlin-stack-overflow-questions-3/", "published_at": "2018-05-08T08:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51df81c41df", "title": "Top 10 Kotlin Stack Overflow questions, pt 2 - the big ones", "url": "https://zsmb.co/top-10-kotlin-stack-overflow-questions-2/", "published_at": "2018-05-01T08:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51df85c303d", "title": "Top 10 Kotlin Stack Overflow questions, pt 1 - decisions, decisions", "url": "https://zsmb.co/top-10-kotlin-stack-overflow-questions-1/", "published_at": "2018-04-24T08:00:00+00:00" }, { "id": "01a0821a-453d-73ed-8f0b-c51df8a7b6ee", "title": "Kotlin DSL design with VillageDSL", "url": "https://zsmb.co/kotlin-dsl-design-with-village-dsl/", "published_at": "2017-09-20T18:00:00+00:00" } ] posts Claim your blog
Back to Marton Braun
Blog Β· corpus.blog/blogs/zsmb.co/posts

Marton Braun

zsmb.co

2025

2024

2023

2022

2021

2020

2019

2018

2017