<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>commonMain.dev (Articles)</title>
    <link>https://commonmain.dev/</link>
    <description>This is an RSS Feed for the newsletter "commonMain.dev (Articles)"</description>
    <item>
      <title>The History of Kodee, Kotlin's Mascot</title>
      <link>https://commonmain.dev/r/84c06c43?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;Bringing Kodee to life wasn’t just a design challenge; it was a deeply collaborative effort by the Kotlin Marketing team, together with the Design and Strategic Research teams at JetBrains. The project’s goal was to create a mascot that truly resonated with the developer community.&lt;/p&gt;</description>
      <pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/84c06c43?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-07-14T00:00:00Z</dc:date>
    </item>
    <item>
      <title>Is Kotlin becoming too bloated? Why I am sticking to a "Minimalist" subset of the language</title>
      <link>https://commonmain.dev/r/dd520708?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;I really think a language should be simple and powerful, not bloated with endless concepts. Anyone else intentionally keep their Kotlin simple just to stay sane? Or am I missing something?&lt;/p&gt;</description>
      <pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/dd520708?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-07-14T00:00:00Z</dc:date>
    </item>
    <item>
      <title>SPONSORED - Practical Kotlin Deep Dive</title>
      <link>https://commonmain.dev/r/f12c86ea?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;Stop treating Kotlin like a black box! &#x1f9e0; To build truly performant multiplatform apps, writing code that just "works" isn't enough. We need to understand what the compiler is actually doing under the hood. That’s why I highly recommend Practical Kotlin Deep Dive by skydoves. This isn't a basic syntax guide, it breaks down Kotlin internals, bytecode, and coroutines. It’s been a total game-changer for me when writing and optimizing shared code. If you want to level up your Kotlin and KMP skills to a senior standard, you need this on your desk.&lt;/p&gt;</description>
      <pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/f12c86ea?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-07-14T00:00:00Z</dc:date>
    </item>
    <item>
      <title>The Same System: Advanced expect/actual in KMP</title>
      <link>https://commonmain.dev/r/cfbf161e?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;That is expect/actual, and it is the closest thing KMP has to a signature move. You declare the position once in commonMain. Each platform fields its own player. The trivial version, an expect fun with a one-line actual on each side, gets shown in every intro tutorial and it is genuinely easy. This article is about what happens after that, when you start declaring classes, constructors, and typealiases, and the compiler starts enforcing rules that the tutorials never mention.&lt;/p&gt;</description>
      <pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/cfbf161e?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-07-14T00:00:00Z</dc:date>
    </item>
    <item>
      <title>Kotlin DSL Deep Dive: From Gradle Scripts to Building Your Own</title>
      <link>https://commonmain.dev/r/5a981dfc?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;What .kts files actually are, why Gradle’s dependencies { } is just a function call, and how to build a working HTML DSL from scratch&lt;/p&gt;</description>
      <pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/5a981dfc?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-07-14T00:00:00Z</dc:date>
    </item>
    <item>
      <title>How to use Koin Compiler in a Multimodule Project?</title>
      <link>https://commonmain.dev/r/cc3cf384?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;Today we’re diving into how to use the Koin Compiler in a Compose Multiplatform multi-module project. In the previous article, we explored how to migrate a multimodule setup to Koin Annotations, using a convention Gradle plugin to move forward in small, safe steps. We’ll follow that same approach diving deep into a project called MovieDB-App.&lt;/p&gt;</description>
      <pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/cc3cf384?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-07-14T00:00:00Z</dc:date>
    </item>
    <item>
      <title>Cut build time by 70% in your KMP projects with the Dependency Analysis Gradle Plugin</title>
      <link>https://commonmain.dev/r/4d7da38c?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;Kraken Technologies, which maintains a Kotlin Multiplatform (KMP) project of roughly 600 modules, was recently able to cut its average build time from about 6 minutes to about 1 minute and 50 seconds, or ~70%. They also report that sync times improved from roughly 5 minutes to roughly 45 seconds, or ~85%.&lt;/p&gt;</description>
      <pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/4d7da38c?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-07-14T00:00:00Z</dc:date>
    </item>
    <item>
      <title>Another Way to KMP: Shared Renderers</title>
      <link>https://commonmain.dev/r/bd6aeee8?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;In the first two articles I built 3D chess twice — once with a Compose Multiplatform shell, once with React Native. In both cases, the game logic was in shared Kotlin, and platform-specific 3D renderers displayed the state. This article is about a project that inverts that architecture — and about why the inversion is correct.&lt;/p&gt;</description>
      <pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/bd6aeee8?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-07-14T00:00:00Z</dc:date>
    </item>
    <item>
      <title>Mirage: Cloudy Grows from a Blur Library into a Graphics Effect Library</title>
      <link>https://commonmain.dev/r/cf33632e?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;Blur is a single effect with a single knob, a radius, and for a long time that was the whole library. Mirage is where that changes. It is the first step in Cloudy growing past “the blur library” into a general graphics effect toolkit — a way to run authored GPU shader effects, not just a fixed blur, over the content and backdrops in your Compose UI.&lt;/p&gt;</description>
      <pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/cf33632e?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-07-14T00:00:00Z</dc:date>
    </item>
    <item>
      <title>Inside SubcomposeLayout: Jetpack Compose’s Most Misunderstood API</title>
      <link>https://commonmain.dev/r/dc0f365c?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;Hey Composers &#x1f44b;, if you’ve built a complex UI in Jetpack Compose, you’ve probably reached for BoxWithConstraints. And by doing so, you’ve probably paid a performance tax you didn’t fully understand.&lt;/p&gt;</description>
      <pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/dc0f365c?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-07-14T00:00:00Z</dc:date>
    </item>
    <item>
      <title>SPONSORED - Carrd</title>
      <link>https://commonmain.dev/r/fe5118f1?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;• Simple, free, fully responsive one-page sites for pretty much anything. Whether it's a personal profile, a landing page for your KMP project, or something a bit more elaborate, Carrd has you covered. Simple, responsive, and yup — totally free!&lt;/p&gt;</description>
      <pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/fe5118f1?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-07-14T00:00:00Z</dc:date>
    </item>
    <item>
      <title>Unbeatable Football | Historic Football Draft Game</title>
      <link>https://commonmain.dev/r/0efb2277?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;Draft players across 11 rounds, build a balanced lineup, clear daily challenges, and protect your streak.…&lt;/p&gt;</description>
      <pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/0efb2277?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-07-14T00:00:00Z</dc:date>
    </item>
    <item>
      <title>GitHub - wingedsheep/argentum-engine: Magic: The Gathering rules engine + online play platform, in Kotlin</title>
      <link>https://commonmain.dev/r/b72d9d84?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;Magic: The Gathering rules engine + online play platform, in Kotlin - wingedsheep/argentum-engine…&lt;/p&gt;</description>
      <pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/b72d9d84?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-07-14T00:00:00Z</dc:date>
    </item>
    <item>
      <title>SPONSORED - hackajob</title>
      <link>https://commonmain.dev/r/004768a2?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;• Meet Archer, your AI job matching agent 5x more interviews. Zero guesswork. Archer works 24/7 to match you with roles that fit your stack and seniority. You review the matches, not the job boards.&lt;/p&gt;</description>
      <pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/004768a2?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-07-14T00:00:00Z</dc:date>
    </item>
    <item>
      <title>Senior Mobile Software Engineer with Kotlin</title>
      <link>https://commonmain.dev/r/589269ba?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;at Accesa We are looking for a Senior Kotlin Developer who is experienced in Kotlin Multiplatform delivery, comfortable owning complex shared modules in a layered architecture, and motivated by the challenge of building the reliable, platform-agnostic foundation that modern retail operations depend on.&lt;/p&gt;</description>
      <pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/589269ba?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-07-14T00:00:00Z</dc:date>
    </item>
    <item>
      <title>Kotlin Toolchain 0.11: The Next Step for Amper</title>
      <link>https://commonmain.dev/r/f355033c?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;Amper 0.11.0 is out, and you will notice a shift in the product branding immediately. If you missed the KotlinConf keynote, here’s the headline: Amper has evolved into the Kotlin Toolchain and is now Alpha!&lt;/p&gt;</description>
      <pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/f355033c?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-06-30T00:00:00Z</dc:date>
    </item>
    <item>
      <title>Are you waiting for a Kotlin feature that hasn't been implemented yet?</title>
      <link>https://commonmain.dev/r/cd7e5c52?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;Is there a Kotlin language feature that you really want but that hasn't been implemented yet, or has even been rejected? Maybe it has a KEEP, or even not.&lt;/p&gt;</description>
      <pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/cd7e5c52?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-06-30T00:00:00Z</dc:date>
    </item>
    <item>
      <title>Current state of design systems and UI libraries</title>
      <link>https://commonmain.dev/r/3432a6a4?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;Now, what’s the current landscape of “middle-ground” UIs in KMP world? Is using compose/material as a foundation for your own design system the best way to do it?&lt;/p&gt;</description>
      <pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/3432a6a4?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-06-30T00:00:00Z</dc:date>
    </item>
    <item>
      <title>SPONSORED - Practical Kotlin Deep Dive</title>
      <link>https://commonmain.dev/r/b5b1be60?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;Stop treating Kotlin like a black box! &#x1f9e0; To build truly performant multiplatform apps, writing code that just "works" isn't enough. We need to understand what the compiler is actually doing under the hood. That’s why I highly recommend Practical Kotlin Deep Dive by skydoves. This isn't a basic syntax guide, it breaks down Kotlin internals, bytecode, and coroutines. It’s been a total game-changer for me when writing and optimizing shared code. If you want to level up your Kotlin and KMP skills to a senior standard, you need this on your desk.&lt;/p&gt;</description>
      <pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/b5b1be60?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-06-30T00:00:00Z</dc:date>
    </item>
    <item>
      <title>Safety Car: Coroutine Exception Handling in KMP</title>
      <link>https://commonmain.dev/r/54ca6afe?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;One launch block throws, and if nothing contains it, the failure climbs the job hierarchy, cancels every sibling, and on a bad day takes the whole app down with it. The question isn’t whether a coroutine will throw. It’s what happens to everything around it when it does.&lt;/p&gt;</description>
      <pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/54ca6afe?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-06-30T00:00:00Z</dc:date>
    </item>
    <item>
      <title>How We Made Ktor JSON Parsing 66% Faster with 50% Less Memory on KMP</title>
      <link>https://commonmain.dev/r/c7821a35?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;If you are building Kotlin Multiplatform applications, you know that JSON serialization is often one of the main bottlenecks in high-throughput backends and mobile apps—especially regarding CPU cycles and Garbage Collector (GC) pressure.&lt;/p&gt;</description>
      <pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/c7821a35?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-06-30T00:00:00Z</dc:date>
    </item>
    <item>
      <title>Kotlin tricks: Non-exhaustive enums</title>
      <link>https://commonmain.dev/r/d26f8a2b?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;Enums are an exhaustive set of values. But what if you suspect you may want to add new entries in the future?&lt;/p&gt;</description>
      <pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/d26f8a2b?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-06-30T00:00:00Z</dc:date>
    </item>
    <item>
      <title>DrawBox Goes Multiplatform</title>
      <link>https://commonmain.dev/r/f97296c0?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;Why I rewrote my Android-only drawing library for Kotlin Multiplatform, and the part of the rewrite that actually hurt.&lt;/p&gt;</description>
      <pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/f97296c0?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-06-30T00:00:00Z</dc:date>
    </item>
    <item>
      <title>Setting up Compose Multiplatform previews</title>
      <link>https://commonmain.dev/r/a0cd6495?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;Earlier this year, the new Kotlin Multiplatform IDE plugin was released, with one of the highlighted features being Compose previews for common code, powered by the Android preview tooling. In this blog post, we’ll look at how to set this up in your projects.&lt;/p&gt;</description>
      <pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/a0cd6495?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-06-30T00:00:00Z</dc:date>
    </item>
    <item>
      <title>SPONSORED - Carrd</title>
      <link>https://commonmain.dev/r/f3d8c2ea?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;• Simple, free, fully responsive one-page sites for pretty much anything. Whether it's a personal profile, a landing page for your KMP project, or something a bit more elaborate, Carrd has you covered. Simple, responsive, and yup — totally free!&lt;/p&gt;</description>
      <pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/f3d8c2ea?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-06-30T00:00:00Z</dc:date>
    </item>
    <item>
      <title>ClashAlly - Apps on Google Play</title>
      <link>https://commonmain.dev/r/94dea0aa?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;Your Ultimate Clash Companion — track clans, players, and wars like a pro&lt;br/&gt;Web version available here.&lt;/p&gt;</description>
      <pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/94dea0aa?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-06-30T00:00:00Z</dc:date>
    </item>
    <item>
      <title>SoccerRPG</title>
      <link>https://commonmain.dev/r/5f299beb?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;This is a tactical 5v5 football game inspired by the feeling of Blitzball: positioning, decision-making, team strategy, and creating plays that feel satisfying to execute. Built with Compose Multiplatform&lt;/p&gt;</description>
      <pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/5f299beb?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-06-30T00:00:00Z</dc:date>
    </item>
    <item>
      <title>SPONSORED - hackajob</title>
      <link>https://commonmain.dev/r/1471a79d?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;• Meet Archer, your AI job matching agent 5x more interviews. Zero guesswork. Archer works 24/7 to match you with roles that fit your stack and seniority. You review the matches, not the job boards.&lt;/p&gt;</description>
      <pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/1471a79d?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-06-30T00:00:00Z</dc:date>
    </item>
    <item>
      <title>Software Engineer</title>
      <link>https://commonmain.dev/r/86c842da?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;(with KMP) at Zwift In this role, you will work on Zwift’s mobile app, Zwift Companion (ZC), delivering high-quality features and ensuring a seamless user experience. You will collaborate with cross-functional teams to deliver product features on iOS and Android apps that help Zwifters plan, track, and achieve their fitness goals. Additionally, you will contribute to defining and executing the technical strategy to achieve our team objectives - make it easy for Zwifters to plan and start their experiences in Zwift.&lt;/p&gt;</description>
      <pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/86c842da?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-06-30T00:00:00Z</dc:date>
    </item>
  </channel>
</rss>
