Articles

Field notes on software that has to last.

Browse by category

Navigate the hierarchy or flatten it into a single index.

Browse by year
All articles

All field notes.

88articles

RAG von Grund auf – Teil 1: RAG verstehen

Retrieval-Augmented Generation, kurz RAG, gehört inzwischen zu den zentralen Konzepten beim Einsatz von Large Language Models mit eigenem Wissen. Die Grundidee klingt zunächst erstaunlich einfach: Bevor ein Sprachmodell eine Frage beantwortet, werden…

Erst die Zustandsmaschine, dann der Spinner

Bei Terminalanwendungen beginnt die Arbeit oft an der falschen Stelle. Man hat eine Idee für ein Tool, baut die eigentliche Funktion und möchte dann schnell etwas Feedback im Terminal anzeigen. Also kommt…

Eine TUI ist mehr als farbiges Write-Host

Terminalanwendungen erleben seit einigen Jahren eine kleine Renaissance. Viele moderne Entwicklerwerkzeuge laufen wieder dort, wo Softwareentwicklung ohnehin häufig stattfindet: im Terminal. Paketmanager, Git-Werkzeuge, Cloud-CLIs und zunehmend auch KI-Assistenten zeigen, dass eine textbasierte…

Wann ein Skript aufhört, ein Skript zu sein

Ein Skript beginnt oft harmlos. Es soll eine klar umrissene Aufgabe erledigen. Eine API aufrufen. Dateien verschieben. Daten bereinigen. Benutzer anlegen. E-Mails verarbeiten. Einen wiederkehrenden manuellen Ablauf automatisieren. Die erste Version ist…

Informatik lernen statt nur Technologien lernen

In der Softwareentwicklung kann man sehr weit kommen, ohne sich systematisch mit Informatik beschäftigt zu haben. Frameworks, Programmiersprachen, Cloud-Plattformen und Libraries lassen sich lernen, indem man sie benutzt. Viele Probleme können mit…

Was Coding Agents wirklich kosten

Tokens, Kontext, Caching und agentische Loops als Referenzwerk „Was kostet es, wenn ich acht Stunden am Tag mit einem Coding Agent arbeite?“ Die Frage klingt nach einer einfachen Rechnung. Acht Stunden Nutzung,…

Ein Interface, das TableClient zurückgibt, ist Table

Das Interface existiert. Es ist injiziert. Der Reviewer sieht ein I und geht weiter. Das kompiliert. Es lässt sich mocken. In der Architekturfolie steht Persistence hinter Interface. Der Caller schreibt trotzdem: Er…

Der God Service ist kein Service

Die Function ist dünn. Der Reviewer nickt. Dann öffnet man die Klasse, an die sie delegiert. Das sieht nach Schicht aus. Der Einstieg kennt weder Tabelle noch Graph. Genau das habe ich…

Your Machine Will Outlive Your UI Framework

Was 24 Jahre WinForms über Technologieentscheidungen für langlebige Software lehren Vor einiger Zeit habe ich darüber geschrieben, warum ich C# WinForms noch lange nicht für tot halte. Damals ging es vor allem…

Zuerst messen, dann die Library tauschen

Wenn der Export langsam ist, liegt der Verdacht auf der Datei. Oft liegt die Zeit davor — und der Library-Tausch ändert die Kurve nicht. Es gibt einen reflexhaften Satz, sobald ein Excel-Export…

Die Signatur ist die Komplexität

Ob ein Join linear oder quadratisch wird, steht oft nicht in der Schleife. Es steht im Typ der Parameter. Man kann Entwickler bitten, keine lineare Suche in einer Abbildung zu schreiben. Das…

Der halbe Fix ist die teuerste Stelle

Ein Pfad ist schnell. Der andere sieht aus wie derselbe Code. Genau dort bleibt die alte Komplexität liegen. Es gibt eine bestimmte Art von Optimierung, die sich im Review besonders gut anfühlt.…

LINQ sieht linear aus. Die Laufzeit tut es nicht.

Warum ein Export minutenlang braucht, obwohl die Datei unschuldig ist. Viele langsame Exporte werden zuerst an der falschen Stelle gesucht. Die Datei ist gross. Die Library ist bekannt dafür, mit vielen Zeilen…

Innovation beginnt nicht mit der Lösung

Wer sich täglich mit Software, Architektur und neuen Technologien beschäftigt, beginnt bei Problemen schnell mit einer Lösung. Ein langsamer Prozess? Automatisieren.Informationen schlecht auffindbar? RAG.Zu viel manuelle Arbeit? KI-Agent.Zu viele Fehler? Mehr Tests…

Ein Pitch ist keine Präsentation

Ich habe Pitches lange primär als Präsentationsformat verstanden: Man hat eine Idee, arbeitet sie aus und versucht anschliessend, sie möglichst überzeugend zu erklären. Je mehr ich mich mit Innovationsmanagement und verschiedenen realen…

Qwen Code lokal in Betrieb nehmen

Von einem leeren Rechner bis zur ersten gelesenen Datei — ohne Vorwissen Du brauchst kein Modelltraining, kein API-Abo und keine fertige Config von jemand anderem. Du brauchst zwei Programme, die sich auf…

Lokale KI von Grund auf

Alles, was man braucht, um Tokens, VRAM, Agenten und Qwen Code zu verstehen — ohne Vorwissen Die meisten Texte über lokale Sprachmodelle beginnen in der Mitte. Sie sagen «zieh Qwen3.5», «setz num_ctx…

A Vocabulary for Local Coding Agents

The Terms You Need Before “Just Run It Locally” Makes Sense Most introductions to local AI start with a download command. That sounds like enough. You install a runtime. You pull a…

Decoupling in WPF Using MessageBox as Example

A Deep-Dive with Real Chrona Code Examples Many WPF applications begin with direct MessageBox.Show(...) calls. At first, this feels completely reasonable. A save confirmation here, an error dialog there, a warning before…

WPF + MVVM + Service Layer in a Real Business App

A Production-Grade Architecture Walkthrough from Chrona Most WPF + MVVM tutorials online demonstrate only the happy path. One ViewModel. One command. One view switch. That is useful for learning the basics, but…

SQLite Repository Design in Desktop Apps

Interfaces, Abstract Base Classes, Safe SQL, and Audit-Aware Persistence in Chrona Desktop applications often start with direct database access inside view models, commands, or small helper classes. At first, this looks efficient.…

Audit Trail and Snapshot Diffing in Desktop Apps

Designing Explainable Change History with JSON Snapshots Most applications can save data. Far fewer can explain what changed, when it changed, and why the current state looks the way it does. That…

6 Proven Techniques to Skyrocket Your Productivity

Top performers aren’t just magically more productive—they use proven techniques to work smarter, not harder. If you’re constantly feeling overwhelmed and like there aren’t enough hours in the day, it’s time to…

When to Use Composition and Inheritance in Software Development

In object-oriented programming (OOP), two key approaches for code reuse and structuring are inheritance and composition. Understanding when to use each can significantly affect the scalability, maintainability, and flexibility of your applications.…

Why I Think C# WinForms Is Not Dead in 2025

When you hear about desktop application development in 2025, you might think of modern frameworks like .NET MAUI, WPF, or cross-platform solutions like Electron and Flutter. But surprisingly, C# Windows Forms (WinForms)…

Simplify Your Email Testing with FakeSMTP

FakeSMTP, developed by Nilhcem, provides an elegant solution for testing emails locally without sending them to real recipients. What is FakeSMTP? FakeSMTP is an open-source SMTP server emulator designed to capture outgoing…

Software Design Principles: SOLID, DRY, WET, and More

When developing software, applying established design principles helps ensure your code is clean, maintainable, and scalable. In this article, we explore some of the most important principles, including SOLID, DRY, and WET,…

High Cohesion vs. Low Cohesion in Software Design

When designing software systems, the concept of cohesion plays a crucial role in determining the quality and maintainability of your code. Cohesion refers to how closely related the responsibilities of a single…

Exploring DotNetPerls: A Goldmine for .NET Developers

When it comes to learning .NET development, finding a concise, practical, and easy-to-follow resource can be challenging. This is where DotNetPerls shines. As a trusted repository of .NET programming examples and performance…

Computer Science Unleashed

„Computer Science Unleashed: Harness the Power of Computational Systems“ by Wladston Ferreira Filho and Raimondo Pictet offers a high-level overview of networking, data science, and computer security. Designed for readers who prefer…

Computer Science Distilled

„Computer Science Distilled“ by Wladston Ferreira Filho is an accessible guide designed to introduce essential computer science concepts without the heavy academic jargon. Code Energy Key Topics Covered: The book is tailored…

Microsoft Azure Certifications: AZ-400 vs. AZ-204

Microsoft Azure Certifications: AZ-400 vs. AZ-204 Microsoft Azure certifications, particularly AZ-400 (DevOps) and AZ-204 (Developer Associate), are among the most sought-after credentials for IT professionals looking to enhance their expertise in Azure…

Die arc42-Methode

https://www.arc42.de Erfolgreiche Softwarearchitektur Entwerfen, kommunizieren und dokumentieren. Bewährt, praktisch und pragmatisch. Frei verfügbar, Open-Source und schmerzfrei.

Architecture Improvement Method

https://www.aim42.org Iterative improvement in phases aim42 works iteratively in three phases (analyze, evaluate, improve) supported by crosscutting activities. For each phase, aim42 proposes a number of proven and established practices and patterns.…

Copy Constructor in C++

What is a copy constructor?  A copy constructor is a member function which initializes an object using another object of the same class. A copy constructor has the following general function prototype:…

Library to Generate Excel XML Workbooks in .NET

Excel XML Writer: A Lightweight C# Library for Generating Excel Workbooks For developers seeking a simple, lightweight, and efficient way to generate Excel workbooks without the need for Excel installation, Excel XML…

C++ Class and Preventing Object Copy

In some cases, an instance of a C++ class should not be copied at all. There are three ways to prevent such an object copy: keeping the copy constructor and assignment operator private,…

S.O.L.I.D Principles

S.O.L.I.D is an acronym for the first five object-oriented design(OOD) principles by Robert C. Martin. https://scotch.io/bar-talk/s-o-l-i-d-the-first-five-principles-of-object-oriented-design