kt.academy Logo
Marcin Moskała profile

Marcin Moskała

GitHubX (Twitter)

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.

public workshop

Open workshops

icon
18 - 19 Dec 2025

Kotlin Expert [EN]

Learn about the most advanced Kotlin tools and patterns.

Marcin Moskala
Marcin Moskala
Discount until 18.11.2025
500 EUR
600 EUR
chevron down
TOP CHOICE
КНИГА

Effective Kotlin [EN]

Marcin Moskala
Marcin Moskala
TOP CHOICE
КНИГА

Kotlin Coroutines [EN]

Marcin Moskala
Marcin Moskala
КНИГА

Advanced Kotlin [EN]

Marcin Moskala
Marcin Moskala
КНИГА

Functional Kotlin [EN]

Marcin Moskala
Marcin Moskala
КНИГА

Kotlin Essentials [EN]

Marcin Moskala
Marcin Moskala
КНИГА

JavaScript od podstaw [PL]

Marcin Moskala
Marcin Moskala
КНИГА

Python od podstaw [PL]

Marcin Moskala
Marcin Moskala
КНИГА

Python з нуля [UA]

Marcin Moskala
Marcin Moskala

Published articles

Suspending functions vs. Flow: When to use which?
10/28/2025
Marcin Moskała
Marcin Moskała

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.

Learn morelearn more icon
How to implement a random coroutines challenge generator
10/20/2025
Marcin Moskała
Marcin Moskała

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.

Learn morelearn more icon
Discussing Kotlin Coroutines on Talking Kotlin Podcast
10/17/2025
Marcin Moskała
Marcin Moskała

Discussing Kotlin Coroutines on Talking Kotlin Podcast

An insightful discussion about Kotlin Coroutines on the Talking Kotlin podcast.

Learn morelearn more icon
Coroutines vs Reactor: When Elegance and Simplicity Crush Complexity
10/6/2025
Marcin Moskała
Marcin Moskała

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.

Learn morelearn more icon
Suspending functions into blocking functions or CompletableFuture
9/29/2025
Marcin Moskała
Marcin Moskała

Suspending functions into blocking functions or CompletableFuture

A guide on how to correctly convert suspending functions into blocking functions or CompletableFuture in Kotlin Coroutines.

Learn morelearn more icon
Kotlin Flow to RxJava or Reactor and vice versa
9/22/2025
Marcin Moskała
Marcin Moskała

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.

Learn morelearn more icon
Kotlin Coroutines and Swift
9/15/2025
Marcin Moskała
Marcin Moskała

Kotlin Coroutines and Swift

How to use Kotlin Coroutines in Swift projects, or Swift libraries from Kotlin Coroutines.

Learn morelearn more icon
Kotlin Coroutines and JavaScript
9/8/2025
Marcin Moskała
Marcin Moskała

Kotlin Coroutines and JavaScript

How to use Kotlin Coroutines in JavaScript projects, or JavaScript libraries from Kotlin Coroutines.

Learn morelearn more icon
runBlocking in practice: Where it should be used and where not
9/1/2025
Marcin Moskała
Marcin Moskała

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.

Learn morelearn more icon

Reviewed articles

Running Kotlin coroutines on Project Loom's virtual threads
1/9/2023
Jan Vladimir Mostert
Jan Vladimir Mostert

Running Kotlin coroutines on Project Loom's virtual threads

How to use Project Loom to improve Coroutines performance.

Learn morelearn more icon
A birds-eye view of Arrow: Data Immutability with Arrow Optics
12/19/2022
Alejandro Serrano Mena
Alejandro Serrano Mena

A birds-eye view of Arrow: Data Immutability with Arrow Optics

Learn to use Arrow Optics to support working on immutable objects.

Learn morelearn more icon
Slowing down your code with Coroutines
12/9/2022
Jan Vladimir Mostert
Jan Vladimir Mostert

Slowing down your code with Coroutines

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

Learn morelearn more icon
A birds-eye view of Arrow: Error Handling
12/6/2022
Simon Vergauwen
Simon Vergauwen

A birds-eye view of Arrow: Error Handling

Learn about Error Handling in Arrow, end how to effectively work with Either.

Learn morelearn more icon
A birds-eye view of Arrow: working with function with Arrow Core
11/28/2022
Alejandro Serrano Mena
Alejandro Serrano Mena

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.

Learn morelearn more icon
Persistent memory design choices and use-cases
5/26/2022
Sarthak Makhija
Sarthak Makhija

Persistent memory design choices and use-cases

Let's understand some design choices with persistent memory and use-cases of persistent memory.

Learn morelearn more icon
Persistent dictionary
5/19/2022
Sarthak Makhija
Sarthak Makhija

Persistent dictionary

Let's make our in-memory dictionary persistent and understand some concepts of PMDK.

Learn morelearn more icon
Introducing persistent memory
5/12/2022
Sarthak Makhija
Sarthak Makhija

Introducing persistent memory

Let's learn the basics of persistent memory, its characteristics, how it works and the beauty of byte addressability.

Learn morelearn more icon
In-memory dictionary
5/5/2022
Sarthak Makhija
Sarthak Makhija

In-memory dictionary

Let's begin our journey to understand persistent memory by building an in-memory dictionary.

Learn morelearn more icon