<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[dynamicallyblunttech]]></title><description><![CDATA[dynamicallyblunttech]]></description><link>https://www.dynamicallyblunttech.com/blog</link><generator>RSS for Node</generator><lastBuildDate>Mon, 13 Apr 2026 21:36:50 GMT</lastBuildDate><atom:link href="https://www.dynamicallyblunttech.com/blog-feed.xml" rel="self" type="application/rss+xml"/><item><title><![CDATA[CodeForgeAI: Building a 5-Agent Multi-LLM Pipeline That Writes, Reviews, Tests, and Deploys Java Code — Entirely Locally]]></title><description><![CDATA[Multi Agent Framework TL;DR  — CodeForgeAI is a Spring Boot + Vaadin application that orchestrates five specialised AI agents (Business Analyst → Code Generator → Code Reviewer → Test Generator → Test Executor) to transform a PDF requirements document into reviewed, tested, and deployed Java code — all running on-premise on a developer laptop, with no cloud LLM calls, no data leaving the machine. Table of Contents Motivation &#38; Goals Tech Stack End-to-End Pipeline Architecture The 5 Agents —...]]></description><link>https://www.dynamicallyblunttech.com/post/codeforgeai-building-a-5-agent-multi-llm-pipeline-that-writes-reviews-tests-and-deploys-java-cod</link><guid isPermaLink="false">69db39cc75afb0779a73df4e</guid><category><![CDATA[Java]]></category><category><![CDATA[Spring AI]]></category><category><![CDATA[AI]]></category><category><![CDATA[Kafka]]></category><pubDate>Sun, 12 Apr 2026 08:01:38 GMT</pubDate><enclosure url="https://static.wixstatic.com/media/df024c_e2b0b9bc236d42a7adfe1e52fcfaf000~mv2.png/v1/fit/w_1000,h_1000,al_c,q_80/file.png" length="0" type="image/png"/><dc:creator>Ankit Agrahari</dc:creator></item><item><title><![CDATA[Building DevOps Intelligence using MCP Server with Spring AI: Tools, Challenges &#38; Solutions]]></title><description><![CDATA[Devops Intelligence Today, I successfully built and deployed a Model Context Protocol (MCP) server  using Spring AI that exposes real DevOps infrastructure through intelligent tools. But the journey? Let's just say it involved more debugging than coding. In this post, I'll walk you through: What we built (the DevOps Intelligence Platform) The tools we created (K8s, Prometheus, Logs, Deployments) Every challenge we faced (and how we solved them) Why Spring AI 2.0.0-M2 is the sweet spot (M3 has...]]></description><link>https://www.dynamicallyblunttech.com/post/building-devops-intelligence-using-mcp-server-with-spring-ai-tools-challenges-solutions</link><guid isPermaLink="false">69b4fb18d1b1d9cdf2151d60</guid><category><![CDATA[Spring]]></category><category><![CDATA[Spring AI]]></category><category><![CDATA[Java]]></category><category><![CDATA[AI]]></category><category><![CDATA[Kubernetes]]></category><pubDate>Sat, 14 Mar 2026 07:41:46 GMT</pubDate><enclosure url="https://static.wixstatic.com/media/df024c_f14bf2fc595446eebc628214a8897012~mv2.png/v1/fit/w_1000,h_1000,al_c,q_80/file.png" length="0" type="image/png"/><dc:creator>Ankit Agrahari</dc:creator></item><item><title><![CDATA[Production Monitoring: You Can't Fix What You Can't See]]></title><description><![CDATA[Previous parts: Part 1: Kafka Producer  | Part 2: Consumer + DLQ  | Part 3: Real-Time Aggregations  | Part 4: Docker + Kubernetes Infographics - NotebookLM You know that feeling when your app is running in production and someone asks "Is everything okay?" and you respond with "...I think so?" Yeah, that's not good enough. After deploying StreamMetrics to Kubernetes with a 3-node KRaft Kafka cluster, dockerized microservices, and validated 10K events/sec throughput, I realized I was flying...]]></description><link>https://www.dynamicallyblunttech.com/post/production-monitoring-you-can-t-fix-what-you-can-t-see</link><guid isPermaLink="false">69ab9a9db5dd0587334aa989</guid><category><![CDATA[Java]]></category><category><![CDATA[StreamMetrics]]></category><category><![CDATA[Kafka]]></category><category><![CDATA[Kubernetes]]></category><pubDate>Sat, 07 Mar 2026 07:41:02 GMT</pubDate><enclosure url="https://static.wixstatic.com/media/df024c_1681b786e27a425f87f9aacbc0149505~mv2.png/v1/fit/w_1000,h_1000,al_c,q_80/file.png" length="0" type="image/png"/><dc:creator>Ankit Agrahari</dc:creator></item><item><title><![CDATA[From Localhost to Kubernetes: Deploying StreamMetrics at Scale]]></title><description><![CDATA[Part 4 of the StreamMetrics Series Previous parts: Part 1: Kafka Producer  | Part 2: Consumer + DLQ  | Part 3: Real-Time Aggregations Streammetric Bottleneck Explainer by NotebookLM Love how after building something locally, you think " okay, it works on my machine! " and then reality hits when you try to deploy it. Docker says " works on my machine " is not an excuse anymore, and Kubernetes says " hold my beer, let's make it production-ready. " This is the tale of taking StreamMetrics from...]]></description><link>https://www.dynamicallyblunttech.com/post/from-localhost-to-kubernetes-deploying-streammetrics-at-scale</link><guid isPermaLink="false">69a4f36860298c02e5bdea8f</guid><category><![CDATA[StreamMetrics]]></category><category><![CDATA[Spring]]></category><category><![CDATA[Java]]></category><category><![CDATA[Kafka]]></category><pubDate>Mon, 02 Mar 2026 04:40:35 GMT</pubDate><enclosure url="http://youtu.be/n893o-1tN6E" length="0" type="video"/><dc:creator>Ankit Agrahari</dc:creator></item><item><title><![CDATA[Real-Time Aggregations with Kafka Streams at 10K Events/Sec]]></title><description><![CDATA[Part 3 of the StreamMetrics Series Previous parts: Part 1: Kafka Producer  | Part 2: Consumer + DLQ  | Part 4: From Localhost to Kubernetes Building production-grade streaming analytics: windows, state stores, and performance validation Overview In Parts 1 and 2, we built a Kafka producer and consumer that process individual events reliably. But processing 10,000 raw events per second creates a new problem: How do you extract insights from that fire hose of data? Enter Kafka Streams - a...]]></description><link>https://www.dynamicallyblunttech.com/post/real-time-aggregations-with-kafka-streams-at-10k-events-sec</link><guid isPermaLink="false">6998a7acf63bd550f09f8fc0</guid><category><![CDATA[StreamMetrics]]></category><category><![CDATA[Spring]]></category><category><![CDATA[Java]]></category><category><![CDATA[Kafka]]></category><pubDate>Fri, 20 Feb 2026 20:02:03 GMT</pubDate><enclosure url="https://static.wixstatic.com/media/df024c_3310fdf1735b4321b32a2da999c07837~mv2.png/v1/fit/w_780,h_1000,al_c,q_80/file.png" length="0" type="image/png"/><dc:creator>Ankit Agrahari</dc:creator></item><item><title><![CDATA[Building Production-Grade Apache Kafka Consumer Patterns]]></title><description><![CDATA[Part 2 of the StreamMetrics Series Previous parts: Part 1: Kafka Producer  | Part 3: Real-time Aggregation  | Part 4: From Localhost  to Kubernetes A deep-dive into manual offset management, dead letter queues, and observability with Spring Boot + Apache Kafka. This is part 2 of the series Stream Metrics application. In Part 1  we built the producer, today we add the consumer. Why This Matters Most tutorials show you how to build a Kafka consumer. They show you @KafkaListener, they show you...]]></description><link>https://www.dynamicallyblunttech.com/post/building-production-grade-kafka-consumer-patterns</link><guid isPermaLink="false">699513e831440415cc69bd8c</guid><category><![CDATA[Spring]]></category><category><![CDATA[Java]]></category><category><![CDATA[Kafka]]></category><category><![CDATA[StreamMetrics]]></category><pubDate>Wed, 18 Feb 2026 05:25:25 GMT</pubDate><enclosure url="https://static.wixstatic.com/media/df024c_c2c2fee99fa24ba88276633124e8fcde~mv2.png/v1/fit/w_1000,h_696,al_c,q_80/file.png" length="0" type="image/png"/><dc:creator>Ankit Agrahari</dc:creator></item><item><title><![CDATA[Building a Production Kafka Producer]]></title><description><![CDATA[Part 1 of the StreamMetrics Series Previous parts: Part 2: Consumer + DLQ  | Part 3: Real-Time Aggregations  | Part 4: From Localhost  to Kubernetes Love how it rhymes "Production Kafka Producer". Here's to coding in an era of AI Agents. They suggest and are confident that this time it will work, but then this cluster has its own plan, and it starts misbehaving -- sometimes listens, and on others, feels cornered by his other siblings. This is the Tale  of making the brothers listen and show...]]></description><link>https://www.dynamicallyblunttech.com/post/building-a-production-kafka-producer</link><guid isPermaLink="false">69926a976afbe985b7a169f5</guid><category><![CDATA[Spring]]></category><category><![CDATA[Java]]></category><category><![CDATA[Kafka]]></category><category><![CDATA[StreamMetrics]]></category><pubDate>Mon, 16 Feb 2026 03:00:21 GMT</pubDate><enclosure url="https://static.wixstatic.com/media/df024c_783f5ffba5d14152bd74513adff527fc~mv2.png/v1/fit/w_554,h_611,al_c,q_80/file.png" length="0" type="image/png"/><dc:creator>Ankit Agrahari</dc:creator></item><item><title><![CDATA[Building an AI Tutor with Spring AI, Ollama, and Vaadin]]></title><description><![CDATA[AI Tutor  is a web application that uses Spring Boot  and Spring AI  on the backend, an Ollama -hosted LLM (e.g. Google’s Gemma3) for natural language understanding, and Vaadin  for the rich web UI.  Its core innovation is a Retrieval-Augmented Generation (RAG) pipeline: when the user uploads course materials (PDFs, text, etc.), the app splits them into chunks, creates vector embeddings, and stores these in a PGVector -enabled PostgreSQL database.  At chat time, similar chunks are retrieved...]]></description><link>https://www.dynamicallyblunttech.com/post/building-an-ai-tutor-with-spring-ai-ollama-and-vaadin</link><guid isPermaLink="false">69635828cca849701e8db1b9</guid><category><![CDATA[Spring AI]]></category><pubDate>Sun, 11 Jan 2026 12:44:56 GMT</pubDate><enclosure url="https://static.wixstatic.com/media/df024c_5103f65f9d0f4f8b8dd6923490ebe28f~mv2.png/v1/fit/w_1000,h_768,al_c,q_80/file.png" length="0" type="image/png"/><dc:creator>Ankit Agrahari</dc:creator></item><item><title><![CDATA[Morphous AI: Building Multi-Modal AI Workflows with Spring Boot and Vaadin]]></title><description><![CDATA[Multi-modal AI workflows are becoming essential for modern backend systems. They allow applications to process and generate different types of data—text, images, audio—within a unified framework. This capability opens new possibilities for richer user experiences and more intelligent automation. The MorphousAI project, built with Spring Boot, Vaadin, and Spring AI, offers a practical example of how to implement such workflows in a backend-first Java environment. This article explores...]]></description><link>https://www.dynamicallyblunttech.com/post/morphous-ai-building-multi-modal-ai-workflows-with-spring-boot-and-vaadin</link><guid isPermaLink="false">69427abc7aecebf9ca3f639b</guid><category><![CDATA[Spring AI]]></category><category><![CDATA[AI]]></category><pubDate>Wed, 17 Dec 2025 10:09:17 GMT</pubDate><enclosure url="https://static.wixstatic.com/media/df024c_6d4e6f7f58694735bc29fa7499a40821~mv2.png/v1/fit/w_1000,h_768,al_c,q_80/file.png" length="0" type="image/png"/><dc:creator>Ankit Agrahari</dc:creator></item><item><title><![CDATA[Building the Foundation: APIs, Prompts, and First Runs]]></title><description><![CDATA[In Part 1  of this series, we introduced the Smart DevOps Assistant (SDA)  — an AI-powered helper that reviews pull requests, generates...]]></description><link>https://www.dynamicallyblunttech.com/post/building-the-foundation-apis-prompts-and-first-runs</link><guid isPermaLink="false">68c755a59c95827cb917a13c</guid><category><![CDATA[Spring AI]]></category><category><![CDATA[AI]]></category><pubDate>Sat, 27 Sep 2025 05:51:05 GMT</pubDate><enclosure url="https://static.wixstatic.com/media/df024c_2190cdd1a6a2492481ba54e64560921e~mv2.png/v1/fit/w_1000,h_1000,al_c,q_80/file.png" length="0" type="image/png"/><dc:creator>Ankit Agrahari</dc:creator></item><item><title><![CDATA[Meet Smart Devops Assistant: Vision, Stack and Journey so far]]></title><description><![CDATA[PRs that review themselves. Tests that write themselves. Stand-ups that summarise themselves. Say hello to Smart DevOps Assistant (SDA)...]]></description><link>https://www.dynamicallyblunttech.com/post/meet-smart-devops-assistant-vision-stack-and-journey-so-far</link><guid isPermaLink="false">68aac46ae0731e332667a6fc</guid><category><![CDATA[Spring AI]]></category><category><![CDATA[Java]]></category><category><![CDATA[AI]]></category><pubDate>Wed, 27 Aug 2025 07:03:42 GMT</pubDate><enclosure url="https://static.wixstatic.com/media/df024c_3d9beee05bb34ba18a65da736358c037~mv2.png/v1/fit/w_1000,h_621,al_c,q_80/file.png" length="0" type="image/png"/><dc:creator>Ankit Agrahari</dc:creator></item><item><title><![CDATA[Chatbot using Spring AI and OpenAI]]></title><description><![CDATA[In the previous post about utilizing Spring AI with Ollama  and employing Docker Model Runner  to execute AI models locally, this post...]]></description><link>https://www.dynamicallyblunttech.com/post/chatbot-using-spring-ai-and-openai</link><guid isPermaLink="false">68206e052d8811f07a2c4588</guid><category><![CDATA[Spring AI]]></category><category><![CDATA[AI]]></category><pubDate>Sun, 11 May 2025 10:53:21 GMT</pubDate><enclosure url="https://static.wixstatic.com/media/df024c_c62e7dc6cc2040be9ac8ce6da1991841~mv2.jpg/v1/fit/w_1000,h_1000,al_c,q_80/file.png" length="0" type="image/png"/><dc:creator>Ankit Agrahari</dc:creator></item><item><title><![CDATA[Reactive Programming in Java with Spring (AI Generated)]]></title><description><![CDATA[Generative AI Harnessing the power of reactive programming in Java opens up endless opportunities for crafting responsive, resilient...]]></description><link>https://www.dynamicallyblunttech.com/post/reactive-programming-in-java-with-spring-ai-generated</link><guid isPermaLink="false">6818eb8d1ad005b31715590b</guid><category><![CDATA[Spring]]></category><category><![CDATA[AI]]></category><pubDate>Thu, 08 May 2025 18:50:08 GMT</pubDate><enclosure url="https://static.wixstatic.com/media/df024c_bc7e5bec60eb4de5be5cb3ffb0144337~mv2.png/v1/fit/w_1000,h_768,al_c,q_80/file.png" length="0" type="image/png"/><dc:creator>Ankit Agrahari</dc:creator></item><item><title><![CDATA[Docker Desktop Model Runner]]></title><description><![CDATA[In today's rapidly evolving tech landscape, the availability of diverse AI models for everyday users marks a significant shift in how we...]]></description><link>https://www.dynamicallyblunttech.com/post/docker-desktop-model-runner</link><guid isPermaLink="false">68174674f0457602a0faecd4</guid><category><![CDATA[AI]]></category><pubDate>Sun, 04 May 2025 11:39:13 GMT</pubDate><enclosure url="https://static.wixstatic.com/media/df024c_01c95619b9114c40930c5673d29a2457~mv2.jpg/v1/fit/w_1000,h_1000,al_c,q_80/file.png" length="0" type="image/png"/><dc:creator>Ankit Agrahari</dc:creator></item><item><title><![CDATA[Spring AI with Ollama ]]></title><description><![CDATA[Spring AI with Ollama]]></description><link>https://www.dynamicallyblunttech.com/post/spring-ai-with-ollama</link><guid isPermaLink="false">68146ae8f547f5de52628db7</guid><category><![CDATA[Spring]]></category><category><![CDATA[Spring AI]]></category><pubDate>Sat, 03 May 2025 15:28:01 GMT</pubDate><enclosure url="https://static.wixstatic.com/media/df024c_3cfcbb1f5c1447f98adedda2ff38bbdc~mv2.jpg/v1/fit/w_1000,h_1000,al_c,q_80/file.png" length="0" type="image/png"/><dc:creator>Ankit Agrahari</dc:creator></item><item><title><![CDATA[Aspect Programming in Spring - Logging]]></title><description><![CDATA[Spring provides a simple and powerful way of writing custom wrappers function which can be executed around a range of methods....]]></description><link>https://www.dynamicallyblunttech.com/post/aspect-programming-in-spring-logging</link><guid isPermaLink="false">653b28dcefab77cf32bb7049</guid><category><![CDATA[Spring]]></category><pubDate>Fri, 27 Oct 2023 07:21:17 GMT</pubDate><enclosure url="https://static.wixstatic.com/media/df024c_e3fc5355a244409db90ce2a8b1beafd9~mv2.png/v1/fit/w_1000,h_1000,al_c,q_80/file.png" length="0" type="image/png"/><dc:creator>Ankit Agrahari</dc:creator></item><item><title><![CDATA[Externalize Spring Boot Configuration]]></title><description><![CDATA[In this post, we will discuss on fetching the Spring boot configuration values from outside the application jar file. We will discuss on...]]></description><link>https://www.dynamicallyblunttech.com/post/externalize-spring-boot-configuration</link><guid isPermaLink="false">63294215fe80a690354ed26a</guid><category><![CDATA[Java]]></category><category><![CDATA[Spring]]></category><pubDate>Tue, 20 Sep 2022 07:15:22 GMT</pubDate><enclosure url="https://static.wixstatic.com/media/df024c_89158371d37b4e4a93bbda5b54eb02da~mv2.jpg/v1/fit/w_1000,h_1000,al_c,q_80/file.png" length="0" type="image/png"/><dc:creator>Ankit Agrahari</dc:creator></item><item><title><![CDATA[Reactive Programming in Java]]></title><description><![CDATA[In this post, we will try to understand the basics of the Reactive programming, what are the core features of it and how to handle the...]]></description><link>https://www.dynamicallyblunttech.com/post/reactive-programming-in-java</link><guid isPermaLink="false">631d8194b04b1e5eb3f8b780</guid><category><![CDATA[Spring]]></category><category><![CDATA[Java]]></category><pubDate>Sun, 11 Sep 2022 08:05:11 GMT</pubDate><enclosure url="https://static.wixstatic.com/media/df024c_67132d7c8df4416b97856a3cb317f28a~mv2.jpg/v1/fit/w_1000,h_1000,al_c,q_80/file.png" length="0" type="image/png"/><dc:creator>Ankit Agrahari</dc:creator></item><item><title><![CDATA[Dynamic Scheduling any REST API's]]></title><description><![CDATA[Spring boot provides an easy option of scheduling tasks which will be triggered when the interval or time is right. We can use the...]]></description><link>https://www.dynamicallyblunttech.com/post/dynamic-scheduling-any-rest-api-s</link><guid isPermaLink="false">62d62768087e50aad1a36862</guid><category><![CDATA[Spring]]></category><pubDate>Tue, 19 Jul 2022 07:12:31 GMT</pubDate><enclosure url="https://static.wixstatic.com/media/df024c_a3496adc6ee74df1884bd262c98f0569~mv2.png/v1/fit/w_1000,h_1000,al_c,q_80/file.png" length="0" type="image/png"/><dc:creator>Ankit Agrahari</dc:creator></item><item><title><![CDATA[Spring Boot Application External Configurations]]></title><description><![CDATA[Spring boot application provides a quick and elegant way to create REST API's with minimal boiler plate code and resolves any dependency...]]></description><link>https://www.dynamicallyblunttech.com/post/spring-boot-application-external-configurations</link><guid isPermaLink="false">62934f545fa50c29000fff46</guid><category><![CDATA[Spring]]></category><pubDate>Sun, 29 May 2022 15:44:11 GMT</pubDate><enclosure url="https://static.wixstatic.com/media/df024c_09d10c65f576482b8dcc2642c0985e30~mv2.png/v1/fit/w_1000,h_600,al_c,q_80/file.png" length="0" type="image/png"/><dc:creator>Ankit Agrahari</dc:creator></item></channel></rss>