Hi,
I am Erik
Software developer with nearly two decades of experience. Writing code for a living, writing about code for learning.
Community
I organize dotnet.amsterdam, a user group for .NET developers in the Amsterdam area. Follow us on LinkedIn or join us on Meetup.
Recent writing
-
Oct 12 2026
Labcoat: the web UI I was missing for my .NET tests in Aspire
I am a big fan of Aspire. It's the best way I know to give a project a proper onboarding experience, and it adds an extra layer of joy to building applications: everything that matters, in one view. On the frontend, that view includes my tests. Vitest UI gives me a web interface in which I bring my tests from red to green. On the backend I get dotnet test in a terminal, and while I feel at home there, watching my tests turn green is the one thing missing from my Aspire setup. So I built it: Labcoat, a web UI for tests on Microsoft.Testing.Platform that runs on its own or as a resource in your AppHost.
-
Sep 27 2026
Do Angular apps need WebMCP when agents can already use the UI?
I gave six models the same todo tasks on two builds of an Angular app, one with WebMCP tools and one without: Claude Haiku, Sonnet and Opus in Claude Code, and GPT-6 Luna, GPT-5.6 Terra and GPT-6 Sol in Codex CLI. Every run succeeded either way. With the tools, agents needed fewer browser commands in all twelve pairs and finished faster in ten.
-
Sep 21 2026
The two questions code coverage can't answer: property-based and mutation testing for .NET and Angular
Code coverage tells you a line ran. It doesn't tell you whether you tried the inputs that matter, or whether anything would notice if the line were wrong. Those are two separate gaps, and there's an old technique for each: property-based testing generates the inputs you didn't think of, mutation testing breaks your code to see if a test complains. Both are decades older than my interest in them, and what changed isn't the techniques. It's that generating code got cheap while checking it didn't. Here's how they work on .NET and Angular, what they cost, and why each one is the check on the other.