Working with it
Fear is a bad compass. How I'm approaching AI as a developer without reacting to the noise.
Felix Wahl — .NET Backend Engineer focused on distributed systems — reliability, consistency, and the stuff nobody talks about until it breaks.
Notes from the work: reasoning behind technical decisions, half-baked thoughts, and what I'm currently building. Unpolished, mostly for my future self — public in case it helps someone.
A .NET 10 import pipeline built around reliability: outbox pattern, strict domain state machine, idempotent processing, and a config-switchable dispatch strategy — every design decision focused on correctness and auditability.
A .NET 10 backend reference built around strict layering: compiler-enforced boundaries, two interchangeable persistence adapters, and result-based error handling — every architectural decision documented and justified.
Fear is a bad compass. How I'm approaching AI as a developer without reacting to the noise.
Why ServiceDeskLite enforces Clean Architecture dependency rules through project references rather than naming conventions — and what that costs.
Why ServiceDeskLite injects handlers directly into endpoints instead of dispatching through a mediator — and when that decision should be revisited.
How ServiceDeskLite uses an explicit Result type to make handler outcomes visible — and where DomainExceptions still belong.
Why ServiceDeskLite uses ProblemDetails with custom extension fields as its single error format — and how the contract is shared without coupling the Web to the API.
Why ServiceDeskLite wraps Guid in a TicketId record struct — what the compiler catches, what the mapping overhead costs, and how UUIDv7 makes it better.