Urs Enzler

@UrsEnzler
419 Followers
109 Following
49 Posts

Software engineering, architecture and design stuff, mainly on .Net, F#, and Azure.

Co-Host of .Net user group Central-Switzerland.

#fsharp
#dotnet
#SoftwareArchitecture

Blogwww.planetgeek.ch
LinkedInwww.linkedin.com/in/ursenzler/

Kopf => Tisch.

Der als europäische Alternative zu Diensten wie Paypal vermarktete Bezahldienst Wero nutzt Dienste des US-Unternehmens Amazon Web Services (AWS). Wie Netzpolitik.org berichtet, räumte der Anbieter European Payment Initiative (EPI) nach einer Anfrage ein, dass man bei Wero auf eine Kombination aus europäischen und internationalen Technologieanbietern zurückgreife. Dazu gehören auch Infrastruktur- und Softwareservices von AWS.
[…]
Im Falle von Wero könnten US-Behörden durch die Verbindung der App zu AWS also durchaus Zugriff auf Transaktionsdaten europäischer Kunden erhalten, womit das Versprechen der digitalen Unabhängigkeit nicht eingelöst wird.

https://www.golem.de/news/digitale-souveraenitaet-wero-nutzt-zum-teil-amazon-server-2604-207882.html

Digitale Souveränität: Wero nutzt zum Teil Amazon-Server - Golem.de

Durch die Verbindungen zu Diensten von AWS ist der europäische Bezahldienst nicht vor dem Zugriff durch US-Behörden sicher.

Golem.de
The second post in my event sourcing series is about how to enable better query capabilities to find the needed event streams while still holding back on read models. Of course, with the reasoning why this is a good idea in the right context.
https://www.planetgeek.ch/2026/04/21/event-sourcing-a-simple-trick-to-get-around-read-models/
Event Sourcing: A simple trick to get around read models

This is the second post in my series on event sourcing. Last time, we saw a simple implementation based only on projections. While simple, it can only be queried by the event stream ID. In this post, we look at an approach that allows for more lookup criteria while still avoiding a read model. Lookup...

planetgeek.ch

The start of my new blog post series about how we do Event Sourcing. The first post starts with a simple projection-only approach: https://www.planetgeek.ch/2026/04/14/event-sourcing-simple-is-often-enough/
You'll see why we don't use event numbers for ordering, but timestamps, and why this is our default approach.

#EventSourcing #dotnet #fsharp

Lately, I see a lot of posts saying we need a robust suite of automated tests to ensure AI agents produce quality results.

Keep in mind that one cannot test quality into software. Automated tests are a necessity, but they are not sufficient as a sole approach.

I wouldn't ship a feature without first running an exploratory testing session. So many things can go wrong that we can't specify explicitly; only exploratory testing finds these.

And I want a dry run on difficult data migrations, too.

We started using event sourcing over ten years ago. One of the hardest lessons was that there is a kind of events that is not obvious at first but have a big impact on your system design. I call this kind secondary domain events.
https://www.planetgeek.ch/2026/04/01/the-problem-with-secondary-domain-events-in-event-sourcing/

#EventSourcing

The Problem with Secondary Domain Events in Event Sourcing

We started using event sourcing over ten years ago. One of the hardest lessons was that there is a kind of events that is not obvious at first but have a big impact on your system design. I call this kind secondary domain events. In this post, I'll explain what secondary domain events are, and...

planetgeek.ch

I would favour more efficient solutions, but none are in sight to me. Maybe once, when we have to pay for the real costs of training and running these agent farms, a correction will happen.

The picture Gen-AI created is, however, quite funny. 😄

2/2

I'm not a fan of "let's throw more resources at the problem" solutions. What currently happens in the AI-assisted software development community is, however, exactly this:
From single LLM via single agent (repeat until succeeded) to multi-agent setups (giving themselves feedback to iterate on) - burning tokens like there is no tomorrow (or no token limit, if you care more about your money than the planet 😅 ).

1/2

Die englische Sprache kennt ja “Verschlimmbessern” nicht, weshalb sie stattdessen “vibe coding” sagt.

The 5th and final part of my post series about "to test, or not to test" takes a look at why the shown concepts help with LLMs and concludes the series.
https://www.planetgeek.ch/2026/03/24/to-test-or-not-to-test-part-5-final-words/

Do you like these longer topics, or do you prefer short single posts?

To test, or not to Test? Part 5 – Final words

I wrote code without tests that ran in production without defects, and I wrote buggy code with TDD (Test Driven Development). Time to look back at 35 years of coding and when tests help, and when there is something better. And especially, what these better things are. In the final part, we examine how LLMs...

planetgeek.ch

Part 4 of my blog post series about "to test, or not to test" is about making manual testing easy, and why it matters: https://www.planetgeek.ch/2026/03/19/to-test-or-not-to-test-part-4-make-it-easy-to-test-locally/.

Can you run your system locally and/ or test things quickly, or do you have to wait for a test environment?

To test, or not to Test? Part 4 – Make it easy to test locally

I wrote code without tests that ran in production without defects, and I wrote buggy code with TDD (Test Driven Development). Time to look back at 35 years of coding and when tests help, and when there is something better. And especially, what these better things are. In this part, we look at how to...

planetgeek.ch