I am an engineer that turned software developer. I enjoy technical challenges and experimenting with techniques and architectures. Some are used successfully in production and some are complete failures. However, all experiments are a way of learning. By posting articles about my experiments I hope that others learn from me, but also that I can learn from others. Also, it serves a more mindful approach where, by writing it down, I am forced to structure my thoughts.
Building Route Guards for Ktor 3 servers
22-Nov 2024
Reading time: 7 minutes
The last few months I have been very busy with developing server applications using Ktor.
Ktor is a Kotlin-based framework for building asynchronous servers and clients. One of the strengths of Ktor is that
it is highly unopinionated…
Read moreBuilding a Gradle setup with convention plugins for quick Kotlin experiments
03-Feb 2023
Reading time: 9 minutes
I try to experiment a lot in Kotlin because I love the language so much. Since I like to use different features for different experiments, I normally just made a new project for every experiment and placed it under a root project. But since…
Read moreBuilding a Mandelbrot viewer in Compose Multiplatform
14-Oct 2022
Reading time: 10 minutes
I decided to experiment with Compose Multiplatform, the declarative UI framework, even though I hardly know Compose. Since I am not an Android developer it was a bit confusing to get started with, because there are multiple artifacts that…
Read moreCreating multiplatform Conflict Free Replicated Data Types in Kotlin Multiplatform
15-Jul 2022
Reading time: 26 minutes
Sometime ago I was tinkering with some application that required state to be synchronized across different 'nodes'.
In a previous job we already used something similar and I knew it was based on the idea of Conflict-Free Replicated
Data…
Read moreCreating an MVI architecture in Compose Multiplatform
30-May 2022
Reading time: 12 minutes
Recently I've gotten very interested in Jetpack Compose. I mistakenly thought it was just a way of declaratively building a UI and having it automatically updated in some clever way. Much like my own virtual DOM implementation but more…
Read moreMultithreaded web applications in Kotlin with Web Workers
25-Apr 2022
Reading time: 10 minutes
One of the things that always interested me, but so far I never have used, are Web Workers. To quote the MDN documentation here: "Web Workers are a simple means for web content to run scripts in background threads." This interests me…
Read moreBuilding a multiplatform virtual DOM in Kotlin
19-Apr 2022
Reading time: 12 minutes
Based on my previous blog post about a multiplatform DOM DSL I got some more inspiration. I used an NPM library called virtual-dom to implement a virtual DOM in the JS part. It got me thinking.... how easy would it be to do it myself? I…
Read moreBuilding a multiplatform DOM DSL in Kotlin
09-Apr 2022
Reading time: 11 minutes
For a project I needed to generate a lot of SVG's both in JS as well as in a backend. I assumed that this could easily be solved by using Kotlin Multiplatform, but I ran into some problems. Eventually I decided to build a minimal DSL to…
Read moreBuilding an ECS-architecture using Kotlin MPP
26-Mar 2021
Reading time: 13 minutes
In this post we are going to build an Entity-Component-System architecture from scratch using Kotlin Multiplatform Programming and create a simpel Kotlin/JS simulation with it. Entity-Component-System (ECS) is an architectural pattern that…
Read moreCompositional Patterns in Kotlin Part 2 - Component Model
07-Mar 2021
Reading time: 10 minutes
This is the second part of the post on compositional patterns in Kotlin and will focus on a dynamic, or runtime, composition. In Part 1 we focussed on static, or compile-time, composition. There are a few ways to obtain dynamic composition…
Read moreCompositional Patterns in Kotlin Part 1 - Delegation
27-Feb 2021
Reading time: 11 minutes
Roughly speaking there are two ways to obtain polymorphic behavior in OOP languages, 'classical' inheritance and composition. There are clear benefits in either approach depending on the domain one is trying to model. So this post is not a…
Read more