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.
Building Dynamic GraphQL APIs with Spring Boot and Query by Example
Learn how to build flexible and maintainable GraphQL APIs using Spring Boot's Query by Example support, reducing boilerplate code while enabling powerful search capabilities.

Modern Java: Why You Might Not Need Lombok Anymore
A detailed exploration of why Java developers should reconsider using Project Lombok, examining its drawbacks and modern alternatives in Java development.
Query By Example in Spring Data JPA: A Clean Approach to Dynamic Queries
Learn how to simplify your Spring Data JPA queries using Query By Example (QBE) and create dynamic, type-safe queries without the boilerplate code.
RestClient OAuth2 Support in Spring Security 6.4: A Complete Guide
Learn how to implement OAuth2 authentication in your Spring applications using the new RestClient OAuth2 support in Spring Security 6.4. This guide covers architecture, implementation, and best practices for secure service-to-service communication.
Understanding Tokens in Large Language Models with Spring AI
Learn how to track and manage token usage in Spring AI applications, including implementing custom response types and automated logging with AOP.
Implementing Request/Response Logging with Spring Boot's Rest Client
Learn how to implement clean and efficient request/response logging for Spring Boot's Rest Client, including both inline and interceptor-based approaches.
Using Environment Variables in Spring Boot
Learn how to effectively manage configuration and secure sensitive data using environment variables in Spring Boot applications. This comprehensive guide covers best practices, security considerations, and practical examples.

Building a Spring Security Login Form with JTE
Learn how to create a secure login form using Spring Security and JTE (Java Template Engine) with support for both traditional authentication and OAuth2 providers.
Getting Started with Spring AI and RAG: A Practical Guide
Learn how to build intelligent applications using Retrieval Augmented Generation (RAG) with Spring AI. This practical guide covers everything from understanding tokens and context windows to implementing a full RAG solution.