<?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>Mon, 21 Sep 2026 05:54:50 +0000</lastBuildDate><atom:link href="https://foojay.io/today/category/ai/index.xml" rel="self" type="application/rss+xml"/><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><item><title>How to Create a Spring Boot Fraud Scoring Service</title><link>https://foojay.io/today/how-to-create-a-spring-boot-fraud-scoring-service/</link><pubDate>Fri, 31 Jul 2026 08:45:43 +0000</pubDate><guid>https://foojay.io/today/how-to-create-a-spring-boot-fraud-scoring-service/</guid><description>&lt;p&gt;Most Java teams who want a machine learning model in production end up standing up a Python service and calling it over HTTP. That works, but it buys you, as a Java developer, a second runtime, a second deployment pipeline, a network hop on every prediction, and a team boundary that turns retraining into someone else&amp;rsquo;s ticket.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.deepnetts.com/" target="_blank" rel="noopener noreferrer"&gt;Deep Netts&lt;/a&gt; removes that split: it&amp;rsquo;s a pure-Java deep learning library, so the model trains in Java, serializes to a file, and loads back into your Spring Boot application as an ordinary bean. Predictions become in-process method calls measured in microseconds, with nothing extra to deploy, secure, or monitor.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>AI Found the Bugs. Who's Patching Your EOL Java Code?</title><link>https://foojay.io/today/ai-found-the-bugs-whos-patching-your-eol-java-code/</link><pubDate>Thu, 23 Jul 2026 15:26:53 +0000</pubDate><guid>https://foojay.io/today/ai-found-the-bugs-whos-patching-your-eol-java-code/</guid><description>&lt;p&gt;Earlier this year an AI model found a flaw in OpenBSD&amp;rsquo;s TCP stack that had been sitting there for 27 years. The same scanning run turned up a 16-year-old bug in FFmpeg&amp;rsquo;s H.264 code.&lt;/p&gt;&#10;&lt;h4 id="how-do-you-feel-about-ai-being-used-to-discover-bugs-in-open-source-across-the-board-and-at-scale"&gt;How do you feel about AI being used to discover bugs in open source, across the board and at scale?&lt;/h4&gt;&#10;&lt;p&gt;Because that&amp;rsquo;s what&amp;rsquo;s happening. It&amp;rsquo;s tough enough dealing with machine-speed vulnerability discovery in code that has active maintainers. What about all the code with no friendly pair of safe hands?&lt;/p&gt;</description></item><item><title>I Asked GitHub Copilot to Profile a Java App. It Found a Bug in My Heap Sizing, and Offered to Fix It</title><link>https://foojay.io/today/i-asked-github-copilot-to-profile-a-java-app-it-found-a-bug-in-my-heap-sizing-and-offered-to-fix-it/</link><pubDate>Tue, 14 Jul 2026 14:42:11 +0000</pubDate><guid>https://foojay.io/today/i-asked-github-copilot-to-profile-a-java-app-it-found-a-bug-in-my-heap-sizing-and-offered-to-fix-it/</guid><description>&lt;p&gt;I built an extension to collapse the entire loop of running and measuring the performance of Java workloads, so it can be used within a place some developers are starting to consider their new &amp;ldquo;development environment&amp;rdquo; in the agentic AI era: the &lt;a href="https://github.com/features/ai/github-app" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;GitHub Copilot app&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h2 id="the-idea-copilot-driven-profiling"&gt;The idea: Copilot-driven profiling&lt;/h2&gt;&#10;&lt;p&gt;This extension is called JVM Pulse, and this is a walkthrough of one real run. JVM Pulse is a canvas extension for the GitHub Copilot app. It doesn&amp;rsquo;t hard-code how to build or run Java projects and it doesn&amp;rsquo;t need the user to be specific either. You click Run analysis, and Copilot does the project-specific work: it detects your build tool and JDK, writes or compiles a representative workload, and launches it with the right flags: unified GC logging and a JFR recording with settings=profile.&lt;/p&gt;</description></item><item><title>Building AI Systems with MongoDB: Implementing the Planning Pattern</title><link>https://foojay.io/today/building-ai-systems-with-mongodb-implementing-the-planning-pattern/</link><pubDate>Thu, 02 Jul 2026 10:00:00 +0000</pubDate><guid>https://foojay.io/today/building-ai-systems-with-mongodb-implementing-the-planning-pattern/</guid><description>&lt;p&gt;Artificial Intelligence has swiftly evolved from a niche research topic to a technology that impacts nearly every aspect of the software industry. Developers now use AI to generate code, review pull requests, create documentation, and accelerate workflows through methods like vibe coding and specification-driven development. While these applications position AI as an engineering tool, a new trend is emerging: integrating AI directly into business workflows within applications.&lt;/p&gt;&#10;&lt;p&gt;This shift offers new challenges for software architects and engineers. Traditional applications rely on deterministic flows, where execution paths are explicitly defined by methods, conditions, loops, and business rules. In contrast, machine learning systems can make decisions during execution, select actions, and adjust dynamically based on context and available information. Architects must therefore design systems that balance the predictability of conventional software with the flexibility of AI-powered reasoning. The Planning Pattern is an effective approach for uniting these domains. Instead of having an LLM address a complex objective in a single step, this pattern breaks the goal into smaller, feasible tasks that interact with deterministic code, external services, and data sources. This creates a more reliable and observable path toward autonomous AI applications.&lt;/p&gt;</description></item><item><title>You’re invited to IntelliJ IDEA Conf 2026!</title><link>https://foojay.io/today/youre-invited-to-intellij-idea-conf-2026/</link><pubDate>Mon, 29 Jun 2026 18:35:08 +0000</pubDate><guid>https://foojay.io/today/youre-invited-to-intellij-idea-conf-2026/</guid><description>&lt;p&gt;&lt;strong&gt;We are excited to invite you to IntelliJ IDEA Conf 2026, a free virtual event on September 8-9, 2026.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;IntelliJ IDEA Conf is a celebration of the developer community, bringing together professionals who strive for excellence in software development. Join us for this free, live online conference and learn from industry leaders and experts on September 8-9, 2026.&lt;/p&gt;&#10;&lt;p&gt;You&amp;rsquo;ll be able to learn about a broad range of topics relevant to modern Java and Kotlin development, including language evolution, enterprise Java, Spring-based applications, build tooling, containerized workflows, JVM performance, and data access technologies. For more details, see the agenda below.&lt;/p&gt;</description></item><item><title>Building an AI-Powered Operations Assistant with Spring AI and MongoDB Atlas — Part 3: Stateful Workflows and Human-in-the-Loop</title><link>https://foojay.io/today/building-an-ai-powered-operations-assistant-with-spring-ai-and-mongodb-atlas-part-3-stateful-workflows-and-human-in-the-loop/</link><pubDate>Mon, 29 Jun 2026 09:40:40 +0000</pubDate><guid>https://foojay.io/today/building-an-ai-powered-operations-assistant-with-spring-ai-and-mongodb-atlas-part-3-stateful-workflows-and-human-in-the-loop/</guid><description>&lt;p&gt;This is the third and final article in the series. &lt;a href="https://foojay.io/today/building-an-ai-powered-operations-assistant-with-spring-ai-and-mongodb-atlas-part-1-rag-foundation/"&gt;Part 1&lt;/a&gt; covered the RAG foundation — loading runbooks into a vector store and grounding model answers in real documentation. &lt;a href="https://foojay.io/today/building-an-ai-powered-operations-assistant-with-spring-ai-and-mongodb-atlas-part-2-conversational-memory/"&gt;Part 2&lt;/a&gt; added short-term and long-term conversational memory. This article introduces stateful workflow checkpointing, tool calls, and a pause/resume mechanism that lets multi-step investigations survive session boundaries.&lt;/p&gt;&#10;&lt;h2 id="the-remaining-gap"&gt;The Remaining Gap&lt;/h2&gt;&#10;&lt;p&gt;Where were we? At the end of &lt;a href="https://foojay.io/today/building-an-ai-powered-operations-assistant-with-spring-ai-and-mongodb-atlas-part-2-conversational-memory/"&gt;Part 2&lt;/a&gt; of our tutorial, we have an assistant capable of sustaining a conversation consisting of multiple exchanges and remembering the information exchanged across multiple sessions. For example, an operator can ask multiple questions regarding a CPU spike alert and will receive responses from the assistant that build upon one another, taking into account their preferences or past choices. In fact, across all sessions, the assistant will remember when the operator expressed a preference for using Helm charts for rollback operations and the fact that the payments service runs on a Kubernetes infrastructure consisting of 16 pods.&lt;/p&gt;</description></item><item><title>AI-Assisted Unused &amp; Dead Code Removal</title><link>https://foojay.io/today/ai-assisted-unused-dead-code-removal/</link><pubDate>Sun, 28 Jun 2026 07:19:42 +0000</pubDate><guid>https://foojay.io/today/ai-assisted-unused-dead-code-removal/</guid><description>&lt;h2 id="why-your-codebase-is-forcing-ai-to-underperform-and-what-to-do-about-it"&gt;Why Your Codebase Is Forcing AI to Underperform, and What to Do About It&lt;/h2&gt;&#10;&lt;figure class="alignleft size-large is-resized"&gt;&#10; &lt;img src="https://foojay.io/today/ai-assisted-unused-dead-code-removal/ai-assisted-dead-code-removal-1024x576.avif" alt="" width="1024" height="576" style="width:250px" loading="lazy" class="is-zoomable"&gt;&lt;/figure&gt;&#10;&#10;&lt;p&gt;Your AI coding assistant is only as good as the codebase it works on. If your Java application carries years of dead &amp;amp; unused code, and most do, the AI spends its reasoning budget on code that nobody runs. The result is more hallucinations, worse suggestions, and higher token costs. Here&amp;rsquo;s what to do about it.&lt;/p&gt;</description></item><item><title>Systematic AI Coding: My Takeaways from the Eclipse Foundation Workshop in Brussels</title><link>https://foojay.io/today/systematic-ai-coding-my-takeaways-from-the-eclipse-foundation-workshop-in-brussels/</link><pubDate>Tue, 23 Jun 2026 19:48:42 +0000</pubDate><guid>https://foojay.io/today/systematic-ai-coding-my-takeaways-from-the-eclipse-foundation-workshop-in-brussels/</guid><description>&lt;p&gt;Most developers using AI tools are still guessing. The Eclipse Foundation&amp;rsquo;s first &lt;a href="https://aieclipse.org/ai-workshop/" target="_blank" rel="noopener noreferrer"&gt;AI Coding Workshop&lt;/a&gt; in Brussels was built to change that. It&amp;rsquo;s a brand new format they launched in Brussels, which makes sense: most of the Eclipse event team is based there. They plan to bring it to more cities from here, so keep an eye out if you want to attend such a workshop in the future. They offered 10 free tickets to share with the BeJUG and Foojay community. And in all honesty, I used one for myself. &lt;a href="https://www.linkedin.com/in/jonas-helming-76303b28/" target="_blank" rel="noopener noreferrer"&gt;Jonas Helming&lt;/a&gt; from &lt;a href="https://eclipsesource.com/" target="_blank" rel="noopener noreferrer"&gt;EclipseSource&lt;/a&gt; led the workshop, with a fun quiz hosted by &lt;a href="https://www.linkedin.com/in/tfroment/" target="_blank" rel="noopener noreferrer"&gt;Thomas Froment&lt;/a&gt; in the afternoon. Here&amp;rsquo;s what I took away.&lt;/p&gt;</description></item><item><title>Foojay Podcast #99: Testing the Untestable: LLM Security for Java Developers with Tiberius</title><link>https://foojay.io/today/foojay-podcast-99/</link><pubDate>Mon, 22 Jun 2026 06:54:00 +0000</pubDate><guid>https://foojay.io/today/foojay-podcast-99/</guid><description>&lt;p&gt;Your AI-powered Java application is live in production. But have you actually tested whether it can be jailbroken or manipulated into leaking data it should never reveal? In this episode, Iryna Dohndorf walks us through Tiberius, an open-source security testing library for LLM applications in Java, and explains why everything you know about unit testing needs a rethink when non-determinism is part of the design.&lt;/p&gt;&#10;&lt;h2 id="youtube"&gt;YouTube&lt;/h2&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/7bBcTzeevEo?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;h2 id="podcast-apps"&gt;Podcast Apps&lt;/h2&gt;&#10;&lt;p&gt;You can listen and subscribe to the Foojay Podcast on:&lt;/p&gt;</description></item><item><title>Building an AI-Powered Operations Assistant with Spring AI and MongoDB Atlas — Part 2: Conversational Memory</title><link>https://foojay.io/today/building-an-ai-powered-operations-assistant-with-spring-ai-and-mongodb-atlas-part-2-conversational-memory/</link><pubDate>Wed, 10 Jun 2026 19:23:46 +0000</pubDate><guid>https://foojay.io/today/building-an-ai-powered-operations-assistant-with-spring-ai-and-mongodb-atlas-part-2-conversational-memory/</guid><description>&lt;p&gt;This is the second article in a three-part series. Part 1 covered the RAG foundation — loading runbooks into a vector store and wiring them to a language model. Part 3 will introduce stateful workflow checkpointing with pause and resume.&lt;/p&gt;&#10;&lt;h2 id="the-problem-with-stateless-chat"&gt;The Problem with Stateless Chat&lt;/h2&gt;&#10;&lt;p&gt;In the first part of the series, we successfully created a chat interface where an operator can ask questions and receive answers based on the actual content of the runbooks they have uploaded and embedded in the system. For example, they can ask in the chat, &amp;ldquo;&lt;em&gt;What should I check when my server&amp;rsquo;s CPU usage exceeds 80%?&lt;/em&gt;&amp;rdquo; and the assistant retrieves the relevant sections from the various runbooks and assembles a coherent and concrete response.&lt;/p&gt;</description></item><item><title>Why Spring Teams Don't Need a Second Runtime for AI Agents</title><link>https://foojay.io/today/spring-ai-agents-no-second-runtime/</link><pubDate>Wed, 10 Jun 2026 19:02:58 +0000</pubDate><guid>https://foojay.io/today/spring-ai-agents-no-second-runtime/</guid><description>&lt;p&gt;&lt;img src="https://foojay.io/today/spring-ai-agents-no-second-runtime/hero-700x350.jpg" alt="" width="700" height="350" loading="lazy" decoding="async"&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;em&gt;A JVM-native runtime for building, governing and operating AI agents on existing Spring infrastructure.&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;Every time a Spring team decides to add AI agents to a production system, the story tends to follow the same arc. A few prototypes are built, several frameworks are evaluated, and then a new reality emerges: the project is no longer just about adding agents. It is about operating a new platform.&lt;/p&gt;&#10;&lt;p&gt;With that new runtime come new deployment pipelines, new monitoring mechanisms, additional security reviews, and new operational responsibilities.&lt;/p&gt;</description></item><item><title>"Agentic" Was Everywhere at Money20/20 Amsterdam</title><link>https://foojay.io/today/agentic-was-everywhere-at-money20-20-amsterdam-once-i-started-looking/</link><pubDate>Fri, 05 Jun 2026 08:55:48 +0000</pubDate><guid>https://foojay.io/today/agentic-was-everywhere-at-money20-20-amsterdam-once-i-started-looking/</guid><description>&lt;p&gt;&lt;strong&gt;I walked the floor at &lt;a href="https://www.money2020.com/" target="_blank" rel="noopener noreferrer"&gt;Money20/20&lt;/a&gt; in Amsterdam with a simple little mission: count the first ten vendor booths using &amp;ldquo;AI,&amp;rdquo; &amp;ldquo;agent,&amp;rdquo; or &amp;ldquo;agentic&amp;rdquo; in their pitch.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;My first impression was that this would be hard. Hundreds of organizations, and the buzzwords felt oddly absent — payments, core banking, compliance, the usual fintech furniture, but not the wall-to-wall &amp;ldquo;agentic everything&amp;rdquo; I&amp;rsquo;d braced for. I jotted down my first ten and thought: &lt;em&gt;&lt;strong&gt;huh, AI is barely here&lt;/strong&gt;.&lt;/em&gt;&lt;/p&gt;</description></item></channel></rss>