Practical writing on Java, Spring, AI, and the craft of software engineering.

If you're building with Java and Spring (or trying to figure out where AI fits into your development workflow) you're in the right place. I write practical, beginner-friendly deep dives on Spring Boot, Spring AI, and software engineering fundamentals, collected here in chronological order.

Embabel MCP Servers and Tools: Supercharging Your Agentic Flows on the JVM
Latest

Embabel MCP Servers and Tools: Supercharging Your Agentic Flows on the JVM

· 16 min read

Learn how to add tools and MCP servers to your Embabel agents in Java. Build a blog writing agent that can research topics, calculate reading time, and generate front matter.

Embabel First Look: Building Agentic Flows on the JVM
· 21 min read

Embabel First Look: Building Agentic Flows on the JVM

A first look at Embabel, a framework by Rod Johnson for building agentic AI flows on the JVM. Learn how to create a blog writing agent with goal-oriented action planning.

GraphQL for Java Developers
· 33 min read

GraphQL for Java Developers

Learn how to build scalable GraphQL APIs with Java 26 and Spring Boot 4. This course walks you through schema-first development, batch loading, unions, Query by Example, AOT repositories, and more.

Spring, Build Me a Coding Agent
· 26 min read

Spring, Build Me a Coding Agent

Learn how to build an autonomous coding agent in Spring AI using the Spring AI Agent Utils library. This tutorial walks you through creating a CLI-based agent with file system access, shell commands, and skills.

Giving Your Spring AI Agents a Real Browser with the Browserbase Spring Boot Starter
· 19 min read

Giving Your Spring AI Agents a Real Browser with the Browserbase Spring Boot Starter

Most AI agents can search the web. But what happens when they need to actually use it? I built a Spring Boot Starter for Browserbase that gives your agents a real, headless browser in three lines of configuration, plus a deep research agent to show it off.

JEP 500: Prepare to Make Final Mean Final in JDK 26
· 11 min read

JEP 500: Prepare to Make Final Mean Final in JDK 26

JDK 26 introduces JEP 500, which warns developers when final fields are mutated through reflection. Here's what this means for your Java code and how to prepare for the future.

Building a Spring Initializr Terminal UI with Java
· 10 min read

Building a Spring Initializr Terminal UI with Java

How I built a terminal user interface for the Spring Initializr using Tambu UI, a new Java TUI framework, and GraalVM native images to streamline my development workflow.

Spring AI Prompt Caching: Stop Wasting Money on Repeated Tokens
· 14 min read

Spring AI Prompt Caching: Stop Wasting Money on Repeated Tokens

If you have an unlimited budget to spend on AI, you probably don't need to read this. If you don't like saving money, feel free to skip this one. But if you're like me and want to reduce your AI application costs, prompt caching is a technique you need to...

I Tried OpenAI's New Codex Agent. Here are my First Impressions (It's Really Good)
· 10 min read

I Tried OpenAI's New Codex Agent. Here are my First Impressions (It's Really Good)

OpenAI released Codex, a new GUI for their coding agent. I put it to the test by building a vending machine CLI application in Java 25 with Maven, JUnit 6, and JSpecify null safety annotations.

OpenTelemetry with Spring Boot 4: The New Starter You've Been Waiting For
· 12 min read

OpenTelemetry with Spring Boot 4: The New Starter You've Been Waiting For

Learn how to use the new spring-boot-starter-opentelemetry in Spring Boot 4 to add observability with traces, metrics, and logs—no Actuator required.