Kt. Academy Logo

Nicola Corti

Nicola Corti is a Google Developer Expert for Kotlin. He has been working with the language since before version 1.0 and he is the maintainer of several open-source libraries and tools.

He's currently working as Android Infrastructure Engineer at Spotify in Stockholm, Sweden.

Furthermore, he is an active member of the developer community. His involvement goes from speaking at international conferences about Mobile development to leading communities across Europe (GDG Pisa, KUG Hamburg, GDG Sthlm Android).

In his free time, he also loves baking, photography, and running.

Reviewed articles

Generics in Kotlin

The essence of how generics work in Kotlin.

Cancellation in Kotlin Coroutines

Everything you need to know about the cancellation mechanism in Kotlin Coroutines.

What is CoroutineContext and how does it work?

A deep explanation of the coroutine context - the powerful data holder for coroutines.

Annotation Processing

Implement your first annotation processor in Kotlin.

Marcin Moskała
Marcin Moskała

Effective Kotlin Item 60: Use appropriate collection types

Using non-standard collection types to improve performance in Kotlin.

Kotlin Symbol Processing

All the essential aspects of KSP in practice.

Marcin Moskała
Marcin Moskała

Effective Kotlin Item 49: Use caching when possible

Why we should use caching and how to do it.

Marcin Moskała
Marcin Moskała

Data classes in Kotlin

What are data classes in Kotlin and how do we use them.

Marcin Moskała
Marcin Moskała

Effective Kotlin Item 48: Consider using object declarations

Why we should use object declarations instead of regular classes.

Extensions in Kotlin

What are extensions in Kotlin and how do we use them.

Effective Kotlin Item 35: Consider using dependency injection

What is dependency injection, why it is so important, and how to use it in Kotlin.

Sealed classes and interfaces in Kotlin

What are sealed classes and interfaces in Kotlin and how do we use them.

Effective Kotlin Item 2: Eliminate critical sections

Learn why do we need to synchronize access to mutable state, and how to secure it.

Objects in Kotlin

What is object expression, object declaration and companion objects, and how we use them.

The beauty of Kotlin type system

How type system makes Kotlin so flexible, safe, and intuitive.

Nullability in Kotlin

How Kotlin null-safety works, and how can we deal with nullable values.

Basic values in Kotlin

Learn about the basic Kotlin values, types and operations.

Enum classes in Kotlin

What are enum classes in Kotlin and how do we use them.

Operator overloading in Kotlin

How are operators defined for types in Kotlin, and how can we define our own operators.

The power of Kotlin for-loop

Learn about the amazing capabilities of Kotlin for-loop.

Your first program in Kotlin

How to write your first program, how can we use it in real-life projects, and how to explore what Kotlin is compiled to.

Functions in Kotlin

Learn about what functions can offer us in Kotlin.

Marcin Moskała
Marcin Moskała

SharedFlow and StateFlow

Known as a replacement for Subject, LiveData, and many more. SharedFlow and StateFlow are powerful coroutines classes, every Kotlin developer should know.

Testing Kotlin Coroutines

How we test Kotlin Coroutines, including common Android and backend cases.

Marcin Moskała
Marcin Moskała

Constructing a coroutine scope

How we generally define coroutine scope on Android and on the backend.

Marcin Moskała
Marcin Moskała

Effective Kotlin Item 56: Consider using groupingBy instead of groupBy

What Grouping is, and how groupingBy instead of groupBy can be a performance optimization.

Marcin Moskała
Marcin Moskała

Effective Kotlin Item 55: Consider associating elements to a map

How associateBy is useful to improve the performance of finding elements.

Coroutines under the hood

A deep dive into how suspension and continuations work under the hood.

Why using Kotlin Coroutines?

The explanation of why coroutines stand out and offer us what hasn't been offered by other technologies.

How does suspension work in Kotlin coroutines?

A deep explanation of how suspension works in Kotlin Coroutines.

Effective Kotlin Item 32: Consider factory functions instead of secondary constructors

What factory functions are and why they are so important patterns for object creation.

Kotlin Coroutines dispatchers

Where we should use each dispatcher from the Kotlin Coroutines library.