Explaining complicated things in a lightweight and easy to grasp way is anything but simple. Join me in my journey to yet another tech-blog with one twist: lots of animation!

Suspending Code Execution with Kotlin Coroutines

Using JVM threads efficiently can be difficult, especially if your application has blocking / waiting operations. This post explains how Kotlin Coroutines can be used to free a thread of a blocking task instead of waiting and how this can even lead to parallel code execution.

Using Kotlin Coroutines for Parallel and Concurrent Compute

Besides implementing non-blocking applications, Kotlin Coroutines can also easily be used for parallel or concurrent compute of code. This post not only explains how it can be done, but also how it is implemented on JVM level.

Kotlin Coroutines are not Threads. So why do they behave as such?

You oftern hear that 'Coroutines are like Threads but also different'. But if they are not threads, then what are they and how are they implemented on the JVM? This post will explain the basics.

Set Filesystem Creation Date to when Photo or Video was taken (Mac and Linux)

When importing or transcoding photos or videos, the new files' creation date is usually not the date when they were taken. This messes up some program's file sorting. So let`s fix it.

Copying EXIF Metadata (Mac and Linux)

Recover original medatada after transcoding or editing photos or videos.

Spring WebFlux: Executing Code in Parallel

Spring WebFlux is intended to optimize resource utilization if your application implements many blocking operations. It can however also be used to implement parallel compute like Java's CompletableFuture. This post explains how this can by done and why you SHOULD NOT do so.

Spring WebFlux Visualized: Threading and EventLoops

If EventLoops are fundamentally just threads, then how do they differ from traditional Java threads and how do they prevent your CPU from starving when many blocking operations occur at the same time?