Blog

Blog Post

Spring Boot Actuator Endpoints

The Actuator module has been promising to help make the application ‘production-ready’ since the start of Spring Boot. But what exactly does that mean? What does the module already offer and how can we expand it? This article provides detailed answers to all these questions.

Blog Post

Always up to date

JDK 23 already contains the second preview for the new Class-File API, which will probably be completed in JDK 24. Now it’s time to take a look at what this API is all about and how we can use it.

Blog Post

A Brief History of HTTP

HTTP’s progression from text over TCP to semantics and binary QUIC streams

Blog Post

Platforms, Teams, and APIs: How Do They Fit Together?

One of the major trends in recent years has been Platform Engineering, as many organizations strive for more efficient and fasterdevelopment practices. The term has gained traction since 2018, particularly following an influential article by Evan Bottcher. Looking at the origins of this concept provides valuable insights into the relevance of Platform Engineering today and its potential future developments.

Blog Post

Beyond the hype: An engineer’s journey into ReBAC and AI with the Model Context Protocol

In this article, I share my experiences on my journey into the AI world. During this journey, we’ll build our own Model Context Protocol (MCP) Server using C Sharp, learn about access management with relationship based access control (ReBAC) on the way, and in the end I’ll provide my thoughts on the current state of AI and MCP, focusing on security and UX.

Blog Post

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

Blog Post

Rules, Tools, and Teamwork

Static code analysis. A necessary evil? A lifesaver? A constant struggle? Let me show you a few important things that might make your life with code analysis easier.

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

RAG: The Architecture of Reliable AI

Annotated Talk+ for later reference

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

How do we handle situations where an LLM-driven system requires highly specialized enterprise knowledge that wasn’t included in the original model training? While LLMs have enormous potential to answer generic queries based on their comprehensive knowledge from training, they show limitations when it comes to current, specialized, or verified information.

Blog Post

Implementing GitOps without Kubernetes

Blog Post

Better RAG With Hybrid Search

One component of RAG (retrieval-augmented generation) is the retrieval. In other words: we have to solve a search problem. Reading articles about RAG, one can get the impression that vector search is the essential or even the only piece of the puzzle. In this blogpost you’ll see why this does not bring us close enough to the goal.

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

Use webjars-locator-lite with internal WebJars

Blog Post

LLM-assisted Abbreviation Mining for Legacy Systems

This blog post shows the process of mining abbreviations and discovering first concepts a COBOL legacy mainframe codebase is made of with the help of Large Language Models. It uses Python, pandas and Claude 3.5 Sonnet to generate insights that can be gathered from such a simple thing like a list of files.

Blog Post

Java and its annotations

Java code without annotations is hardly conceivable nowadays, even though it is constantly criticized. It’s hard to believe that there was a time before them. Three use cases demonstrate how these problems were solved before the introduction of annotations and how things could work without them today.

Blog Post

Compliance in hybrid operating environments

A socio-technical view

Blog Post

Generative AI: The End of “Too Expensive” in Business Software?

”We’ve found no use cases.” — No, you’ve got too many. Let’s take a look at how Generative AI will change business software beyond chatbots. What features might become possible that weren’t before, or were just too expensive?

Blog Post

Here’s All You Need To Know To Start Building With Generative AI

Curious on how to start building with Generative AI? This guide covers the basics, from deploying local models to utilizing tools like Huggingface and LangChain. Learn to create your first AI application, manage customer feedback, and grasp key concepts such as context windows and vectorization. Discover practical examples and essential resources to help you get started.

Blog Post

Perfect solution for legacy code

Blog Post

Boring Innovation?

Does innovation always come with the latest technology or can innovation even seem boring? A quick look at a story from my work as an IT consultant.

Blog Post

How To Build a Data Product with Databricks

In today’s data engineering, the focus is primarily on developing modular data products. This article outlines the advantages of modularity over monolithic data pipelines and explains, step-by-step, how to develop data products using Databricks – from defining a data contract to creating and implementing Databricks Asset Bundles, setting up a CI/CD pipeline, and publishing metadata.

Blog Post

Type-safe SQL queries in Java and Rust

The Type-Safe Web Stack, Part 3

Blog Post

Identification of Team Boundaries

In the context of numerous initiatives and ideas such as Microservices, Agile, Domain-Driven Design, or Team Topologies, the focus is on establishing autonomous, cross-functional teams that exhibit a fast workflow and can respond agilely to changes. However, the challenge lies in finding appropriate boundaries for the areas of responsibility of these teams. This is the focus of this article.