Distributed systems
Event-driven architecture, domain models, and the boundaries that keep complex software understandable.
I build systems that make complexity feel a little more human.
Currently at Wolters Kluwer. Thinking in Go and .NET, connecting the dots between architecture, code, and the people who build it.
Keep the business rules explicit. Let the boundaries do the work.
I like the space where a complicated problem becomes an understandable system.
Event-driven architecture, domain models, and the boundaries that keep complex software understandable.
Build pipelines, useful abstractions, and tools that let engineers spend more time on the interesting problems.
Turning a difficult problem into a clear direction. Sharing context, mentoring engineers, and making deliberate tradeoffs.
Based in The Hague. Building software since 2014. Still asking “why?” before deciding “how.”
A little more about meThe tools I reach for when the details matter.
Patterns are useful when they make the tradeoffs clearer.
Repeatable environments. Understandable delivery.
State, events, and the systems between them.
Different domains. Bigger questions.
The same drive to make things work better.
Technical direction across SaaS platform architecture, tenant lifecycle management, release engineering, and developer experience. Modernising delivery workflows and mentoring engineers.
Improved build performance, moved .NET services towards Linux deployment, and applied domain-driven design and CQRS to application architecture.
Built data applications and automated testing workflows, with real-time event processing, Angular mentoring, and performance improvements.
Developed backend services and messaging infrastructure, with a focus on notification processing and automated delivery.
Built workflow, integration, and multi-tenant application foundations for enterprise process management.
A SELECTED TIMELINE · EXPAND A ROLE TO EXPLORE
View the full journeyAn event-sourcing toolkit for Go. Events, aggregates, and projections, with a focus on making complex domains easier to work with.
Go bindings for llama.cpp, connecting Go applications with local model inference. A maintained fork with its upstream roots kept visible.
An unofficial Go client for the Invoice Ninja API. Typed interfaces and practical tools for billing integrations.
A practical guide to running local language models inside a Go application.
A look at event sourcing, the history behind application data, and the choices Go engineers face beyond CRUD.
An introduction to event sourcing and CQRS in Go application design.
Practical notes on Go, architecture, and the spaces between code and communication.
Published on MediumA little detour for fellow developers. Explore the site, switch the accent, or just say whoami.
Or press Ctrl + K from anywhere.
A small interface to the person behind the code.
Type help to look around. No shell. Just curiosity.
A question about a project, a thought on systems, or something worth exchanging notes about — my inbox is open.