Marcin Moskała PL (@marcinmoskalapl) 's Twitter Profile
Marcin Moskała PL

@marcinmoskalapl

Programista, pisarz, filozof.
For english, go to @marcinmoskala

ID: 1424458656305852418

calendar_today08-08-2021 19:53:12

423 Tweet

92 Takipçi

8 Takip Edilen

Marcin Moskała (@marcinmoskala) 's Twitter Profile Photo

VizCor is an amazing project by Jiří Hermann . I believe it is the most ambitious Coroutines Mastery 2025 project, showing well-implemented backend in Ktor (supporting Swagger, AsyncAPI, OpenAPI, Micrometer and more) for visualizing how coroutines work in complex scenarios that

Marcin Moskała (@marcinmoskala) 's Twitter Profile Photo

Another common misuse is creating a StateFlow for each call. That makes no sense. We create StateFlow so it can be shared by multiple flows. StateFlow should be stored in a property; only then can it be shared by multiple flows.

Another common misuse is creating a StateFlow for each call. That makes no sense. We create StateFlow so it can be shared by multiple flows. StateFlow should be stored in a property; only then can it be shared by multiple flows.
Marcin Moskała (@marcinmoskala) 's Twitter Profile Photo

You don’t understand Recomposition (and that’s costing you clarity) On Tuesday, February 17, we’re hosting a free live webinar: “You don’t understand Recomposition.” Jov Mit and I will explain how recomposition actually works, why state reads matter, and which assumptions

You don’t understand Recomposition (and that’s costing you clarity) 

On Tuesday, February 17, we’re hosting a free live webinar:
“You don’t understand Recomposition.”

Jov Mit and I will explain how recomposition actually works, why state reads matter, and which assumptions
Kt. Academy (@ktdotacademy) 's Twitter Profile Photo

Do you have a “reference repo” you trust when you need to implement something non-trivial with coroutines (cancellation, caching, resilience, structured concurrency edge-cases)? The first edition of Coroutines Mastery just wrapped up, and several participants decided to publish

Do you have a “reference repo” you trust when you need to implement something non-trivial with coroutines (cancellation, caching, resilience, structured concurrency edge-cases)?

The first edition of Coroutines Mastery just wrapped up, and several participants decided to publish
Marcin Moskała (@marcinmoskala) 's Twitter Profile Photo

Most learning paths assume you must choose between speed and depth. In practice, workloads change week to week. Advanced Compose and Polished Compose are structured to handle both: - Short on time: study 7 hours per week, cover all required material, revisit everything for 6

Most learning paths assume you must choose between speed and depth.
In practice, workloads change week to week.

Advanced Compose and Polished Compose are structured to handle both:
- Short on time: study 7 hours per week, cover all required material, revisit everything for 6
Kt. Academy (@ktdotacademy) 's Twitter Profile Photo

Classic for-loop is 💩 compared to what Kotlin offers. It is simple, powerful, and efficient, and can do more than you know. Let me show you 👇🧵

Classic for-loop is 💩 compared to what Kotlin offers. It is simple, powerful, and efficient, and can do more than you know. Let me show you 👇🧵
Marcin Moskała (@marcinmoskala) 's Twitter Profile Photo

The most common mistake I observe in Android projects is a misuse of IO dispatcher. Often it is used when not needed, and sometimes not used when needed. How should we know when to use it? Let me show you.

The most common mistake I observe in Android projects is a misuse of IO dispatcher. Often it is used when not needed, and sometimes not used when needed. How should we know when to use it? Let me show you.
Marcin Moskała (@marcinmoskala) 's Twitter Profile Photo

If recomposition feels “obvious”, that’s often where the problems start. We’re hosting a free webinar called “You don’t understand Recomposition.” Not because you lack experience — but because experienced developers often rely on shared assumptions about recomposition that

If recomposition feels “obvious”, that’s often where the problems start.

We’re hosting a free webinar called “You don’t understand Recomposition.”
Not because you lack experience — but because experienced developers often rely on shared assumptions about recomposition that
Kt. Academy (@ktdotacademy) 's Twitter Profile Photo

Have you ever wondered why toUpperCase and toLowerCase were deprecated in Kotlin? The original reason was the Turkish language.

Have you ever wondered why toUpperCase and toLowerCase were deprecated in Kotlin? The original reason was the Turkish language.
Marcin Moskała (@marcinmoskala) 's Twitter Profile Photo

As programmers, we value efficiency—less code, fewer resources, cleaner solutions. Paying more for the same result isn’t efficient. Advanced & Polished Compose delivers the same structured path to compose expertise: lessons, exercises, community discussions and Q&A that all

As programmers, we value efficiency—less code, fewer resources, cleaner solutions.

Paying more for the same result isn’t efficient.

Advanced & Polished Compose delivers the same structured path to compose expertise: lessons, exercises, community discussions and Q&A that all
Marcin Moskała (@marcinmoskala) 's Twitter Profile Photo

Today I want to share with you a stunning library and top final project on Coroutines Mastery 2025. Comet by Pandu Baraja Pandu 🇵🇸 is a library for automatically tracking coroutines and their execution time. It allows us to track and analyze coroutines execution in real-time.

Marcin Moskała (@marcinmoskala) 's Twitter Profile Photo

Modifiers are not like "parameters" to composables, they are “decorating” them. Modifiers are a lot like wrapper composables. That is why after a modifier like padding or offset, next modifier might draw operate in a different area.

Modifiers are not like "parameters" to composables, they are “decorating” them. Modifiers are a lot like wrapper composables. That is why after a modifier like padding or offset, next modifier might draw operate in a different area.
Marcin Moskała (@marcinmoskala) 's Twitter Profile Photo

keepScreenOn() is such a simple yet so powerful modifier. For as long as a component with this modifier is visible, screen will not dim. Say goodbye to dimming device while watching a video or even waiting for something to happen in application.

keepScreenOn() is such a simple yet so powerful modifier. For as long as a component with this modifier is visible, screen will not dim. Say goodbye to dimming device while watching a video or even waiting for something to happen in application.
Kt. Academy (@ktdotacademy) 's Twitter Profile Photo

A lot of Compose “rules” people repeat come from one source: misunderstanding recomposition. Marcin Moskała breaks recomposition down into a clear mental model: what composition really does, what snapshot state changes trigger, how recomposition propagates, and when Compose can

A lot of Compose “rules” people repeat come from one source: misunderstanding recomposition.

<a href="/marcinmoskala/">Marcin Moskała</a> breaks recomposition down into a clear mental model: what composition really does, what snapshot state changes trigger, how recomposition propagates, and when Compose can
Marcin Moskała (@marcinmoskala) 's Twitter Profile Photo

In this edition of the Compose Mastery Track, we introduced Busy Developer Mode. It was created after repeated feedback from previous participants who wanted to keep learning even when work intensity suddenly changed. Release weeks, incidents, and deadlines shouldn’t force you

In this edition of the Compose Mastery Track, we introduced Busy Developer Mode.

It was created after repeated feedback from previous participants who wanted to keep learning even when work intensity suddenly changed.

Release weeks, incidents, and deadlines shouldn’t force you
Kt. Academy (@ktdotacademy) 's Twitter Profile Photo

Learn clean, annotation-free input validation in Kotlin. A concise, dependency-free approach for backend developers to validate DTOs efficiently. New article by László Szremanyák Read here 👇 blog.kotlin-academy.com/adbbcd2e7c1d?s…

Learn clean, annotation-free input validation in Kotlin. A concise, dependency-free approach for backend developers to validate DTOs efficiently. New article by <a href="/sz_laszlo_96/">László Szremanyák</a> 
Read here 👇
blog.kotlin-academy.com/adbbcd2e7c1d?s…
Marcin Moskała (@marcinmoskala) 's Twitter Profile Photo

One of the key concepts of Jetpack Compose is type stability. Stable types allow better recomposition optimisations. That was traditionally very important, but since 2.0.20 a lot has changed. Let me explain 👇

One of the key concepts of Jetpack Compose is type stability. Stable types allow better recomposition optimisations. That was traditionally very important, but since 2.0.20 a lot has changed. Let me explain 👇
Kt. Academy (@ktdotacademy) 's Twitter Profile Photo

I am always disappointed when I see that in Kotlin, but I see it surprisingly often. It makes no sense to make an async call and immediately await its completion. You should call await after the last async.

I am always disappointed when I see that in Kotlin, but I see it surprisingly often. It makes no sense to make an async call and immediately await its completion. You should call await after the last async.
Marcin Moskała (@marcinmoskala) 's Twitter Profile Photo

I’ve published 6 Kotlin books and delivered over 90 conference talks. Jov Mit brings more than 15 years of Android development experience and over 300 Compose training videos. Together, we’ve trained over 4,000 developers. That scale changes how you teach. You start to see the

I’ve published 6 Kotlin books and delivered over 90 conference talks. Jov Mit brings more than 15 years of Android development experience and over 300 Compose training videos. Together, we’ve trained over 4,000 developers.

That scale changes how you teach. You start to see the
Marcin Moskała (@marcinmoskala) 's Twitter Profile Photo

This crash is brutal because it often happens only with “real” data and often only in “specific” situations `IllegalArgumentException: Key … was already used` Why does it happen? Elements in collections are identified by values returned from a key function. So this result

This crash is brutal because it often happens only with “real” data and often only in “specific” situations

`IllegalArgumentException: Key … was already used`

Why does it happen?

Elements in collections are identified by values returned from a key function. So this result