~/goldbarth $ whoami

Felix Wahl — .NET Backend Engineer mit Fokus auf distributed systems — Reliability, Consistency, und das Zeug, über das niemand redet, bis es kaputt ist.

Notizen aus der Arbeit: Überlegungen hinter technischen Entscheidungen, halbgare Gedanken und was ich gerade baue. Unfertig, hauptsächlich für mein zukünftiges Ich — öffentlich, falls es jemandem hilft.

servicedesklite: semantische ticket-suche (rag) — voyage + pgvector · metric gate v2 in arbeit · lese project hail mary — andy weir

Projekte

alle Projekte →

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

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

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 prüft per semantischer Suche (Voyage-Embeddings + pgvector) auf Duplikate, bevor es Tickets 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

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.