Blog & Articles

Blog Post

Verschachtelte Tests mit Minitest

Über das Schreiben von Tests in Ruby in Rails-Anwendungen wurde in den letzten Jahrzehnten wohl alles geschrieben, was man sich ausdenken kann. Es wurden alle erdenklichen Frameworks entwickelt, mit denen das Schreiben von Tests “Spaß” machen soll. Mit RSpec/Cucumber sollten Tests sogar optimalerweise von der Fachabteilung verfasst oder wenigstens gelesen werden können. So jedenfalls das Heilversprechen. Der Autor dieses Posts war nie bekannt für seine Rigorosität, was Testabdeckung seiner Anwendungen betrifft. Software soll ausgeliefert werden und tun, was sie soll. Ein formaler Korrektheitsbeweis im Kopf sowie händisches Testen des Restes wird meist/oft/manchmal auch ausreichen, außerdem steht da noch die Feststellung im Raum, dass 100% Testabdeckung ohnehin nicht erreichbar sind. Manchmal wird man im Alter aber doch weiser (und fauler).

Blog Post

Buttons, Links und die Magie von HTML

Web Accessibility ist nicht nur eine trockene gesetzliche Anforderung: Für viele bedeutet sie die Möglichkeit, überhaupt am digitalen Leben teilzunehmen. Web Accessibility ist aber auch ein Fass, in das man ziemlich tief abtauchen kann. Ein Blick auf einige Aha-Erlebnisse und Fallstricke, die mir beim Entwickeln einer Webanwendung begegnet sind. Teil 1.

Article

Building Standardized AI Tools with the Model Context Protocol (MCP)

Blog Post

Digitale Souveränität

Digitale Souveränität bedeutet letztlich, dass Europa die Kontrolle über seine digitale Zukunft behält – technologisch, wirtschaftlich und regulatorisch. Für Unternehmen ist dies nicht nur ein politisches Schlagwort, sondern ein handfester Faktor für Risiko- und Erfolgsbewertung. Doch warum genau sollten Unternehmen bei Entscheidungen zur digitalen Transformation den Aspekt der europäischen Souveränität berücksichtigen?

Article

Von Legacy-Monolithen zu Self-contained Systems

Moderne Architektursysteme teilen die Arbeit in voneinander unabhängige Teams auf. Eine bestehende, monolithische Anwendung muss dafür zerlegt werden.

Blog Post

Rules, Tools, and Teamwork

Getting Static Code Analysis Right

Blog Post

Soziale Bewährtheit - die Macht der Herde

Microservices, Kubernetes, Scrum – was alle nutzen, kann nicht falsch sein, oder? Soziale Bewährtheit beeinflusst Entscheidungen, spart Zeit, kann aber auch in die falsche Richtung führen. In IT-Projekten heißt das oft: Trends werden übernommen, ohne sie kritisch zu hinterfragen. Wann das nützt und wann es schadet – darum geht es in diesem Beitrag.

Blog Post

Transcribing podcasts with large language models

Automatically transcribing podcasts with multimodal AI sounds like a no-brainer, but the devil is in the details.

Blog Post

Canvas 101

One-Pager für bessere Kommunikation

Article

Der Kleber macht’s

Auch bei Webprojekten ist es sinnvoll, mit modularisierten Teilsystemen zu arbeiten. Fehler bei der Implementierung können aber zu trägen Modulithen führen.

Blog Post

Eine kurze Geschichte von HTTP

HTTP hat sich seit der Gründung des Internets im Jahr 1989 kontinuierlich weiterentwickelt. Das erste RFC-Dokument, das von der Internet Engineering Task Force (IETF) veröffentlicht wurde, erschien 1996. Verfolgen wir die Geschichte von HTTP über die Jahre hinweg bis Juni 2022, als eine neue Reihe von RFC-Dokumenten veröffentlicht wurde, die HTTP/1.1, HTTP/2 und HTTP/3 standardisieren.

Article

Spring Boot Actuator Endpoints

Was heißt eigentlich "production-ready"?

Blog Post

RAG: The Architecture of Reliable AI

How can we ensure that AI systems are precise, transparent, and always up to date? All Large Language Models (LLMs) have a cut-off date where their world knowledge ends. And they know nothing about your company’s internal information. Even the leading models still have hallucination rates we can’t completely ignore. Yet they offer enormous potential for productivity, efficiency, and creation. Retrieval-Augmented Generation (RAG) addresses exactly this issue: LLMs are enhanced through targeted information retrieval.

Blog Post

Document Ingestion

How can we transform a pile of diverse documents into a high-quality knowledge base for AI systems? Document ingestion is the critical first step in any Retrieval-Augmented Generation (RAG) system—and often the reason why these systems fail.

Blog Post

Retrieval-Augmented Generation

Bridging General and Domain-Specific Knowledge

Article

Immer up to date

Das JDK 23 beinhaltet bereits die zweite Preview für das neue Class-File API, das vermutlich in JDK 24 fertig gestellt sein wird. Zeit also, sich einmal anzuschauen, worum es sich bei diesem API handelt und wie wir es nutzen können.

Blog Post

Bessere APIs, aber wie?

API Linting verbessert die Qualität einzelner APIs und hilft, Design-Standards in Organisationen zu etablieren und zu unterstützen. Spectral als das populärste Linting Tool hat eingebaut Regeln und unterstützt selbstgeschriebene Regeln. Vor allem in grösseren Organisationen hilft API Linting, Hilfestellung und Automatisierung beim API-Design zu unterstützen.

Article

APIs als strategische digitale Bausteine

APIs, Optionalität, und die Wissenschaft glücklicher Zufälle

Blog Post

Survivorship Bias

Erfolgsgeschichten inspirieren uns. Sie prägen unser Bild davon, was möglich ist – und manchmal auch, was wir für wahrscheinlich halten. Doch der Schein trügt: Wer nur auf die sichtbaren Erfolge blickt, ignoriert all jene, die es nicht geschafft haben. Dieses Phänomen nennt sich Survivorship Bias. Der folgende Blogpost zeigt anhand von Beispielen aus IT-Projekten, Wirtschaft und Medizin, warum diese Wahrnehmungsverzerrung gefährlich ist – und wie man ihr entgegenwirken kann.

Article

Implementing GitOps without Kubernetes

“GitOps only works with Kubernetes as the operating platform!” This persistent misconception about GitOps might explain why it hasn’t become a standard workflow tool for software delivery yet. Most available GitOps tools require Kubernetes. However, GitOps fundamentally means using a version control system (VCS) like Git as an interface for a software agent to handle deployment and operational tasks within a target environment.

Blog Post

API Drift

Wenn APIs Unbeschriebenes tun

Article

Back to Basics: Gute Architektur muss nicht „trendy“ sein

Schlägt man ein IT-Magazin oder das Programm einer IT-Konferenz auf, springt dem Leser sofort der Hype ins Gesicht: Gestern waren es Microservices, die uns vor den zu groß geratenen Monolithen retten werden, heute ist es die generative KI, die als Heilsbringer oder Unheilstifter stilisiert wird. Dabei ist es auch ohne dieses Hintergrundrauschen nicht einfach, gute Architekturentscheidungen zu treffen.

Blog Post

When the Worldview is Shifting

Large Language Models (LLMs) can feel like magic. We observe them and imagine that they work in a certain way. Then something surprises us, shattering the illusion and fundamentally reshaping our understanding. In this blogpost I’ll show you one such surprise from my own experience, and I believe that your worldview will have changed at the end.

Blog Post

Better RAG With Hybrid Search

Why the overemphasis on vector search does not solve the problem

Article

LLMs mit Spring AI integrieren

Die gesamte Welt spricht aktuell über Generative KI und Large Language Models (LLMs). Und auch wenn ich persönlich das Thema aktuell als zu sehr gehypt empfinde, sollten wir solche Trends nicht komplett verschlafen. Daher zeigt dieser Artikel, wie sich LLMs mit Spring AI integrieren lassen.