RSSAmplifier

Blog

Dan Vega

Personal site of Dan Vega

danvega.devRSS feed ↗50 posts

Latest posts

The 5 Steps of AI Adoption: Which One Are You On?

Learn the 5 steps of AI adoption mapped out by Boris Cherny, creator of Claude Code, and how to move from copy-pasting code to supervised autonomy.

Can You Trust AI-Generated Code?

Can you trust AI-generated code? It depends on what you already know. A look at why AI code feels great in unfamiliar stacks and how to verify it.

Upgrading Dependencies with AI: A Practical Guide

Learn a practical workflow for upgrading dependencies with AI, using scope, scale, and stakes to decide when to reach for an LLM to patch your projects.

Spring AI: Build Real Guardrails that hold

Learn how to build Spring AI guardrails with SafeGuardAdvisor, custom PII masking, and output rails to stop prompt injection and data leaks.

Docker Compose for Java Developers, Explained

Learn what that docker-compose.yml in every Java repo actually does. Spin up Postgres with one command and run any project you clone with zero setup.

Spring AI 2.0 Tool Calling: Build a Live Claude-Style UI

Build a Claude-style 'Calling tool...' UI with Spring AI 2.0's ToolCallingAdvisor. Stream live tool call events over SSE from the ChatClient advisor chain.

Embabel 1.0 Is Here: AI Agent Framework for Java Goes GA

Embabel 1.0 is GA. What Rod Johnson's AI agent framework for the JVM means for Java developers, what changed on the road to 1.0, and how to get started.

My Content Creation Workflow: 10 Stages From Idea to Published

My complete 10-stage content creation workflow for YouTube: ideation, packaging, AI rough cuts, repurposing videos into blog posts, Shorts, and a newsletter.

Self-Correcting Structured Output in Spring AI 2.0

Learn how Spring AI 2.0 validates LLM JSON against your schema and automatically retries failures with self-correcting structured output. A beginner guide.

Can You Use Java for AI? Why Java Is Better Positioned Than You Think

Can you use Java for AI? Yes. For building real AI applications it might be the better choice. Why the JVM, Spring AI, and your existing team are enough.

Spring Boot End of Life: Every 3.x Branch Is Now Unsupported

Spring Boot 3.5 reached end of life in June 2026 and every 3.x branch is now unsupported. What that means, and how to plan your Spring Boot 4 upgrade.

How to Kill a Process Running on a Port (Windows, macOS & Linux)

Port 8080 already in use? Learn how to find and kill the process running on a port on Windows, macOS, and Linux—with copy-paste commands for each.

Spring AI Tool Search: Stop Wasting Tokens on Tools You Don't Need

Spring AI 2.0's tool search brings dynamic tool discovery to Spring Boot—load tools on demand instead of into every request to cut token usage and cost.

Building Custom Spring AI Advisors for Tool Logging and Token Tracking

Learn to build custom Spring AI advisors with the BaseAdvisor interface to log available tools, track tool invocations, and count token usage on every LLM call.

UI.sh: Agent Skills That Actually Make AI-Generated UIs Look Good

UI.sh is a collection of agent skills from the Tailwind CSS and Refactoring UI team that give Claude Code and Codex the polish of a senior UI designer.

ChatClient vs ChatModel: Which Spring AI API Should You Actually Use?

Spring AI gives you two ways to call an LLM. Learn the difference between ChatClient and ChatModel, when to use each, and see both in action with code examples.

X (Twitter) MCP Servers with Spring AI: Search Posts and Query Docs Programmatically

X released MCP servers for its API and docs. Build a Spring Boot MCP client with Spring AI 2.0 to search X posts and query the X API docs programmatically.

Type Safe Property Paths in Spring Boot 4.1

Spring Boot 4.1 adds type-safe property paths to Spring Data, replacing stringly typed references in sorting, criteria queries, and composite paths.

The New @RedisListener Annotation in Spring Boot 4.1

Spring Boot 4.1 adds @RedisListener, one annotation that brings Redis Pub/Sub in line with @KafkaListener and @RabbitListener. No container wiring needed.

SSRF Protection in Spring Boot 4.1 with InetAddressFilter

Learn how Spring Boot 4.1's new InetAddressFilter protects your applications against Server-Side Request Forgery (SSRF) attacks with a single bean definition.

Lazy JDBC Connections in Spring Boot 4.1: One Property, Massive Performance Win

Spring Boot 4.1 adds lazy JDBC connection fetching via spring.datasource.connection-fetch. See how it cuts connection hold time from 2 seconds to 15ms.

Getting Started with Spring gRPC in Spring Boot 4.1

Build a gRPC server and client in Spring Boot 4.1 with Spring gRPC — using @GrpcService, protobuf, and the new starters from start.spring.io.

Spring Modulith Externalized Events: Publishing Events to Kafka

Learn how to externalize Spring Modulith application events to Apache Kafka so other systems can react to changes happening inside your modular monolith.

Spring Boot + Kafka in 10 Minutes: Sending Your First Message

Produce and consume your first Apache Kafka message with Spring Boot. Covers Docker Compose, KafkaTemplate, @KafkaListener, and Embedded Kafka for tests.

Spring Modulith Durable Events: Reliable Event Processing Without a Message Broker

Learn how Spring Modulith's event publication registry persists and replays failed events across restarts, giving you a transactional outbox with no message broker.

Introduction to Spring Modulith: Building Modular Monoliths with Spring Boot

Learn how Spring Modulith helps you build a modular monolith in Spring Boot with enforced module boundaries, application events, and verified architecture.

Embabel MCP Servers and Tools for Agentic Flows on the JVM

Add tools and MCP servers to your Embabel agents in Java. Build a blog writing agent that researches topics, calculates reading time, and generates front matter.

Embabel First Look: Building Agentic Flows on the JVM

A first look at Embabel, Rod Johnson's framework for building agentic AI flows on the JVM. Build a blog writing agent using goal-oriented action planning (GOAP).

GraphQL for Java Developers with Spring Boot

Build GraphQL APIs in Java with Spring Boot 4 and Spring for GraphQL. A free course covering schema-first design, batch loading, unions, and AOT repositories.

Spring, Build Me a Coding Agent

Build an autonomous coding agent in Spring AI with the Spring AI Agent Utils library. This tutorial adds file system tools, shell commands, and agent skills.

Spring AI Deep Research Agent

AI Agent Search

Getting Started with Error Handling in the RestClient

Learn best practices for error handling with Spring's RestClient, including global exception handlers, custom exceptions, Problem Detail responses, and built-in retry with resilience methods in Spring Framework 7.

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

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

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

Spring AI prompt caching cuts your Anthropic Claude API costs. Use AnthropicCacheStrategy to cache system prompts and tools that don't change between requests.

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.

The Ralph Loop: Automate AI Coding Tasks in Java

The Ralph Loop is a bash script that runs your AI coding agent with a fresh context every iteration. Here's how it works and how I used it to build a Java CLI.

OpenTelemetry with Spring Boot 4: The New Starter

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.

Building a Spring Boot 4 REST API the Fast Way

Learn how to build a REST API with Spring Boot 4 in minutes. This tutorial shows you how to create CRUD endpoints using Java records and the @RestController annotation.

Loading Resources in Spring Boot

Learn how to load resources in Spring Boot using the Resource interface. This tutorial covers three approaches for loading files from the classpath, filesystem, and URLs.

Spring Security 7 Multi-Factor Authentication: Complete Tutorial with @EnableMultiFactorAuthentication

Learn how to implement multi-factor authentication (MFA) in Spring Boot 4 using Spring Security 7's new @EnableMultiFactorAuthentication annotation. Step-by-step tutorial with one-time token login and custom PIN codes.

Spring Boot 4 Modularization: Fix Missing Auto-Configuration

Spring Boot 4 broke your auto-configuration? Learn which modular starters you now need—Flyway, H2, and the test starters behind @AutoConfigureMockMvc.

MockMvcTester vs RestTestClient: Which one Should You Use in Spring Boot 4?

A comparison of MockMvcTester and RestTestClient for testing Spring Boot web applications, exploring when to use each approach and their key differences.

Spring JMS Client: A Complete Guide to JmsClient in Spring Boot 4

Master the Spring JMS Client with this complete Spring Boot 4 JmsClient tutorial. Learn when to choose JMS over Kafka, configure message conversion, and send messages using Spring's fluent API.

Spring Data AOT Repositories: Faster Startup and Build-Time Query Validation

Learn how Spring Data AOT Repositories move query processing from runtime to compile time, reducing startup times and memory usage, plus how to validate repository methods at build time.

Spring Boot 4: Everything You Need to Know (4.0 and 4.1)

Everything new in Spring Boot 4 and 4.1, from null safety and HTTP interfaces to modularization and gRPC, plus the upgrade path from Spring Boot 3.

Native Retry Support in Spring Boot 4: No External Dependencies Required

Spring Boot 4 includes native retry support with @Retryable, RetryTemplate, and @ConcurrencyLimit. Learn how to add resilience without the spring-retry dependency.

Jackson 3 in Spring Boot 4: JsonMapper, JSON Views, and What's Changed

Learn how to use Jackson 3 in Spring Boot 4 with the new JsonMapper, immutable configuration, unchecked exceptions, and JSON Views with the hint() method.

HTTP Interfaces in Spring Boot 4: Say Goodbye to Boilerplate

Learn how HTTP interfaces let you define declarative HTTP clients in Spring Boot, and discover how Spring Framework 7 eliminates the configuration boilerplate with @ImportHttpServices.