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.

OAuth2 Login Made Easy in Java: A Spring Boot & Spring Security Walkthrough
· 7 min read

OAuth2 Login Made Easy in Java: A Spring Boot & Spring Security Walkthrough

In this tutorial, we will discuss how to set up OAuth 2 logins in Spring Security with Spring Boot.

🔥 New in Spring Boot 3.1 - Spring Boot Docker Compose Module
· 7 min read

🔥 New in Spring Boot 3.1 - Spring Boot Docker Compose Module

In this tutorial you will learn about the new Spring Boot Docker Compose Module. This module allows you to use Docker Compose files directly with Spring Boot applications.

Advanced Spring Security - How to create multiple Spring Security Configurations
· 13 min read

Advanced Spring Security - How to create multiple Spring Security Configurations

In this tutorial, we will discuss how to create multiple Spring Security configurations and why you might want to do so.

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.