Matt
Softwareentwickler aus Dresden
Ich bin Matt, eigentlich Matthias. Zu Hause bin ich im .NET-Umfeld:
C#, WPF, ASP.NET Core und alles, was sich drumherum ansammelt – von Azure über
Build-Pipelines bis zu den Werkzeugen, die den Alltag erträglich machen.
Geek Overflow schreibe ich seit November 2017. Die Namensähnlichkeit zu Stack
Overflow ist kein Zufall: Vieles hier ist genau das, was ich selbst gesucht und nicht
gefunden habe. Entsprechend sind die meisten Beiträge Notizen an mein zukünftiges Ich –
Lösungen, die ich mir sonst beim dritten Mal wieder zusammensuchen müsste. Wenn sie
dabei noch jemand anderem helfen, umso besser.
Nicht alles dreht sich um Code. Zwischen den Tutorials landen hier auch mal ein Rezept,
ein Spiel oder eine Meinung zu dem, was gerade in der Technikwelt passiert. Seit 2024
läuft der Blog auf Jekyll, davor lag er jahrelang bei WordPress.
Posts
- Veraltete Beiträge kennzeichnen statt löschen
- Gelesen im Juli
- Den Commit finden, der es kaputtgemacht hat
- Grafikkarte im Container nutzen
- Geschaut: Halt and Catch Fire
- Geplante Aufgaben im Container
- Welches SQL erzeugt EF Core hier?
- Warum der Router lokale Namen blockiert
- Agent Harness ausprobiert
- Feste Puffer ohne unsafe
- zstd statt gzip
- Entwicklungsumgebung als Datei
- SQLite im WAL-Modus
- Wie viele Beiträge hier eigentlich stehen
- Halbzeit 2026
- Gelesen im Juni
- QR-Code auf der Kommandozeile
- Warum ich immer noch WPF nehme
- Werbefilter ohne Ausfallrisiko
- Welche appsettings-Datei gilt jetzt eigentlich?
- Nur einen Teil des Repositories auschecken
- Ein Agent, der vorher fragt
- Lokales Modell als Ausweichlösung
- Warum die WPF-Liste bei 5000 Einträgen hakt
- Wenn Docker die Platte volllaufen lässt
- FrozenDictionary für Nachschlagetabellen
- Build 2026, aus der Ferne betrachtet
- Aspire 13.4 mit eigenen Befehlen im Dashboard
- Eigene Typen mit eckigen Klammern erzeugen
- dotnet watch scheitert unter Linux
- In ein Backup hineinschauen
- Test-Token ohne Identitätsanbieter
- Gelesen im Mai
- Was ein halbes Jahr kurze Notizen gebracht hat
- Warum im Heimnetz plötzlich IPv6 dazwischenfunkt
- Was das Homelab wirklich verbraucht
- Teilweise Aktualisierung ohne PATCH-Chaos
- Wenn Daten leise kaputtgehen
- Wenn das Modell JSON liefern soll
- In fremden Code hineindebuggen
- SSH-Verbindungen benennen
- Welcher Render-Modus in Blazor?
- Dependency Properties, endlich verstanden
- Notizen an Commits hängen
- Cache mit zwei Ebenen
- NVMe drosselt bei Hitze
- Container ohne Dockerfile bauen
- Ein MCP-Server für das eigene Homelab
- Schnelle Absicherung für Dienste ohne Anmeldung
- Welches Modell liegt gerade im Speicher?
- Gelesen im April
- Warum ich Dinge selbst hoste, und warum nicht alles
- USB-Geräte an eine VM durchreichen
- Konfigurationsdateien versionieren ohne Symlink-Zoo
- Von unterwegs ins Heimnetz
- Logs an einer Stelle sammeln
- Ein Reverse Proxy fürs Heimnetz
- Zwei Modelle im Test gegeneinander
- Backups, die man auch zurückspielen kann
- Embeddings lokal erzeugen
- Welches lokale Modell läuft auf welcher Hardware?
- Den Homelab-Rechner bei Bedarf wecken
- depends_on reicht nicht
- Eigene Systemprompts als Ollama-Modell
- Lokale Sprachmodelle in .NET einbinden
- Vor jedem Update ein Snapshot
- Agent Framework 1.0, während ich weg war
- Mein Homelab, neun Jahre nach der QNAP
- Gelesen im März
- Was ich in .gitignore inzwischen immer eintrage
- Gespielt: Frostpunk
- CancellationToken nicht schlucken
- Wie alt ist die SSD wirklich?
- Markdown sicher darstellen
- Laufende .NET-Prozesse beobachten
- Nullable Reference Types in ein bestehendes Projekt einführen
- Primärkonstruktoren und ihre Fallstricke
- robocopy für alles, was Kopieren heißt
- Warum das JSON aus der Konsole anders aussieht
- Ein Jahr MCP: was daraus geworden ist
- Git-Aliase, die ich täglich benutze
- Deadlocks sichtbar machen
- Wiederkehrende Befehle als VS-Code-Task
- .NET Aspire, aber nur für lokal
- System.Threading.Channels statt eigener Queue
- Formatierung in der Pipeline prüfen
- Gelesen im Februar
- Abgebrochen: Mr. Robot nach Staffel 2
- Ein einfaches Backup-Skript für das NAS
- Wenn man doch mal Python braucht
- Antwortkomprimierung einschalten
- Kompilierte Abfragen in EF Core
- Wann ich keine Tests schreibe
- record struct für kleine Werte
- Welcher Prozess hält die Datei fest?
- HttpClient nicht selbst erzeugen
- Wie ich WPF-Anwendungen teste
- Wo das PowerShell-Profil wirklich liegt
- Mehrere Implementierungen eines Interfaces
- Korrekturen automatisch dem richtigen Commit zuordnen
- Microsoft Agent Framework, jetzt als Release Candidate
- dotnet watch kann mehr als starten
- Der neue Lock-Typ in .NET 9
- Kurz gespielt: Manor Lords
- Warum hier keine Kommentare mehr sind
- Variablen in .http-Dateien
- Zwei Windows-Einstellungen, die ich jedes Mal vergesse
- Ein altes WPF-Projekt auf .NET 10 heben
- ExecuteUpdate statt Laden und Speichern
- Wer belegt Port 5000?
- Native AOT für kleine Kommandozeilenwerkzeuge
- Alle globalen dotnet-Tools aktualisieren
- Jahresrückblick 2025
- Logging ohne Boxing
- Vanillekipferl, dritter Anlauf
- Zwei Branches gleichzeitig mit git worktree
- Gespielt: Shadow Tactics und Desperados III
- required statt Konstruktor-Orgien
- Rechner neu aufsetzen mit winget
- Blazor oder WPF für interne Werkzeuge?
- SQLite im Arbeitsspeicher für EF-Core-Tests
- Zugangsdaten aus dem Repository halten
- Was ein Jahr mit KI im Arbeitsalltag geändert hat
- Collection Expressions statt new List
- Nachgeholt: The Sinner, Staffel 2 bis 4
- tar ist unter Windows längst dabei
- Warum der Blog nachts kurz weg war
- Wann sich ein eigener GitHub-Runner lohnt
- System.Text.Json ohne Reflection
- Die Datei, die Formatierungsdiskussionen beendet
- git switch und git restore
- Wo PowerShell den Verlauf ablegt
- NuGet Audit auch für transitive Pakete
- .NET 10 ist da
- WSL frisst den ganzen Arbeitsspeicher
- Eine einzelne .cs-Datei ausführen
- Gespielt: Impostor Factory
- Der Timeout, der nicht greift
- git maintenance gegen langsame Repositories
- C# 14: das field-Schlüsselwort
- Anfällige Pakete finden ohne Zusatzwerkzeug
- Woher weiß ich, ob die Antwort besser geworden ist?
- Ein eigener NuGet-Feed im Heimnetz
- MVVM ohne Boilerplate: das CommunityToolkit in WPF
- Eigene Dokumente durchsuchbar machen mit den Vector Data Extensions
- TimeProvider: Zeit endlich testbar
- Tool Calling mit Microsoft.Extensions.AI
- Ein Interface für alle LLMs: IChatClient
- Minimal APIs, zwei Jahre später
- Paketversionen zentral verwalten mit Directory.Packages.props
- Einen MCP-Server in C# schreiben
- Warum ein gutes Onboarding essenziell ist
- API-Fehlerbehandlung in ASP.NET Core
- Git Commit-Datum auf Author-Datum setzen (PowerShell)
- SignalR 101 - Eine Einführung für .NET 8
- Globale Hotkeys in WPF mit .NET 8
- Behaviors in WPF – Interaktive Funktionen ohne Code
- Discriminated Unions in C#
- Syntax-Highlighting mit Jekyll
- re:upload mit Jekyll
- API erstellen mit OData 8.0
- Regex und Logging mit Source Generators in .NET 6
- Amtsgericht lädt Daten auf RAM-Disk und schaltet Computer aus
- Wie erstellt man ein NuGet-Package
- Netzwerklaufwerke für Programme
- Projektweite Global Usings
- Endpoints Explorer in VS 2022
- WebAPI testen mit .http Files
- Neues Wikipedia Design
- Minimal Hosting API
- ASP.Net Statuspage mit IHealthCheck
- PDF erstellen mit Syncfusion
- Erste MAUI App
- .NET 6 - Validierung der .NET-Konfiguration
- .NET 6 - Hosts für jeden Zweck
- .NET 6 Entity Framework - Präzision einstellen
- Gesehen: The Menu
- Sprachen lernen mit ChatGPT
- Dev-Tunnels für ASP.NET
- Deobfuskieren mit ChatGPT
- ChatGPT - ein neuer Hype?
- Erweiterte Mustererkennung in C#
- Einführung in Blazor WebAssembly
- Verwendung von IMemoryCache in .NET
- Rust als Systemsprache: Ein kurzer Überblick
- Dependency Injection in .NET 6
- Blazor Hybrid-Apps: Web und Desktop vereint
- Leistungsverbesserungen in .NET 6
- C# 9.0: Neue Features im Überblick
- Neue Features in .NET 5
- Neue Features in Entity Framework Core 5
- Durable Functions in Azure: Orchestrierung leicht gemacht
- Einführung in Azure DevOps Build- und Release-Pipelines
- C# 9.0: Einführung in Records
- Neues in Visual Studio 2019: Live Share und IntelliCode
- gRPC in .NET Core: Moderne Kommunikation für Microservices
- Neue Features in C# 8.0
- Angular mit ASP.NET Core: Komponenten hinzufügen
- Fehler in ASP.NET Core Web Anwendung mit Angular und Visual Studio
- Nintendo Labo
- Azure Red Shirt Dev Tour
- Das NetzDG und die Folgen
- Die Zukunft der Straßen
- Die Zukunft von Microsofts Mobilsparte
- WhatsApp ist doch das kleinste Problem
- Meinung: Phone, Mobile oder nicht - wird es wieder ein mobiles Windows geben?
- Gespielt: Finding Paradise
- Windows 10 Wiedergabegerät schnell wechseln
- Windows 10 on ARM auf dem Snapdragon 835
- Smileys mit oder ohne Nasen
- Firefox 57 anpassen
- Windows erhält neues Sets-Feature
- Städte buhlen um Amazon
- Drag&Drop mit WPF
- Kinderprojekte in Peru unterstützen
- PortableUI für MonoGame
- Luther Burger vs. Luther Burger
- Chili con Carne
- Geschaut: 'The Sinner' bei Netflix
- Mein günstiger Git Server
- Ein Anfang ist gemacht