Marcin Moskała
Marcin Moskala is a highly experienced developer and Kotlin instructor as the founder of Kt. Academy, an official JetBrains partner specializing in Kotlin training, Google Developers Expert, known for his significant contributions to the Kotlin community. Moskala is the author of several widely recognized books, including "Effective Kotlin," "Kotlin Coroutines," "Functional Kotlin," "Advanced Kotlin," "Kotlin Essentials," and "Android Development with Kotlin."
Beyond his literary achievements, Moskala is the author of the largest Medium publication dedicated to Kotlin. As a respected speaker, he has been invited to share his insights at numerous programming conferences, including events such as Droidcon and the prestigious Kotlin Conf, the premier conference dedicated to the Kotlin programming language.
Корпоративні майстерні

Kotlin Coroutines
Dive deep and learn how to effectively use Kotlin Coroutines.

Kotlin Coroutines Intensive
Learn essentials of Kotlin Coroutines in just 2 days.

Advanced Compose
Learn advanced aspects of Jetpack Compose.
Kotlin for Developers
Everything that a developer needs to know about Kotlin.
Open workshops
Join now for publicly available, scheduled workshops for individuals.

Open workshops
Published articles
Suspending functions vs. Flow: When to use which?
A comprehensive guide to understanding the differences between suspending functions and Flow in Kotlin Coroutines, and when to use each.
How to implement a random coroutines challenge generator
A behind-the-scenes look at how to implement a generator of interesting challenges for learning Kotlin Coroutines.
Discussing Kotlin Coroutines on Talking Kotlin Podcast
An insightful discussion about Kotlin Coroutines on the Talking Kotlin podcast.
Coroutines vs Reactor: When Elegance and Simplicity Crush Complexity
A comparison of Kotlin Coroutines and Reactor, highlighting the elegance and simplicity of Coroutines over the complexity of Reactor.
Suspending functions into blocking functions or CompletableFuture
A guide on how to correctly convert suspending functions into blocking functions or CompletableFuture in Kotlin Coroutines.
Kotlin Flow to RxJava or Reactor and vice versa
A guide on how to convert Kotlin Flow to RxJava or Reactor streams and vice versa.
Kotlin Coroutines and Swift
How to use Kotlin Coroutines in Swift projects, or Swift libraries from Kotlin Coroutines.
Kotlin Coroutines and JavaScript
How to use Kotlin Coroutines in JavaScript projects, or JavaScript libraries from Kotlin Coroutines.
runBlocking in practice: Where it should be used and where not
A comprehensive guide to using runBlocking in Kotlin Coroutines, including best practices and common pitfalls.
Reviewed articles

Running Kotlin coroutines on Project Loom's virtual threads
How to use Project Loom to improve Coroutines performance.

A birds-eye view of Arrow: Data Immutability with Arrow Optics
Learn to use Arrow Optics to support working on immutable objects.

Slowing down your code with Coroutines
How can we use coroutines to slow down our code, and why would we want to do that.

A birds-eye view of Arrow: Error Handling
Learn about Error Handling in Arrow, end how to effectively work with Either.
A birds-eye view of Arrow: working with function with Arrow Core
Learn about essential Arrow functions used for composition, memoization, recursion and functions generation.
Persistent memory design choices and use-cases
Let's understand some design choices with persistent memory and use-cases of persistent memory.
Persistent dictionary
Let's make our in-memory dictionary persistent and understand some concepts of PMDK.
Introducing persistent memory
Let's learn the basics of persistent memory, its characteristics, how it works and the beauty of byte addressability.
In-memory dictionary
Let's begin our journey to understand persistent memory by building an in-memory dictionary.


























