Large Language Models (LLMs) are remarkable at reasoning over the text you give them, but they have two hard limitations. One, their knowledge is frozen at training time, and second their context window can only hold so much. Vector stores are the piece of infrastructure that works around both problems, and they sit at the heart of retrieval-augmented generation (RAG), semantic search, and long-term memory for AI agents. This post covers what vector stores are, why they exist, and how they fit into an LLM application.
AIDLC — The AI Development Life Cycle
Script from my podcast at – AI – AI Development Life Cycle
Teams using AI are shipping more than they ever have. They’re also breaking things more than they ever have. And the burnout that all this speed was supposed to fix? That still exists.
The 2025 DORA report notes that AI adoption among software development professionals is at ninety percent now. That’s not a trend anymore; that’s the baseline. The same report found that higher AI adoption correlates with increased delivery but it also correlates with increased delivery instability. Output is up. But the health of the system around that output hasn’t caught up. Speed rose; the structure around it didn’t.
Context Engineering – Stop Stuffing the Window
When teams ship their first AI agent, they usually find out — within a few weeks — that the model wasn’t the problem. The agent hallucinates a customer ID three turns into a conversation and then cheerfully references it for the rest of the session. A 50-step task dies at step 42 because the context window is filled with tool output nobody needed. A “simple” migration tool that worked beautifully on 10 files collapses on 100 because the noise drowns out the signal. The team retries with a bigger model. The bugs move, but they don’t leave.
This is the pattern that has pushed an entire sub-discipline — context engineering — from niche jargon to what Cognition has called “effectively the #1 job of engineers building AI agents.” In April 2026, Thoughtworks moved context engineering into the Adopt ring of its Technology Radar, framing it as having “evolved from an optimization tactic into a foundational architectural concern for modern AI systems.” In their words, the context window is “a design surface,” and your job is to “intentionally construct the AI’s information environment.”
In the last six months, every serious agent builder has published essentially the same lesson: what separates a demo from a production agent is not which model you pick, but how you shape the information that model sees on every turn.
For engineering leaders, this matters beyond the mechanics. Context engineering is reshaping how we structure codebases, document systems, think about memory and observability, and which skills we value on our teams. This post is a tour of that landscape.
Reviving a dead Spring Batch side project from 2013 with AI
I wrote the original three-part Spring Batch blog series in 2013. The code worked back then, the posts got published, and then — like most side projects — it sat untouched on GitHub for over a decade. Java 1.5, Spring 3.1, Spring Batch 2.1, JUnit 3. It was a time capsule.
These are projects I would never have gone back and updated. The effort-to-reward ratio just isn’t there when you’re doing it manually. You’d spend hours chasing down deprecated APIs, fixing broken imports, untangling framework migration guides — all for a demo project that already works.
Fast forward to now (Mar 2026), and in less than an hour (over 2 days due to token resets), I used VSCode+Claude Code to vibe code the entire modernization.
Building Agents with OpenAI Agent SDK
You’ve probably noticed by now that we have a lot of AI Agent/Agentic Python frameworks. To list a few – n8n, Pydantic AI, Crewai, OpenAI SDK, Microsoft’s AutoGen, LangChain, LangGraph, Google’s Agent Development Kit (ADK), and Amazon’s Strands, among others. Having played with a few of them, I can assure you all are good frameworks and might come down to your own taste, their fan base in the open source community, and, on occasion, some key feature one of them does better. Let’s dig into OpenAI Agent SDK in this blog.
Retrieval-Augmented Generation (RAG) with Spring AI
Retrieval-Augmented Generation (RAG) is a powerful pattern that enhances Large Language Models (LLMs) by grounding their responses in your specific documents and data. While GPT-4o is incredibly capable, it doesn’t know about your proprietary documents, internal knowledge bases, or recent updates that occurred after its training cutoff date. RAG solves this problem by retrieving relevant context from your documents before generating responses.
Building Type-Safe AI Agents with Pydantic AI
The AI agent framework landscape is evolving rapidly, and while many frameworks exist, few provide the type safety and developer ergonomics that production applications demand. Pydantic AI, created by the team behind the Pydantic validation library, brings that “FastAPI feeling” to AI agent development. This blog will help you get started with the basics of building Pydantic AI applications with proper type checking, structured outputs, and multi-agent orchestration.
Building Multi-Agent Systems with LangGraph
A practical guide to creating modular, reusable agent architectures that can be shared across projects. LangGraph is a robust framework for building stateful, multi-agent applications using Large Language Models (LLMs). Think of it as a way to create conversation flows where different AI agents can work together, each with their own specialized role.
Building Java Applications with LangChain4j & Spring
AI is changing how we build software. Large Language Models (LLMs) like GPT, Claude, and others have transformed from research curiosities into practical tools that can understand natural language, write code, and solve complex problems. However, while Python developers have enjoyed rich AI ecosystems, such as LangChain, Java developers, who power most enterprise applications, have been left behind.
Enter LangChain4j, a comprehensive Java library that brings the full power of modern AI to the enterprise Java ecosystem. It’s not just a wrapper around API calls; it’s a comprehensive framework that leverages Java’s strengths and addresses enterprise requirements.
(Part 3) Mikro’s AI Awakening: When the Agents Come Knocking
This is Part 3 of the humor-inspired saga on the journey from monoliths to microservices, to serverless, and now incorporating AI agents. If you haven’t read Part 1: Mono’s Journey from Monolith to Microservices and Part 2: Mikro’s Serverless Saga, please do so first.
