<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>kt.academy</title>
        <link>https://kt.academy/article</link>
        <description>Best articles about programming and best practices.</description>
        <lastBuildDate>Tue, 05 May 2026 14:09:17 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <image>
            <title>kt.academy</title>
            <url>https://kt.academy/logos/kt-academy.png</url>
            <link>https://kt.academy/article</link>
        </image>
        <copyright>All rights reserved 2020, Marcin Moskała</copyright>
        <atom:link href="https://kt.academy/rss.xml" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[Collection Literals in Kotlin]]></title>
            <link>https://kt.academy/article/collection-literals</link>
            <guid>collection-literals</guid>
            <pubDate>Mon, 04 May 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[The new feature in Kotlin that allows for concise and expressive collection creation.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/images/collection-literals.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Why do developers count from zero?]]></title>
            <link>https://kt.academy/article/index_zero</link>
            <guid>index_zero</guid>
            <pubDate>Mon, 27 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Why do developers count from zero? Short history and reasoning behind this convention.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/scripts/images/index_zero.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[In what order are Compose modifiers applied?]]></title>
            <link>https://kt.academy/article/compose_modifier_order</link>
            <guid>compose_modifier_order</guid>
            <pubDate>Mon, 20 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[How Compose modifiers are applied and why their order matters.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/scripts/images/compose_modifier_order.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Structured Concurrency]]></title>
            <link>https://kt.academy/article/structured_concurrency_patricio</link>
            <guid>structured_concurrency_patricio</guid>
            <pubDate>Mon, 13 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[The only guide to structured concurrency you'll ever need.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/patricio/structured_concurrency.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Is Kotlin a savior of Java?]]></title>
            <link>https://kt.academy/article/kotlin_vs_java</link>
            <guid>kotlin_vs_java</guid>
            <pubDate>Mon, 06 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[How Kotlin woke Java up, and what it means for the future of Java development.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/scripts/images/kotlin_vs_java_promo.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[IntelliJ's New Kotlin Coroutine Inspections, Explained]]></title>
            <link>https://kt.academy/article/intellij-coroutines-new-warnings</link>
            <guid>intellij-coroutines-new-warnings</guid>
            <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Exploration and explanation of new Kotlin coroutine inspections in IntelliJ IDEA.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/images_intellij_coroutines_new_warnings/promotion.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Flow Guessing Game!]]></title>
            <link>https://kt.academy/article/game-flow</link>
            <guid>game-flow</guid>
            <pubDate>Mon, 23 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[A fun game that pushes your understanding of Kotlin Flow.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/images/FlowGame.gif" length="0" type="image/gif"/>
        </item>
        <item>
            <title><![CDATA[From Python to Kotlin: A transition worth making]]></title>
            <link>https://kt.academy/article/python-to-kotlin</link>
            <guid>python-to-kotlin</guid>
            <pubDate>Mon, 09 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Exploring the benefits of switching from Python to Kotlin for modern backend development.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/kotlin-to-python.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Quiz: Do you understand recomposition and stability?]]></title>
            <link>https://kt.academy/article/quiz-recomposition</link>
            <guid>quiz-recomposition</guid>
            <pubDate>Mon, 02 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Do you understand recomposition and stability? Finish this quiz to find out!]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/quiz-recomposition.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Simplest Nav2 to Nav3 Migration Guide]]></title>
            <link>https://kt.academy/article/nav2-to-nav3</link>
            <guid>nav2-to-nav3</guid>
            <pubDate>Mon, 23 Feb 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[How to migrate routes, navigation calls, and transitions from Nav2 to Nav3.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/nav2-to-nav3.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[You don't understand recomposition]]></title>
            <link>https://kt.academy/article/recomposition</link>
            <guid>recomposition</guid>
            <pubDate>Mon, 16 Feb 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Clear explanation of how composition and recomposition work in Jetpack Compose.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/recomposition.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Top Projects for Coroutines Mastery in 2025]]></title>
            <link>https://kt.academy/article/top-projects-coroutines-2025</link>
            <guid>top-projects-coroutines-2025</guid>
            <pubDate>Mon, 09 Feb 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Overview of the best projects for Coroutines Mastery course in 2025]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/top-projects-coroutines-2025.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[You don't understand stability in Compose]]></title>
            <link>https://kt.academy/article/compose-stability</link>
            <guid>compose-stability</guid>
            <pubDate>Mon, 02 Feb 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Deep dive into how Compose handles stability and why it's crucial for developers.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/compose-stability.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[In the world of AI, companies will need MORE developers, not fewer]]></title>
            <link>https://kt.academy/article/ai-more-developers</link>
            <guid>ai-more-developers</guid>
            <pubDate>Sun, 11 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Why the rise of AI means an increased demand for skilled developers.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/ai-more-developers.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[The power of exercises: How to design them well]]></title>
            <link>https://kt.academy/article/the-power-of-exercises</link>
            <guid>the-power-of-exercises</guid>
            <pubDate>Mon, 29 Dec 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[What are the main priorities when designing good exercises for a course or a book.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/the-power-of-exercises.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Minimal setup for Compose Desktop]]></title>
            <link>https://kt.academy/article/compose-desktop</link>
            <guid>compose-desktop</guid>
            <pubDate>Mon, 22 Dec 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[How to setup Compose to use it on desktop, for providing UI for scripts or a simple project.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/compose-desktop.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Suspending functions vs. Flow: When to use which?]]></title>
            <link>https://kt.academy/article/suspend-vs-flow</link>
            <guid>suspend-vs-flow</guid>
            <pubDate>Tue, 28 Oct 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[A comprehensive guide to understanding the differences between suspending functions and Flow in Kotlin Coroutines, and when to use each.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/suspend-vs-flow.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[How to implement a random coroutines challenge generator]]></title>
            <link>https://kt.academy/article/game-coroutines-how-to</link>
            <guid>game-coroutines-how-to</guid>
            <pubDate>Mon, 20 Oct 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[A behind-the-scenes look at how to implement a generator of interesting challenges for learning Kotlin Coroutines.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/game-coroutines-how-to.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Discussing Kotlin Coroutines on Talking Kotlin Podcast]]></title>
            <link>https://kt.academy/article/talking-kotlin-coroutines</link>
            <guid>talking-kotlin-coroutines</guid>
            <pubDate>Fri, 17 Oct 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[An insightful discussion about Kotlin Coroutines on the Talking Kotlin podcast.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/talking-kotlin-coroutines.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Coroutines vs Reactor: When Elegance and Simplicity Crush Complexity]]></title>
            <link>https://kt.academy/article/coroutines-vs-reactor</link>
            <guid>coroutines-vs-reactor</guid>
            <pubDate>Mon, 06 Oct 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[A comparison of Kotlin Coroutines and Reactor, highlighting the elegance and simplicity of Coroutines over the complexity of Reactor.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/why-coroutines-reactor.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Suspending functions into blocking functions or CompletableFuture]]></title>
            <link>https://kt.academy/article/interop-coroutines-to-blocking</link>
            <guid>interop-coroutines-to-blocking</guid>
            <pubDate>Mon, 29 Sep 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[A guide on how to correctly convert suspending functions into blocking functions or CompletableFuture in Kotlin Coroutines.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/interop_coroutines_to_blocking.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Kotlin Flow to RxJava or Reactor and vice versa]]></title>
            <link>https://kt.academy/article/interop-flows-to-streams</link>
            <guid>interop-flows-to-streams</guid>
            <pubDate>Mon, 22 Sep 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[A guide on how to convert Kotlin Flow to RxJava or Reactor streams and vice versa.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/interop_flows_to_streams.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Kotlin Coroutines and Swift]]></title>
            <link>https://kt.academy/article/interop-coroutines-swift</link>
            <guid>interop-coroutines-swift</guid>
            <pubDate>Mon, 15 Sep 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[How to use Kotlin Coroutines in Swift projects, or Swift libraries from Kotlin Coroutines.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/interop-coroutines-swift.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Kotlin Coroutines and JavaScript]]></title>
            <link>https://kt.academy/article/interop-coroutines-js</link>
            <guid>interop-coroutines-js</guid>
            <pubDate>Mon, 08 Sep 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[How to use Kotlin Coroutines in JavaScript projects, or JavaScript libraries from Kotlin Coroutines.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/interop-coroutines-js.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[runBlocking in practice: Where it should be used and where not]]></title>
            <link>https://kt.academy/article/run_blocking</link>
            <guid>run_blocking</guid>
            <pubDate>Mon, 01 Sep 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[A comprehensive guide to using runBlocking in Kotlin Coroutines, including best practices and common pitfalls.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/run_blocking.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[New Cohort of Kotlin Coroutines Experts]]></title>
            <link>https://kt.academy/article/coroutines-mastery-goal</link>
            <guid>coroutines-mastery-goal</guid>
            <pubDate>Mon, 25 Aug 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[The grand goal of the Coroutines Mastery course.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/coroutines_mastery_goal.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Flow from suspending functions and vice versa]]></title>
            <link>https://kt.academy/article/interop-suspending-functions-flow</link>
            <guid>interop-suspending-functions-flow</guid>
            <pubDate>Mon, 18 Aug 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[A guide on how to convert suspending functions to Flow and vice versa in Kotlin Coroutines.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/interop_suspending_functions_flow.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Suspending functions or flows into callbacks]]></title>
            <link>https://kt.academy/article/interop-coroutines-to-callback</link>
            <guid>interop-coroutines-to-callback</guid>
            <pubDate>Mon, 11 Aug 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[A guide on how to correctly convert suspending functions or flows into callback-based functions in Kotlin Coroutines.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/interop_coroutines_to_callback.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Building Your First Kotlin Multiplatform App: From Setup to iOS App Store with Compose Multiplatform (2025 Guide)]]></title>
            <link>https://kt.academy/article/kmp-to-compose-guide</link>
            <guid>kmp-to-compose-guide</guid>
            <pubDate>Mon, 28 Jul 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[A comprehensive guide to building your first Kotlin Multiplatform app using Compose Multiplatform, covering setup, development, and deployment]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/building_first_kmm_app.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Calling blocking functions from suspending functions]]></title>
            <link>https://kt.academy/article/interop-blocking-to-coroutines</link>
            <guid>interop-blocking-to-coroutines</guid>
            <pubDate>Mon, 21 Jul 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[A guide on how to correctly convert blocking functions into suspending functions in Kotlin Coroutines.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/interop_blocking_to_coroutines.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[How to turn callback functions into suspend functions or Flow]]></title>
            <link>https://kt.academy/article/interop-callbacks-to-coroutines</link>
            <guid>interop-callbacks-to-coroutines</guid>
            <pubDate>Mon, 14 Jul 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[A guide on how to correctly convert callback-based functions into suspending functions or Flows in Kotlin Coroutines.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/interop_callbacks_to_coroutines.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[KotlinConf 2025 Recordings]]></title>
            <link>https://kt.academy/article/kotlinconf2025-recordings</link>
            <guid>kotlinconf2025-recordings</guid>
            <pubDate>Tue, 01 Jul 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[My list of must-watch from KotlinConf 2025.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/kotlinconf2025-recordings.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Coroutines Races Guessing Game!]]></title>
            <link>https://kt.academy/article/game-coroutines</link>
            <guid>game-coroutines</guid>
            <pubDate>Tue, 24 Jun 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[A fun game that pushes your understanding of Kotlin Coroutines.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/images/CoroutinesRaceGuesser.gif" length="0" type="image/gif"/>
        </item>
        <item>
            <title><![CDATA[KotlinConf 2025 Announcements]]></title>
            <link>https://kt.academy/article/kotlinconf2025-announcements</link>
            <guid>kotlinconf2025-announcements</guid>
            <pubDate>Tue, 03 Jun 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[The greatest announcements from KotlinConf 2025.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/kotlinconf2025-announcements.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Coroutines Mastery]]></title>
            <link>https://kt.academy/article/coroutines-mastery</link>
            <guid>coroutines-mastery</guid>
            <pubDate>Fri, 23 May 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[5-weeks-long kohort workshop to master Kotlin Coroutines.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/coroutines-mastery.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Benefit: Open Workshop Recording]]></title>
            <link>https://kt.academy/article/open-workshop-recording</link>
            <guid>open-workshop-recording</guid>
            <pubDate>Tue, 11 Mar 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Introduction of the new benefit for open workshops attendees.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/open-workshop-recording.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Kotlin Compiler Plugins]]></title>
            <link>https://kt.academy/article/ak-compiler-plugin</link>
            <guid>ak-compiler-plugin</guid>
            <pubDate>Mon, 03 Mar 2025 00:15:00 GMT</pubDate>
            <description><![CDATA[All you need to know about Kotlin Compiler plugins.]]></description>
            <enclosure url="https://marcinmoskala.com/advanced-kotlin-book/promotion/12_compiler_plugin.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[The problems of Kotlin/Wasm I had when making a game]]></title>
            <link>https://kt.academy/article/game-story-collection-processing-wasm</link>
            <guid>game-story-collection-processing-wasm</guid>
            <pubDate>Mon, 20 Jan 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[A short story of the problems I needed to face when publishing a simple game made with Kotlin/Wasm.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/game-story-collection-processing-wasm.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Collection Processing Guessing Game!]]></title>
            <link>https://kt.academy/article/game-collection-processing</link>
            <guid>game-collection-processing</guid>
            <pubDate>Mon, 13 Jan 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[A fun game that pushes your understanding of Kotlin collection processing.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/images/CollectionProcessingGuesser.gif" length="0" type="image/gif"/>
        </item>
        <item>
            <title><![CDATA[How modifiers order affects Compose UI appearance]]></title>
            <link>https://kt.academy/article/modifier-order</link>
            <guid>modifier-order</guid>
            <pubDate>Tue, 07 Jan 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[A complete explanation of how modifier order affects the appearance of your Jetpack Compose UI.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/modifier-order.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Kotlin Christmas Dream]]></title>
            <link>https://kt.academy/article/christmas-dream-2024</link>
            <guid>christmas-dream-2024</guid>
            <pubDate>Tue, 24 Dec 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[My dream about the future of Kotlin.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/christmas-dream-2024.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Is reflection slowing down your code?]]></title>
            <link>https://kt.academy/article/benchmark-reflection</link>
            <guid>benchmark-reflection</guid>
            <pubDate>Mon, 16 Dec 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Let's benchmark reflection and see how it affects the performance of your code.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/benchmark-reflection.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Jetpack Compose Modifier Guessing Game!]]></title>
            <link>https://kt.academy/article/game-modifier-guesser</link>
            <guid>game-modifier-guesser</guid>
            <pubDate>Mon, 09 Dec 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[A fun game to learn about Jetpack Compose modifiers.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/images/OrderModifierGuesser.gif" length="0" type="image/gif"/>
        </item>
        <item>
            <title><![CDATA[Using BlockHound to track blocking calls in non-blocking dispatchers]]></title>
            <link>https://kt.academy/article/blockhound</link>
            <guid>blockhound</guid>
            <pubDate>Mon, 02 Dec 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[How to use BlockHound to track blocking calls in non-blocking dispatchers.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/blockhound.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Representing ViewModel events with StateFlow vs. SharedFlow vs. Channel]]></title>
            <link>https://kt.academy/article/viewmodel-stateflow-sharedflow-channel</link>
            <guid>viewmodel-stateflow-sharedflow-channel</guid>
            <pubDate>Mon, 18 Nov 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[What is the best way to represent ViewModel events in Kotlin?]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/viewmodel-stateflow-sharedflow-channel.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[The best dispatcher for a backend framework]]></title>
            <link>https://kt.academy/article/dispatcher-for-backend</link>
            <guid>dispatcher-for-backend</guid>
            <pubDate>Wed, 13 Nov 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Let's explore different dispatchers and find the best one for a backend request handlers.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/dispatcher-for-backend.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Win a Free Ticket to Droidcon Italy!]]></title>
            <link>https://kt.academy/article/droidcontest2024</link>
            <guid>droidcontest2024</guid>
            <pubDate>Mon, 21 Oct 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Upgrade your Kotlin skills and win a free ticket to Droidcon Italy!]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/droidcontest_en.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Books for 2025 company workshops attendees promotion]]></title>
            <link>https://kt.academy/article/book-workshop-promotion-2025</link>
            <guid>book-workshop-promotion-2025</guid>
            <pubDate>Sat, 19 Oct 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Our special promotion for company workshops organised in 2025.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/book-workshop-promotion-2025.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Why using Kotlin Coroutines?]]></title>
            <link>https://kt.academy/article/cc-why</link>
            <guid>cc-why</guid>
            <pubDate>Wed, 09 Oct 2024 00:03:00 GMT</pubDate>
            <description><![CDATA[The explanation of why coroutines stand out and offer us what hasn't been offered by other technologies.]]></description>
            <enclosure url="https://marcinmoskala.com/coroutines_book/promotion/101_why.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Which Kotlin workshop to choose?]]></title>
            <link>https://kt.academy/article/workshop-decision</link>
            <guid>workshop-decision</guid>
            <pubDate>Wed, 18 Sep 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[A short guide how to choose the best workshop for you.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/images/workshop-choose.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Item 31: Respect abstraction contracts]]></title>
            <link>https://kt.academy/article/ek-respect-contracts</link>
            <guid>ek-respect-contracts</guid>
            <pubDate>Mon, 22 Jul 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Just because we can do something, does not mean we should. How to respect abstraction contracts and why it is so important.]]></description>
            <enclosure url="https://marcinmoskala.com/EffectiveKotlin-Book/promotion/respect_contracts.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Job and children awaiting in Kotlin Coroutines]]></title>
            <link>https://kt.academy/article/cc-job</link>
            <guid>cc-job</guid>
            <pubDate>Mon, 15 Jul 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[What Job is and how it is the most important context responsible for structured concurrency.]]></description>
            <enclosure url="https://marcinmoskala.com/coroutines_book/promotion/203_job.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Finance your workshop by company]]></title>
            <link>https://kt.academy/article/finance-by-company</link>
            <guid>finance-by-company</guid>
            <pubDate>Wed, 10 Jul 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[How to get your workshop financed by your company.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/finance-by-company.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Item 30: Define contracts with documentation]]></title>
            <link>https://kt.academy/article/ek-contracts-documentation</link>
            <guid>ek-contracts-documentation</guid>
            <pubDate>Mon, 08 Jul 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[How do we express our library or module contracts and why are they so important.]]></description>
            <enclosure url="https://marcinmoskala.com/EffectiveKotlin-Book/promotion/contracts_documentation.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Kotlin Coroutines dispatchers]]></title>
            <link>https://kt.academy/article/cc-dispatchers</link>
            <guid>cc-dispatchers</guid>
            <pubDate>Mon, 01 Jul 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Where we should use each dispatcher from the Kotlin Coroutines library.]]></description>
            <enclosure url="https://marcinmoskala.com/coroutines_book/promotion/207_dispatchers.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[SharedFlow vs StateFlow]]></title>
            <link>https://kt.academy/article/sharedflow_vs_stateflow</link>
            <guid>sharedflow_vs_stateflow</guid>
            <pubDate>Thu, 27 Jun 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[When to use SharedFlow and when to use StateFlow.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/images/sharedflow_vs_stateflow_cover.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Item 27: Specify API stability]]></title>
            <link>https://kt.academy/article/ek-api-stability</link>
            <guid>ek-api-stability</guid>
            <pubDate>Mon, 24 Jun 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[How do we specify API stability and why it is so important.]]></description>
            <enclosure url="https://marcinmoskala.com/EffectiveKotlin-Book/promotion/api_stability.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Power Assert now in Kotlin!]]></title>
            <link>https://kt.academy/article/power-assert</link>
            <guid>power-assert</guid>
            <pubDate>Mon, 17 Jun 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[What is Power Assert, how to use it, and how it works in Kotlin.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/images/power_assert_cover.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[The problem of union types for type systems]]></title>
            <link>https://kt.academy/article/union-types-into</link>
            <guid>union-types-into</guid>
            <pubDate>Mon, 10 Jun 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Why union types are not such a good idea for static type systems.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/images/union-types-intro-cover.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Key advantages of Kotlin Coroutines]]></title>
            <link>https://kt.academy/article/coroutines-advantages</link>
            <guid>coroutines-advantages</guid>
            <pubDate>Mon, 10 Jun 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Where Kotlin Coroutines shine and why you should use them.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/coroutines-advantages.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Cancellation in Kotlin Coroutines]]></title>
            <link>https://kt.academy/article/cc-cancellation</link>
            <guid>cc-cancellation</guid>
            <pubDate>Mon, 10 Jun 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Everything you need to know about the cancellation mechanism in Kotlin Coroutines.]]></description>
            <enclosure url="https://marcinmoskala.com/coroutines_book/promotion/204_cancellation.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Mutable objects or properties?]]></title>
            <link>https://kt.academy/article/var_readonly_vs_val_mutable</link>
            <guid>var_readonly_vs_val_mutable</guid>
            <pubDate>Mon, 03 Jun 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Time to answer the question: var/readonly vs val/mutable. Which one should you use?]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/images/var_vs_mutable_cover.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Learn Kotlin with Marcin Moskała]]></title>
            <link>https://kt.academy/article/learn-with-mm</link>
            <guid>learn-with-mm</guid>
            <pubDate>Mon, 27 May 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[See what materials and options from Marcin Moskala you can have to learn Kotlin.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/learn-with-mm.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[The third edition of Kotlin Coroutines: Deep Dive book is finally ready!]]></title>
            <link>https://kt.academy/article/coroutines-third-release</link>
            <guid>coroutines-third-release</guid>
            <pubDate>Mon, 20 May 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Learn about the new release of the famous book about Kotlin Coroutines.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/book-release-third-coroutine.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Updates in Kotlin for Developers series]]></title>
            <link>https://kt.academy/article/book-update-2024-03</link>
            <guid>book-update-2024-03</guid>
            <pubDate>Wed, 15 May 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Noticed any changes in our Kotlin for Developers series? Here's what's new!]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/books-update-2024-03.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[How many threads does your network client use?]]></title>
            <link>https://kt.academy/article/network_client_threads</link>
            <guid>network_client_threads</guid>
            <pubDate>Mon, 13 May 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Many popular network clients consume way more threads than you might expect. Let's overview the problem and find a solution.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/network-client-threads.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Kotlin bites on X/Twitter 3]]></title>
            <link>https://kt.academy/article/tweets-3</link>
            <guid>tweets-3</guid>
            <pubDate>Fri, 10 May 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[A collection of Kotlin bites of knowledge, in a form of tweets.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/tweet_3.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Item 29: Minimize elements’ visibility]]></title>
            <link>https://kt.academy/article/ek-element-visibility</link>
            <guid>ek-element-visibility</guid>
            <pubDate>Mon, 06 May 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Why we should minimize elements’ visibility and how to do it.]]></description>
            <enclosure url="https://marcinmoskala.com/EffectiveKotlin-Book/promotion/element_visibility.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Item 28: Consider wrapping external APIs]]></title>
            <link>https://kt.academy/article/ek-wrapping-api</link>
            <guid>ek-wrapping-api</guid>
            <pubDate>Mon, 29 Apr 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Why we should wrap external APIs and how to do it.]]></description>
            <enclosure url="https://marcinmoskala.com/EffectiveKotlin-Book/promotion/wrapping_api.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[A Pattern for Composing Flow Operations]]></title>
            <link>https://kt.academy/article/pattern_for_composing_flows</link>
            <guid>pattern_for_composing_flows</guid>
            <pubDate>Mon, 15 Apr 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Extending and operating on top of your existing flows]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/renatocosta/promotion/pattern_for_composing_flows.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Why Non-Blocking?]]></title>
            <link>https://kt.academy/article/nonblocking_spring_mvc</link>
            <guid>nonblocking_spring_mvc</guid>
            <pubDate>Mon, 25 Mar 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[From blocking to non-blocking with Kotlin, Coroutines and Spring Boot]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/renatocosta/promotion/nonblocking_spring_mvc.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Books for 2024 company workshops attendees promotion]]></title>
            <link>https://kt.academy/article/book-workshop-promotion-2024</link>
            <guid>book-workshop-promotion-2024</guid>
            <pubDate>Tue, 19 Mar 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Our special promotion for company workshops organised in 2024.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/book-workshop-promotion-2024.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Generics in Kotlin]]></title>
            <link>https://kt.academy/article/kfde-generics</link>
            <guid>kfde-generics</guid>
            <pubDate>Mon, 18 Mar 2024 00:01:00 GMT</pubDate>
            <description><![CDATA[The essence of how generics work in Kotlin.]]></description>
            <enclosure url="https://marcinmoskala.com/kotlin_essentials_book/promotion/generics.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[flatMapMerge is... weird]]></title>
            <link>https://kt.academy/article/flat_map_merge</link>
            <guid>flat_map_merge</guid>
            <pubDate>Wed, 06 Mar 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[How not to get surprised by flatMapMerge behavior.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/flat_map_merge.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[KotlinConf 2024 - what is this all about?]]></title>
            <link>https://kt.academy/article/kotlinconf2024</link>
            <guid>kotlinconf2024</guid>
            <pubDate>Tue, 05 Mar 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Exploring the Biggest Kotlin Conference]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/promo-kotlinconf.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[What is CoroutineContext and how does it work?]]></title>
            <link>https://kt.academy/article/cc-coroutine-context</link>
            <guid>cc-coroutine-context</guid>
            <pubDate>Mon, 04 Mar 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[A deep explanation of the coroutine context - the powerful data holder for coroutines.]]></description>
            <enclosure url="https://marcinmoskala.com/coroutines_book/promotion/202_coroutine_context.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Item 26: Use abstraction to protect code against changes]]></title>
            <link>https://kt.academy/article/ek-abstraction-code-changes</link>
            <guid>ek-abstraction-code-changes</guid>
            <pubDate>Mon, 26 Feb 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[How do we abstract elements, and what are the consequences.]]></description>
            <enclosure url="https://marcinmoskala.com/EffectiveKotlin-Book/promotion/abstraction_code_changes.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Item 25: Each function should be written in terms of a single level of abstraction]]></title>
            <link>https://kt.academy/article/ek-single-layer-of-abstraction</link>
            <guid>ek-single-layer-of-abstraction</guid>
            <pubDate>Mon, 19 Feb 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Why each function should be written in terms of a single level of abstraction and how to achieve it.]]></description>
            <enclosure url="https://marcinmoskala.com/EffectiveKotlin-Book/promotion/single_layer_of_abstraction.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Abstraction design: Introduction]]></title>
            <link>https://kt.academy/article/ek-abstraction</link>
            <guid>ek-abstraction</guid>
            <pubDate>Mon, 05 Feb 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[What is abstraction in programming and why is it so important.]]></description>
            <enclosure url="https://marcinmoskala.com/EffectiveKotlin-Book/promotion/abstraction_design.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Effective Kotlin Item 20: Do not repeat common algorithms]]></title>
            <link>https://kt.academy/article/ek-utils</link>
            <guid>ek-utils</guid>
            <pubDate>Mon, 29 Jan 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Why extracting utility functions is so important for our programs.]]></description>
            <enclosure url="https://marcinmoskala.com/EffectiveKotlin-Book/promotion/utils.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Static Code Analysers]]></title>
            <link>https://kt.academy/article/ak-static-analysis</link>
            <guid>ak-static-analysis</guid>
            <pubDate>Mon, 22 Jan 2024 00:15:00 GMT</pubDate>
            <description><![CDATA[All you need to know about Static Code Analysers and Detekt.]]></description>
            <enclosure url="https://marcinmoskala.com/advanced-kotlin-book/promotion/13_static_analysis.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Functional Kotlin now with exercises]]></title>
            <link>https://kt.academy/article/book-functional-now-with-exercises</link>
            <guid>book-functional-now-with-exercises</guid>
            <pubDate>Mon, 15 Jan 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Functional Kotlin was updated! Now it has exercises to help readers practice the knowledge.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/book-functional-now-with-exercises.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Effective Kotlin Item 19: Do not repeat knowledge]]></title>
            <link>https://kt.academy/article/ek-knowledge</link>
            <guid>ek-knowledge</guid>
            <pubDate>Mon, 08 Jan 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Why knowledge repetition is so problematic and how it relates to the single responsibility principle.]]></description>
            <enclosure url="https://marcinmoskala.com/EffectiveKotlin-Book/promotion/knowledge.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Simulating dice casting, to calculate Risc game fairness]]></title>
            <link>https://kt.academy/article/risc-dice-dilemma</link>
            <guid>risc-dice-dilemma</guid>
            <pubDate>Wed, 03 Jan 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Using programming to simulate a battle in Risc, and learn about its fairness.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/risc-dice-dilemma.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Big Kotlin Challenge]]></title>
            <link>https://kt.academy/article/book-exercises-challenge</link>
            <guid>book-exercises-challenge</guid>
            <pubDate>Thu, 28 Dec 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[Do you want to learn Kotlin? Join our Big Kotlin Challenge!]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/book-exercises-challenge.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[JavaScript interoperability]]></title>
            <link>https://kt.academy/article/ak-js-interop</link>
            <guid>ak-js-interop</guid>
            <pubDate>Mon, 18 Dec 2023 00:15:00 GMT</pubDate>
            <description><![CDATA[How to interoperate between Kotlin and JavaScript.]]></description>
            <enclosure url="https://marcinmoskala.com/advanced-kotlin-book/promotion/07_JS.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Annotation Processing]]></title>
            <link>https://kt.academy/article/ak-annotation-processing</link>
            <guid>ak-annotation-processing</guid>
            <pubDate>Mon, 11 Dec 2023 00:15:00 GMT</pubDate>
            <description><![CDATA[Implement your first annotation processor in Kotlin.]]></description>
            <enclosure url="https://marcinmoskala.com/advanced-kotlin-book/promotion/10_annotation_processing.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Effective Kotlin Item 60: Use appropriate collection types]]></title>
            <link>https://kt.academy/article/ek-collection-types</link>
            <guid>ek-collection-types</guid>
            <pubDate>Mon, 04 Dec 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[Using non-standard collection types to improve performance in Kotlin.]]></description>
            <enclosure url="https://marcinmoskala.com/EffectiveKotlin-Book/promotion/collection_types.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Kotlin Symbol Processing]]></title>
            <link>https://kt.academy/article/ak-ksp</link>
            <guid>ak-ksp</guid>
            <pubDate>Mon, 27 Nov 2023 00:15:00 GMT</pubDate>
            <description><![CDATA[All the essential aspects of KSP in practice.]]></description>
            <enclosure url="https://marcinmoskala.com/advanced-kotlin-book/promotion/11_symbol_processing.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Effective Kotlin Item 49: Use caching when possible]]></title>
            <link>https://kt.academy/article/ek-caching</link>
            <guid>ek-caching</guid>
            <pubDate>Mon, 20 Nov 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[Why we should use caching and how to do it.]]></description>
            <enclosure url="https://marcinmoskala.com/EffectiveKotlin-Book/promotion/caching.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Kotlin Essentials now with exercises]]></title>
            <link>https://kt.academy/article/book-essentials-now-with-exercises</link>
            <guid>book-essentials-now-with-exercises</guid>
            <pubDate>Tue, 14 Nov 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[Kotlin Essentials was updated! Now it has exercises to help readers practice the knowledge.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/book-essentials-now-with-exercises.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Data classes in Kotlin]]></title>
            <link>https://kt.academy/article/kfde-data</link>
            <guid>kfde-data</guid>
            <pubDate>Mon, 13 Nov 2023 00:01:00 GMT</pubDate>
            <description><![CDATA[What are data classes in Kotlin and how do we use them.]]></description>
            <enclosure url="https://marcinmoskala.com/kotlin_essentials_book/promotion/data_classes.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Get an ebook if you have a paperback!]]></title>
            <link>https://kt.academy/article/books-for-photos</link>
            <guid>books-for-photos</guid>
            <pubDate>Tue, 07 Nov 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[Special promotion until the end of this year, we give away ebooks for paperback owners who post their photos with those books.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/books-for-photos.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Effective Kotlin Item 48: Consider using object declarations]]></title>
            <link>https://kt.academy/article/ek-object-declarations</link>
            <guid>ek-object-declarations</guid>
            <pubDate>Mon, 06 Nov 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[Why we should use object declarations instead of regular classes.]]></description>
            <enclosure url="https://marcinmoskala.com/EffectiveKotlin-Book/promotion/object_declarations.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Kotlin Reflection: Type references]]></title>
            <link>https://kt.academy/article/ak-reflection-type</link>
            <guid>ak-reflection-type</guid>
            <pubDate>Mon, 30 Oct 2023 00:15:00 GMT</pubDate>
            <description><![CDATA[Using type references, with practical example of random value generator.]]></description>
            <enclosure url="https://marcinmoskala.com/advanced-kotlin-book/promotion/09_reflection_3.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Kotlin Reflection: Class references]]></title>
            <link>https://kt.academy/article/ak-reflection-class</link>
            <guid>ak-reflection-class</guid>
            <pubDate>Mon, 23 Oct 2023 00:15:00 GMT</pubDate>
            <description><![CDATA[All the essential aspects of class references, and a practical object serialization example.]]></description>
            <enclosure url="https://marcinmoskala.com/advanced-kotlin-book/promotion/09_reflection_2.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Kotlin books for conferences and universities]]></title>
            <link>https://kt.academy/article/kotlin-books-for-universities-and-conferences</link>
            <guid>kotlin-books-for-universities-and-conferences</guid>
            <pubDate>Tue, 17 Oct 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[We have a very special offers for conferences and universities that want to give away books.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/kotlin-books-for-universities-and-conferences.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Kotlin Reflection: Method and property references]]></title>
            <link>https://kt.academy/article/ak-reflection</link>
            <guid>ak-reflection</guid>
            <pubDate>Mon, 16 Oct 2023 00:15:00 GMT</pubDate>
            <description><![CDATA[The general hierarchy of Kotlin reference classes, and details about method and property references.]]></description>
            <enclosure url="https://marcinmoskala.com/advanced-kotlin-book/promotion/09_reflection_1.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Kotlin for developers' series is finally ready!]]></title>
            <link>https://kt.academy/article/books-kotlin-for-developers-ready</link>
            <guid>books-kotlin-for-developers-ready</guid>
            <pubDate>Thu, 12 Oct 2023 00:01:00 GMT</pubDate>
            <description><![CDATA[We are happy to announce that Kotlin for developers series is finally complete.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/books-kotlin-for-developers-ready.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Extensions in Kotlin]]></title>
            <link>https://kt.academy/article/kfde-extensions</link>
            <guid>kfde-extensions</guid>
            <pubDate>Mon, 09 Oct 2023 00:01:00 GMT</pubDate>
            <description><![CDATA[What are extensions in Kotlin and how do we use them.]]></description>
            <enclosure url="https://marcinmoskala.com/kotlin_essentials_book/promotion/extensions.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Effective Kotlin Item 35: Consider using dependency injection]]></title>
            <link>https://kt.academy/article/ek-dependency-injection</link>
            <guid>ek-dependency-injection</guid>
            <pubDate>Mon, 02 Oct 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[What is dependency injection, why it is so important, and how to use it in Kotlin.]]></description>
            <enclosure url="https://marcinmoskala.com/EffectiveKotlin-Book/promotion/dependency_injection.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Kotlin for Developers series is updated to Kotlin 1.9 and ready for 2.0]]></title>
            <link>https://kt.academy/article/books-ready-for-kotlin-2_0</link>
            <guid>books-ready-for-kotlin-2_0</guid>
            <pubDate>Tue, 26 Sep 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[All the books from the series Kotlin for Developers are ready for Kotlin 2.0!]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/books-ready-for-kotlin-2_0.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Implementing Multiplatform Kotlin Mobile]]></title>
            <link>https://kt.academy/article/ak-kmp-kmm</link>
            <guid>ak-kmp-kmm</guid>
            <pubDate>Mon, 25 Sep 2023 00:15:00 GMT</pubDate>
            <description><![CDATA[How in Kotlin we can implement Android and iOS projects with shared logic.]]></description>
            <enclosure url="https://marcinmoskala.com/advanced-kotlin-book/promotion/06_multiplatform_3.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Implementing Multiplatform Kotlin library]]></title>
            <link>https://kt.academy/article/ak-kmp-library</link>
            <guid>ak-kmp-library</guid>
            <pubDate>Mon, 18 Sep 2023 00:15:00 GMT</pubDate>
            <description><![CDATA[How in Kotlin we can use multiplatform capabilities to distribute the same code to multiple platforms.]]></description>
            <enclosure url="https://marcinmoskala.com/advanced-kotlin-book/promotion/06_multiplatform_2.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Using Multiplatform Kotlin]]></title>
            <link>https://kt.academy/article/ak-kmp</link>
            <guid>ak-kmp</guid>
            <pubDate>Mon, 11 Sep 2023 00:15:00 GMT</pubDate>
            <description><![CDATA[The essence of using multiplatform Kotlin capabilities and definition common elements.]]></description>
            <enclosure url="https://marcinmoskala.com/advanced-kotlin-book/promotion/06_multiplatform_1.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[The story behind the lighthouse]]></title>
            <link>https://kt.academy/article/lighthouse-story</link>
            <guid>lighthouse-story</guid>
            <pubDate>Fri, 08 Sep 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[The story behind the lighthouse used on the new edition of Effective Kotlin.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/lighthouse.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[The second edition of Effective Kotlin: Best Practices is finally ready!]]></title>
            <link>https://kt.academy/article/effective-kotlin-second-release</link>
            <guid>effective-kotlin-second-release</guid>
            <pubDate>Thu, 07 Sep 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[Learn about the new release of the famous book about the best practices for Kotlin development.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/book-release-second-effective.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Sealed classes and interfaces in Kotlin]]></title>
            <link>https://kt.academy/article/kfde-sealed</link>
            <guid>kfde-sealed</guid>
            <pubDate>Mon, 04 Sep 2023 00:01:00 GMT</pubDate>
            <description><![CDATA[What are sealed classes and interfaces in Kotlin and how do we use them.]]></description>
            <enclosure url="https://marcinmoskala.com/kotlin_essentials_book/promotion/sealed.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Effective Kotlin Item 2: Eliminate critical sections]]></title>
            <link>https://kt.academy/article/ek-synchronization</link>
            <guid>ek-synchronization</guid>
            <pubDate>Mon, 28 Aug 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[Learn why do we need to synchronize access to mutable state, and how to secure it.]]></description>
            <enclosure url="https://marcinmoskala.com/EffectiveKotlin-Book/promotion/synchronization.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Kotlin and Java interoperability: Traps and gotchas]]></title>
            <link>https://kt.academy/article/ak-java-interop-4</link>
            <guid>ak-java-interop-4</guid>
            <pubDate>Mon, 21 Aug 2023 00:15:00 GMT</pubDate>
            <description><![CDATA[The parts of Kotlin and Java interoperability that might be surprising or counterintuitive.]]></description>
            <enclosure url="https://marcinmoskala.com/advanced-kotlin-book/promotion/05_java_interop_4.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Kotlin and Java interoperability: Useful annotations]]></title>
            <link>https://kt.academy/article/ak-java-interop-3</link>
            <guid>ak-java-interop-3</guid>
            <pubDate>Mon, 14 Aug 2023 00:15:00 GMT</pubDate>
            <description><![CDATA[Learn about useful Kotlin annotations, that decide that it is compiled to on JVM.]]></description>
            <enclosure url="https://marcinmoskala.com/advanced-kotlin-book/promotion/05_java_interop_3.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Kotlin and Java interoperability: Properties and annotations]]></title>
            <link>https://kt.academy/article/ak-java-interop-2</link>
            <guid>ak-java-interop-2</guid>
            <pubDate>Mon, 07 Aug 2023 00:15:00 GMT</pubDate>
            <description><![CDATA[Kotlin property is Java getter, setter, field and possibly more. So what to do, when you need to annotate or use a specific JVM element?]]></description>
            <enclosure url="https://marcinmoskala.com/advanced-kotlin-book/promotion/05_java_interop_2.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Kotlin and Java interoperability: Types]]></title>
            <link>https://kt.academy/article/ak-java-interop-1</link>
            <guid>ak-java-interop-1</guid>
            <pubDate>Mon, 31 Jul 2023 00:15:00 GMT</pubDate>
            <description><![CDATA[See surprising transitions that happens on types when you interoperate between Kotlin and Java.]]></description>
            <enclosure url="https://marcinmoskala.com/advanced-kotlin-book/promotion/05_java_interop_1.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Advanced Kotlin is finally ready!]]></title>
            <link>https://kt.academy/article/advanced-kotlin-release</link>
            <guid>advanced-kotlin-release</guid>
            <pubDate>Mon, 24 Jul 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[Learn about our recently published book dedicated to the advanced Kotlin features.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/book_release_advanced_kotlin.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Objects in Kotlin]]></title>
            <link>https://kt.academy/article/kfde-objects</link>
            <guid>kfde-objects</guid>
            <pubDate>Mon, 17 Jul 2023 00:01:00 GMT</pubDate>
            <description><![CDATA[What is object expression, object declaration and companion objects, and how we use them.]]></description>
            <enclosure url="https://marcinmoskala.com/kotlin_essentials_book/promotion/objects.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Books for 2023 company workshops attendees promotion]]></title>
            <link>https://kt.academy/article/book-workshop-promotion-2023</link>
            <guid>book-workshop-promotion-2023</guid>
            <pubDate>Mon, 10 Jul 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[Our special promotion for company workshops organised in 2023.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/book-workshop-promotion-2023.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Kotlin Contracts]]></title>
            <link>https://kt.academy/article/ak-contracts</link>
            <guid>ak-contracts</guid>
            <pubDate>Mon, 03 Jul 2023 00:15:00 GMT</pubDate>
            <description><![CDATA[Practical review of Kotlin Contracts - a feature we often use, without knowing about it.]]></description>
            <enclosure url="https://marcinmoskala.com/advanced-kotlin-book/promotion/04_contracts.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Eliminating coroutine races]]></title>
            <link>https://kt.academy/article/eliminating-coroutine-races</link>
            <guid>eliminating-coroutine-races</guid>
            <pubDate>Mon, 26 Jun 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[How to make one coroutine await for another coroutine or flow subscription.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/eliminating-coroutine-races.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Lindy effect in surnames problem]]></title>
            <link>https://kt.academy/article/surname-survival-simulation</link>
            <guid>surname-survival-simulation</guid>
            <pubDate>Mon, 19 Jun 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[Using programming to simulate a problem of the number of surnames in population and observing Lindy effect.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/surname-survival-simulation.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[The beauty of Kotlin type system]]></title>
            <link>https://kt.academy/article/kfde-type_system</link>
            <guid>kfde-type_system</guid>
            <pubDate>Mon, 12 Jun 2023 00:01:00 GMT</pubDate>
            <description><![CDATA[How type system makes Kotlin so flexible, safe, and intuitive.]]></description>
            <enclosure url="https://marcinmoskala.com/kotlin_essentials_book/promotion/type_system.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Understanding Flow]]></title>
            <link>https://kt.academy/article/cc-understanding-flow</link>
            <guid>cc-understanding-flow</guid>
            <pubDate>Mon, 29 May 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[We will explore how flow and its processing really works.]]></description>
            <enclosure url="https://marcinmoskala.com/coroutines_book/promotion/305_understanding_flow.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[The second edition of Kotlin Coroutines: Deep Dive book is finally ready!]]></title>
            <link>https://kt.academy/article/coroutines-second-release</link>
            <guid>coroutines-second-release</guid>
            <pubDate>Tue, 16 May 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[Learn about the new release of the famous book about Kotlin Coroutines.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/book-release-second-coroutine.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Why you should consider migrating your Gradle scripts to Kotlin DSL]]></title>
            <link>https://kt.academy/article/why_you_should_consider_migrating_your_gradle_scripts_to_kotlin_dsl</link>
            <guid>why_you_should_consider_migrating_your_gradle_scripts_to_kotlin_dsl</guid>
            <pubDate>Wed, 10 May 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[Discover the benefits of migrating your Gradle scripts to Kotlin DSL and streamline your development process.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/why_you_should_consider_migrating_your_gradle_scripts_to_kotlin_dsl.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Map as a property delegate]]></title>
            <link>https://kt.academy/article/ak-map-delegate</link>
            <guid>ak-map-delegate</guid>
            <pubDate>Mon, 08 May 2023 00:15:00 GMT</pubDate>
            <description><![CDATA[How do we use Map as a property delegate, and why the result of a famous puzzler should not be surprising.]]></description>
            <enclosure url="https://marcinmoskala.com/advanced-kotlin-book/promotion/03_property_delegation_4_map.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Observable and Vetoable delegates]]></title>
            <link>https://kt.academy/article/ak-observable-vetoable</link>
            <guid>ak-observable-vetoable</guid>
            <pubDate>Tue, 02 May 2023 00:15:00 GMT</pubDate>
            <description><![CDATA[What are observable and vetoable delegates, and what are their real-life use cases.]]></description>
            <enclosure url="https://marcinmoskala.com/advanced-kotlin-book/promotion/03_property_delegation_3_observable.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Best practices]]></title>
            <link>https://kt.academy/article/cc-best-practices</link>
            <guid>cc-best-practices</guid>
            <pubDate>Mon, 24 Apr 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[Let's review the Kotlin Coroutines best practices.]]></description>
            <enclosure url="https://marcinmoskala.com/coroutines_book/promotion/405_best_practices.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Kotlin revolutionary announcement]]></title>
            <link>https://kt.academy/article/kotlin-compiler-plugin-announcement</link>
            <guid>kotlin-compiler-plugin-announcement</guid>
            <pubDate>Wed, 19 Apr 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[Kotlin announcement that will change the way we all will write code.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/kotlin_revolutionary_announcement.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Lazy property delegate]]></title>
            <link>https://kt.academy/article/ak-lazy</link>
            <guid>ak-lazy</guid>
            <pubDate>Mon, 27 Mar 2023 00:15:00 GMT</pubDate>
            <description><![CDATA[What is lazy delegate, and what are its real-life use cases.]]></description>
            <enclosure url="https://marcinmoskala.com/advanced-kotlin-book/promotion/03_property_delegation_2_lazy.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Property delegation]]></title>
            <link>https://kt.academy/article/ak-property-delegation</link>
            <guid>ak-property-delegation</guid>
            <pubDate>Mon, 20 Mar 2023 00:15:00 GMT</pubDate>
            <description><![CDATA[What is property delegation, how does it work, and how can we implement our custom property delegate.]]></description>
            <enclosure url="https://marcinmoskala.com/advanced-kotlin-book/promotion/03_property_delegation_1.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Nullability in Kotlin]]></title>
            <link>https://kt.academy/article/kfde-nullability</link>
            <guid>kfde-nullability</guid>
            <pubDate>Mon, 13 Mar 2023 00:01:00 GMT</pubDate>
            <description><![CDATA[How Kotlin null-safety works, and how can we deal with nullable values.]]></description>
            <enclosure url="https://marcinmoskala.com/kotlin_essentials_book/promotion/nullability.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Interface Delegation]]></title>
            <link>https://kt.academy/article/ak-interface-delegation</link>
            <guid>ak-interface-delegation</guid>
            <pubDate>Mon, 06 Mar 2023 00:15:00 GMT</pubDate>
            <description><![CDATA[One of the least known Kotlin features, that can be sometimes found really useful.]]></description>
            <enclosure url="https://marcinmoskala.com/advanced-kotlin-book/promotion/02_interface_delegation.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Kotlin bites on Twitter 2]]></title>
            <link>https://kt.academy/article/tweets-2</link>
            <guid>tweets-2</guid>
            <pubDate>Wed, 01 Mar 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[A collection of Kotlin bites of knowledge, in a form of tweets.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/tweet_2.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Basic values in Kotlin]]></title>
            <link>https://kt.academy/article/kfde-values</link>
            <guid>kfde-values</guid>
            <pubDate>Mon, 27 Feb 2023 00:01:00 GMT</pubDate>
            <description><![CDATA[Learn about the basic Kotlin values, types and operations.]]></description>
            <enclosure url="https://marcinmoskala.com/kotlin_essentials_book/promotion/basic_values.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Variance modifiers limitations]]></title>
            <link>https://kt.academy/article/ak-variance-limitations</link>
            <guid>ak-variance-limitations</guid>
            <pubDate>Mon, 20 Feb 2023 00:15:00 GMT</pubDate>
            <description><![CDATA[What limitations generic variance modifiers introduce, and how can we ignore them.]]></description>
            <enclosure url="https://marcinmoskala.com/advanced-kotlin-book/promotion/01_generics_variance_3.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Covariant Nothing Object]]></title>
            <link>https://kt.academy/article/ak-covariant-nothing-object</link>
            <guid>ak-covariant-nothing-object</guid>
            <pubDate>Mon, 13 Feb 2023 00:15:00 GMT</pubDate>
            <description><![CDATA[The pattern we are all using, but no-one talks about it.]]></description>
            <enclosure url="https://marcinmoskala.com/advanced-kotlin-book/promotion/01_generics_variance_2.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Kotlin Generic Variance Modifiers]]></title>
            <link>https://kt.academy/article/ak-variance</link>
            <guid>ak-variance</guid>
            <pubDate>Wed, 08 Feb 2023 00:15:00 GMT</pubDate>
            <description><![CDATA[What are out and in, and how do we use them without even knowing.]]></description>
            <enclosure url="https://marcinmoskala.com/advanced-kotlin-book/promotion/01_generics_variance_1.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Enum classes in Kotlin]]></title>
            <link>https://kt.academy/article/kfde-enum</link>
            <guid>kfde-enum</guid>
            <pubDate>Wed, 01 Feb 2023 00:01:00 GMT</pubDate>
            <description><![CDATA[What are enum classes in Kotlin and how do we use them.]]></description>
            <enclosure url="https://marcinmoskala.com/kotlin_essentials_book/promotion/enum.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Operator overloading in Kotlin]]></title>
            <link>https://kt.academy/article/kfde-operators</link>
            <guid>kfde-operators</guid>
            <pubDate>Mon, 23 Jan 2023 00:01:00 GMT</pubDate>
            <description><![CDATA[How are operators defined for types in Kotlin, and how can we define our own operators.]]></description>
            <enclosure url="https://marcinmoskala.com/kotlin_essentials_book/promotion/operators.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[The power of Kotlin for-loop]]></title>
            <link>https://kt.academy/article/kfde-for</link>
            <guid>kfde-for</guid>
            <pubDate>Wed, 18 Jan 2023 00:01:00 GMT</pubDate>
            <description><![CDATA[Learn about the amazing capabilities of Kotlin for-loop.]]></description>
            <enclosure url="https://marcinmoskala.com/kotlin_essentials_book/promotion/for.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Kotlin bites on Twitter 1]]></title>
            <link>https://kt.academy/article/tweets-1</link>
            <guid>tweets-1</guid>
            <pubDate>Thu, 12 Jan 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[A collection of Kotlin bites of knowledge, in a form of tweets.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/tweet_1.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Your first program in Kotlin]]></title>
            <link>https://kt.academy/article/kfde-first-program</link>
            <guid>kfde-first-program</guid>
            <pubDate>Tue, 10 Jan 2023 00:01:00 GMT</pubDate>
            <description><![CDATA[How to write your first program, how can we use it in real-life projects, and how to explore what Kotlin is compiled to.]]></description>
            <enclosure url="https://marcinmoskala.com/kotlin_essentials_book/promotion/first_program.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Running Kotlin coroutines on Project Loom's virtual threads]]></title>
            <link>https://kt.academy/article/dispatcher-loom</link>
            <guid>dispatcher-loom</guid>
            <pubDate>Mon, 09 Jan 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[How to use Project Loom to improve Coroutines performance.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/dispatcher-loom.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[A birds-eye view of Arrow: Data Immutability with Arrow Optics]]></title>
            <link>https://kt.academy/article/fk-arrow-optics</link>
            <guid>fk-arrow-optics</guid>
            <pubDate>Mon, 19 Dec 2022 00:15:00 GMT</pubDate>
            <description><![CDATA[Learn to use Arrow Optics to support working on immutable objects.]]></description>
            <enclosure url="https://marcinmoskala.com/functional_kotlin_book/promotion/13_arrow_3.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Kotlin Essentials book is finally ready!]]></title>
            <link>https://kt.academy/article/kotlin-essentials-release</link>
            <guid>kotlin-essentials-release</guid>
            <pubDate>Fri, 16 Dec 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[Learn about our recently published book dedicated to the essential Kotlin features.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/book_release_kotlin_essentials.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Functions in Kotlin]]></title>
            <link>https://kt.academy/article/kfde-functions</link>
            <guid>kfde-functions</guid>
            <pubDate>Mon, 12 Dec 2022 00:01:00 GMT</pubDate>
            <description><![CDATA[Learn about what functions can offer us in Kotlin.]]></description>
            <enclosure url="https://marcinmoskala.com/kotlin_essentials_book/promotion/functions.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Slowing down your code with Coroutines]]></title>
            <link>https://kt.academy/article/slowing-down-coroutines</link>
            <guid>slowing-down-coroutines</guid>
            <pubDate>Fri, 09 Dec 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[How can we use coroutines to slow down our code, and why would we want to do that.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/slowing-down-coroutines.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Kotlin Coroutines use cases introduction]]></title>
            <link>https://kt.academy/article/cc-use-cases-intro</link>
            <guid>cc-use-cases-intro</guid>
            <pubDate>Wed, 07 Dec 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[Introducing a series of articles about common Kotlin Coroutines use cases.]]></description>
            <enclosure url="https://marcinmoskala.com/coroutines_book/promotion/401_article_use_cases.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[A birds-eye view of Arrow: Error Handling]]></title>
            <link>https://kt.academy/article/fk-arrow-error-handling</link>
            <guid>fk-arrow-error-handling</guid>
            <pubDate>Tue, 06 Dec 2022 00:15:00 GMT</pubDate>
            <description><![CDATA[Learn about Error Handling in Arrow, end how to effectively work with Either.]]></description>
            <enclosure url="https://marcinmoskala.com/functional_kotlin_book/promotion/13_arrow_2.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Kotlin Coroutines use cases for Presentation/API/UI Layer]]></title>
            <link>https://kt.academy/article/cc-use-cases-presentation-layer</link>
            <guid>cc-use-cases-presentation-layer</guid>
            <pubDate>Wed, 30 Nov 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[How do we use Kotlin Coroutines in the Presentation/API/UI Layer Layer, how do we create scope and start coroutines.]]></description>
            <enclosure url="https://marcinmoskala.com/coroutines_book/promotion/401_3_use_cases.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[A birds-eye view of Arrow: working with function with Arrow Core]]></title>
            <link>https://kt.academy/article/fk-arrow-core</link>
            <guid>fk-arrow-core</guid>
            <pubDate>Mon, 28 Nov 2022 00:15:00 GMT</pubDate>
            <description><![CDATA[Learn about essential Arrow functions used for composition, memoization, recursion and functions generation.]]></description>
            <enclosure url="https://marcinmoskala.com/functional_kotlin_book/promotion/13_arrow_1.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Kotlin Coroutines use cases for Domain Layer]]></title>
            <link>https://kt.academy/article/cc-use-cases-domain-layer</link>
            <guid>cc-use-cases-domain-layer</guid>
            <pubDate>Thu, 24 Nov 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[How do we use Kotlin Coroutines in the Domain Layer.]]></description>
            <enclosure url="https://marcinmoskala.com/coroutines_book/promotion/401_2_use_cases.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Kotlin Coroutines use cases for Data/Adapters Layer]]></title>
            <link>https://kt.academy/article/cc-use-cases-data-layer</link>
            <guid>cc-use-cases-data-layer</guid>
            <pubDate>Tue, 15 Nov 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[How do we use Kotlin Coroutines in the Data/Adapters Layer, how do we use callback or blocking functions.]]></description>
            <enclosure url="https://marcinmoskala.com/coroutines_book/promotion/401_1_use_cases.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Functional Kotlin book is finally ready!]]></title>
            <link>https://kt.academy/article/functional-kotlin-release</link>
            <guid>functional-kotlin-release</guid>
            <pubDate>Mon, 07 Nov 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[Learn about our recently published book dedicated to functional Kotlin features.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/book_release_functional_kotlin.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Effective Kotlin Item 10: Design for readability]]></title>
            <link>https://kt.academy/article/ek-readability</link>
            <guid>ek-readability</guid>
            <pubDate>Mon, 24 Oct 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[Do we really want out applications concise, or do we rather want them readable?]]></description>
            <enclosure url="https://marcinmoskala.com/EffectiveKotlin-Book/promotion/readability.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Effective Kotlin Item 7: Prefer a nullable or Result result type when the lack of a result is possible]]></title>
            <link>https://kt.academy/article/ek-nullable-result</link>
            <guid>ek-nullable-result</guid>
            <pubDate>Wed, 19 Oct 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[Why should we prefer to avoid throwing exceptions and using types to our advantage.]]></description>
            <enclosure url="https://marcinmoskala.com/EffectiveKotlin-Book/promotion/nullable_result.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Effective Kotlin Item 5: Specify your expectations for arguments and state]]></title>
            <link>https://kt.academy/article/ek-expectations</link>
            <guid>ek-expectations</guid>
            <pubDate>Wed, 12 Oct 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[How do we specify requirements and expectations in Kotlin.]]></description>
            <enclosure url="https://marcinmoskala.com/EffectiveKotlin-Book/promotion/expectations.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Context receivers]]></title>
            <link>https://kt.academy/article/fk-context-receivers</link>
            <guid>fk-context-receivers</guid>
            <pubDate>Fri, 07 Oct 2022 00:05:00 GMT</pubDate>
            <description><![CDATA[All you need to know about the new and powerful Kotlin feature: context receivers.]]></description>
            <enclosure url="https://marcinmoskala.com/functional_kotlin_book/promotion/contex_receivers.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Effective Kotlin Item 1: Limit mutability]]></title>
            <link>https://kt.academy/article/ek-mutability</link>
            <guid>ek-mutability</guid>
            <pubDate>Wed, 28 Sep 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[Why it is so important to limit mutability, and how Kotlin supports it.]]></description>
            <enclosure url="https://marcinmoskala.com/EffectiveKotlin-Book/promotion/mutability.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Scope functions]]></title>
            <link>https://kt.academy/article/fk-scope-functions</link>
            <guid>fk-scope-functions</guid>
            <pubDate>Fri, 23 Sep 2022 00:05:00 GMT</pubDate>
            <description><![CDATA[What is let, also, apply and with, and how to use them in our applications.]]></description>
            <enclosure url="https://marcinmoskala.com/functional_kotlin_book/promotion/scope_functions.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Type modelling in Kotlin]]></title>
            <link>https://kt.academy/article/type-modelling-kotlin</link>
            <guid>type-modelling-kotlin</guid>
            <pubDate>Wed, 14 Sep 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[Type safety is undervalued in most software projects and causes enormous financial losses throughout the world. Changing a few bad habits can lead to more reliable software.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/type-modelling-kotlin.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[DSL type-safe builders]]></title>
            <link>https://kt.academy/article/fk-dsl</link>
            <guid>fk-dsl</guid>
            <pubDate>Fri, 09 Sep 2022 00:04:00 GMT</pubDate>
            <description><![CDATA[How to define type-safe DSL builders in Kotlin.]]></description>
            <enclosure url="https://marcinmoskala.com/functional_kotlin_book/promotion/DSLs.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Lambda expressions]]></title>
            <link>https://kt.academy/article/fk-lambda-expressions</link>
            <guid>fk-lambda-expressions</guid>
            <pubDate>Fri, 26 Aug 2022 00:03:00 GMT</pubDate>
            <description><![CDATA[Let's learn how to use lambda expressions, what special support they have, and what traps they generate.]]></description>
            <enclosure url="https://marcinmoskala.com/functional_kotlin_book/promotion/lambda_expressions.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Object-oriented or functional? Two ways to see the world]]></title>
            <link>https://kt.academy/article/oop-vs-fp</link>
            <guid>oop-vs-fp</guid>
            <pubDate>Thu, 18 Aug 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[The difference between the OOP and FP paradigms is deeply rooted in how we see the world. A few words on the philosophy of both approaches.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/oop-vs-fp.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Essential programming nomenclature]]></title>
            <link>https://kt.academy/article/programming-nomenclature</link>
            <guid>programming-nomenclature</guid>
            <pubDate>Thu, 11 Aug 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[Find out what you need to know, before you start writing documentations, books or articles about programming.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/essential-programming-nomenclature.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Function references]]></title>
            <link>https://kt.academy/article/fk-function-references</link>
            <guid>fk-function-references</guid>
            <pubDate>Fri, 29 Jul 2022 00:01:00 GMT</pubDate>
            <description><![CDATA[How do we reference functions in Kotlin, to replace lambda expressions. All functions, including constructors, getters, extensions and more.]]></description>
            <enclosure url="https://marcinmoskala.com/functional_kotlin_book/promotion/function_references.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Best Principles for Successful Test Automation (API and UI)]]></title>
            <link>https://kt.academy/article/test-automation-best-practices</link>
            <guid>test-automation-best-practices</guid>
            <pubDate>Tue, 14 Jun 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[Aligning our testing activities with ISTQB standards helps us to perform efficiently and cope with project scope and deadlines. In this workshop we will go over software testing stages starting from definition to maintenance.]]></description>
            <enclosure url="https://marcinmoskala.com/software-testing-articles/best_principles.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Leveraging AI in Software Testing]]></title>
            <link>https://kt.academy/article/ai-in-testing</link>
            <guid>ai-in-testing</guid>
            <pubDate>Tue, 07 Jun 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[As AI is confronting us in our daily lives and it is improving the development activities by eliminating some manual efforts, it is beneficial to embrace in our tasks. We will see how we can utilize AI based algorithms in Software Testing.]]></description>
            <enclosure url="https://marcinmoskala.com/software-testing-articles/leveraging_AI.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Software Testing Standards (Aligned with ISTQB)]]></title>
            <link>https://kt.academy/article/software-testing-standards</link>
            <guid>software-testing-standards</guid>
            <pubDate>Tue, 31 May 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[Aligning our testing activities with ISTQB standards helps us to perform efficiently and cope with project scope and deadlines. In this workshop we will go over software testing stages starting from definition to maintenance.]]></description>
            <enclosure url="https://marcinmoskala.com/software-testing-articles/software_testing.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[How to write a technical book?]]></title>
            <link>https://kt.academy/article/writing-technical-books</link>
            <guid>writing-technical-books</guid>
            <pubDate>Fri, 27 May 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[A guide for writing technical books.]]></description>
            <enclosure url="https://marcinmoskala.com/funny_programming/how_to_write.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Persistent memory design choices and use-cases]]></title>
            <link>https://kt.academy/article/pmem-design-choices-and-use-cases</link>
            <guid>pmem-design-choices-and-use-cases</guid>
            <pubDate>Thu, 26 May 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[Let's understand some design choices with persistent memory and use-cases of persistent memory.]]></description>
            <enclosure url="https://marcinmoskala.com/persistent-memory/design.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Why is Kotlin your next Programming Language?]]></title>
            <link>https://kt.academy/article/why-is-kotlin-your-next-programming-language</link>
            <guid>why-is-kotlin-your-next-programming-language</guid>
            <pubDate>Tue, 24 May 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[What is Kotlin, and why it should be your next programming language.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/why-is-kotlin-your-next-programming-language.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Persistent dictionary]]></title>
            <link>https://kt.academy/article/pmem-persistent-dictionary</link>
            <guid>pmem-persistent-dictionary</guid>
            <pubDate>Thu, 19 May 2022 00:01:00 GMT</pubDate>
            <description><![CDATA[Let's make our in-memory dictionary persistent and understand some concepts of PMDK.]]></description>
            <enclosure url="https://marcinmoskala.com/persistent-memory/dictionary.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Code or No-code?]]></title>
            <link>https://kt.academy/article/code-or-no-code</link>
            <guid>code-or-no-code</guid>
            <pubDate>Tue, 17 May 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[What are the strong sides of code and no-code, and why do they constantly fight with each other.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/code-or-no-code.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Introducing persistent memory]]></title>
            <link>https://kt.academy/article/pmem-introducing-persistent-memory</link>
            <guid>pmem-introducing-persistent-memory</guid>
            <pubDate>Thu, 12 May 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[ Let's learn the basics of persistent memory, its characteristics, how it works and the beauty of byte addressability.]]></description>
            <enclosure url="https://marcinmoskala.com/persistent-memory/introducing.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[In-memory dictionary]]></title>
            <link>https://kt.academy/article/pmem-in-memory-dictionary</link>
            <guid>pmem-in-memory-dictionary</guid>
            <pubDate>Thu, 05 May 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[Let's begin our journey to understand persistent memory by building an in-memory dictionary.]]></description>
            <enclosure url="https://marcinmoskala.com/persistent-memory/in-memory.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Persistent memory - Introduction]]></title>
            <link>https://kt.academy/article/pmem-intro</link>
            <guid>pmem-intro</guid>
            <pubDate>Thu, 28 Apr 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[Do you want to learn about persistent memory? Join this journey to explore persistent memory and build a persistent dictionary.]]></description>
            <enclosure url="https://marcinmoskala.com/persistent-memory/introduction.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Funny programming comics]]></title>
            <link>https://kt.academy/article/humour-comics</link>
            <guid>humour-comics</guid>
            <pubDate>Thu, 14 Apr 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[A collection of funny comics for programmers.]]></description>
            <enclosure url="https://marcinmoskala.com/funny_programming/comics.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Kotlin Coroutines: Deep Dive book is finally ready!]]></title>
            <link>https://kt.academy/article/coroutines-release</link>
            <guid>coroutines-release</guid>
            <pubDate>Tue, 05 Apr 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[Learn about our recently published book dedicated to Kotlin Coroutines.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/book-release-coroutines.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[SharedFlow and StateFlow]]></title>
            <link>https://kt.academy/article/cc-sharedflow-stateflow</link>
            <guid>cc-sharedflow-stateflow</guid>
            <pubDate>Mon, 21 Feb 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[Known as a replacement for Subject, LiveData, and many more. SharedFlow and StateFlow are powerful coroutines classes, every Kotlin developer should know.]]></description>
            <enclosure url="https://marcinmoskala.com/coroutines_book/promotion/309_state_flow.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Funny programming videos]]></title>
            <link>https://kt.academy/article/humour-video</link>
            <guid>humour-video</guid>
            <pubDate>Tue, 01 Feb 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[A collection of funny videos for programmers.]]></description>
            <enclosure url="https://marcinmoskala.com/funny_programming/videos.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Advent of Kotlin Solutions]]></title>
            <link>https://kt.academy/article/advent-2021-solutions</link>
            <guid>advent-2021-solutions</guid>
            <pubDate>Sun, 02 Jan 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[Solutions to the Advent of Kotlin!]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/adventanswers.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Advent of Kotlin: Week 4]]></title>
            <link>https://kt.academy/article/advent-2021-week4</link>
            <guid>advent-2021-week4</guid>
            <pubDate>Tue, 21 Dec 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[Week 4 of the Advent of Kotlin: Parsing JSON]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/adventweek4.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Advent of Kotlin: Week 3]]></title>
            <link>https://kt.academy/article/advent-2021-week3</link>
            <guid>advent-2021-week3</guid>
            <pubDate>Tue, 14 Dec 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[Week 3 of the Advent of Kotlin: k-means clustering]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/adventweek3.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Advent of Kotlin: Week 2]]></title>
            <link>https://kt.academy/article/advent-2021-week2</link>
            <guid>advent-2021-week2</guid>
            <pubDate>Mon, 06 Dec 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[Week 2 of the Advent of Kotlin: Tree algorithms]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/adventweek2.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Advent of Kotlin: Week 1: JSON stringify and possible value parentheses]]></title>
            <link>https://kt.academy/article/advent-2021-week1</link>
            <guid>advent-2021-week1</guid>
            <pubDate>Wed, 01 Dec 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[Week 1 of the Advent of Kotlin: JSON stringify and possible well-formed parentheses]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/adventweek1.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Variables point to objects]]></title>
            <link>https://kt.academy/article/variables</link>
            <guid>variables</guid>
            <pubDate>Wed, 17 Nov 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[A basic feature, that is commonly misunderstood.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/references.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Testing Kotlin Coroutines]]></title>
            <link>https://kt.academy/article/cc-testing</link>
            <guid>cc-testing</guid>
            <pubDate>Wed, 27 Oct 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[How we test Kotlin Coroutines, including common Android and backend cases.]]></description>
            <enclosure url="https://marcinmoskala.com/coroutines_book/promotion/210_testing.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Constructing a coroutine scope]]></title>
            <link>https://kt.academy/article/cc-constructing-scope</link>
            <guid>cc-constructing-scope</guid>
            <pubDate>Wed, 13 Oct 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[How we generally define coroutine scope on Android and on the backend.]]></description>
            <enclosure url="https://marcinmoskala.com/coroutines_book/promotion/208_constructing_scope.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Effective Kotlin Item 56: Consider using groupingBy instead of groupBy]]></title>
            <link>https://kt.academy/article/ek-grouping</link>
            <guid>ek-grouping</guid>
            <pubDate>Mon, 11 Oct 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[What Grouping is, and how groupingBy instead of groupBy can be a performance optimization.]]></description>
            <enclosure url="https://marcinmoskala.com/EffectiveKotlin-Book/promotion/groupBy.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Effective Kotlin Item 55: Consider associating elements to a map]]></title>
            <link>https://kt.academy/article/ek-associate</link>
            <guid>ek-associate</guid>
            <pubDate>Mon, 27 Sep 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[How associateBy is useful to improve the performance of finding elements.]]></description>
            <enclosure url="https://marcinmoskala.com/EffectiveKotlin-Book/promotion/associate.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Effective Kotlin Item 54: Prefer Sequences for big collections with more than one processing step]]></title>
            <link>https://kt.academy/article/ek-sequence</link>
            <guid>ek-sequence</guid>
            <pubDate>Mon, 20 Sep 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[What the difference between list and sequence processing is, and when each should be preferred.]]></description>
            <enclosure url="https://marcinmoskala.com/EffectiveKotlin-Book/promotion/sequence.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Effective Kotlin Item 53: Eliminate obsolete object references]]></title>
            <link>https://kt.academy/article/ek-object-references</link>
            <guid>ek-object-references</guid>
            <pubDate>Mon, 13 Sep 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[How to help our garbage collector and avoid memory leaks.]]></description>
            <enclosure url="https://marcinmoskala.com/EffectiveKotlin-Book/promotion/eliminate_object_references.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Effective Kotlin Item 52: Consider using inline value classes]]></title>
            <link>https://kt.academy/article/ek-value-classes</link>
            <guid>ek-value-classes</guid>
            <pubDate>Mon, 06 Sep 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[What value classes are, how to use and inline them.]]></description>
            <enclosure url="https://marcinmoskala.com/EffectiveKotlin-Book/promotion/inline_classes.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Coroutines under the hood]]></title>
            <link>https://kt.academy/article/cc-under-the-hood</link>
            <guid>cc-under-the-hood</guid>
            <pubDate>Wed, 01 Sep 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[A deep dive into how suspension and continuations work under the hood.]]></description>
            <enclosure url="https://marcinmoskala.com/coroutines_book/promotion/104_under_the_hood.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Effective Kotlin Item 51: Use the inline modifier for functions with parameters of functional types]]></title>
            <link>https://kt.academy/article/ek-inline-functions</link>
            <guid>ek-inline-functions</guid>
            <pubDate>Mon, 30 Aug 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[How inline functions work and why they can be so important for the performance of our application.]]></description>
            <enclosure url="https://marcinmoskala.com/EffectiveKotlin-Book/promotion/inline.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Effective Kotlin Item 47: Avoid unnecessary object creation]]></title>
            <link>https://kt.academy/article/ek-unnecessary-objects</link>
            <guid>ek-unnecessary-objects</guid>
            <pubDate>Sun, 22 Aug 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[About the most essential rule of performance optimization.]]></description>
            <enclosure url="https://marcinmoskala.com/EffectiveKotlin-Book/promotion/unnecessary_object.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Traits for testing in Kotlin]]></title>
            <link>https://kt.academy/article/traits-testing</link>
            <guid>traits-testing</guid>
            <pubDate>Fri, 06 Aug 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[A trick needed when using traits for testing in Kotlin.]]></description>
            <enclosure url="https://marcinmoskala.com/kt-academy-articles/promotion/traits_for_testing.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[How does suspension work in Kotlin coroutines?]]></title>
            <link>https://kt.academy/article/cc-suspension</link>
            <guid>cc-suspension</guid>
            <pubDate>Wed, 28 Jul 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[A deep explanation of how suspension works in Kotlin Coroutines.]]></description>
            <enclosure url="https://marcinmoskala.com/coroutines_book/promotion/103_suspension.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Effective Kotlin Item 32: Consider factory functions instead of secondary constructors]]></title>
            <link>https://kt.academy/article/ek-factory-functions</link>
            <guid>ek-factory-functions</guid>
            <pubDate>Sun, 25 Jul 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[What factory functions are and why they are so important patterns for object creation.]]></description>
            <enclosure url="https://marcinmoskala.com/EffectiveKotlin-Book/promotion/factory_functions.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Effective Kotlin Item 46: Avoid member extensions]]></title>
            <link>https://kt.academy/article/ek-member-extensions</link>
            <guid>ek-member-extensions</guid>
            <pubDate>Sun, 18 Jul 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[What member extensions are, how they are possible and why we should avoid using them.]]></description>
            <enclosure url="https://marcinmoskala.com/EffectiveKotlin-Book/promotion/member_extensions.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[kt.academy new logo: Phoenix]]></title>
            <link>https://kt.academy/article/phoenix-logo</link>
            <guid>phoenix-logo</guid>
            <pubDate>Wed, 16 Jun 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[Why we decided to change our logo, and what is the symbolism of Phoenix.]]></description>
            <enclosure url="https://kt.academy/logo.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Effective Kotlin Item 36: Prefer composition over inheritance]]></title>
            <link>https://kt.academy/article/ek-composition</link>
            <guid>ek-composition</guid>
            <pubDate>Sun, 25 Apr 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[Years of OOP made us overuse inheritance. Instead, we should more often use a composition that is safer and more explicit. More often, but not always...]]></description>
            <enclosure url="https://marcinmoskala.com/EffectiveKotlin-Book/promotion/composition.jpg" length="0" type="image/jpg"/>
        </item>
    </channel>
</rss>