Josh Long

A Spring Developer Advocate, Java Champion, Kotlin Google Developer Expert, author of numerous books, best-selling video trainer, open-source contributor, podcaster and YouTuber: hi, Spring fans! 👋

Get to know me
Josh Long, in a Spring t-shirt, arms crossed and smiling

Recent Posts

You can use Lucene queries like : content: "paris" AND title:"2019"

Fixing the issue where macOS fails to sync contacts

The title says it all. I've got two Apple laptops. I've got an iPhone and an iPad and a Watch. The "oldest" laptop is from 2024. Not that old, I know, but in the intervening years I've changed the email associated with my Apple ID. Apparently their systems for contacts propagation (e.g., my list of phone numbers) rely on the old username being the same as the new one. (Why?) So I was getting text messages on the older Mac from people whose names weren't showing up. They showed up correctly on all the devices signed into the same Apple account using the new username (the newer email). Just not here. So I was getting the messages, but the contacts weren't syncing. I tried the usual: System Settings -> iCloud -> toggle Contacts. Nothing.

Updating SDKMAN to see your favorite new shiny JDK

Sigh. SDKMAN.io has gone from being one of my favorite tools to being this never ending disappointment. What process could result in buildings taking this long to show up? It sometimes lags days behind a given JDK's release. Case in point, one OpenJDK distriution, GraalVM, has been available for days but is still not available in SDKMAN. So, while we wait. Here's how you can install the JDK on your own system. I'm assuming you're using macOS.

The IntelliJ IDEA Documentary

The folks at CultRepo, the studio that put, among other things, the amazing Kubernetes documentary and countless others, has just put out a documentary on Jetbrains (and my favorite IDE, IntellIJ IDEA) and I had the great privilege of being in it!

Building a Hybrid Search Engine with JDBC and PostgreSQL

When building modern search functionality, developers often reach for specialized search engines like Elasticsearch or Solr. But what if you could build a sophisticated, production-grade search engine using just JDBC and PostgreSQL? This article explores a fascinating implementation that combines vector embeddings, full-text search, and fuzzy matching—all powered by PostgreSQL's rich ecosystem of extensions.

More posts

A Bootiful Podcast

I run a podcast called A Bootiful Podcast, a celebration of the heroes that drive the Spring and Java ecosystems. It's also on Twitter (@BootifulPodcast). Here are the episodes.
"Data Geekery" with JOOQ creator Lukas Eder
Latest episode

"Data Geekery" with JOOQ creator Lukas Eder

Hi, Spring fans! In this conversation, Josh Long explores how JOOQ turns SQL into a type-safe, fluent Java language—making complex database work safer, cleaner, and far more expressive. They cover everything from dynamic SQL transformation and cross-dialect support to low-level security, stored procedures, views, and the realities of working with modern databases like DuckDB, ClickHouse, Redshift, and more. Along the way, Lucas reflects on the origins of JOOQ, why he built it, and how the project has evolved from a clever Java DSL into a serious platform for enterprise-grade database development. The discussion also touches on AI-assisted debugging, the enduring relevance of SQL, and how strong typing can dramatically reduce mental overhead for developers and DBAs alike. If you care about databases, Java, or writing better software with less friction, this episode is a masterclass in thoughtful engineering and pragmatic elegance.

Livelessons

I love working with the Livelessons teams! We have put together a lot of in-depth, online, courses on various things Spring since 2013. I'm usually the instructor, but on occasion I've been lucky enough to have been able to persuade some of my friends and heroes to collaborate with me, and the results are the stuff of legend. Check them out!

Cloud Native Java Livelessons (with Kubernetes)

Spring Boot is the most efficient and productive way to get to production and these days, as often as not, production is Kubernetes. Join me, and we'll look at how to applications that survive and thrive in the cloud, an on Kubernetes, in particular.

See them all

Cloud Foundry Livelessons
Cloud Native Java Livelessons (with Kubernetes)
Reactive Spring Boot Livelessons (3rd Edition)

Books

I've authored, or co-authored, six books so far, and I'm working on Secure All The Things! (with Spring Security). You can read the book in progress on Leanpub.

Secure All The Things! (with Spring Security)

I'm working on a new book about securing Spring Boot applications wherever they run. We'll start with authentication, authorization, and OAuth, then use Spring Security and Spring Authorization Server to secure HTTP, MCP, gRPC, desktop, CLI, and messaging applications.

See them all

Apress' Spring Recipes
Secure All The Things! (with Spring Security)
The Reactive Spring Book

CoffeeSoftware

I stream almost every day about whatever happens to be going through my head on my personal Youtube channel, @CoffeeSoftware. Most of the time it works out. Subscribe and come join the fun.

Spring Tips

I run a Youtube series called Spring Tips (@SpringTipsLive). Want to learn about the latest-and-greatest aspects of the Spring ecosystem? You're in luck! On (almost) every Wednesday (give or take a few hours or days, timezones and production schedule permitting...), I look at some corner of the wide and wonderful world of Springdom.