~/goldbarth $ whoami

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.

sketching out the next one — something around auth, caching, and modular architecture · reading project hail mary — andy weir

Projects

all projects →

Ingestor

Live

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.

.NET 10OpenTelemetryPostgresEF Core 10DockerASP.NET Core Minimal API

ServiceDeskLite

Archived

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.

.NET 10PostgresEF Core 10DockerASP.NET Core Minimal API

Writing

all writing →

Working with it

Fear is a bad compass. How I'm approaching AI as a developer without reacting to the noise.

Architecture Enforced by the Compiler

Why ServiceDeskLite enforces Clean Architecture dependency rules through project references rather than naming conventions — and what that costs.

Minimal API Without MediatR

Why ServiceDeskLite injects handlers directly into endpoints instead of dispatching through a mediator — and when that decision should be revisited.

RFC 9457 as the Unified Error Contract

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.

Strongly-Typed Domain Identifiers

Why ServiceDeskLite wraps Guid in a TicketId record struct — what the compiler catches, what the mapping overhead costs, and how UUIDv7 makes it better.