<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <author></author>
    <title>zsmb.co</title>
    <link>https://zsmb.co/</link>
    <description>Recent content on zsmb.co</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Fri, 10 Apr 2026 06:00:00 +0000</lastBuildDate>
    
        <atom:link href="https://zsmb.co/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>Setting up Compose Multiplatform previews</title>
      <link>https://zsmb.co/compose-multiplatform-preview-setup/</link>
      <pubDate>Tue, 29 Jul 2025 07:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/compose-multiplatform-preview-setup/</guid>
      <description>Compose Multiplatform now has support for previews in common code. Here&#39;s how you can get started with using them.</description>
    </item>
    
    <item>
      <title>How I Finally Memorized Modifier Ordering in Compose</title>
      <link>https://zsmb.co/remembering-modifier-order/</link>
      <pubDate>Tue, 04 Jun 2024 09:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/remembering-modifier-order/</guid>
      <description>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&#39;t look quite right. Here&#39;s how I finally ended up remembering how the ordering works.</description>
    </item>
    
    <item>
      <title>Building a macOS screen saver in Kotlin</title>
      <link>https://zsmb.co/building-a-macos-screen-saver-in-kotlin/</link>
      <pubDate>Tue, 05 Mar 2024 12:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/building-a-macos-screen-saver-in-kotlin/</guid>
      <description>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.</description>
    </item>
    
    <item>
      <title>The conflation problem of testing StateFlows</title>
      <link>https://zsmb.co/conflating-stateflows/</link>
      <pubDate>Tue, 15 Aug 2023 14:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/conflating-stateflows/</guid>
      <description>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.</description>
    </item>
    
    <item>
      <title>Celebrating 5 years of Kotlin on Android</title>
      <link>https://android-developers.googleblog.com/2022/08/celebrating-5-years-of-kotlin-on-android.html</link>
      <pubDate>Wed, 17 Aug 2022 19:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://android-developers.googleblog.com/2022/08/celebrating-5-years-of-kotlin-on-android.html</guid>
      <description>Five years ago, at the 2017 Google I/O Keynote, Kotlin became an officially supported language for Android development. With this post, let&#39;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.</description>
    </item>
    
    <item>
      <title>5 years of Kotlin on Android — the extended interviews</title>
      <link>https://medium.com/androiddevelopers/5-years-of-kotlin-on-android-the-extra-bits-a7dcd17480a9</link>
      <pubDate>Wed, 17 Aug 2022 18:50:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://medium.com/androiddevelopers/5-years-of-kotlin-on-android-the-extra-bits-a7dcd17480a9</guid>
      <description>Interview material for the 5 years of Kotlin on Android celebration that did not make it into the main blog post.</description>
    </item>
    
    <item>
      <title>Migrating to the new coroutines 1.6 test APIs</title>
      <link>https://medium.com/androiddevelopers/migrating-to-the-new-coroutines-1-6-test-apis-b99f7fc47774</link>
      <pubDate>Wed, 29 Jun 2022 20:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://medium.com/androiddevelopers/migrating-to-the-new-coroutines-1-6-test-apis-b99f7fc47774</guid>
      <description>See the steps we took to migrate our samples to the new APIs, and then get started on migrating your own project!</description>
    </item>
    
    <item>
      <title>Wrap-up 2021</title>
      <link>https://zsmb.co/wrap-up-2021/</link>
      <pubDate>Fri, 31 Dec 2021 09:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/wrap-up-2021/</guid>
      <description>Another year over, a new one&#39;s almost begun. Here&#39;s a brief summary of what I&#39;ve done in this one.</description>
    </item>
    
    <item>
      <title>Adventures in Tracking Upload Progress With OkHttp and Retrofit</title>
      <link>https://dev.to/zsmb13/adventures-in-tracking-upload-progress-with-okhttp-and-retrofit-1gff</link>
      <pubDate>Fri, 10 Dec 2021 16:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://dev.to/zsmb13/adventures-in-tracking-upload-progress-with-okhttp-and-retrofit-1gff</guid>
      <description>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.</description>
    </item>
    
    <item>
      <title>All About Opt-In Annotations</title>
      <link>https://zsmb.co/opt-in-annotations/</link>
      <pubDate>Tue, 28 Sep 2021 15:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/opt-in-annotations/</guid>
      <description>Have you ever encountered APIs that show warnings or errors when you use them, saying that they&#39;re internal or experimental? In this guide, you&#39;ll learn everything you need to know about opt-in APIs in Kotlin: how to create and use them, and all their nuances.</description>
    </item>
    
    <item>
      <title>A Bit of Gradle Housekeeping</title>
      <link>https://zsmb.co/a-bit-of-gradle-housekeeping/</link>
      <pubDate>Wed, 01 Sep 2021 20:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/a-bit-of-gradle-housekeeping/</guid>
      <description>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&#39;ll take a look at some Gradle configuration that you can probably clean up in your Android project.</description>
    </item>
    
    <item>
      <title>Keeping public API in check with the Kotlin binary validator plugin</title>
      <link>https://dev.to/zsmb13/keeping-public-api-in-check-with-the-kotlin-binary-validator-plugin-2b6m</link>
      <pubDate>Wed, 14 Jul 2021 07:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://dev.to/zsmb13/keeping-public-api-in-check-with-the-kotlin-binary-validator-plugin-2b6m</guid>
      <description>As your library code is evolving over time, you have to be mindful of changes in your public API. Here’s how you can keep it in check.</description>
    </item>
    
    <item>
      <title>Announcing requireKTX</title>
      <link>https://zsmb.co/announcing-requirektx/</link>
      <pubDate>Thu, 17 Jun 2021 18:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/announcing-requirektx/</guid>
      <description>Introducing a new library to conveniently require values from common Android types.</description>
    </item>
    
    <item>
      <title>Clean Chat Example App with Jetpack Compose</title>
      <link>https://getstream.io/blog/jetpack-compose-clean-chat-example/</link>
      <pubDate>Tue, 08 Jun 2021 18:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://getstream.io/blog/jetpack-compose-clean-chat-example/</guid>
      <description>Jetpack Compose makes it easy to build beautiful UI. Check out this Chat UI sample, and learn some exciting bits of Compose along the way!</description>
    </item>
    
    <item>
      <title>Pi Practice App in Compose</title>
      <link>https://zsmb.co/pi-practice-app-in-compose/</link>
      <pubDate>Sun, 18 Apr 2021 18:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/pi-practice-app-in-compose/</guid>
      <description>In another detailed Jetpack Compose walkthrough, we&#39;ll look at implementing a simple app for practicing the digits of pi!</description>
    </item>
    
    <item>
      <title>Prime Table Generator in Jetpack Compose</title>
      <link>https://zsmb.co/prime-table-generator-jetpack-compose/</link>
      <pubDate>Thu, 25 Mar 2021 16:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/prime-table-generator-jetpack-compose/</guid>
      <description>I&#39;ve dusted off one of my oldest (and favourite) coding projects, and rewrote it in Jetpack Compose as a nice little practice exercise.</description>
    </item>
    
    <item>
      <title>Build an Android Chat app with Jetpack Compose</title>
      <link>https://proandroiddev.com/android-chat-app-jetpack-compose-dec472140ff1</link>
      <pubDate>Fri, 19 Mar 2021 15:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://proandroiddev.com/android-chat-app-jetpack-compose-dec472140ff1</guid>
      <description>In this tutorial, you&#39;ll learn how to build a real, functional chat app using Jetpack Compose and the Stream Chat Android SDK.</description>
    </item>
    
    <item>
      <title>Jetpack Compose: First Impressions and Learning Resources</title>
      <link>https://getstream.io/blog/jetpack-compose-impressions-resources/</link>
      <pubDate>Fri, 05 Mar 2021 19:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://getstream.io/blog/jetpack-compose-impressions-resources/</guid>
      <description>Jetpack Compose is finally in beta. Here are my first impressions using its beta, and some recommended resources for getting started with it.</description>
    </item>
    
    <item>
      <title>Compose O&#39;Clock</title>
      <link>https://zsmb.co/compose-o-clock/</link>
      <pubDate>Tue, 02 Mar 2021 16:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/compose-o-clock/</guid>
      <description>I started learning Jetpack Compose this week. Two days into that adventure, here&#39;s a quick look at how a neat clock design can be built up in Compose, step-by-step.</description>
    </item>
    
    <item>
      <title>Publishing Android libraries to MavenCentral in 2021</title>
      <link>https://getstream.io/blog/publishing-libraries-to-mavencentral-2021/</link>
      <pubDate>Thu, 04 Feb 2021 16:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://getstream.io/blog/publishing-libraries-to-mavencentral-2021/</guid>
      <description>MavenCentral is the place to be for Android libraries, but publishing there is no easy task. With JCenter going away soon, this problem is more timely than ever. Here&#39;s the step-by-step guide on how to do it.</description>
    </item>
    
    <item>
      <title>Sealed goodies coming in Kotlin 1.5</title>
      <link>https://zsmb.co/sealed-goodies-coming-in-kotlin-1-5/</link>
      <pubDate>Tue, 19 Jan 2021 14:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/sealed-goodies-coming-in-kotlin-1-5/</guid>
      <description>Kotlin 1.5 will bring exciting new features, among them improvements to sealed classes and an introduction of sealed interfaces. Let&#39;s take a look at what that will look like!</description>
    </item>
    
    <item>
      <title>Wrap-up 2020</title>
      <link>https://zsmb.co/wrap-up-2020/</link>
      <pubDate>Wed, 30 Dec 2020 20:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/wrap-up-2020/</guid>
      <description>Let&#39;s send this one off so that we can get started on a better one. The &#34;usual&#34; recap of what I&#39;ve done this year.</description>
    </item>
    
    <item>
      <title>Mastering API Visibility in Kotlin</title>
      <link>https://zsmb.co/mastering-api-visibility-in-kotlin/</link>
      <pubDate>Wed, 04 Nov 2020 17:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/mastering-api-visibility-in-kotlin/</guid>
      <description>When designing a library, minimizing your API surface - the types, methods, properties, and functions you expose to the outside world - is a great idea. This doesn&#39;t apply to just libraries: it&#39;s a consideration you should make for every module in a multi-module project.</description>
    </item>
    
    <item>
      <title>Effective Class Delegation</title>
      <link>https://zsmb.co/effective-class-delegation/</link>
      <pubDate>Tue, 29 Sep 2020 20:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/effective-class-delegation/</guid>
      <description>One of the most significant items of the Effective Java book is Item 18: Favor composition over inheritance. Let&#39;s see how Kotlin promotes this with class delegation.</description>
    </item>
    
    <item>
      <title>Krate, a better SharedPreferences experience</title>
      <link>https://zsmb.co/krate-a-better-sharedpreferences-experience/</link>
      <pubDate>Wed, 09 Sep 2020 16:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/krate-a-better-sharedpreferences-experience/</guid>
      <description>Accessing SharedPreferences using its API directly can be somewhat inconvenient. Krate is a library built on Kotlin delegates to simplify the use of SharedPreferences.</description>
    </item>
    
    <item>
      <title>Introducing 🌈RainbowCake</title>
      <link>https://zsmb.co/introducing-rainbowcake/</link>
      <pubDate>Mon, 29 Jun 2020 15:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/introducing-rainbowcake/</guid>
      <description>RainbowCake is an Android architecture framework, providing tools and guidance for building modern Android applications.</description>
    </item>
    
    <item>
      <title>Fragment Lifecycles in the Age of Jetpack</title>
      <link>https://zsmb.co/fragment-lifecycles-in-the-age-of-jetpack/</link>
      <pubDate>Thu, 18 Jun 2020 16:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/fragment-lifecycles-in-the-age-of-jetpack/</guid>
      <description>Fragments have... Complicated lifecycles, to say the least. Let&#39;s take a look at these, and how they all fit into the world of Jetpack today, with LifecycleOwners, LiveData, and coroutines.</description>
    </item>
    
    <item>
      <title>Thoughts about Event Handling on Android</title>
      <link>https://zsmb.co/thoughts-about-event-handling-on-android/</link>
      <pubDate>Tue, 09 Jun 2020 18:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/thoughts-about-event-handling-on-android/</guid>
      <description>In MVVM-like view architectures, view state isn&#39;t enough to communicate from the ViewModel to the View. They have to be supplemented by some kind of events, which come with several challenges you should be aware of.</description>
    </item>
    
    <item>
      <title>Thoughts about State Handling on Android</title>
      <link>https://zsmb.co/thoughts-about-state-handling-on-android/</link>
      <pubDate>Thu, 04 Jun 2020 14:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/thoughts-about-state-handling-on-android/</guid>
      <description>Handling the state of UI correctly is one of the prominent challenges of Android apps. Here are my subjective thoughts about some different approaches, which ones I tend to choose, and why.</description>
    </item>
    
    <item>
      <title>Designing and Working with Single View States on Android</title>
      <link>https://zsmb.co/designing-and-working-with-single-view-states-on-android/</link>
      <pubDate>Mon, 25 May 2020 17:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/designing-and-working-with-single-view-states-on-android/</guid>
      <description>Describing the state of a screen is a common practice these days thanks to MVI popularizing the concept. Let&#39;s take a look at some examples of how you can design your state objects neatly using data classes and sealed classes, and how you can put them into practice.</description>
    </item>
    
    <item>
      <title>The Single-cable Dream</title>
      <link>https://zsmb.co/the-single-cable-dream/</link>
      <pubDate>Sun, 10 May 2020 09:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/the-single-cable-dream/</guid>
      <description>Here&#39;s the story of how I moved my entire desk setup to be attachable to a computer via a single Thunderbolt 3 cable. It was quite the adventure, and 100% worth it.</description>
    </item>
    
    <item>
      <title>Anecdotes about web APIs</title>
      <link>https://zsmb.co/anecdotes-about-web-apis/</link>
      <pubDate>Sat, 11 Apr 2020 10:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/anecdotes-about-web-apis/</guid>
      <description>I think any respectable service these days should offer a web API to paying customers, so that power users of the service can integrate it with other services, and have reliable, trustworthy programmatic access to their data. Here are some anecdotes about services and APIs.</description>
    </item>
    
    <item>
      <title>Coroutine Cancellation 101</title>
      <link>https://zsmb.co/coroutine-cancellation-101/</link>
      <pubDate>Wed, 04 Mar 2020 19:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/coroutine-cancellation-101/</guid>
      <description>A brief introduction to the basics of coroutine cancellation.</description>
    </item>
    
    <item>
      <title>Let&#39;s Review: Pokedex</title>
      <link>https://zsmb.co/lets-review-pokedex/</link>
      <pubDate>Tue, 07 Jan 2020 14:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/lets-review-pokedex/</guid>
      <description>In what may be the start of a new series, I code review a project that was posted on reddit recently and got very popular very quickly. Let&#39;s see what we can learn from it?</description>
    </item>
    
    <item>
      <title>Wrap-up 2019</title>
      <link>https://zsmb.co/wrap-up-2019/</link>
      <pubDate>Fri, 27 Dec 2019 09:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/wrap-up-2019/</guid>
      <description>Another year has come to an end, so it&#39;s time to reflect again. I&#39;ll attempt to sum up what I&#39;ve done this year, how that compares to what I was planning to do at this same time last year, and what I expect to be next.</description>
    </item>
    
    <item>
      <title>Getting Only Positive Feedback</title>
      <link>https://zsmb.co/getting-only-positive-feedback/</link>
      <pubDate>Thu, 28 Nov 2019 16:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/getting-only-positive-feedback/</guid>
      <description>A brief discussion of my wonderful imposter syndrome and a call for more criticism (at least towards me).</description>
    </item>
    
    <item>
      <title>Better Custom Views with Delegates</title>
      <link>https://web.archive.org/web/20210621155927/https://blog.autsoft.hu/better-custom-views-with-delegates/</link>
      <pubDate>Thu, 17 Oct 2019 14:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://web.archive.org/web/20210621155927/https://blog.autsoft.hu/better-custom-views-with-delegates/</guid>
      <description>Reusable UI components are all the rage these days. In this article, we&#39;ll take a look at implementing custom components easily by using Kotlin&#39;s delegates.</description>
    </item>
    
    <item>
      <title>Book (P)review: Living by the Code</title>
      <link>https://zsmb.co/book-preview-living-by-the-code/</link>
      <pubDate>Mon, 09 Sep 2019 13:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/book-preview-living-by-the-code/</guid>
      <description>I can&#39;t tell you how much I&#39;ve been anticipating this book ever since I first heard it announced. This is a very short review, because really, you should read it yourself. But let me spoil one thing: It&#39;s amazing.</description>
    </item>
    
    <item>
      <title>Publishing an Android library to MavenCentral in 2019</title>
      <link>https://web.archive.org/web/20210621172035/https://blog.autsoft.hu/publishing-an-android-library-to-mavencentral-in-2019/</link>
      <pubDate>Tue, 27 Aug 2019 16:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://web.archive.org/web/20210621172035/https://blog.autsoft.hu/publishing-an-android-library-to-mavencentral-in-2019/</guid>
      <description>MavenCental is the place to be for serious libraries, but setting up publication to it can be a truly daunting task. Here&#39;s the guide to how we do it.</description>
    </item>
    
    <item>
      <title>Primaries Matter (a discussion of constructors)</title>
      <link>https://zsmb.co/primaries-matter-a-discussion-of-constructors/</link>
      <pubDate>Mon, 12 Aug 2019 18:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/primaries-matter-a-discussion-of-constructors/</guid>
      <description>Primary constructors play a fundamental role in Kotlin classes. Let&#39;s take a close look at them, and really understand what exactly is part of a primary constructor, and what makes this constructor so special.</description>
    </item>
    
    <item>
      <title>The Dog Riddle</title>
      <link>https://zsmb.co/the-dog-riddle/</link>
      <pubDate>Thu, 25 Apr 2019 18:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/the-dog-riddle/</guid>
      <description>A fun little challenge in Kotlin API design. Give it a try!</description>
    </item>
    
    <item>
      <title>Delightful Delegate Design</title>
      <link>https://web.archive.org/web/20200513142755/https://blog.autsoft.hu/delightful-delegate-design/</link>
      <pubDate>Thu, 11 Apr 2019 19:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://web.archive.org/web/20200513142755/https://blog.autsoft.hu/delightful-delegate-design/</guid>
      <description>When developing a library, designing an easy to use API while hiding unnecessary implementation details from clients is fundamental. Let&#39;s look at some API design choices we&#39;ve made for our library Krate, an Android SharedPreferences wrapper.</description>
    </item>
    
    <item>
      <title>Maintaining Compatibility in Kotlin Libraries</title>
      <link>https://zsmb.co/maintaining-compatibility-in-kotlin-libraries/</link>
      <pubDate>Sat, 30 Mar 2019 22:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/maintaining-compatibility-in-kotlin-libraries/</guid>
      <description>Not breaking client code is an essential duty of a library developer. Let&#39;s take a look at a couple rarely discussed issues you might face in this area.</description>
    </item>
    
    <item>
      <title>A Deep Dive into Extensible State Saving</title>
      <link>https://zsmb.co/a-deep-dive-into-extensible-state-saving/</link>
      <pubDate>Tue, 19 Mar 2019 20:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/a-deep-dive-into-extensible-state-saving/</guid>
      <description>A perhaps overly thorough look at how extensible state saving is implemented in the AndroidX libraries, and how ViewModel state saving specifically is hooked into this system.</description>
    </item>
    
    <item>
      <title>An Early Look at ViewModel SavedState</title>
      <link>https://zsmb.co/an-early-look-at-viewmodel-savedstate/</link>
      <pubDate>Thu, 14 Mar 2019 20:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/an-early-look-at-viewmodel-savedstate/</guid>
      <description>A quick preview of the new SavedState support for Android Architecture Component ViewModels.</description>
    </item>
    
    <item>
      <title>Site History</title>
      <link>https://zsmb.co/site-history/</link>
      <pubDate>Mon, 04 Mar 2019 19:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/site-history/</guid>
      <description>There has been a website of some sorts up on this domain for a couple years now. Here&#39;s a history of what powered it at various times.</description>
    </item>
    
    <item>
      <title>Managing Git configurations</title>
      <link>https://zsmb.co/managing-git-configurations/</link>
      <pubDate>Mon, 25 Feb 2019 18:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/managing-git-configurations/</guid>
      <description>We all use different git configurations for various reasons, and it&#39;s easy to get them mixed up. Here&#39;s a look at some ways of managing them better.</description>
    </item>
    
    <item>
      <title>@JvmOverloads for Android Views</title>
      <link>https://zsmb.co/jvmoverloads-for-android-views/</link>
      <pubDate>Fri, 22 Feb 2019 11:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/jvmoverloads-for-android-views/</guid>
      <description>The @JvmOverloads annotation is a convenience feature in Kotlin for interoperating with Java code, but there is one specific use case on Android where it shouldn’t be used carelessly.</description>
    </item>
    
    <item>
      <title>Retrofit meets coroutines</title>
      <link>https://zsmb.co/retrofit-meets-coroutines/</link>
      <pubDate>Fri, 15 Feb 2019 22:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/retrofit-meets-coroutines/</guid>
      <description>Retrofit&#39;s coroutine support has been a long time coming, and it&#39;s finally coming to completion. Take a look at how you can use it to neatly integrate networking into an application built with coroutines.</description>
    </item>
    
    <item>
      <title>Data classes aren&#39;t (that) magical</title>
      <link>https://zsmb.co/data-classes-arent-that-magical/</link>
      <pubDate>Wed, 16 Jan 2019 16:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/data-classes-arent-that-magical/</guid>
      <description>Data classes are great, but don&#39;t underestimate what a regular Kotlin class can do on its own.</description>
    </item>
    
    <item>
      <title>Wrap-up 2018</title>
      <link>https://zsmb.co/wrap-up-2018/</link>
      <pubDate>Thu, 27 Dec 2018 15:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/wrap-up-2018/</guid>
      <description>It&#39;s the end of the year, and looking back at what you&#39;ve done in the year that passed is, like, a thing. So I&#39;ve decided to take a shot at it too.</description>
    </item>
    
    <item>
      <title>A Confusing Dependency</title>
      <link>https://zsmb.co/a-confusing-dependency/</link>
      <pubDate>Wed, 12 Dec 2018 10:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/a-confusing-dependency/</guid>
      <description>A tale of a Gradle dependency that was doing something it wasn&#39;t supposed to be doing.</description>
    </item>
    
    <item>
      <title>AndroidX, one month in</title>
      <link>https://zsmb.co/androidx-one-month-in/</link>
      <pubDate>Sun, 21 Oct 2018 17:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/androidx-one-month-in/</guid>
      <description>AndroidX has been around for a month now. Here&#39;s my experience with the migration so far, and some insight into the adoption of the new system.</description>
    </item>
    
    <item>
      <title>KotlinConf &#39;18</title>
      <link>https://zsmb.co/kotlinconf-18/</link>
      <pubDate>Sat, 06 Oct 2018 21:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/kotlinconf-18/</guid>
      <description>Funnily enough, after the previous conference report on this blog, I&#39;ve got yet another one. I got to visit KotlinConf this year, these are my initial thoughts about it. Spoiler: it was awesome!</description>
    </item>
    
    <item>
      <title>Typical Kotlin</title>
      <link>https://zsmb.co/posts/typical-kotlin/</link>
      <pubDate>Fri, 21 Sep 2018 04:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/posts/typical-kotlin/</guid>
      <description>Let me invite you on a tour of Kotlin’s type system, exploring how some of the language constructs we take for granted in our everyday use - as they just &#34;make sense&#34; - work!</description>
    </item>
    
    <item>
      <title>From Java Builders to Kotlin DSLs</title>
      <link>https://kotlinexpertise.com/java-builders-kotlin-dsls/</link>
      <pubDate>Wed, 11 Jul 2018 06:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://kotlinexpertise.com/java-builders-kotlin-dsls/</guid>
      <description>A step by step guide to wrapping an existing Builder-based API into a neat Kotlin DSL.</description>
    </item>
    
    <item>
      <title>Kotliners 2018</title>
      <link>https://zsmb.co/kotliners-2018/</link>
      <pubDate>Sat, 16 Jun 2018 20:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/kotliners-2018/</guid>
      <description>I&#39;ve attended the Kotliners 2018 conference in Budapest this June. I think it went great, here&#39;s how I experienced it.</description>
    </item>
    
    <item>
      <title>The Other Side of Stack Overflow</title>
      <link>https://zsmb.co/the-other-side-of-stack-overflow/</link>
      <pubDate>Sat, 02 Jun 2018 19:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/the-other-side-of-stack-overflow/</guid>
      <description>My experiences and thoughts after using Stack Overflow from the other side for over a year now, answering questions mostly under the Kotlin tag.</description>
    </item>
    
    <item>
      <title>On &#34;From Java to Kotlin and Back Again&#34;</title>
      <link>https://zsmb.co/on-from-java-to-kotlin-and-back-again/</link>
      <pubDate>Thu, 24 May 2018 06:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/on-from-java-to-kotlin-and-back-again/</guid>
      <description>My thoughts on the allegro.tech article telling their tale of woe about Kotlin.</description>
    </item>
    
    <item>
      <title>Top 10 Kotlin Stack Overflow questions, pt 3 - nulls and such</title>
      <link>https://zsmb.co/top-10-kotlin-stack-overflow-questions-3/</link>
      <pubDate>Tue, 08 May 2018 08:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/top-10-kotlin-stack-overflow-questions-3/</guid>
      <description>The third and final part covers topics of nullability and some small extras to wrap up the series.</description>
    </item>
    
    <item>
      <title>Top 10 Kotlin Stack Overflow questions, pt 2 - the big ones</title>
      <link>https://zsmb.co/top-10-kotlin-stack-overflow-questions-2/</link>
      <pubDate>Tue, 01 May 2018 08:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/top-10-kotlin-stack-overflow-questions-2/</guid>
      <description>In the second part of the series, I&#39;m covering various possible issues with using SAM conversions, as well as how to create &#34;static&#34; things in Kotlin.</description>
    </item>
    
    <item>
      <title>Top 10 Kotlin Stack Overflow questions, pt 1 - decisions, decisions</title>
      <link>https://zsmb.co/top-10-kotlin-stack-overflow-questions-1/</link>
      <pubDate>Tue, 24 Apr 2018 08:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/top-10-kotlin-stack-overflow-questions-1/</guid>
      <description>I&#39;ve been hanging out around the Kotlin tag on Stack Overflow a lot this last year or so. This is the first part of a series covering the most frequently asked questions there. For a start, we&#39;ll be taking a look at various decisions around using collections in Kotlin. I&#39;m hoping there&#39;s something new for everyone in here.</description>
    </item>
    
    <item>
      <title>Kotlin DSL design with VillageDSL</title>
      <link>https://zsmb.co/kotlin-dsl-design-with-village-dsl/</link>
      <pubDate>Wed, 20 Sep 2017 18:00:00 +0000</pubDate>
      
      <author>Márton Braun</author>

      <guid>https://zsmb.co/kotlin-dsl-design-with-village-dsl/</guid>
      <description>A companion article for a talk I&#39;ve given on Kotlin DSL design possibilities, with many code examples.</description>
    </item>
    
  </channel>
</rss>