About Me
I'm Markus, a backend developer and system designer based in Sweden. What I enjoy most is taking messy, real-world complexity and shaping it into software that remains understandable as it grows.
My work is primarily in .NET and C#, building APIs and event-driven systems where reliability and maintainability are treated as first-class concerns. I aim for simplicity to be intentional, and for complexity to be something that is earned rather than introduced by accident.
I'm drawn to Domain-Driven Design, not as a set of patterns, but as a way of thinking. At its core, it is about building a shared language, a way for developers and domain experts to describe the same reality with the same words. That alignment creates clarity. It makes boundaries explicit, surfaces misunderstandings early, and helps ensure that the model reflects what actually matters, rather than what is convenient to implement. When the domain is misunderstood, complexity is often reduced to CRUD-style solutions, which might be easy to build but are rarely a good fit for the problem.
That perspective naturally leads to event sourcing. Instead of modeling systems as a collection of current states, I find it more useful to describe them through facts, things that have happened in the domain. Those facts form a narrative of the system. Instead of inferring behavior from the current state, you can follow what actually happened. Processes and flows are no longer hidden inside code paths, they are recorded as part of the model itself. It becomes easier to understand how the system reached its current state, and to evolve it without losing that understanding. In a world where AI increasingly interacts with our systems, having a clear, traceable history of decisions and events becomes even more valuable.
Over time, I've become increasingly interested in how systems evolve. The choices you make early on, how you model behavior, how you define boundaries, how you represent change, tend to shape everything that follows. I try to approach architecture with that in mind, focusing less on structure and more on intent.
How I Write
I usually start with a rough idea of what I want to communicate. It can come from something I've read, something I've experienced at work, or just a thought that stays with me for a while.
From there, I begin to shape a direction, a thread that the text can follow. I try to get a sense of the beginning and the end, not in a finished way, but enough to understand what I'm trying to say.
An LLM becomes part of that process. It helps me connect the dots, reflect on how I phrase things, and notice where something could be explained more clearly or expressed with better flow. A first draft is mostly about getting the shape of the argument down, not about sounding polished.
That works well for both blog posts and LinkedIn posts, even though the formats are different. A blog post can go deeper and follow the reasoning all the way through, while a LinkedIn post needs to be shorter, sharper, and easier to scan. The LLM helps me adapt the same underlying thought to both without making the writing feel generic.
Even though I'm fluent in English, I'm not a native speaker. In that sense, the LLM helps me say what I already mean, but in a way that feels more natural and easier to read.
Purpose
This blog is my notebook, a place where I can formulate ideas and think things through.
I've found that writing is one of the few ways to really understand what I think. Keeping ideas in my head tends to make them feel clearer than they actually are. Putting them into words forces me to confront the gaps, the assumptions, and the parts that don't quite hold together yet.
The intention is to let this become a public sketchpad, somewhere I can explore unfinished thoughts openly and keep refining them over time. Not everything here will be complete, and that is part of the point.
Over time, I want it to grow into something like a personal Wikipedia, a place where my ideas, notes, and references can live together and become easier to navigate as the collection grows.