Sign in

CrAIg Walls

@habuma.com
1.6K followers 169 following 331 posts

Java Champion / Alexa Champion / Author of “Spring AI in Action”, “Spring in Action” & “Build Talking Apps for Alexa”/ Disney Parks Fanatic/ tabletop games player. www.habuma.com

PostsRepliesMedia
Reposted by CrAIg Walls
Christian Tzolov @tzolov.bsky.social · 12h
🚀 Spring AI TypeSafe 0.3.0 (@typesafeai Jev) now supports local engines too: the same client works with the Ollama and Laya #SystemOne endpoints: - Ollama: spring-ai-community.github.io/spring-ai-ty... - Laya: spring-ai-community.github.io/spring-ai-ty... github.com/spring-ai-co...
021
CrAIg Walls @habuma.com · 28/09/2026
Why should a Java-based STDIO MCP server need a build step before a client can run it? With JBang, it doesn’t. You can build Spring AI MCP servers and clients that run straight from Java source. medium.com/@thetalkinga... #SpringAI #MCP #JBang #Java #SpringBoot
020
Reposted by CrAIg Walls
Spring AI @spring-ai.bsky.social · 25/09/2026
Spring AI 2.1.0-M1 is out 🍃 🧩 Message parts: ordered text, reasoning, tool calls & media 🤖 OpenAI Responses API: reasoning + tool calling on GPT-5.4+ 📥 VectorStore.upsert() for pre-computed embeddings Feedback welcome 👇 spring.io/blog/2026/09... #SpringAI #Java
122
CrAIg Walls @habuma.com · 24/09/2026
What if you could run a Spring AI application without a Maven or Gradle project? In this Spring AI Recipe, see how JBang turns a few Java files into a runnable Spring AI chat loop. medium.com/@thetalkinga... #SpringAI #Java #JBang #SpringBoot
001
CrAIg Walls @habuma.com · 21/09/2026
Fact-checking an entire AI response can hide unsupported claims. What if you decompose the response and fact-check each claim individually? medium.com/@thetalkinga... #SpringAI #Java #AIEvaluation #FactChecking
000
Reposted by CrAIg Walls
Christian Tzolov @tzolov.bsky.social · 21/09/2026
Java SDK + Spring AI integrations for #TypeSafe AI's #Jev. Not a chat model! Send it a state and typed questions, get numbers back with a confidence, in ~300 ms. Judge, self-refine + guardrail advisors, RAG triage, tool selection. Blog: spring.io/blog/2026/09... @spring-ai.bsky.social
254
CrAIg Walls @habuma.com · 17/09/2026
Even when an LLM has all the facts it needs, it can still get them wrong. Let's explore FactCheckingEvaluator and discover why fact-checking AI responses isn't always as straightforward as it seems. medium.com/@thetalkinga... #SpringAI #Java #AIEvaluation #FactChecking
000
CrAIg Walls @habuma.com · 14/09/2026
Securing an MCP server with an API key is easy, but sometimes you need something more robust. In this recipe, we’ll put OAuth 2.0 to work with Spring AI to secure an MCP server. medium.com/@thetalkinga... #SpringAI #MCP #OAuth2 #SpringSecurity #Java #AgenticAI
020
CrAIg Walls @habuma.com · 10/09/2026
Chat memory helps an AI remember what you've talked about. But the longer the conversation, the more context it has to carry around. What if it could remember the important stuff without remembering every word? medium.com/@thetalkinga... #SpringAI #Java #GenerativeAI #ChatMemory
000
CrAIg Walls @habuma.com · 08/09/2026
I’ve not tested it extensively, but I’ve observed that startup time doesn’t seem to be affected much (if at all). But like most local options, the first prompt triggers the model load and will take longer to respond. After it’s loaded, it’s much faster.
011
CrAIg Walls @habuma.com · 07/09/2026
How local can a local LLM get? With ModelJars and Models, you can skip the model server entirely and run inference inside the same JVM as your Spring AI application. See how in this Spring AI Recipe! medium.com/@thetalkinga... #SpringAI #Java #LocalLLM #GenerativeAI #ModelJars
110
CrAIg Walls @habuma.com · 03/09/2026
Want to run Spring AI against a local LLM? This recipe shows how to use open-weight models with LM Studio, Docker Model Runner, and Ollama, with surprisingly few changes to your app. 🔗 medium.com/@thetalkinga... #SpringAI #Java #LocalLLM #GenAI
021
CrAIg Walls @habuma.com · 31/08/2026
As your AI application gains more tools, do you really need to send all of them to the LLM on every request? In this Spring AI Recipe, I show how ToolSearchTool discovers the right tools on demand, keeping prompts lean as your toolbox grows. medium.com/@thetalkinga... #SpringAI #Java #AgenticAI
100
CrAIg Walls @habuma.com · 27/08/2026
Retrieval found the documents. But are they really the best documents to put in your prompt? In this Spring AI Recipe, we apply reranking to ensure the most relevant context. medium.com/@thetalkinga... #SpringAI #Java #RAG #Reranking #GenerativeAI
020
CrAIg Walls @habuma.com · 27/08/2026
This is incredibly cool!
000
CrAIg Walls @habuma.com · 24/08/2026
Vector search understands what you mean. BM25 finds the exact terms you use. Why choose? In this Spring AI Recipe, we combine them with hybrid search and Reciprocal Rank Fusion to get the best of both worlds. medium.com/@thetalkinga... #SpringAI #RAG #HybridSearch #BM25 #Java
000
CrAIg Walls @habuma.com · 20/08/2026
In today's Spring AI Recipe, we see how playing "HyDE and seek" gives better results from RAG queries. medium.com/@thetalkinga... #SpringAI #Java #RAG #HyDE #GenAI
020
CrAIg Walls @habuma.com · 17/08/2026
You don't need a full-blown agent framework to build an agent. If you've used Spring AI's ChatClient with tools, you may already be using one of the most fundamental agentic patterns: ReAct. See how in today's Spring AI Recipe. medium.com/@thetalkinga... #SpringAI #Java #AgenticAI #ReAct #AIAgents
010
CrAIg Walls @habuma.com · 16/08/2026
I see. Well, then in that case *someone* should let me know how it is.
000
CrAIg Walls @habuma.com · 16/08/2026
Finally cracked open this game last night with 7 friends. Accusations and deception were the mood for an hour or so. In the end, after 4 nights (in game nights), the witches were victorious.
000
CrAIg Walls @habuma.com · 16/08/2026
I’ve heard of that game but don’t know anything about it that BGG doesn’t tell me. Let me know if it’s any good.
110
CrAIg Walls @habuma.com · 14/08/2026
I've upgraded the code for my Spring AI recipes that cover Embabel to build against Embabel 1.5.0 (and therefore, Spring Boot 4.1.0). Enjoy! - Embabel recipes: www.habuma.com/springaireci... - Recipes code: github.com/habuma/sprin... #SpringAI #Embabel #SpringBoot #AgenticAI
020
CrAIg Walls @habuma.com · 13/08/2026
Graph-based workflows give you explicit control over how an agent moves from one task to the next. In this recipe, see how to build graph-based workflows with LangGraph4j and Spring AI. medium.com/@thetalkinga... #SpringAI #LangGraph4j #AgenticAI #Java
020
CrAIg Walls @habuma.com · 11/08/2026
A quick followup: I found that the problem I was experiencing was due to a bug in a 3rd party library that I was using. That library is a critical ingredient in the recipe, so I will hold back on publishing the recipe until it is resolved. Today I've published a different recipe.
000
CrAIg Walls @habuma.com · 11/08/2026
Vector similarity finds what’s relevant. Metadata filtering makes sure your RAG pipeline finds what’s relevant and applicable. This Spring AI Recipe shows how to filter vector searches using document metadata. medium.com/@thetalkinga... #SpringAI #Java #RAG #VectorSearch #GenAI
000
CrAIg Walls @habuma.com · 10/08/2026
Today's Spring AI recipe is giving me some technical challenges. As such, I find myself delaying publication of the recipe until I sort out the issues. I hope that you'll accept my apologies for the delay. I hope to get it working and publish the recipe tomorrow.
110
CrAIg Walls @habuma.com · 06/08/2026
Claude Code isn't the only place you can use Markdown-defined subagents. In this week's Spring AI Recipe, learn how to create Claude-style subagents and wire them into Spring AI with TaskTool. thetalkingapp.medium.com/spring-ai-re... #SpringAI #Java #AgenticAI #AIAgents #LLM
010
CrAIg Walls @habuma.com · 03/08/2026
When mixing chat memory with RAG, follow-up questions make perfect sense to people, but not to your vector store. This recipe shows how to make RAG conversation-aware by folding chat history into retrieval queries. medium.com/@thetalkinga... #SpringAI #RAG #Java #LLM #VectorSearch #GenAI
020
CrAIg Walls @habuma.com · 30/07/2026
RAG doesn't have to mean deploying another database. Learn how to build a Spring AI RAG application using an in-JVM vector store. No separate vector database required. medium.com/@thetalkinga... #SpringAI #SpringBoot #Java #RAG #VectorSearch
021
CrAIg Walls @habuma.com · 27/07/2026
Whiteboard sketches are great, but do they match the graph your code actually builds? This recipe shows how to generate diagrams directly from a Spring AI Alibaba CompiledGraph. medium.com/@thetalkinga... #SpringAI #SpringBoot #Java #AgenticAI #GraphEngineering
000
CrAIg Walls @habuma.com · 25/07/2026
I did something new today. Can you picture that?
020
CrAIg Walls @habuma.com · 25/07/2026
The 2nd day of my brief 2 day WDW trip finds me hanging out with these gents…
000
CrAIg Walls @habuma.com · 25/07/2026
The best thing about Liberty Tree Tavern is that it’s like Thanksgiving every day. The problem with Liberty Tree Tavern is that it’s like Thanksgiving every day, including the need for a nap after eating there. But we survived, then made it over to Hollywood Studios for Fantasmic!
010
CrAIg Walls @habuma.com · 24/07/2026
I have spent more than a few moments reading the titles of the books in the library at Skipper Canteen.
010
CrAIg Walls @habuma.com · 24/07/2026
I’ve been there many times. But not since they took Skip’s Mac and Cheese off the menu. We’re booked for Liberty Tree Tavern today.
110
CrAIg Walls @habuma.com · 24/07/2026
In case anyone is wondering, it’s crazy hot, but the crowds are very low. Good day to take in Magic Kingdom vibes.
010
CrAIg Walls @habuma.com · 24/07/2026
My “workplace” for today…
230
CrAIg Walls @habuma.com · 23/07/2026
It seems that “graph engineering” is the new hot term lately. To see how it can be done with Spring AI, may I refer you to some articles I wrote in May: - thetalkingapp.medium.com/spring-ai-re... - thetalkingapp.medium.com/spring-ai-re... - thetalkingapp.medium.com/spring-ai-re...
000
CrAIg Walls @habuma.com · 23/07/2026
Your chat memory isn't limited to JDBC. This Spring AI Recipe shows how to persist conversations with Redis, Cassandra, and MongoDB using Spring Boot auto-configuration. medium.com/@thetalkinga... #SpringAI #SpringBoot #Java #Redis #MongoDB #Cassandra
011
CrAIg Walls @habuma.com · 20/07/2026
Keep your AI's memory alive across restarts. Learn how to persist Spring AI chat memory with JDBC and PostgreSQL so conversations survive and can be shared across application instances. medium.com/@thetalkinga... #SpringAI #SpringBoot #Java #PostgreSQL #JDBC #LLM #GenAI
022
CrAIg Walls @habuma.com · 17/07/2026
Last night, @dhinojosa.bsky.social , @dashaun.com , @mgrygles.bsky.social , and I played Fantastic Factories. It was the first time playing it for all of us, so there was some learning along the way. But I think we all agreed that it lived up to the word “Fantastic” in its name. #NerdsPlayingGames
0100
CrAIg Walls @habuma.com · 16/07/2026
In this recipe, you’ll learn how to invoke an Embabel agent directly from Java code, making it easy to integrate intelligent, goal-oriented behavior into any Spring application. medium.com/@thetalkinga... #SpringAI #Embabel #Java #SpringBoot #AgenticAI #AI
012
CrAIg Walls @habuma.com · 13/07/2026
Keyword filtering is fast, but it’s also easy to fool. In this recipe, you’ll build a semantic guardrail for Spring AI that uses an LLM to recognize forbidden topics. medium.com/@thetalkinga... #SpringAI #SpringBoot #Java #LLM #Guardrails
011
Reposted by CrAIg Walls
dev2next.bsky.social @dev2next.bsky.social · 06/07/2026
Python popularized GenAI, but enterprise Java doesn’t need to switch stacks 🤖 @habuma.com introduces Spring AI for Spring Boot—making LLM integration simple with familiar patterns and real data-driven use cases 🔗https://www.dev2next.com/speaker/4b0fe5fcc3d74f829dfbc6c5a915c2e2 🎟️ www.dev2next.com
022
CrAIg Walls @habuma.com · 09/07/2026
SafeGuardAdvisor blocks risky prompts. Now block risky responses. Build a custom Spring AI advisor that filters LLM output before it reaches your application. medium.com/@thetalkinga... #SpringAI #SpringBoot #Java #SpringAIRecipes #LLM #Guardrails
021
CrAIg Walls @habuma.com · 06/07/2026
A system prompt can ask an AI to stay within certain boundaries, but it can't enforce them. In this recipe, you'll learn how Spring AI's SafeGuardAdvisor stops forbidden prompts before they ever reach the LLM. medium.com/@thetalkinga... #SpringAI #Java #LLM #Guardrails
021
CrAIg Walls @habuma.com · 04/07/2026
Happy 4th day of the 7th month of the year… youtu.be/eXeIxtI--uc
youtu.be
Stars & Stripes FOREVER! | Muppet Music Video | The Muppets
YouTube video by The Muppets
000
CrAIg Walls @habuma.com · 02/07/2026
Structured output is great...until your LLM decides to return Markdown instead of JSON. In this Spring AI recipe, learn how to validate and retry structured responses for more reliable results. medium.com/@thetalkinga... #SpringAI #Java #LLM #GenAI #OpenAI
021
CrAIg Walls @habuma.com · 29/06/2026
Three months ago I started the Spring AI Recipes series. Since then I've published 35+ hands-on recipes covering Spring AI, MCP, agents, Embabel, graph workflows, and more. Starting this week, the series moves to a Monday/Thursday schedule. Thanks for following along! 🌱
010
CrAIg Walls @habuma.com · 29/06/2026
Why limit your application to a single LLM? In this recipe, we'll configure Spring AI to talk to multiple AI providers and choose the right one at runtime. medium.com/@thetalkinga... #SpringAI #SpringBoot #Java #LLM #OpenAI #Anthropic
011