With @preussler.berlin 👍 at #dcbln25
Thank you @droidcon.bsky.social for inviting me another time to this event!
With @preussler.berlin 👍 at #dcbln25
Thank you @droidcon.bsky.social for inviting me another time to this event!
🚀 Want to dive deeper into performance and Kotlin best practices?
Join me for the upcoming open workshop – Kotlin Mastery, October 23–24, where we’ll explore performance optimization and much more!
On Android the modern standard for testing is Macrobenchmark and Microbenchmark frameworks. They can measure startup times, performance of all kinds of UI operations, and much more.
In backend, we often choose something in-between, like when we connect to a real application, but some of its repositories are faked. That is often simpler to setup.
The problem is that such a test is harder to profile, harder to setup, and gives less predictable outcomes, but it better shows us how our application behaves under certain stress.
On the other hand, you can write a local E2E performance test. On backend it means starting application locally, local database, and local fake services it uses. Such a test measures much more, including database use, serialization/deserialization, etc.
During execution we can profile execution time and memory use to know what to optimise. For more precise measurements, we can use a framework like JMH, but that limits our profiling capabilities.
Let’s start with the simplest approach: Testing an element in separation. A class often needs some fake dependencies, and we fill them with fake data, to simulate a specific scenarios.
To optimise, you must measure. To choose the right approach for performance measurement, you must answer the most important question: What do you want to measure?
🤔
And what about memory usage when you run millions of concurrent tasks? 🤔
If any of these questions keep you up at night, join my upcoming webinar—I’ll walk you through the answers.
webinar.kt.academy/kotlin-corou...
Which one really scales better for high-concurrency workloads? 🤔
Are there reliable benchmarks comparing coroutine performance with Loom’s virtual threads?
Only 7 days left to buy Coroutines Mastery at a better price!
Want to see how Loom really compares against Kotlin Coroutines?
On Sept 1, I’ll be live comparing them side-by-side — strengths, weaknesses, and when to use each.
Two time slots, free to join.
Reserve your seat → webinar.kt.academy/kotlin-corou...
Boost your Kotlin performance with Project Loom's virtual threads!
Say goodbye to `Dispatchers.IO` and run blocking code like it's non-blocking. Faster, simpler, smarter. ⚡
🔗 Dive in now:
kt.academy/article/disp...
Curious about Rich Errors in Kotlin? Here is the first KEEP document, explaining their motivation and implementation:
github.com/Kotlin/KEEP/...
🥵 Are your frustred by mistakes like these? That’s just one of many subtle pitfalls we tackle in Coroutines Mastery.
If you want to master Kotlin’s concurrency tools — and avoid the mistakes that slow teams down — join our course.
coroutinesmastery.com?utm_source=l...
Updates to MutableStateFlow should be made using the update function; otherwise, conflicts might cause some updates to be lost.
I will be speaking at #JDDKrakow on October 21-22, 2025!
Let's meet in Krakow, Poland - join the conference at: jdd.org.pl
#JavaDevelopment #JavaConference #SoftwareEngineering #TechConference #Krakow
A lightweight wrappers over arrays, providing efficient collection processing functions, immutability, equality, and proper type hierarchy. Those are arrays done well, I love it!
github.com/daniel-rusu/...
#Kotlin #ImmutableCollections #FunctionalProgramming #SoftwareEngineering #DeveloperTips
Ready and excited for today's sessions! Can't wait to share this content with you all.
See you all very soon!
webinar.kt.academy/why-you-shou...
#Kotlin #KotlinCoroutines #Concurrency #AsyncProgramming #DeveloperCommunity
Still debating whether you should introduce coroutines—or where to even begin? Skip the internal tug-of-war and bring your toughest questions to my live Q&A TOMORROW!
I’ll be dedicating extra time to answer everything you throw.
Last chance to sign up: webinar.kt.academy/why-you-shou...
Starting from square one? Come hang out at my live session “Why You Should Use Kotlin Coroutines.” this Thursday. We’ll unpack why they’re worth the learning and how to do it painless. 👇
webinar.kt.academy/why-you-shou...
#KotlinCoroutines #KotlinFlow #SoftwareEngineering #DeveloperTips
Coroutines power-user? Grab my brand-new Flow Cheat-Sheet—operators, builders, the whole buffet. 👇
cheat-sheet.kt.academy/flow
Many ask me how to stay in touch with what's happening in Kotlin. My answer is simple: Kotlin Weekly!
kotlinweekly.net
In 3 days, we go live! ⏳
Seats are filling up!
👉 webinar.kt.academy/why-you-shou...
#KotlinCoroutines #StructuredConcurrency #ReactiveProgramming #SoftwareEngineering #KtAcademy
Cancellation is just one example of how Kotlin Coroutines improve real-world code.
If you'd like to explore more such concepts, I invite you to my free webinar: webinar.kt.academy/why-you-shou...
Kotlin Coroutines cancellation is not perfect, but still, it is the best solution I know, and I am very happy to have it in Kotlin.
Exceptions happen, and connections get lost. Now you can calculate how many resources that can help us save if cancellation lets us close a connection with another service earlier, or not make a request at all, or not calculate something, or release a thread previously blocked.
Also when you define a backend application in a framework like Ktor, that is coroutines-first, if an HTTP connection is lost, call gets immediately cancelled, the same if WebSocket or RSocket connection is lost.
But cancellation mechanisms are also a great benefit for backend developers. If you make async calls and one of them fails, others are cancelled by default.