~/goldbarth $ whoami

Felix Wahl - .NET Backend Engineer. Verteilte Systeme, Reliability, Consistency: solide Grundlagen, auf denen sich bauen lässt.

Gerade wächst daraus etwas Neues. Ich arbeite mich in LLMs und AI Engineering ein - nicht weg vom Backend, sondern darauf aufbauend. Hier sammle ich, was ich dabei lerne: Überlegungen hinter Entscheidungen, offene Fragen und die Projekte, an denen ich das ausprobiere. Unfertig und ehrlich, vor allem für mich selbst - und für jeden, dem es weiterhilft.

dometrain-kurs »deep dive: microsoft.extensions.ai in .net« · servicedesklite v1.2.0: assistant-werkzeugkasten + agenten-roster, semantische ticket-suche (rag) · metric gate auf hold · project hail mary durchgelesen - andy weirs berührender schluss

Projekte

alle Projekte →

ServiceDeskLite

Live

Eine .NET 10 Backend-Referenz, gebaut um striktes Layering: compiler-enforced Boundaries, zwei austauschbare Persistence-Adapter und result-basiertes Error Handling - jede architektonische Entscheidung dokumentiert und begründet. Der AI-Intake-Assistent vereint Tool Calling, SSE-Streaming und RAG in einem Agentic Loop: ein Claude-Modell sucht, aktualisiert, schaltet Status und weist Tickets an Agenten aus einem Roster zu - und prüft per semantischer Suche (Voyage-Embeddings + pgvector) auf Duplikate, bevor es neue anlegt - als Edge-Adapter ausschließlich durch die bestehenden Command-Handler, die Domain kennt kein LLM.

.NET 10PostgrespgvectorEF Core 10DockerASP.NET Core Minimal APIAnthropic APIVoyage AI

MetricGate

Live

Tenant-aware Quota- und Rate-Limiting-Backend für SaaS-APIs. Drei unabhängig deploybare .NET 10 Services - Plans, Enforcement, Usage - mit Redis, Redpanda (Kafka API) und Keycloak OIDC. V1 (Backend) released. V2 (Angular Frontend) in Planung.

.NET 10RedisRedpandaKeycloakPostgreSQLEF Core 10OpenTelemetryDocker

Ingestor

Live

Eine .NET 10 Import-Pipeline, gebaut um Reliability: Outbox Pattern, strikte Domain State Machine, idempotente Verarbeitung und eine config-switchable Dispatch-Strategie - jede Design-Entscheidung auf Korrektheit und Nachvollziehbarkeit ausgerichtet.

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

port-tidewatch

Live

Ingestion-Service für Pegelstand-Telemetrie von Häfen mit threshold-basiertem Sturmflut-Alerting - orientiert an Hamburgs WADI-Warnsystem (gestuft: warning ab 4,50 m, severe ab 5,50 m über NN). Eine Reading-Quelle - wahlweise Simulator (Composite-Level-Modell) oder der echte WSV/PEGELONLINE-Elbe-Feed, per Switch beim Start gewählt - liefert Readings; ein Ingestion-Service konsumiert über RabbitMQ mit Dead-Letter-Handling und gestufter, trend-aware Threshold-Evaluation; ein read-only Angular Dashboard zeigt Pegel, Alarmstufen und Trends als banded Area-Charts. Seit v1.2.0 mit echten Hamburger Elbe-Pegeln (St. Pauli, Bunthaus, Over, Zollenspieker; cm → NHN-Mapping, conditional polling); v1.3.0 (Juni 2026) macht die Frische der Werte ehrlich lesbar - Messwert-Alter statt Poll-Alter, Stale erst wenn der Daten-Zufluss aussetzt. Dazu Alert-Event-Publishing über Fanout-Exchange, OpenTelemetry-Tracing und zwei verifizierte Deployment-Pfade (Kubernetes + Argo CD, Azure Container Apps).

.NET 10ASP.NET CoreRabbitMQOpenTelemetryAngularDockerKubernetesArgo CDTestcontainers

Artikel

alle Artikel →

Semantische Ticket-Suche - RAG als Werkzeug des Modells

Der Intake-Assistent legt Tickets an, ohne die bestehenden zu kennen - fünfmal derselbe Druckerausfall, fünf Tickets. Die Lösung ist Retrieval. Die interessanten Fragen sind, wo die Vektoren wohnen und wer entscheidet, wann gesucht wird.

AI-Assistant als Edge-Adapter

Ein Claude-Modell legt Tickets an - per Tool Calling, live gestreamt. Die Frage dahinter ist eine Platzierungsfrage: Wo wohnt ein LLM in einer Clean Architecture?

MetricGate V1

Was beim Bauen eines Quota- und Rate-Limiting-Backends hängen geblieben ist - und was nicht.

KI-gestützte Entwicklung: gemessene Aufwandsrechnung

MetricGate wurde solo, nebenbei und mit Claude Code als primärer Implementierungshilfe gebaut. Warum ich Kalenderschätzungen aus den Planungsdocs gestrichen habe, wie ich den Aufwand über Commit-Zeitstempel messe - und was die Geschwindigkeit kostet.