<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>AI on foojay.io - Friends Of OpenJDK</title><link>https://foojay.io/today/category/ai/</link><description>Recent content in AI on foojay.io - Friends Of OpenJDK</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Wed, 21 Oct 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://foojay.io/today/category/ai/index.xml" rel="self" type="application/rss+xml"/><item><title>BoxLang 1.18.0 Released: Every Cloud, Every Node, Every Agent</title><link>https://foojay.io/today/boxlang-1-18-0-released-every-cloud-every-node-every-agent/</link><pubDate>Wed, 21 Oct 2026 00:00:00 +0000</pubDate><guid>https://foojay.io/today/boxlang-1-18-0-released-every-cloud-every-node-every-agent/</guid><description>&lt;p&gt;&lt;strong&gt;Azure joins the serverless family. Scheduled tasks become cluster-safe. And the whole platform gets documentation and skills built for developers and AI agents working side by side.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;If you run a technology organization, you are being asked to do three things at once: ship faster, keep the estate you already have running, and make AI part of how your teams work. Most stacks make you choose. BoxLang 1.18 is another step toward not having to.&lt;/p&gt;</description></item><item><title>BxPlaywright 1.0: Real Browsers, Fluent BoxLang, Built for AI Agents</title><link>https://foojay.io/today/bxplaywright-10-real-browsers-fluent-boxlang-built-for-ai-agents/</link><pubDate>Wed, 21 Oct 2026 00:00:00 +0000</pubDate><guid>https://foojay.io/today/bxplaywright-10-real-browsers-fluent-boxlang-built-for-ai-agents/</guid><description>&lt;p&gt;&lt;strong&gt;Ortus Solutions today announces the general availability of &lt;a href="https://bxplaywright.boxlang.io" target="_blank" rel="noopener noreferrer"&gt;bx-playwright 1.0&lt;/a&gt;, fluent browser automation and testing for BoxLang, powered by Microsoft Playwright. It ships alongside &lt;a href="https://testbox.ortusbooks.com/readme/release-history/whats-new-with-7.2.0" target="_blank" rel="noopener noreferrer"&gt;TestBox 7.2&lt;/a&gt; and &lt;a href="https://coldbox.ortusbooks.com/release-history/whats-new-with-8.3.0" target="_blank" rel="noopener noreferrer"&gt;ColdBox 8.3&lt;/a&gt;, which bring real-browser testing straight into your specs. Drive Chromium, Firefox and WebKit, test full user journeys, render PDFs and images, and give your AI agents a real browser to verify the BoxLang applications they build.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/8pixcv2P3sU?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;pre class="EnlighterJSRAW" data-enlighter-language="javascript"&gt;playwright().browse( ( page ) =&amp;gt; {&#10;&#9;page.visit( &amp;#34;/login&amp;#34; )&#10;&#9;&#9;.fill( &amp;#34;Email&amp;#34;, &amp;#34;luis@ortus.com&amp;#34; )&#10;&#9;&#9;.fill( &amp;#34;Password&amp;#34;, &amp;#34;secret&amp;#34; )&#10;&#9;&#9;.click( &amp;#34;Sign in&amp;#34; )&#10;&#9;&#9;.assertPathIs( &amp;#34;/dashboard&amp;#34; )&#10;&#9;&#9;.assertSee( &amp;#34;Welcome back&amp;#34; )&#10;&#9;&#9;.screenshot( &amp;#34;dashboard.png&amp;#34; )&#10;} )&lt;/pre&gt;&lt;p&gt;That&amp;rsquo;s a full login check. It reads like the steps you&amp;rsquo;d write on a sticky note, and every line runs in a real browser. 🚀&lt;/p&gt;</description></item><item><title>One Embedding per Job, or Two? Measuring Semantic Search in a Spring Boot Job Portal</title><link>https://foojay.io/today/embedding-strategies-job-search/</link><pubDate>Wed, 14 Oct 2026 00:00:00 +0000</pubDate><guid>https://foojay.io/today/embedding-strategies-job-search/</guid><description>&lt;p&gt;This job portal started as a practice project. I built it after college, mostly so I&amp;rsquo;d have something to put on my resume. Recently I picked it up again. I was job hunting myself, looking for a switch, and it struck me that I should develop it properly, and maybe even launch it someday.&lt;/p&gt;&#10;&lt;p&gt;The first thing that bothered me was search. The results just weren&amp;rsquo;t good, so I started reading about how to make them better.&lt;/p&gt;</description></item><item><title>What I Learned Building an AI Code Reviewer with Java and Spring Boot</title><link>https://foojay.io/today/what-i-learned-building-an-ai-code-reviewer-with-java-spring-boot/</link><pubDate>Wed, 14 Oct 2026 00:00:00 +0000</pubDate><guid>https://foojay.io/today/what-i-learned-building-an-ai-code-reviewer-with-java-spring-boot/</guid><description>&lt;p&gt;AI-assisted coding has changed how quickly developers can write software.&lt;/p&gt;&#10;&lt;p&gt;But that creates another question:&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;How do you review all that generated code effectively?&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;That question led me to build CodeGuard AI, a self-hosted AI code-review application for GitHub Pull Requests using Java and Spring Boot.&lt;/p&gt;&#10;&lt;p&gt;At first, the architecture seemed simple:&lt;/p&gt;&#10;&lt;pre class="EnlighterJSRAW" data-enlighter-language="generic"&gt;GitHub Pull Request&#10; ↓&#10; LLM&#10; ↓&#10; Review&lt;/pre&gt;&lt;p&gt;In practice, that wasn&amp;rsquo;t enough.&#10;The interesting engineering work was everything around the model: collecting useful Pull Request context, defining review instructions, structuring the model response, assessing findings, and integrating the result back into the GitHub workflow.&#10;This article explains what I learned while building that workflow.&lt;/p&gt;</description></item><item><title>Your agents don't need an LLM to negotiate</title><link>https://foojay.io/today/your-agents-dont-need-an-llm-to-negotiate/</link><pubDate>Mon, 12 Oct 2026 00:00:00 +0000</pubDate><guid>https://foojay.io/today/your-agents-dont-need-an-llm-to-negotiate/</guid><description>&lt;p&gt;In agents that negotiate, the negotiating usually ends up inside a language model. You describe&#10;the situation in a prompt, the model answers, and you parse what comes back. It works, and it&#10;costs a network round trip and a line on a bill for every decision.&lt;/p&gt;&#10;&lt;p&gt;For the narrow case of handing work to whoever should do it, there&amp;rsquo;s a protocol that predates&#10;all of this. It&amp;rsquo;s called Contract Net, and it&amp;rsquo;s small enough to read in an afternoon.&#10;&lt;a href="https://github.com/mauro-mura/agenor" target="_blank" rel="noopener noreferrer"&gt;Agenor&lt;/a&gt; ships it. The example below has a manager hand a job to one of three workers in a single JVM, and its imports&#10;contain nothing from any model provider.&lt;/p&gt;</description></item><item><title>How to Create Agent Skills: Tools, Testing, and Installation</title><link>https://foojay.io/today/how-to-create-test-install-agent-skills/</link><pubDate>Fri, 09 Oct 2026 00:00:00 +0000</pubDate><guid>https://foojay.io/today/how-to-create-test-install-agent-skills/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;In short.&lt;/strong&gt; Start with a task that keeps coming up and turn it into a Skill with &lt;code&gt;superpowers:writing-skills&lt;/code&gt;. While creating it, test scenarios with and without the Skill, and validate the structure of &lt;code&gt;SKILL.md&lt;/code&gt;. Then use the Skill on several real tasks. If it consistently helps, share it with your team through a Skills repository or a Plugin.&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;Creating your first Agent Skill is easy. Make a folder, put a &lt;code&gt;SKILL.md&lt;/code&gt; file in it, and write a few instructions.&lt;/p&gt;</description></item><item><title>Introducing cbGenesis: The AI-Native ColdBox Starter for BoxLang</title><link>https://foojay.io/today/introducing-cbgenesis-ai-native-coldbox-starter-for-boxlang/</link><pubDate>Fri, 09 Oct 2026 00:00:00 +0000</pubDate><guid>https://foojay.io/today/introducing-cbgenesis-ai-native-coldbox-starter-for-boxlang/</guid><description>&lt;p&gt;&lt;strong&gt;Ortus Solutions today announces the general availability of &lt;a href="https://cbgenesis.coldbox.org" target="_blank" rel="noopener noreferrer"&gt;cbGenesis 1.0&lt;/a&gt;, a production-ready ColdBox HMVC starter template for BoxLang, and the first one designed from day one to be built &lt;em&gt;with&lt;/em&gt; an AI coding agent, not just &lt;em&gt;by&lt;/em&gt; one.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/wbiZTAPrYQs?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="Introducing cbGenesis"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;For twenty years, &lt;strong&gt;ColdBox&lt;/strong&gt; has been one of the most battle-tested HMVC frameworks in the CFML and BoxLang world. &lt;strong&gt;cbGenesis&lt;/strong&gt; takes that foundation and ships the part every team rebuilds by hand: authentication, permissions, security hardening, an admin panel, tests, and the guidance an AI agent needs to extend all of it correctly.&lt;/p&gt;</description></item><item><title>Adding RAG to a Jakarta EE 11 App With Only the JDK and Jakarta Specs</title><link>https://foojay.io/today/adding-rag-to-jakarta-ee-11-app/</link><pubDate>Wed, 07 Oct 2026 00:00:00 +0000</pubDate><guid>https://foojay.io/today/adding-rag-to-jakarta-ee-11-app/</guid><description>&lt;p&gt;The standard story about AI in the enterprise goes something like this. Your app needs AI, so you spin up a Python service. You add a vector database like Pinecone or Weaviate. You pick an orchestration framework. You now have two deployment pipelines, two languages, and two teams. The original Java monolith that handled your business logic just fine becomes one half of a distributed system that exists mostly to connect to the other half.&lt;/p&gt;</description></item><item><title>Green Build, Wrong Task: A Working Agreement for Java Teams Using AI Coding Agents</title><link>https://foojay.io/today/green-build-wrong-task-a-working-agreement-for-java-teams-using-ai-coding-agents/</link><pubDate>Wed, 07 Oct 2026 00:00:00 +0000</pubDate><guid>https://foojay.io/today/green-build-wrong-task-a-working-agreement-for-java-teams-using-ai-coding-agents/</guid><description>&lt;p&gt;You open a pull request. &lt;code&gt;./gradlew check&lt;/code&gt; is green, the diff is 400 lines, the description says &amp;ldquo;added tests as requested&amp;rdquo;. You scroll and see a dozen unit tests for one service class. What you asked for, in a two-line Jira comment, was end-to-end coverage of the checkout flow.&lt;/p&gt;&#10;&lt;p&gt;Nobody lied. The agent filled a gap in the request with the most likely reading and got to work. This is the first of three failure modes our team went through in a webinar on September 28. I am writing it up because the fixes turned out to be boring and mechanical, and they work with whatever agent your team has already installed.&lt;/p&gt;</description></item><item><title>AI-assisted genealogy, a follow-up</title><link>https://foojay.io/today/ai-assisted-genealogy-follow-up/</link><pubDate>Sun, 27 Sep 2026 00:00:00 +0000</pubDate><guid>https://foojay.io/today/ai-assisted-genealogy-follow-up/</guid><description>&lt;p&gt;I got a lot of feedback on my post &lt;a href="https://blog.frankel.ch/ai-assisted-genealogy/" target="_blank" rel="noopener noreferrer"&gt;AI-assisted genealogy&lt;/a&gt;, some good, some not so good. In any case, I felt the subject was interesting to a lot of people. Meanwhile, I continue working on my tree, and I have deepened my understanding of the subject. In this post, I want to share again.&lt;/p&gt;&#10;&lt;h2 id="trust-but-verify"&gt;Trust, but verify&lt;/h2&gt;&#10;&lt;p&gt;Let&amp;rsquo;s address the not-so-good feedback first. The gist of it was: AI can hallucinate. It&amp;rsquo;s true in theory: when you ask a question, it provides any answer. The pushback is much less valid when the answer is grounded in data.&lt;/p&gt;</description></item><item><title>One Database, Two Models: Building AI-Friendly Java Applications with MySQL JSON Duality Views</title><link>https://foojay.io/today/one-database-two-models-mysql-json-duality-views-java/</link><pubDate>Sat, 26 Sep 2026 00:00:00 +0000</pubDate><guid>https://foojay.io/today/one-database-two-models-mysql-json-duality-views-java/</guid><description>&lt;p&gt;MySQL can now hand your application a complete JSON document, such as an order with its customer and line items, while the data stays in normal relational tables. You can even send the document back and MySQL updates the right rows. I built a small Java app to see how far that goes. Reading got much simpler. Writing works too, but it comes with a few sharp edges you should know about before you use it.&lt;/p&gt;</description></item><item><title>BoxLang AI 3.4.0: Gateways, Human-in-the-Loop, and a Full Security Stack</title><link>https://foojay.io/today/boxlang-ai-340-gateways-hitl-security/</link><pubDate>Fri, 25 Sep 2026 00:00:00 +0000</pubDate><guid>https://foojay.io/today/boxlang-ai-340-gateways-hitl-security/</guid><description>&lt;p&gt;BoxLang AI 3.4.0 is a major release centered on a single theme: &lt;strong&gt;trust&lt;/strong&gt;. AI agents operating in real applications need ways to involve people in consequential decisions and manage potentially untrusted inputs. This release introduces gateways, a restructured Human-in-the-Loop subsystem with durable decisions, layered security controls, batched approvals, normalized provider reasoning, and broader AWS Bedrock support.&lt;/p&gt;&#10;&lt;p&gt;The sections below follow the original &lt;a href="https://www.ortussolutions.com/blog/boxlang-ai-340-gateways-human-in-the-loop-and-a-full-security-stack" target="_blank" rel="noopener noreferrer"&gt;BoxLang AI 3.4.0 release announcement&lt;/a&gt; and preserve &lt;strong&gt;all its code examples&lt;/strong&gt;. For the complete change log, see the &lt;a href="https://ai.ortusbooks.com/readme/release-history/3.4.0" target="_blank" rel="noopener noreferrer"&gt;BoxLang AI 3.4.0 release history&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>BoxLang 1.17.0 Released: Module Inception, CLI Checker, Jar Loading and much more!</title><link>https://foojay.io/today/boxlang-1-17-0-released-module-inception-cli-checker-jar-loading-and-much-more/</link><pubDate>Thu, 17 Sep 2026 20:20:32 +0000</pubDate><guid>https://foojay.io/today/boxlang-1-17-0-released-module-inception-cli-checker-jar-loading-and-much-more/</guid><description>&lt;p&gt;&lt;strong&gt;BoxLang has always been an extensible language. As of 1.17.0, it is a hierarchically extensible one.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://foojay.io/today/boxlang-1-17-0-released-module-inception-cli-checker-jar-loading-and-much-more/boxlang-v1.17.0-700x467.jpg" alt="" width="700" height="467" loading="lazy" decoding="async"&gt;&lt;/p&gt;&#10;&lt;p&gt;Modules can now contain other modules; &lt;strong&gt;aka Module Inception&lt;/strong&gt; . Recursively. To any depth. Each nested module gets its own class loader, chained to its parent&amp;rsquo;s, and BoxLang&amp;rsquo;s own &lt;code&gt;ModuleService&lt;/code&gt; discovers, registers, activates, and unloads that entire tree itself. No package manager. No build tool. No install ordering. Drop in one artifact and everything it depends on comes with it, already wired up and already isolated. &lt;strong&gt;Not only that, you can now package modules into a single jar.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Can You Explain the Diff Your AI Agent Just Wrote?</title><link>https://foojay.io/today/can-you-explain-the-diff-your-ai-agent-just-wrote/</link><pubDate>Tue, 15 Sep 2026 14:12:01 +0000</pubDate><guid>https://foojay.io/today/can-you-explain-the-diff-your-ai-agent-just-wrote/</guid><description>&lt;p&gt;Every Java developer has been in a code review where the question is simple: &amp;ldquo;What does this method do?&amp;rdquo;&lt;/p&gt;&#10;&lt;p&gt;The answer used to tell you something. The developer who wrote it would describe the intent, the edge cases, the trade-off they considered and rejected. The code review was a conversation about the invariant the code protects.&lt;/p&gt;&#10;&lt;p&gt;Now the answer is sometimes: &amp;ldquo;The agent wrote it.&amp;rdquo;&lt;/p&gt;&#10;&lt;p&gt;The code compiles. The tests pass. The linter is clean. Nobody in the review can explain the architecture of the PR, including the person who submitted it.&lt;/p&gt;</description></item><item><title>How I Built an AI Assistant for My Career with Java, Spring AI, and MongoDB</title><link>https://foojay.io/today/how-i-built-an-ai-assistant-for-my-career-with-java-spring-ai-and-mongodb/</link><pubDate>Tue, 15 Sep 2026 11:51:17 +0000</pubDate><guid>https://foojay.io/today/how-i-built-an-ai-assistant-for-my-career-with-java-spring-ai-and-mongodb/</guid><description>&lt;p&gt;The best way to learn a technology is by putting it into practice in a real system.&lt;/p&gt;&#10;&lt;p&gt;A few months ago, I decided to build a virtual assistant that could answer questions about my career, help people learn more about my articles, videos, talks, and projects, and even schedule a call on my calendar.&#10;&lt;img src="https://foojay.io/today/how-i-built-an-ai-assistant-for-my-career-with-java-spring-ai-and-mongodb/unnamed-16-1024x937.png" alt="" width="1024" height="937" loading="lazy" decoding="async"&gt;&lt;/p&gt;&#10;&lt;p&gt;At first, the idea was simple: give the assistant access to my content and let people ask questions about it. But as the project evolved, I realized that not every question should be handled in the same way. Some questions can be answered with a direct query to the database, while others benefit from semantic search. In other cases, the assistant may need to use a tool or execute multiple steps before reaching an answer.&lt;/p&gt;</description></item><item><title>One Base URL, Many Coding Agents: What an OpenAI-Compatible Gateway Looks Like From java.net.http</title><link>https://foojay.io/today/one-base-url-many-coding-agents-what-an-openai-compatible-gateway-looks-like-from-java-net-http/</link><pubDate>Wed, 09 Sep 2026 16:09:53 +0000</pubDate><guid>https://foojay.io/today/one-base-url-many-coding-agents-what-an-openai-compatible-gateway-looks-like-from-java-net-http/</guid><description>&lt;p&gt;Somewhere in every coding agent there is an HTTP client. Claude Code, Codex, Cursor, Cline, OpenCode: strip away the terminal UI or the editor pane and each of them serializes a conversation into JSON, POSTs it to a base URL with an API key in a header, and streams the answer back. The client owns the prompt assembly, the tool loop and the rendering; the model sits on the far side of that socket.&lt;/p&gt;</description></item><item><title>Debugging Is Invariant Discovery: What One Kafka Session Taught Us About AI Agents</title><link>https://foojay.io/today/debugging-is-invariant-discovery-what-one-kafka-session-taught-us-about-ai-agents/</link><pubDate>Tue, 08 Sep 2026 14:14:36 +0000</pubDate><guid>https://foojay.io/today/debugging-is-invariant-discovery-what-one-kafka-session-taught-us-about-ai-agents/</guid><description>&lt;p&gt;Every Java team has a sentence like this one somewhere:&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Any operation on a TID must go through the single asynchronous path and must not let TMS and EMV drift apart.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;It is the kind of rule that is obvious once said and invisible until then. A terminal ID (TID) in a payments system, an asynchronous pipeline that updates two downstream systems, and the requirement that the two never disagree. Nothing in the type system enforces a rule like that, and no single class owns it. Rules of this kind live between consumers, services and stores.&lt;/p&gt;</description></item><item><title>“Commit created” — but it isn’t: why the agent’s word needs external verification, and what the mistake costs</title><link>https://foojay.io/today/commit-created-no-no-no-what-the-the-agents-word-needs-external-verification-what-the-mistake-costs/</link><pubDate>Tue, 08 Sep 2026 08:54:03 +0000</pubDate><guid>https://foojay.io/today/commit-created-no-no-no-what-the-the-agents-word-needs-external-verification-what-the-mistake-costs/</guid><description>&lt;p&gt;&lt;em&gt;&lt;strong&gt;A detailed report reads like proof. The agent lists the files it touched, names the branch, quotes a commit hash, adds a test count and closes with &amp;ldquo;done&amp;rdquo;. The work has a shape. The shape looks right. You have six more tickets.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;The report is model output. The commit, if it exists, lives in .git. The file, if it exists, lives on disk. The build result lives in a process exit code and a run log. The chat window is none of those places, and it can only vouch for itself.&lt;/p&gt;</description></item><item><title>Build an AI Agent (From Scratch)</title><link>https://foojay.io/today/build-an-ai-agent-from-scratch/</link><pubDate>Mon, 07 Sep 2026 05:52:13 +0000</pubDate><guid>https://foojay.io/today/build-an-ai-agent-from-scratch/</guid><description>&lt;p&gt;This review is about &lt;a href="https://www.manning.com/books/build-an-ai-agent-from-scratch?utm_source=frankel&amp;amp;utm_medium=affiliate&amp;amp;utm_campaign=affiliate&amp;amp;a_aid=frankel" target="_blank" rel="noopener noreferrer"&gt;Build an AI Agent (From Scratch)&lt;/a&gt; by Jungjun Hur and Younghee Song from Manning.&lt;/p&gt;&#10;&lt;h2 id="facts"&gt;Facts&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;10 chapters&lt;/li&gt;&#10;&lt;li&gt;$29.29 (at the time of this writing)&lt;/li&gt;&#10;&lt;li&gt;315 pages&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="chapters"&gt;Chapters&lt;/h2&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Building your first LLM agent&#10;&lt;ol&gt;&#10;&lt;li&gt;What is an AI agent?&lt;/li&gt;&#10;&lt;li&gt;The brain of AI agents: LLMs&lt;/li&gt;&#10;&lt;li&gt;Enabling actions: Tool use&lt;/li&gt;&#10;&lt;li&gt;Implementing a basic ReAct agent&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;Developing advanced agent capabilities&#10;&lt;ol&gt;&#10;&lt;li&gt;Building knowledge bases with RAG&lt;/li&gt;&#10;&lt;li&gt;Adding memory to your agent&lt;/li&gt;&#10;&lt;li&gt;Planning and reflection for complex tasks&lt;/li&gt;&#10;&lt;li&gt;Empowering agents with code execution&lt;/li&gt;&#10;&lt;li&gt;Orchestrating multi-agent systems&lt;/li&gt;&#10;&lt;li&gt;Evaluating agents&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="pros-and-cons"&gt;Pros and cons&lt;/h2&gt;&#10;&lt;p&gt;At Manning, I consider the following two books to be references:&lt;/p&gt;</description></item><item><title>From Spec-Driven Development to Living Specifications in Java Projects</title><link>https://foojay.io/today/from-spec-driven-development-to-living-specifications-in-java-projects/</link><pubDate>Fri, 04 Sep 2026 05:51:45 +0000</pubDate><guid>https://foojay.io/today/from-spec-driven-development-to-living-specifications-in-java-projects/</guid><description>&lt;h2 id="from-spec-driven-development-to-living-specifications-in-java-projects"&gt;From Spec-Driven Development to Living Specifications in Java Projects&lt;/h2&gt;&#10;&lt;p&gt;Coding agents have changed the speed at which we can produce software. But producing code faster does not automatically mean producing better software.&lt;/p&gt;&#10;&lt;p&gt;As I started using agents more frequently in real-world software development, one question became increasingly important: &lt;strong&gt;how do we give an agent enough freedom to be useful without losing engineering intent?&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;Trying to control every line of code generated by an agent removes much of the value it can provide. At that point, it might simply be faster to write the code ourselves.&lt;/p&gt;</description></item><item><title>Building an Agentic Warehouse Management System — Part 3: Tools, Decisions, and Actions</title><link>https://foojay.io/today/building-an-agentic-warehouse-management-system-part-3-tools-decisions-and-actions/</link><pubDate>Thu, 03 Sep 2026 16:50:36 +0000</pubDate><guid>https://foojay.io/today/building-an-agentic-warehouse-management-system-part-3-tools-decisions-and-actions/</guid><description>&lt;p&gt;If you haven&amp;rsquo;t read the first two parts yet, I recommend starting with &lt;strong&gt;&lt;a href="https://foojay.io/today/building-an-agentic-warehouse-management-system-part-1-where-ai-agents-add-value/"&gt;Part 1: Where AI Agents Add Value&lt;/a&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;a href="https://foojay.io/today/building-an-agentic-warehouse-management-system-part-2-java-and-spring-ai/"&gt;Part 2: Designing and Planning the Agent&lt;/a&gt;&lt;/strong&gt;. There, we introduced the WMS scenario, discussed where an AI agent can add value, and built the first stages of the implementation with Java and Spring AI.&lt;/p&gt;&#10;&lt;p&gt;In this third and final part, we will build on the execution plan created in &lt;a href="https://foojay.io/today/building-an-agentic-warehouse-management-system-part-2-java-and-spring-ai/"&gt;Part 2&lt;/a&gt; and focus on the remaining stages of the agent workflow. We will see how each task is executed using controlled tools, how operational and business context is gathered, how the replenishment decision is made, and how the agent acts on that decision when necessary.&lt;/p&gt;</description></item><item><title>Building an Agentic Warehouse Management System — Part 2: Java and Spring AI</title><link>https://foojay.io/today/building-an-agentic-warehouse-management-system-part-2-java-and-spring-ai/</link><pubDate>Thu, 03 Sep 2026 16:39:59 +0000</pubDate><guid>https://foojay.io/today/building-an-agentic-warehouse-management-system-part-2-java-and-spring-ai/</guid><description>&lt;p&gt;If you arrived here without reading the first part, I recommend starting with &lt;strong&gt;&lt;a href="https://foojay.io/today/building-an-agentic-warehouse-management-system-part-1-where-ai-agents-add-value/"&gt;Agentic WMS — Part 1: Where AI Agents Add Value&lt;/a&gt;.&lt;/strong&gt; There, we introduced the WMS scenario, explored the replenishment problem, and discussed where an AI agent can add value without replacing deterministic application logic.&lt;/p&gt;&#10;&lt;p&gt;In this second part, we will move from the design to the first steps of the implementation.&lt;/p&gt;&#10;&lt;p&gt;We will look at how the agent is built with &lt;strong&gt;Java and Spring AI&lt;/strong&gt;, how its capabilities and boundaries are defined, how it is triggered by the WMS, and how the planner turns the agent&amp;rsquo;s goal into an execution plan.&lt;/p&gt;</description></item><item><title>Agentic WMS — Part 1: Where AI Agents Add Value</title><link>https://foojay.io/today/building-an-agentic-warehouse-management-system-part-1-where-ai-agents-add-value/</link><pubDate>Thu, 03 Sep 2026 16:23:14 +0000</pubDate><guid>https://foojay.io/today/building-an-agentic-warehouse-management-system-part-1-where-ai-agents-add-value/</guid><description>&lt;p&gt;I spent a large part of my career working in banking and logistics. In logistics, I spent more than eight years working across different stages of logistics systems, from development to implementation and production support.&lt;/p&gt;&#10;&lt;p&gt;That experience shaped the way I think about technology. Knowing a tool or framework is important, but what interests me most is understanding the business problem behind it and where technology can actually add value.&lt;/p&gt;</description></item><item><title>Did Your AI Agent Ever Run a Debugger? One JVM Bug, Two Agent Runs</title><link>https://foojay.io/today/did-your-ai-agent-run-the-debugger-one-jvm-bug-two-agent-runs/</link><pubDate>Thu, 03 Sep 2026 13:48:32 +0000</pubDate><guid>https://foojay.io/today/did-your-ai-agent-run-the-debugger-one-jvm-bug-two-agent-runs/</guid><description>&lt;p&gt;Java developers reach for the debugger without thinking about it. Set a breakpoint, run the failing test, look at the variables, then decide what to change.&lt;/p&gt;&#10;&lt;p&gt;Most AI coding agents I have watched skip that step. They read the stack trace, read the source, and propose a patch. The reasoning can look excellent and still be a guess about a program nobody ran.&lt;/p&gt;&#10;&lt;p&gt;I wanted to know what that guess costs. So I took one real JVM bug, one model, one prompt, and ran it twice with two debugging workflows. Here is what the two transcripts show.&lt;/p&gt;</description></item><item><title>AI-assisted genealogy</title><link>https://foojay.io/today/ai-assisted-genealogy/</link><pubDate>Mon, 31 Aug 2026 05:51:48 +0000</pubDate><guid>https://foojay.io/today/ai-assisted-genealogy/</guid><description>&lt;p&gt;My son recently came to me to brag about using AI to find our ancestors. While the results were correct, I didn&amp;rsquo;t learn anything new, as it stopped at my grandparents. I was never very interested in my genealogy, but I decided to see if AI would be a good tool for this. TL;DR: Yes, it is, and even more than that. In a little less than one month, I managed to gather more than 600 individuals and get back 12 generations in some branches.&lt;/p&gt;</description></item><item><title>What's New in the August 2026 Azul Payara Release?</title><link>https://foojay.io/today/whats-new-in-the-august-2026-azul-payara-release/</link><pubDate>Mon, 24 Aug 2026 15:36:28 +0000</pubDate><guid>https://foojay.io/today/whats-new-in-the-august-2026-azul-payara-release/</guid><description>&lt;p&gt;The August 2026 release brings Azul Payara Server and Micro 7.3.0, Azul Payara Community 7.2026.8, Azul Payara Server and Micro 6.41.0, Azul Payara Server and Micro 5.90.0, and Azul Payara Server and Micro 4.1.2.191.58.&lt;/p&gt;&#10;&lt;p&gt;The headline is in the Community edition. Azul Payara Community 7.2026.8 ships support for MicroProfile 7.1 and a first preview of Jakarta Agentic AI, the new vendor-neutral specification for building AI agents on Jakarta EE runtimes. For the Enterprise lines, this cycle adds gRPC support across the 7, 6, and 5 releases, and carries a security advisory patched across the 6, 5, and 4 lines, with two Jackson CVEs additionally closed on the 5 and 4 lines.&lt;/p&gt;</description></item><item><title>Introducing BoxLang AI Explorer: A Local Catalog for Every AI Pattern</title><link>https://foojay.io/today/introducing-boxlang-ai-explorer-a-local-catalog-for-every-ai-pattern/</link><pubDate>Tue, 18 Aug 2026 14:15:48 +0000</pubDate><guid>https://foojay.io/today/introducing-boxlang-ai-explorer-a-local-catalog-for-every-ai-pattern/</guid><description>&lt;p&gt;&lt;img src="https://foojay.io/today/introducing-boxlang-ai-explorer-a-local-catalog-for-every-ai-pattern/boxlang-explorer-700x394.png" alt="" width="700" height="394" loading="lazy" decoding="async"&gt;&lt;/p&gt;&#10;&lt;p&gt;Learning a new AI API usually means jumping between scattered documentation pages, guessing at imports, and copy-pasting code that may or may not still work. We wanted something better for BoxLang AI, so we built the &lt;strong&gt;BoxLang AI Explorer&lt;/strong&gt; : a local, browser-based catalog of runnable BoxLang AI examples, organized by category and difficulty, each with guidance, source code, and sample output. You can also try it online at &lt;a href="https://ai.boxlang.io/explorer/" target="_blank" rel="noopener noreferrer"&gt;https://ai.boxlang.io/explorer/&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Build Secure AI Chat Applications with BoxLang, RAG, Ollama, and Amazon Bedrock with Dan Card</title><link>https://foojay.io/today/build-secure-ai-chat-applications-with-boxlang-rag-ollama-and-amazon-bedrock-with-dan-card/</link><pubDate>Thu, 13 Aug 2026 14:52:13 +0000</pubDate><guid>https://foojay.io/today/build-secure-ai-chat-applications-with-boxlang-rag-ollama-and-amazon-bedrock-with-dan-card/</guid><description>&lt;p&gt;&lt;img src="https://foojay.io/today/build-secure-ai-chat-applications-with-boxlang-rag-ollama-and-amazon-bedrock-with-dan-card/dancardWorkshop-700x394.jpg" alt="" width="700" height="394" loading="lazy" decoding="async"&gt;&lt;/p&gt;&#10;&lt;h2 id="build-secure-ai-chat-applications-with-boxlang-rag-ollama-and-amazon-bedrock"&gt;Build Secure AI Chat Applications with BoxLang, RAG, Ollama, and Amazon Bedrock&lt;/h2&gt;&#10;&lt;p&gt;AI demos are everywhere. Building an AI-powered feature that can securely work with your documents, databases, and real application data is a very different challenge.&lt;/p&gt;&#10;&lt;p&gt;How do you give an AI model access to the right information without exposing sensitive data? Should you use a locally hosted model or a cloud service? How do you move beyond a basic chatbot and build something genuinely useful for your users or organization?&lt;/p&gt;</description></item><item><title>Jakarta Agentic AI Hits Its First Milestone</title><link>https://foojay.io/today/jakarta-agentic-ai-hits-its-first-milestone/</link><pubDate>Wed, 05 Aug 2026 10:43:12 +0000</pubDate><guid>https://foojay.io/today/jakarta-agentic-ai-hits-its-first-milestone/</guid><description>&lt;p&gt;&lt;a href="https://jakarta.ee/specifications/agentic-ai/1.0/" target="_blank" rel="noopener noreferrer"&gt;Jakarta Agentic AI&lt;/a&gt; just shipped its first deliverable: &lt;a href="https://central.sonatype.com/artifact/jakarta.agentic-ai/jakarta.agentic-ai-api/1.0.0-M1" target="_blank" rel="noopener noreferrer"&gt;version 1.0.0-M1 is live on Maven Central&lt;/a&gt; and &lt;a href="https://github.com/jakartaee/agentic-ai/releases/download/1.0.0-M1/jakarta-agentic-ai-1.0.0-M1.pdf" target="_blank" rel="noopener noreferrer"&gt;the draft 1.0 specification is out for review&lt;/a&gt;. The project now has a specific API surface that developers can look at, try out and give feedback on.&lt;/p&gt;&#10;&lt;h2 id="quick-recap---what-is-jakarta-agentic-ai"&gt;Quick recap - what is Jakarta Agentic AI?&lt;/h2&gt;&#10;&lt;p&gt;If you missed &lt;a href="https://www.azul.com/blog/announcing-the-jakarta-agentic-ai-project/" target="_blank" rel="noopener noreferrer"&gt;the original announcement,&lt;/a&gt; Jakarta Agentic AI is a new Eclipse Foundation project bringing vendor-neutral, standardized APIs for building AI agents to Jakarta EE runtimes. The goal is to do for agentic AI what Jakarta Servlet, Jakarta RESTful Web Services and Jakarta Batch did for their respective domains: give Java and Jakarta EE developers a consistent, portable programming model instead of forcing them to hand-roll agent orchestration or lock into a single vendor&amp;rsquo;s framework.&lt;/p&gt;</description></item><item><title>GitHub agentic workflows and Renovate</title><link>https://foojay.io/today/github-agentic-workflows-and-renovate/</link><pubDate>Mon, 03 Aug 2026 05:54:08 +0000</pubDate><guid>https://foojay.io/today/github-agentic-workflows-and-renovate/</guid><description>&lt;p&gt;I&amp;rsquo;ve been a big fan of Renovate for &lt;a href="https://blog.frankel.ch/renovate-alternative-dependabot/" target="_blank" rel="noopener noreferrer"&gt;a couple of years already&lt;/a&gt;. Renovate scans your repositories, detects outdated package versions, and opens pull requests to automatically bump them. It&amp;rsquo;s similar to Dependabot in that it keeps your dependencies up to date. If I had to compare them in one sentence, I&amp;rsquo;d say Renovate is less integrated in the GitHub ecosystem, but handles more ecosystems and, more importantly, is extensible. My current company is a happy Renovate user, and I already started to use it in some repositories.&lt;/p&gt;</description></item></channel></rss>