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.

Create a GraphQL Client in Java with Spring Boot
· 8 min read

Create a GraphQL Client in Java with Spring Boot

If you're working on a Spring application and you need to call another REST API, you have tools such as RestTemplate or WebClient. But what if you need to call a GraphQL API? With Spring, a GraphQL Client is available. In this tutorial, you will learn how to include it...

Project Loom Virtual Threads in Spring (JDK 19/20 Preview)
· 7 min read

Project Loom Virtual Threads in Spring (JDK 19/20 Preview)

Project Loom virtual threads explained for Spring developers: why thread-per-request breaks under load, and how to enable them in Spring on JDK 19/20 preview.

Why VideoTap is a Game-Changer for Content Creators: Convert Videos to Blog Posts in Minutes!
· 6 min read

Why VideoTap is a Game-Changer for Content Creators: Convert Videos to Blog Posts in Minutes!

Are you a content creator who struggles to find enough time to produce written content alongside videos? Do you wish there was an easy way to transform your videos into compelling blog posts? Look no further than VideoTap!

Working with GraphQL Mutations in Spring Boot
· 21 min read

Working with GraphQL Mutations in Spring Boot

In this blog post, we'll be taking a look at mutations in GraphQL, specifically using Spring Boot, GraphQL Java, and Spring Data JPA.

Spring Security Lambda DSL vs Chaining Configuration
· 10 min read

Spring Security Lambda DSL vs Chaining Configuration

Spring Security's Lambda DSL vs the older chaining style with and(). Configure a SecurityFilterChain both ways in Spring Boot and see which reads cleaner.

Notion API File URLs Expire: Fixing 403 Errors on Images
· 11 min read

Notion API File URLs Expire: Fixing 403 Errors on Images

Notion API file URLs carry an expiry_time and expire after 1 hour, so your images start returning 403 Forbidden. Here's how I fixed it in a Nuxt 3 static site.

Learn Spring & Spring Boot: A Free Crash Course for Beginners
· 13 min read

Learn Spring & Spring Boot: A Free Crash Course for Beginners

New to Spring? This free crash course shows you where to start, whether to learn Spring or Spring Boot first, and how to build your first Spring Boot app.

Building Command Line Applications in Spring with Spring Shell
· 12 min read

Building Command Line Applications in Spring with Spring Shell

In this introduction to Spring Shell, you will learn you how to build CLI applications in a familiar programming environment using Java + Spring.

Building Native Images in Java with GraalVM
· 8 min read

Building Native Images in Java with GraalVM

Learn how to handle GraalVM Native Image reflection errors in Java by using the tracing agent to generate reachability metadata and fix ClassNotFoundException.