Entwickler-Blog · Notizen aus der Praxis

Geek Overflow

Notizen aus .NET, WPF, Azure und dem echten Entwickleralltag.

Aktuelle Beiträge
Ein sichtbar genutzter Entwicklerarbeitsplatz mit Tastatur, Notizbuch und Monitor

Aus dem Archiv

Notizen, die im Alltag weiterhelfen.

222 Beiträge

Ein eigener NuGet-Feed im Heimnetz

Vor Jahren habe ich hier über meinen günstigen Git-Server auf einer alten QNAP geschrieben, und später darüber, wie man ein NuGet-Package erstellt. Beides trifft sich an einer Stelle: Wohin mit Paketen, die man in mehreren eigenen Projekten braucht, aber nicht auf nuget.org veröffentlichen will?

MVVM ohne Boilerplate: das CommunityToolkit in WPF

Ein ViewModel in WPF besteht traditionell zu zwei Dritteln aus Tipparbeit. Für jede Eigenschaft ein Feld, ein Property mit OnPropertyChanged, für jede Aktion eine ICommand-Implementierung. Bei fünf Eigenschaften und drei Befehlen ist die Datei zweihundert Zeilen lang, und keine davon sagt etwas über die Anwendung aus.

Eigene Dokumente durchsuchbar machen mit den Vector Data Extensions

Ein Sprachmodell kennt die eigene Dokumentation nicht. Der übliche Ausweg heißt RAG: Man sucht vorab die passenden Textstellen heraus und legt sie dem Modell mit in den Prompt. Der Teil, der dabei Arbeit macht, ist die Suche, denn sie soll nach Bedeutung finden und nicht nach Zeichenketten.

TimeProvider: Zeit endlich testbar

DateTime.Now ist der Klassiker unter den untestbaren Abhängigkeiten. Eine Methode, die prüft, ob ein Token abgelaufen ist, lässt sich nicht sinnvoll testen, wenn die Zeit direkt aus der statischen Klasse kommt. Die üblichen Auswege waren ein selbstgebautes IDateTimeProvider-Interface oder ein Test, der eine halbe Minute wartet.

Tool Calling mit Microsoft.Extensions.AI

Ein Sprachmodell weiß nichts über die eigene Datenbank und nichts über die aktuelle Uhrzeit. Tool Calling schließt diese Lücke: Man reicht dem Modell eine Liste aufrufbarer Funktionen mit, es entscheidet, ob und welche es braucht, und bekommt das Ergebnis zurück in den Kontext.

Ein Interface für alle LLMs: IChatClient

Wer in den letzten zwei Jahren etwas mit Sprachmodellen gebaut hat, kennt das Problem: Jeder Anbieter hat sein eigenes SDK, seine eigenen Typen für Nachrichten und seine eigene Art, Antworten zu streamen. Ein Wechsel von OpenAI zu Azure OpenAI oder zu einem lokalen Modell bedeutet, die halbe Anbindung neu zu schreiben.

Minimal APIs, zwei Jahre später

Als ich seinerzeit über die Minimal Hosting API geschrieben habe, war ich sofort dabei. Eine Datei, ein paar Zeilen, fertig ist der Endpunkt. Kein Controller, keine Attribute, kein Ordner voller Klassen, die jeweils drei Methoden enthalten. Nach zwei Jahren mit mehreren Projekten fällt meine Bilanz gemischter aus.

Paketversionen zentral verwalten mit Directory.Packages.props

In einer Projektmappe mit fünfzehn Projekten steht dieselbe Paketreferenz an fünfzehn Stellen, und nach ein paar Monaten in drei verschiedenen Versionen. Meistens fällt das erst auf, wenn zur Laufzeit eine Methode fehlt, die es in der einen Version gibt und in der anderen nicht.

Einen MCP-Server in C# schreiben

Wenn man einem Sprachmodell Zugriff auf eigene Daten geben will, endet das bisher meistens in Bastelei: irgendein Skript, das eine API abfragt, ein selbstgebauter Prompt drumherum, und für jedes Werkzeug wieder von vorn. Das Model Context Protocol soll dafür einen gemeinsamen Nenner schaffen. Ein Server stellt Werkzeuge bereit, ein beliebiger Client kann sie aufrufen.

Warum ein gutes Onboarding essenziell ist

Onboarding ist der erste tiefere Kontakt mit einem Unternehmen, einer Organisation oder einem Verein. Es entscheidet darüber, ob neue Mitwirkende sich schnell einfinden oder ob sie frustriert werden und wertvolle Zeit verschwenden. Besonders für Freelancer kann eine ineffiziente Einarbeitung schnell zur Kostenfalle werden. Doch auch Angestellte oder Vereinsmitglieder sind betroffen: Wenn essentielle Informationen fehlen oder Prozesse unklar sind, entstehen unnötige Verzögerungen, die alle Beteiligten belasten.

Notizbuch und Tastatur auf einem genutzten Entwicklerarbeitsplatz
Real work / no lab setup

Wer hier schreibt

Matt. Entwickler, Notizsammler, Problemlöser.

Ich schreibe über .NET, C#, WPF, Azure, Werkzeuge – und immer öfter über KI. Nicht aus dem Lehrbuch, sondern aus dem echten Entwickleralltag.

Mehr über mich

Nach Thema einsteigen

Woran ich gerade denke und arbeite.