<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on DynamicallyBluntTech</title><link>https://dynamicallyblunttech.com/posts/</link><description>Recent content in Posts on DynamicallyBluntTech</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Tue, 27 Oct 2026 08:14:31 +0530</lastBuildDate><atom:link href="https://dynamicallyblunttech.com/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>Dynamic Scheduling any REST API's</title><link>https://dynamicallyblunttech.com/posts/dynamic-scheduling-any-rest-api-s/</link><pubDate>Tue, 27 Oct 2026 08:14:31 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/dynamic-scheduling-any-rest-api-s/</guid><description>&lt;p&gt;Spring boot provides an easy option of scheduling tasks which will be triggered when the interval or time is right. We can use the @Scheduled annotation to achieve this, but what if we want to schedule the jobs on certain events, or by invoking some services.&lt;/p&gt;&#10;&lt;p&gt;Lets say you are working on a project in which you want to schedule your API&amp;rsquo;s to run at 12:00pm every night and collect the data for the entire day and save it to either in database or in some files. There could be multiple task for which you will invoke other API&amp;rsquo;s such as data collection for specific scenarios, or sending notification or updating the status of certain entity when certain event happened etc.&lt;/p&gt;</description></item><item><title>Spring4Shell - Zero Day Vulnerability in Spring Framework</title><link>https://dynamicallyblunttech.com/posts/spring4shell-zero-day-vulnerability-in-spring-framework/</link><pubDate>Tue, 27 Oct 2026 08:14:31 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/spring4shell-zero-day-vulnerability-in-spring-framework/</guid><description>&lt;p&gt;In the days of Vulnerabilities, the famous Spring framework is the latest victim, which has quite a turns of event for the CVE identified as &lt;a href="https://tanzu.vmware.com/security/cve-2022-22965" target="_blank" rel="noreferrer"&gt;&lt;em&gt;CVE-2022-22965&lt;/em&gt;&lt;/a&gt;. The latest Spring Vulnerabilities was to be reported on 31st March, 2022, but someone has leaked the detailed information online a day before the CVE publication.&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;em&gt;A &lt;strong&gt;&lt;strong&gt;Zero Day Vulnerability&lt;/strong&gt;&lt;/strong&gt; occurs when a software package has a vulnerability that becomes public knowledge and there is no approved patch available to fix it at the time it becomes public.&lt;/em&gt;&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item><item><title>Binary Tree Traversal</title><link>https://dynamicallyblunttech.com/posts/binary-tree-traversal/</link><pubDate>Tue, 27 Oct 2026 08:14:30 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/binary-tree-traversal/</guid><description>&lt;p&gt;In this post we will look into the different ways to traverse a Binary Tree.&lt;/p&gt;&#10;&lt;p&gt;In a binary tree, you can traverse in two different ways:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Breadth first traversal&lt;/li&gt;&#10;&lt;li&gt;Depth first traversal&lt;/li&gt;&#10;&lt;li&gt;In-order&lt;/li&gt;&#10;&lt;li&gt;Pre-order&lt;/li&gt;&#10;&lt;li&gt;Post-order&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Lets start with an example. Given the following binary tree:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;4&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;/&lt;/span&gt; &lt;span style="color:#960050;background-color:#1e0010"&gt;\&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 2 7&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;/&lt;/span&gt; &lt;span style="color:#960050;background-color:#1e0010"&gt;\&lt;/span&gt; &lt;span style="color:#f92672"&gt;/&lt;/span&gt; &lt;span style="color:#960050;background-color:#1e0010"&gt;\&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;1 3 6 9&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;When we traverse a binary tree, we can go either breadth first or depth first.&lt;/p&gt;</description></item><item><title>Custom Iterators in Java</title><link>https://dynamicallyblunttech.com/posts/custom-iterators-in-java/</link><pubDate>Tue, 27 Oct 2026 08:14:30 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/custom-iterators-in-java/</guid><description>&lt;p&gt;This is a bit embarrassing to start with, but lets say I got this question and was quite dumb stuck on how to write a custom iterator. Seems simple at that point, but couldn&amp;rsquo;t exactly curate the process of developing a custom iterator which would return the second element instead of the next element.&lt;/p&gt;&#10;&lt;p&gt;So this post will be about &lt;em&gt;&lt;strong&gt;Embarrassment&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;&#10;&lt;p&gt;Lets start with Iterators.&lt;/p&gt;&#10;&lt;h3 id="iterator-" class="relative group"&gt;**Iterator ** &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#iterator-" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;Iterators are something, using which we iterate over a given collection of elements given in Java. So, lets says the list of Strings objects can be iterated over by &lt;em&gt;list.iterator()&lt;/em&gt;.&lt;/p&gt;</description></item><item><title>Externalize Spring Boot Configuration</title><link>https://dynamicallyblunttech.com/posts/externalize-spring-boot-configuration/</link><pubDate>Tue, 27 Oct 2026 08:14:30 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/externalize-spring-boot-configuration/</guid><description>&lt;p&gt;In this post, we will discuss on fetching the Spring boot configuration values from outside the application jar file. We will discuss on dockerizing the application which will take the property values from an external configuration file. We will also use different Profiles to get the message&#10;based on the profile we choose.&lt;/p&gt;&#10;&lt;p&gt;We have also discussed on Spring boot configuration files and how to get the values from it in this post &lt;a href="https://www.dynamicallyblunttech.com/post/spring-boot-application-external-configurations" target="_blank" rel="noreferrer"&gt;&lt;em&gt;spring-boot-application-external-configurations&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Target Machine Actively Refused it - MongoDB Issue</title><link>https://dynamicallyblunttech.com/posts/target-machine-actively-refused-it-mongodb-issue/</link><pubDate>Tue, 27 Oct 2026 08:14:30 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/target-machine-actively-refused-it-mongodb-issue/</guid><description>&lt;p&gt;In this post we will discuss one of the issue encountered after installing MongoDB on my windows machine. This from the &#10; &#10; &lt;a href="https://dynamicallyblunttech.com/posts/crud-operation-in-mongodb/"&gt;&lt;em&gt;&lt;strong&gt;previous post&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt; where we performed all the CRUD operation on MonogDB in Java.&lt;/p&gt;&#10;&lt;p&gt;For installation of MongoDB, follow the official guide.&lt;/p&gt;&#10;&lt;h3 id="issue" class="relative group"&gt;&lt;strong&gt;Issue&lt;/strong&gt; &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#issue" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;While opening the mongo.exe by double clicking on it, the console opens and then it vanishes. So, I tired again, still the console just showed for a second or two and then vanished again in thin air. Even tried using the mongoDB compass editor to check the connection, but that also didn&amp;rsquo;t connect.&lt;/p&gt;</description></item><item><title>Authentication With LDAP in Spring</title><link>https://dynamicallyblunttech.com/posts/authentication-with-ldap-in-spring-project/</link><pubDate>Tue, 27 Oct 2026 08:14:29 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/authentication-with-ldap-in-spring-project/</guid><description>&lt;p&gt;Referring to the &lt;a href="https://spring.io/guides/gs/authenticating-ldap/" target="_blank" rel="noreferrer"&gt;&lt;em&gt;Spring Guide&lt;/em&gt;&lt;/a&gt; to Spring security for authenticating a user with LDAP, this blog is to create the working example for someone to try it out.&lt;/p&gt;&#10;&lt;p&gt;The example present as part of the guide is having some configuration missing, without which the example won&amp;rsquo;t work. I got to know from some Stackoverflow pages about the missing configurations and added the correct form to this post.&lt;/p&gt;&#10;&lt;h2 id="dependencies" class="relative group"&gt;Dependencies &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#dependencies" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;I am using Maven for my project and it requires following external libraries for enabling the LDAP authentication in our spring project.&lt;/p&gt;</description></item><item><title>III - Named Entity Recognition - Apache OpenNLP</title><link>https://dynamicallyblunttech.com/posts/iii-named-entity-recognition-apache-opennlp/</link><pubDate>Tue, 27 Oct 2026 08:14:29 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/iii-named-entity-recognition-apache-opennlp/</guid><description>&lt;p&gt;In this series of learning Natural Language Processing with &lt;em&gt;&lt;strong&gt;Apache OpenNLP&lt;/strong&gt;&lt;/em&gt; library in Java, we will discuss on &lt;em&gt;&lt;strong&gt;NamedEntityRecognition&lt;/strong&gt;&lt;/em&gt;, which can identify names, places, locations etc. in any given string.&lt;/p&gt;&#10;&lt;p&gt;In &lt;em&gt;&lt;strong&gt;Apache OpenNLP&lt;/strong&gt;&lt;/em&gt; library, &lt;em&gt;&lt;strong&gt;NamedEntityRecognition&lt;/strong&gt;&lt;/em&gt; uses predefined trained models which is used to recognize names or date or places or location etc. in the given string. These models are:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;em&gt;en-nerdate.bn,&lt;/em&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;em&gt;en-ner-location.bin&lt;/em&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;em&gt;en-ner-organization.bin&lt;/em&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;em&gt;en-ner-person.bin&lt;/em&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;em&gt;en-ner-time.bin&lt;/em&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Like in previous posts on &lt;a href="https://dynamicallyblunttech.blogspot.com/2020/07/find-sentences-using-apache-open-nlp.html" target="_blank" rel="noreferrer"&gt;&lt;em&gt;SentenceDetector&lt;/em&gt;&lt;/a&gt;&lt;a href="https://dynamicallyblunttech.blogspot.com/2020/07/find-sentences-using-apache-open-nlp.html" target="_blank" rel="noreferrer"&gt;*** ***&lt;/a&gt;and &lt;a href="https://dynamicallyblunttech.blogspot.com/2020/07/tokenization-using-apache-opennlp.html" target="_blank" rel="noreferrer"&gt;&lt;em&gt;Tokenization&lt;/em&gt;&lt;/a&gt;, here also we have to identify the models which we want to use, load the model, and use the find method of the ***NameFinderME ***class to find the specific name, location or place as per the models used.&lt;/p&gt;</description></item><item><title>Transfer Files with Executor Service</title><link>https://dynamicallyblunttech.com/posts/transfer-files-with-executor-service/</link><pubDate>Tue, 27 Oct 2026 08:14:29 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/transfer-files-with-executor-service/</guid><description>&lt;p&gt;In this post we will move all files from one directory to another using Java&amp;rsquo;s Executor Service and will also discuss on how we can enhance the entire process.&lt;/p&gt;&#10;&lt;p&gt;To move files from one directory to another:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;List all files in the source directory&lt;/li&gt;&#10;&lt;li&gt;Create a main class which will call the threads to process all the files in given directory.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;So lets start developing our main class which will hold the skeleton of the program to call executor thread which will in turn transfer all files from one directory to another.&lt;/p&gt;</description></item><item><title>CCA-F Domain1: Agentic Architecture &amp; Orchestration - Key Concepts</title><link>https://dynamicallyblunttech.com/posts/cca-f-domain-1-agentic-architecture-orchestration-key-concepts/</link><pubDate>Tue, 27 Oct 2026 08:14:28 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/cca-f-domain-1-agentic-architecture-orchestration-key-concepts/</guid><description>&lt;h3 id="i-am-preparing-for-the-claude-certified-architect--foundations-cca-f-and-placing-all-types-of-practice-questions-that-i-encounter-this-may-help-others-but-objective-is-to-keep-track-of-key-concept-and-some-practice-question-that-define-the-topics-as-well" class="relative group"&gt;I am preparing for the Claude Certified Architect — Foundations (CCA-F), and placing all types of practice questions that I encounter. This may help others, but objective is to keep track of key concept and some practice question that define the topics as well. &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#i-am-preparing-for-the-claude-certified-architect--foundations-cca-f-and-placing-all-types-of-practice-questions-that-i-encounter-this-may-help-others-but-objective-is-to-keep-track-of-key-concept-and-some-practice-question-that-define-the-topics-as-well" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;Where to Register: &lt;a href="https://anthropic-partners.skilljar.com/claude-certified-architect-foundations-certification" target="_blank" rel="noreferrer"&gt;https://anthropic-partners.skilljar.com/claude-certified-architect-foundations-certification&lt;/a&gt;&lt;/p&gt;&#10;&lt;h3 id="topics-covered" class="relative group"&gt;Topics Covered &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#topics-covered" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;agentic vs workflow vs conversational systems,&lt;/li&gt;&#10;&lt;li&gt;the agentic loop (gather context → act → verify),&lt;/li&gt;&#10;&lt;li&gt;task decomposition,&lt;/li&gt;&#10;&lt;li&gt;sequential vs parallel execution,&lt;/li&gt;&#10;&lt;li&gt;multi-agent orchestration (hub-and-spoke, coordinator/subagent patterns),&lt;/li&gt;&#10;&lt;li&gt;hooks vs prompts,&lt;/li&gt;&#10;&lt;li&gt;session resumption, and&lt;/li&gt;&#10;&lt;li&gt;common anti-patterns.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;em&gt;Unofficial practice set, written to match publicly reported blueprint topics — not sourced from the real exam bank. Use for concept drilling, not as a guarantee of exam content.&lt;/em&gt;&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item><item><title>Log4JShell Vulnerability</title><link>https://dynamicallyblunttech.com/posts/log4jshell-vulnerability/</link><pubDate>Tue, 27 Oct 2026 08:14:28 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/log4jshell-vulnerability/</guid><description>&lt;p&gt;Everyone has used log4j libraries for logging in their application or for learning. It is also talk of the town after &lt;a href="https://nvd.nist.gov/vuln/detail/CVE-2021-44228" target="_blank" rel="noreferrer"&gt;&lt;em&gt;CVE Remote Code Execution vulnerability&lt;/em&gt;&lt;/a&gt; added recently.&lt;/p&gt;&#10;&lt;h3 id="remote-code-execution-rce" class="relative group"&gt;&lt;strong&gt;Remote Code Execution (RCE)&lt;/strong&gt; &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#remote-code-execution-rce" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;It is one of the most dangerous kind of vulnerabilities, where an attacker will be able to execute any malicious code without your knowledge. This is how kaspersky enclyopedia defines RCE as&lt;/p&gt;</description></item><item><title>Stop Guessing, Find Perfect Local LLM with OllamaAdvisor</title><link>https://dynamicallyblunttech.com/posts/stop-guessing-find-perfect-local-llm-with-ollamaadvisor/</link><pubDate>Tue, 27 Oct 2026 08:14:28 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/stop-guessing-find-perfect-local-llm-with-ollamaadvisor/</guid><description>&lt;p&gt;Have you ever excitedly run &lt;em&gt;ollama run llama3:70b&lt;/em&gt; on your 16GB MacBook Air, only to watch your system grind to an absolute halt? The fan spins up like a jet engine, your cursor freezes, and your swap memory immediately maxes out.&lt;/p&gt;&#10;&lt;p&gt;The biggest bottleneck in local AI isn&amp;rsquo;t the models themselves—it&amp;rsquo;s &lt;strong&gt;hardware-model mismatch&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;p&gt;Engineers are blindly downloading quantized models without calculating the overhead of the OS, background applications, model weights, and the often-ignored KV (Key-Value) cache. When a model spills from VRAM/Unified Memory into CPU system RAM (or worse, disk swap), inference speed drops from a usable 30 tokens/second to a painful 1 token/second.&lt;/p&gt;</description></item><item><title>Building an AI Tutor with Spring AI, Ollama, and Vaadin</title><link>https://dynamicallyblunttech.com/posts/building-an-ai-tutor-with-spring-ai-ollama-and-vaadin/</link><pubDate>Tue, 27 Oct 2026 08:14:27 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/building-an-ai-tutor-with-spring-ai-ollama-and-vaadin/</guid><description>&lt;p&gt;&lt;strong&gt;AI Tutor&lt;/strong&gt; is a web application that uses &lt;strong&gt;Spring Boot&lt;/strong&gt; and &lt;strong&gt;Spring AI&lt;/strong&gt; on the backend, an &lt;strong&gt;Ollama&lt;/strong&gt;-hosted LLM (e.g. Google’s Gemma3) for natural language understanding, and &lt;strong&gt;Vaadin&lt;/strong&gt; 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 &lt;strong&gt;PGVector&lt;/strong&gt;-enabled PostgreSQL database.  At chat time, similar chunks are retrieved and included as context so the LLM can answer questions &lt;em&gt;specific to the uploaded documents&lt;/em&gt;, avoiding “hallucinations”  .&lt;/p&gt;</description></item><item><title>CCA-F Domain 5: Context Management and Reliability</title><link>https://dynamicallyblunttech.com/posts/cca-f-domain-5-context-management-and-reliability/</link><pubDate>Tue, 27 Oct 2026 08:14:27 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/cca-f-domain-5-context-management-and-reliability/</guid><description>&lt;h3 id="as-we-discussed-in-the-previous-post-on-domain-4-claude-code-configuration-and-workflow-this-part-of-the-post-will-cover-the-domain-5-which-holds-15-weightage-in-the-exam-this-is-also-the-last-domain-in-this-ccfa-series" class="relative group"&gt;As we discussed in the previous post on &lt;a href="https://dynamicallyblunttech.com/post/cca-f-domain-4-prompt-engineering-and-structured-output"&gt;Domain 4: Claude Code Configuration and Workflow&lt;/a&gt;, this part of the post will cover the Domain 5 which holds 15% weightage in the exam. This is also the &lt;em&gt;&lt;strong&gt;last domain&lt;/strong&gt;&lt;/em&gt; in this CCFA series. &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#as-we-discussed-in-the-previous-post-on-domain-4-claude-code-configuration-and-workflow-this-part-of-the-post-will-cover-the-domain-5-which-holds-15-weightage-in-the-exam-this-is-also-the-last-domain-in-this-ccfa-series" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h3&gt;&lt;h3 id="if-you-have-directly-stumbled-upon-this-page-i-am-preparing-for-the-claude-certified-architect--foundations-cca-f-and-placing-all-types-of-practice-questions-that-i-encounter-this-may-help-others-but-objective-is-to-keep-track-of-key-concept-and-some-practice-question-that-define-the-topics-as-well" class="relative group"&gt;If you have directly stumbled upon this page, I am preparing for the Claude Certified Architect — Foundations (CCA-F), and placing all types of practice questions that I encounter. This may help others, but objective is to keep track of key concept and some practice question that define the topics as well. &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#if-you-have-directly-stumbled-upon-this-page-i-am-preparing-for-the-claude-certified-architect--foundations-cca-f-and-placing-all-types-of-practice-questions-that-i-encounter-this-may-help-others-but-objective-is-to-keep-track-of-key-concept-and-some-practice-question-that-define-the-topics-as-well" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;Where to Register: &lt;a href="https://anthropic-partners.skilljar.com/claude-certified-architect-foundations-certification" target="_blank" rel="noreferrer"&gt;https://anthropic-partners.skilljar.com/claude-certified-architect-foundations-certification&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Built a Webhook Inspector from Scratch and Shipped It — Here's Everything That Went Wrong</title><link>https://dynamicallyblunttech.com/posts/built-a-webhook-inspector-from-scratch-and-shipped-it-here-s-everything-that-went-wrong/</link><pubDate>Tue, 27 Oct 2026 08:14:26 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/built-a-webhook-inspector-from-scratch-and-shipped-it-here-s-everything-that-went-wrong/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;Live at:&lt;/strong&gt; &lt;a href="https://hookspy.in" target="_blank" rel="noreferrer"&gt;https://hookspy.in&lt;/a&gt;HookSpy - Walk Through&lt;/p&gt;&#10;&lt;/blockquote&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/FGn4FYMa6-U?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;p&gt;Every developer integrating Stripe, Razorpay, or GitHub has been there. You set up a webhook, fire a test event, and&amp;hellip; nothing. The endpoint didn&amp;rsquo;t respond. Or it did but your handler crashed silently. Or you just want to see the exact payload the service sends before writing a single line of handler code.&lt;/p&gt;</description></item><item><title>I - Sentence Segmentation Using Apache OpenNLP</title><link>https://dynamicallyblunttech.com/posts/i-sentence-segmentation-using-apache-opennlp/</link><pubDate>Tue, 27 Oct 2026 08:14:26 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/i-sentence-segmentation-using-apache-opennlp/</guid><description>&lt;p&gt;In this post, we will discuss on how to find sentences in a block of text, which can be a paragraph or an entire book. We will be using &lt;em&gt;&lt;strong&gt;Apache OpenNLP&lt;/strong&gt;&lt;/em&gt; library with Java.&lt;/p&gt;&#10;&lt;p&gt;Objective here is to learn &lt;em&gt;&lt;strong&gt;Apache OpenNLP&lt;/strong&gt;&lt;/em&gt; library and effectively use it in processing any text. We will start with Sentence Segmentation and will post more on the usage of its services in further posts.&lt;/p&gt;&#10;&lt;h3 id="apache-open-nlp" class="relative group"&gt;&lt;strong&gt;Apache Open NLP&lt;/strong&gt; &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#apache-open-nlp" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;Apache OpenNLP is an open source library, which is used to process &lt;em&gt;&lt;strong&gt;Natural Language Text&lt;/strong&gt;&lt;/em&gt;. It provides services such as sentence segmentation, tokenization, part of speech tagging, named entity extraction, chunking, parsing etc. Its a powerful library which comes with its own set of models, which I will be using in our examples. You can find the set of models from here &lt;a href="http://opennlp.sourceforge.net/models-1.5/" target="_blank" rel="noreferrer"&gt;http://opennlp.sourceforge.net/models-1.5/&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Junit5 with Mockito Framework</title><link>https://dynamicallyblunttech.com/posts/junit5-with-mockito-framework/</link><pubDate>Tue, 27 Oct 2026 08:14:26 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/junit5-with-mockito-framework/</guid><description>&lt;p&gt;In this blog post we will talk about one of the testing framework which I wanted to try it on, and rather use it in my day to day coding.&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;Mockito framework is the mocking framework that tastes really good.&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;This is from the official Mockito &lt;a href="https://site.mockito.org/" target="_blank" rel="noreferrer"&gt;&lt;em&gt;website&lt;/em&gt;&lt;/a&gt;, and I have not played with words here. :)&lt;/p&gt;&#10;&lt;p&gt;But as it says, it did taste good and you might extend your Junits with Mocks, because this is clean, readable and produce clean verification errors. Also it will become addictive.&lt;/p&gt;</description></item><item><title>Reactive Programming in Java with Spring (AI Generated)</title><link>https://dynamicallyblunttech.com/posts/reactive-programming-in-java-with-spring-ai-generated/</link><pubDate>Tue, 27 Oct 2026 08:14:26 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/reactive-programming-in-java-with-spring-ai-generated/</guid><description>&lt;p&gt;Harnessing the power of reactive programming in Java opens up endless opportunities for crafting responsive, resilient applications. With an emphasis on asynchronous data streams, this approach allows you to manage system resources efficiently while enhancing user experiences. In this blog post, we&amp;rsquo;ll explore two leading frameworks—RxJava and Spring Reactive—sharing specific scenarios to illustrate practical reactive programming techniques.&lt;/p&gt;&#10;&lt;h2 id="understanding-reactive-programming" class="relative group"&gt;Understanding Reactive Programming &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#understanding-reactive-programming" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Reactive programming promotes a non-blocking data flow, enabling components to respond to events as they occur. This approach is crucial for modern web applications, which demand real-time capabilities. By leveraging the observer pattern, reactive programming allows your application to respond to streams of data swiftly, enhancing user interactivity.&lt;/p&gt;</description></item><item><title>#LC105 - Binary Tree from In-Order and Pre-Order Traversal</title><link>https://dynamicallyblunttech.com/posts/lc105-binary-tree-from-in-order-and-pre-order-traversal/</link><pubDate>Tue, 27 Oct 2026 08:14:25 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/lc105-binary-tree-from-in-order-and-pre-order-traversal/</guid><description>&lt;p&gt;In this post we will create a binary tree from the given in-order and pre-order traversal. You can find the details on the question here &lt;a href="https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/" target="_blank" rel="noreferrer"&gt;&lt;em&gt;&lt;strong&gt;leetcode #105&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;So, in a binary tree, we can do depth first traversal in three ways:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;***In-order traversal (left -&amp;gt; root -&amp;gt; right) ***&lt;/li&gt;&#10;&lt;li&gt;***Pre-order traversal (root -&amp;gt; left -&amp;gt; right) ***&lt;/li&gt;&#10;&lt;li&gt;***Post-order traversal (left -&amp;gt; right -&amp;gt; root) ***&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Refer &lt;a href="https://www.dynamicallyblunttech.com/post/binary-tree-traversal" target="_blank" rel="noreferrer"&gt;&lt;em&gt;&lt;strong&gt;Binary Tree - Traversal&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt; to understand on how to traverse using the above three ways.&lt;/p&gt;</description></item><item><title>#LC983 - Find The Minimum Cost For Tickets (DP)</title><link>https://dynamicallyblunttech.com/posts/lc983-find-the-minimum-cost-for-tickets-dp/</link><pubDate>Tue, 27 Oct 2026 08:14:25 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/lc983-find-the-minimum-cost-for-tickets-dp/</guid><description>&lt;p&gt;In this post we will go through the &lt;a href="https://leetcode.com/problems/minimum-cost-for-tickets/" target="_blank" rel="noreferrer"&gt;&lt;em&gt;Leetcode #983&lt;/em&gt;&lt;/a&gt; to find the minimum cost for Tickets, which could be one of the starting practice programs in &lt;em&gt;&lt;strong&gt;Dynamic Programming&lt;/strong&gt;&lt;/em&gt;. This is a really interesting problem and I took help from &lt;a href="https://www.youtube.com/watch?v=HyN5hdD1JU4" target="_blank" rel="noreferrer"&gt;&lt;em&gt;Nideesh Terapalli&lt;/em&gt;&lt;/a&gt; youtube video.&lt;/p&gt;&#10;&lt;h3 id="problem-statement" class="relative group"&gt;&lt;strong&gt;Problem Statement&lt;/strong&gt; &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#problem-statement" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;In a country popular for train travel, you have planned some train travelling one year in advance. The days of the year that you will travel is given as an array days. Each day is an integer from 1 to 365.&lt;/p&gt;</description></item><item><title>AES Algorithm with GCM Mode in Java</title><link>https://dynamicallyblunttech.com/posts/aes-algorithm-with-gcm-mode-in-java/</link><pubDate>Tue, 27 Oct 2026 08:14:25 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/aes-algorithm-with-gcm-mode-in-java/</guid><description>&lt;p&gt;In this post we will encrypt and decrypt a given phrase using AES algorithm in GCM mode. This will be more on how to do it. I am not an expert on ciphers, but a basic way of how would you achieve the encryption/decryption will help in securing your applications.&lt;/p&gt;&#10;&lt;h3 id="aes-algorithm" class="relative group"&gt;&lt;strong&gt;AES Algorithm&lt;/strong&gt; &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#aes-algorithm" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h3&gt;&lt;blockquote&gt;&#10;&lt;p&gt;Advanced Encryption Standard(AES) is a symmetric, block cipher encryption/decryption algorithm.&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item><item><title>Multi Release Functionality</title><link>https://dynamicallyblunttech.com/posts/multi-release-functionality/</link><pubDate>Tue, 27 Oct 2026 08:14:25 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/multi-release-functionality/</guid><description>&lt;p&gt;In this post we will explore one of the best feature provided by Java 9, its importance in present day development and how it will be a key in maintaining multiple version of code.&lt;/p&gt;&#10;&lt;p&gt;When Java 9 released in July, 2017, it was not a Long term Support(LTS), though it was having multiple features which would help Java in long run. Some of it which is now playing a big role are&lt;/p&gt;</description></item><item><title>#LC1481 - Find Least Number of Unique Integers After K Removals</title><link>https://dynamicallyblunttech.com/posts/lc1481-find-least-number-of-unique-integers-after-k-removals/</link><pubDate>Tue, 27 Oct 2026 08:14:24 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/lc1481-find-least-number-of-unique-integers-after-k-removals/</guid><description>&lt;p&gt;In this post, we will look into one of the &lt;a href="https://leetcode.com/problems/least-number-of-unique-integers-after-k-removals/" target="_blank" rel="noreferrer"&gt;&lt;em&gt;Leetcode problem #1481&lt;/em&gt;&lt;/a&gt;, where we have to find the least number of unique integers after removing k elements.&lt;/p&gt;&#10;&lt;h3 id="problem-statement" class="relative group"&gt;&lt;strong&gt;Problem Statement:&lt;/strong&gt; &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#problem-statement" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;Given an array of integers &lt;em&gt;&lt;strong&gt;arr&lt;/strong&gt;&lt;/em&gt; and an integer &lt;em&gt;&lt;strong&gt;k&lt;/strong&gt;&lt;/em&gt;. Find the &lt;em&gt;least number of unique integers&lt;/em&gt; after removing exactly k elements.&#10;So, the problem statements says to remove k elements from the given array in such a way that we get the least number of unique integers. Lets say we have following array:&lt;/p&gt;</description></item><item><title>Building DevOps Intelligence using MCP Server with Spring AI: Tools, Challenges &amp; Solutions</title><link>https://dynamicallyblunttech.com/posts/building-devops-intelligence-using-mcp-server-with-spring-ai-tools-challenges-solutions/</link><pubDate>Tue, 27 Oct 2026 08:14:24 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/building-devops-intelligence-using-mcp-server-with-spring-ai-tools-challenges-solutions/</guid><description>&lt;p&gt;Devops Intelligence&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/DLVG0z-aHV4?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;p&gt;Today, I successfully built and deployed a &lt;strong&gt;Model Context Protocol (MCP) server&lt;/strong&gt; using Spring AI that exposes real DevOps infrastructure through intelligent tools. But the journey? Let&amp;rsquo;s just say it involved more debugging than coding.&lt;/p&gt;&#10;&lt;p&gt;In this post, I&amp;rsquo;ll walk you through:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;What we built (the DevOps Intelligence Platform)&lt;/li&gt;&#10;&lt;li&gt;The tools we created (K8s, Prometheus, Logs, Deployments)&lt;/li&gt;&#10;&lt;li&gt;Every challenge we faced (and how we solved them)&lt;/li&gt;&#10;&lt;li&gt;Why Spring AI 2.0.0-M2 is the sweet spot (M3 has still in development and after hours of debugging, settled with M2)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; Built an MCP server with 5+ DevOps tools. Spent 6 hours debugging. Spring AI 2.0.0-M2 is your friend. No manual bean configuration needed if you know what to configure.&lt;/p&gt;</description></item><item><title>Exploring Spring Thymeleaf</title><link>https://dynamicallyblunttech.com/posts/exploring-spring-thymeleaf/</link><pubDate>Tue, 27 Oct 2026 08:14:23 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/exploring-spring-thymeleaf/</guid><description>&lt;p&gt;In this post we will be creating a registration form which will include textbox, dropdown with multi-select option, file pickers and then bind it with backend REST services which can be further stored in some database or can be used for any other purpose.&lt;/p&gt;&#10;&lt;h2 id="thymeleaf" class="relative group"&gt;&lt;strong&gt;Thymeleaf&lt;/strong&gt; &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#thymeleaf" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;As stated in official &lt;a href="https://www.thymeleaf.org/" target="_blank" rel="noreferrer"&gt;&lt;em&gt;Thymeleaf website&lt;/em&gt;&lt;/a&gt;,&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;Thymeleaf&lt;/strong&gt; is a modern server-side Java template engine for both web and standalone environments.&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item><item><title>Log4j Vulnerability - Saga Continues</title><link>https://dynamicallyblunttech.com/posts/log4j-vulnerability-saga-continues/</link><pubDate>Tue, 27 Oct 2026 08:14:23 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/log4j-vulnerability-saga-continues/</guid><description>&lt;p&gt;To everyone&amp;rsquo;s surprise, the latest release of log4j 2.16.0 is now effected by Denial of Service vulnerability and is claimed to be fixed in another release 2.17.0.&lt;/p&gt;&#10;&lt;p&gt;This Denial of Service vulnerability is reported by &lt;em&gt;Hideki Okamoto&lt;/em&gt; of Akamai technologies and other vulnerabilities researchers.&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;&lt;strong&gt;Versions Impacted&lt;/strong&gt;&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;&lt;strong&gt;CVE&lt;/strong&gt;&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;&lt;strong&gt;Severity&lt;/strong&gt;&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;&lt;strong&gt;Type of Vulnerability&lt;/strong&gt;&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;&lt;strong&gt;Fixed in&lt;/strong&gt;&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&amp;lt; 2.16.0&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-45105" target="_blank" rel="noreferrer"&gt;&lt;em&gt;CVE-2021-45105&lt;/em&gt;&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;7.5&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Denial of Service&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2.17.0&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&amp;lt; 2.15.0&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-45046" target="_blank" rel="noreferrer"&gt;&lt;em&gt;CVE-2021-45046&lt;/em&gt;&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;9.0 (earlier 3.5)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Remote Code Execution&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2.16.0&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&amp;lt; v2.14.0&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44228" target="_blank" rel="noreferrer"&gt;&lt;em&gt;CVE-2021-44228&lt;/em&gt;&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;10&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Remote Code Execution&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2.15.0&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;You can refer to the older vulnerabilities details and its mitigation steps in these post:&lt;/p&gt;</description></item><item><title>Morphous AI: Building Multi-Modal AI Workflows with Spring Boot and Vaadin</title><link>https://dynamicallyblunttech.com/posts/morphous-ai-building-multi-modal-ai-workflows-with-spring-boot-and-vaadin/</link><pubDate>Tue, 27 Oct 2026 08:14:23 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/morphous-ai-building-multi-modal-ai-workflows-with-spring-boot-and-vaadin/</guid><description>&lt;p&gt;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 MorphousAI’s architecture, technology choices, and key implementation details, providing insights for senior Java developers and architects interested in AI integration.&#10;&#10;&#10;&#10;&#10;&#10;&#10;&lt;figure&gt;&#10; &#10; &#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10; &#10; &lt;picture&#10; class="mx-auto my-0 rounded-md"&#10; &#10; &gt;&#10; &#10; &#10; &#10; &#10; &lt;source&#10; &#10; srcset="https://dynamicallyblunttech.com/posts/morphous-ai-building-multi-modal-ai-workflows-with-spring-boot-and-vaadin/images/morphous-ai_hu_50e67ca2250094b2.webp 330w,https://dynamicallyblunttech.com/posts/morphous-ai-building-multi-modal-ai-workflows-with-spring-boot-and-vaadin/images/morphous-ai_hu_7d39b3273682b4ea.webp 660w&#10; &#10; ,https://dynamicallyblunttech.com/posts/morphous-ai-building-multi-modal-ai-workflows-with-spring-boot-and-vaadin/images/morphous-ai_hu_a1c06f18987d1ddd.webp 1024w&#10; &#10; &#10; ,https://dynamicallyblunttech.com/posts/morphous-ai-building-multi-modal-ai-workflows-with-spring-boot-and-vaadin/images/morphous-ai_hu_53bc4e5a6a29a73b.webp 1320w&#10; "&#10; &#10; sizes="100vw"&#10; type="image/webp"&#10; /&gt;&#10; &#10; &lt;img&#10; width="1480"&#10; height="896"&#10; class="mx-auto my-0 rounded-md"&#10; alt="Morphous AI"&#10; loading="lazy" decoding="async"&#10; &#10; src="https://dynamicallyblunttech.com/posts/morphous-ai-building-multi-modal-ai-workflows-with-spring-boot-and-vaadin/images/morphous-ai_hu_c58dedb57041ef11.jpg" srcset="https://dynamicallyblunttech.com/posts/morphous-ai-building-multi-modal-ai-workflows-with-spring-boot-and-vaadin/images/morphous-ai_hu_ebdc37301d0e8d8d.jpg 330w,https://dynamicallyblunttech.com/posts/morphous-ai-building-multi-modal-ai-workflows-with-spring-boot-and-vaadin/images/morphous-ai_hu_c58dedb57041ef11.jpg 660w&#10; &#10; ,https://dynamicallyblunttech.com/posts/morphous-ai-building-multi-modal-ai-workflows-with-spring-boot-and-vaadin/images/morphous-ai_hu_53832880814977d0.jpg 1024w&#10; &#10; &#10; ,https://dynamicallyblunttech.com/posts/morphous-ai-building-multi-modal-ai-workflows-with-spring-boot-and-vaadin/images/morphous-ai_hu_72d6ddeb5b0032b6.jpg 1320w&#10; "&#10; sizes="100vw"&#10; &#10; /&gt;&#10; &lt;/picture&gt;&#10; &#10;&#10;&lt;figcaption class="text-center"&gt;Morphous AI&lt;/figcaption&gt;&#10;&lt;/figure&gt;&#10;&lt;/p&gt;</description></item><item><title>#LC438 - Find All Anagrams - Sliding Window Algorithm</title><link>https://dynamicallyblunttech.com/posts/find-all-anagrams-sliding-window-algorithm/</link><pubDate>Tue, 27 Oct 2026 08:14:22 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/find-all-anagrams-sliding-window-algorithm/</guid><description>&lt;p&gt;In this topic we will cover the &lt;a href="https://leetcode.com/problems/find-all-anagrams-in-a-string/" target="_blank" rel="noreferrer"&gt;&lt;em&gt;leetcode #438&lt;/em&gt;&lt;/a&gt; Find all anagram programming question.&lt;/p&gt;&#10;&lt;h3 id="problem-statement" class="relative group"&gt;Problem Statement: &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#problem-statement" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;Given two strings s and p, return *an array of all the start indices of p&amp;rsquo;s anagrams in *s. You may return the answer in &lt;strong&gt;any order&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;h3 id="input" class="relative group"&gt;Input &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#input" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;String from&lt;/strong&gt;&lt;/em&gt; &amp;ndash; this is the main string from which we have to find all the anagrams.&lt;/p&gt;</description></item><item><title>Spring AI with Ollama</title><link>https://dynamicallyblunttech.com/posts/spring-ai-with-ollama/</link><pubDate>Tue, 27 Oct 2026 08:14:22 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/spring-ai-with-ollama/</guid><description>&lt;h4 id="objective" class="relative group"&gt;&lt;strong&gt;Objective&lt;/strong&gt; &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#objective" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;As part of this blog post, we will be creating a simple Rest API using Spring AI to send and receive responses from Ollama on your local machine.&lt;/p&gt;&#10;&lt;h4 id="why-ollama" class="relative group"&gt;&lt;strong&gt;Why Ollama:&lt;/strong&gt; &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#why-ollama" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;&amp;ndash; Ollama is an open-source tool enabling you to run LLMs such as deepseek, llama, mistral, chatgpt, and others on your local machine. This ensures that your data remains within your home network.&lt;/p&gt;</description></item><item><title>System Design with Agentic AI - 1</title><link>https://dynamicallyblunttech.com/posts/system-design-with-agentic-ai-1/</link><pubDate>Tue, 27 Oct 2026 08:14:22 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/system-design-with-agentic-ai-1/</guid><description>&lt;p&gt;Agentic AI fails less often because of the model and more often because the system around the model was vague. The agent was given too much freedom, too little context, weak tools, no memory strategy, and no clear way to recover when things went wrong.&lt;/p&gt;&#10;&lt;p&gt;A good agent is not a chatbot with extra prompts. It is a system that can plan, call tools, inspect results, revise its path, and stop at the right time. That means &lt;strong&gt;system design&lt;/strong&gt; matters. The planner, tools, skills, hooks, memory, retrieval, guardrails, and evaluation loop all shape whether the agent behaves like a careful assistant or a noisy automation script.&lt;/p&gt;</description></item><item><title>Using Twilio for Sending WhatsApp Message in Java</title><link>https://dynamicallyblunttech.com/posts/using-twilio-for-sending-whatsapp-message-in-java/</link><pubDate>Tue, 27 Oct 2026 08:14:22 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/using-twilio-for-sending-whatsapp-message-in-java/</guid><description>&lt;p&gt;In this blog post, we will try to send WhatsApp message in Java using &lt;a href="https://www.twilio.com/docs/whatsapp" target="_blank" rel="noreferrer"&gt;&lt;em&gt;Twilio account&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;&lt;em&gt;Prerequisite:&lt;/em&gt;&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Create a free account in Twilio.&lt;/li&gt;&#10;&lt;li&gt;Once verified, you will have your own account SID and authorization token.&lt;/li&gt;&#10;&lt;li&gt;Thereafter, you need to activate the Sandbox.&lt;/li&gt;&#10;&lt;li&gt;Now add the number +14155238886 in you mobile account and send a message &amp;ldquo;&lt;em&gt;&lt;strong&gt;join up-post&lt;/strong&gt;&lt;/em&gt;&amp;rdquo; (without quotes).&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;This will register your mobile number with Twilio sandbox and now you are eligible to send WhatsApp messages. The sandbox will look like below:&#10;&#10;&#10;&#10;&#10;&#10;&#10;&lt;figure&gt;&#10; &#10; &#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10; &#10; &lt;picture&#10; class="mx-auto my-0 rounded-md"&#10; &#10; &gt;&#10; &#10; &#10; &#10; &#10; &lt;source&#10; &#10; srcset="https://dynamicallyblunttech.com/posts/using-twilio-for-sending-whatsapp-message-in-java/images/1_hu_ef346730a3cee89c.webp 330w,https://dynamicallyblunttech.com/posts/using-twilio-for-sending-whatsapp-message-in-java/images/1_hu_da52392d3e17a7e5.webp 660w&#10; &#10; &#10; ,https://dynamicallyblunttech.com/posts/using-twilio-for-sending-whatsapp-message-in-java/images/1_hu_e9b948193f8b67bf.webp 767w&#10; &#10; &#10; &#10; &#10; ,https://dynamicallyblunttech.com/posts/using-twilio-for-sending-whatsapp-message-in-java/images/1_hu_e9b948193f8b67bf.webp 767w&#10; &#10; "&#10; &#10; sizes="100vw"&#10; type="image/webp"&#10; /&gt;&#10; &#10; &lt;img&#10; width="767"&#10; height="319"&#10; class="mx-auto my-0 rounded-md"&#10; &#10; loading="lazy" decoding="async"&#10; &#10; src="https://dynamicallyblunttech.com/posts/using-twilio-for-sending-whatsapp-message-in-java/images/1_hu_74ee35d0bbc800de.jpg" srcset="https://dynamicallyblunttech.com/posts/using-twilio-for-sending-whatsapp-message-in-java/images/1_hu_88800dc4e4c8b1c7.jpg 330w,https://dynamicallyblunttech.com/posts/using-twilio-for-sending-whatsapp-message-in-java/images/1_hu_74ee35d0bbc800de.jpg 660w&#10; &#10; ,https://dynamicallyblunttech.com/posts/using-twilio-for-sending-whatsapp-message-in-java/images/1.jpg 767w&#10; &#10; &#10; ,https://dynamicallyblunttech.com/posts/using-twilio-for-sending-whatsapp-message-in-java/images/1.jpg 767w&#10; "&#10; sizes="100vw"&#10; &#10; /&gt;&#10; &lt;/picture&gt;&#10; &#10;&#10;&#10;&lt;/figure&gt;&#10;&#10;Now we will write simple java code to initiate the engine and send message using program to any registered number.&lt;/p&gt;</description></item><item><title>#LC746 - Minimum Cost Of Climbing Stairs</title><link>https://dynamicallyblunttech.com/posts/lc746-minimum-cost-of-climbing-stairs/</link><pubDate>Tue, 27 Oct 2026 08:14:21 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/lc746-minimum-cost-of-climbing-stairs/</guid><description>&lt;p&gt;In this post we will look into the the &lt;a href="https://leetcode.com/problems/min-cost-climbing-stairs/" target="_blank" rel="noreferrer"&gt;&lt;em&gt;leetcode #746&lt;/em&gt;&lt;/a&gt; problem to find the minimum cost of climbing stairs. This is also a good example to start your journey to learn dynamic programming.&lt;/p&gt;&#10;&lt;h3 id="problem-statement" class="relative group"&gt;&lt;strong&gt;Problem Statement&lt;/strong&gt; &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#problem-statement" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;You are given an integer array cost where &lt;em&gt;&lt;strong&gt;cost[i]&lt;/strong&gt;&lt;/em&gt; is the cost of &lt;em&gt;&lt;strong&gt;ith&lt;/strong&gt;&lt;/em&gt; step on a staircase. Once you pay the cost, you can either climb one or two steps. You can either start from the step with index 0, or the step with index 1.&lt;/p&gt;</description></item><item><title>Building the Foundation: APIs, Prompts, and First Runs</title><link>https://dynamicallyblunttech.com/posts/building-the-foundation-apis-prompts-and-first-runs/</link><pubDate>Tue, 27 Oct 2026 08:14:21 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/building-the-foundation-apis-prompts-and-first-runs/</guid><description>&lt;p&gt;In &#10; &#10; &lt;a href="https://dynamicallyblunttech.com/posts/meet-smart-devops-assistant-vision-stack-and-journey-so-far/"&gt;Part 1&lt;/a&gt; of this series, we introduced the &lt;strong&gt;Smart DevOps Assistant (SDA)&lt;/strong&gt; — an AI-powered helper that reviews pull requests, generates tests, and writes scrum updates.&lt;/p&gt;&#10;&lt;p&gt;Now it’s time to get our hands dirty. In this post, we’ll:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Scaffold core APIs (/generate-summary, /analyze-pr)&lt;/li&gt;&#10;&lt;li&gt;Wire up our first &lt;strong&gt;prompt templates&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;Connect Spring AI to an LLM&lt;/li&gt;&#10;&lt;li&gt;Run our very first &lt;strong&gt;end-to-end test&lt;/strong&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;By the end, you’ll have a working backend service that can summarize PRs and hint at improvements. 🚀&lt;/p&gt;</description></item><item><title>CCA-F Domain 3: Claude Code Configuration and Workflows - Key Concepts</title><link>https://dynamicallyblunttech.com/posts/cca-f-domain-3-claude-code-configuration-and-workflows-key-concepts/</link><pubDate>Tue, 27 Oct 2026 08:14:21 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/cca-f-domain-3-claude-code-configuration-and-workflows-key-concepts/</guid><description>&lt;h3 id="as-we-discussed-in-the-previous-post-on-domain-2-tool-design-and-mcp-integration-this-part-of-the-post-will-cover-the-domain-3-which-holds-20-weightage-in-the-exam" class="relative group"&gt;As we discussed in the previous post on &lt;a href="https://dynamicallyblunttech.com/post/cca-f-domain-2-tool-design-and-mcp-integration-key-concepts"&gt;Domain &lt;/a&gt;&lt;a href="https://dynamicallyblunttech.com/post/cca-f-domain-2-tool-design-and-mcp-integration-key-concepts"&gt;2: Tool Design and MCP Integration&lt;/a&gt;, this part of the post will cover the Domain 3 which holds 20% weightage in the exam. &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#as-we-discussed-in-the-previous-post-on-domain-2-tool-design-and-mcp-integration-this-part-of-the-post-will-cover-the-domain-3-which-holds-20-weightage-in-the-exam" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h3&gt;&lt;h3 id="if-you-have-directly-stumbled-upon-this-page-i-am-preparing-for-the-claude-certified-architect--foundations-cca-f-and-placing-all-types-of-practice-questions-that-i-encounter-this-may-help-others-but-objective-is-to-keep-track-of-key-concept-and-some-practice-question-that-define-the-topics-as-well" class="relative group"&gt;If you have directly stumbled upon this page, I am preparing for the Claude Certified Architect — Foundations (CCA-F), and placing all types of practice questions that I encounter. This may help others, but objective is to keep track of key concept and some practice question that define the topics as well. &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#if-you-have-directly-stumbled-upon-this-page-i-am-preparing-for-the-claude-certified-architect--foundations-cca-f-and-placing-all-types-of-practice-questions-that-i-encounter-this-may-help-others-but-objective-is-to-keep-track-of-key-concept-and-some-practice-question-that-define-the-topics-as-well" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;Where to Register: &lt;a href="https://anthropic-partners.skilljar.com/claude-certified-architect-foundations-certification" target="_blank" rel="noreferrer"&gt;https://anthropic-partners.skilljar.com/claude-certified-architect-foundations-certification&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Fork-Join Framework in Java</title><link>https://dynamicallyblunttech.com/posts/fork-join-framework-in-java/</link><pubDate>Tue, 27 Oct 2026 08:14:21 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/fork-join-framework-in-java/</guid><description>&lt;p&gt;This post will discuss on the Fork Join framework introduced in Java 7. It utilizes the maximum available processors to compute any recursive task. So e.g. calculating the Fibonacci series or finding a number in the huge array can be done in very less time.&lt;/p&gt;&#10;&lt;h2 id="how-it-works" class="relative group"&gt;How it Works &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#how-it-works" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Lets understand some key points in this framework&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Fork means spawning a new task.&lt;/li&gt;&#10;&lt;li&gt;Join means to join the pending task output.&lt;/li&gt;&#10;&lt;li&gt;Fork/Join uses the &lt;em&gt;&lt;strong&gt;Divide and Conquer&lt;/strong&gt;&lt;/em&gt; which divides the entire dataset into small chunks for computation or applying any specific logic. Once each task is computed independently, it will merge the output of the computation to get the final result.&lt;/li&gt;&#10;&lt;li&gt;It runs all the forked tasks in parallel using the available capacity of your machine on which it is running.&lt;/li&gt;&#10;&lt;li&gt;To run the tasks in parallel, it uses the number of processors available to JVM which is &lt;em&gt;Runtime.getRuntime().availableProcessors()&lt;/em&gt; number of threads.&lt;/li&gt;&#10;&lt;li&gt;Each of these threads have &lt;em&gt;&lt;strong&gt;double ended Queue (De-queue)&lt;/strong&gt;&lt;/em&gt;. In a de-queue you can add or remove an elements from the head or tail.&lt;/li&gt;&#10;&lt;li&gt;Using de-queue, it applies the &lt;em&gt;&lt;strong&gt;work-stealing algorithm&lt;/strong&gt;&lt;/em&gt;, where if there are no tasks for a thread to execute, it will steal the tasks from other threads.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;This approach ensures efficient execution of a big task, utilizing the available processors of your machine.&lt;/p&gt;</description></item><item><title>Spring Boot Application External Configurations</title><link>https://dynamicallyblunttech.com/posts/spring-boot-application-external-configurations/</link><pubDate>Tue, 27 Oct 2026 08:14:21 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/spring-boot-application-external-configurations/</guid><description>&lt;p&gt;Spring boot application provides a quick and elegant way to create REST API&amp;rsquo;s with minimal boiler plate code and resolves any dependency that is present in the &lt;em&gt;classpath&lt;/em&gt;.&lt;/p&gt;&#10;&lt;p&gt;In this plethora of new technologies era, it is evident that your spring boot application can have multiple configuration files which is configured, to be used by different parts of your code.&lt;/p&gt;&#10;&lt;p&gt;For example the database specific configuration can go in a different location which more secure, while an environment specific configuration is kept in a different configuration file. Its more on how the design and implementation goes.&lt;/p&gt;</description></item><item><title>CRUD operation in MongoDB</title><link>https://dynamicallyblunttech.com/posts/crud-operation-in-mongodb/</link><pubDate>Tue, 27 Oct 2026 08:14:20 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/crud-operation-in-mongodb/</guid><description>&lt;p&gt;In this post we will create a Java application which will interact with MongoDB to perform all the CRUD operations.&lt;/p&gt;&#10;&lt;h2 id="what-is-nosql-database" class="relative group"&gt;&lt;strong&gt;What is NoSQL database.&lt;/strong&gt; &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#what-is-nosql-database" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;To start with, these database are non-relational database, but that doesn&amp;rsquo;t mean that the NoSQL database cannot maintain relationship. These database are different from relational database in the way the data is stored. NoSQL data model keeps the related data nested to single data structure.&lt;/p&gt;</description></item><item><title>Real-Time Aggregations with Kafka Streams at 10K Events/Sec</title><link>https://dynamicallyblunttech.com/posts/real-time-aggregations-with-kafka-streams-at-10k-events-sec/</link><pubDate>Tue, 27 Oct 2026 08:14:20 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/real-time-aggregations-with-kafka-streams-at-10k-events-sec/</guid><description>&lt;p&gt;&lt;strong&gt;Part 3 of the StreamMetrics Series&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;*Previous parts: &lt;em&gt;&#10; &#10; &lt;a href="https://dynamicallyblunttech.com/posts/building-a-production-kafka-producer/"&gt;&lt;em&gt;Part 1: Kafka Producer&lt;/em&gt;&lt;/a&gt;&lt;/em&gt; | &lt;em&gt;&#10; &#10; &lt;a href="https://dynamicallyblunttech.com/posts/building-production-grade-kafka-consumer-patterns/"&gt;&lt;em&gt;Part 2: Consumer + DLQ&lt;/em&gt;&lt;/a&gt;&lt;/em&gt; | *&#10; &#10; &lt;a href="https://dynamicallyblunttech.com/posts/from-localhost-to-kubernetes-deploying-streammetrics-at-scale/"&gt;&lt;em&gt;Part 4: From Localhost to Kubernetes&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;Building production-grade streaming analytics: windows, state stores, and performance validation&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;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:&lt;/p&gt;&#10;&lt;p&gt;&lt;em&gt;&lt;strong&gt;How do you extract insights from that fire hose of data?&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Testing in Microservices</title><link>https://dynamicallyblunttech.com/posts/testing-in-microservices/</link><pubDate>Tue, 27 Oct 2026 08:14:20 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/testing-in-microservices/</guid><description>&lt;p&gt;In this post we will go through the integration testing of the controller of any Spring Boot project. We will be using an existing Spring boot project which was created for the &lt;a href="https://www.dynamicallyblunttech.com/post/read-write-excel-using-apache-poi-java" target="_blank" rel="noreferrer"&gt;&lt;em&gt;previous post&lt;/em&gt;&lt;/a&gt;. First lets go through the types of testing that can be done in Microservices environment.&lt;/p&gt;&#10;&lt;h2 id="types-of-testing-in-microservices" class="relative group"&gt;&lt;strong&gt;Types of Testing in Microservices&lt;/strong&gt; &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#types-of-testing-in-microservices" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;In Microservices architecture, where different servcies interact with each other it becomes a bit complex to test all the services and keeping the automated test cases will help in recognizing any shared services and the impact of change on one another services.&lt;/p&gt;</description></item><item><title>From Localhost to Kubernetes: Deploying StreamMetrics at Scale</title><link>https://dynamicallyblunttech.com/posts/from-localhost-to-kubernetes-deploying-streammetrics-at-scale/</link><pubDate>Tue, 27 Oct 2026 08:14:19 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/from-localhost-to-kubernetes-deploying-streammetrics-at-scale/</guid><description>&lt;p&gt;&lt;strong&gt;Part 4 of the StreamMetrics Series&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;*Previous parts: &lt;em&gt;&#10; &#10; &lt;a href="https://dynamicallyblunttech.com/posts/building-a-production-kafka-producer/"&gt;&lt;em&gt;Part 1: Kafka Producer&lt;/em&gt;&lt;/a&gt;&lt;/em&gt; | &lt;em&gt;&#10; &#10; &lt;a href="https://dynamicallyblunttech.com/posts/building-production-grade-kafka-consumer-patterns/"&gt;&lt;em&gt;Part 2: Consumer + DLQ&lt;/em&gt;&lt;/a&gt;&lt;/em&gt; | *&#10; &#10; &lt;a href="https://dynamicallyblunttech.com/posts/real-time-aggregations-with-kafka-streams-at-10k-events-sec/"&gt;&lt;em&gt;Part 3: Real-Time Aggregations&lt;/em&gt;&lt;/a&gt;Streammetric Bottleneck Explainer by NotebookLM&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/2Bs8K6folk0?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;p&gt;Love how after building something locally, you think &amp;ldquo;&lt;em&gt;okay, it works on my machine!&lt;/em&gt;&amp;rdquo; and then reality hits when you try to deploy it. Docker says &amp;ldquo;&lt;em&gt;works on my machine&lt;/em&gt;&amp;rdquo; is not an excuse anymore, and Kubernetes says &amp;ldquo;&lt;em&gt;hold my beer, let&amp;rsquo;s make it production-ready.&lt;/em&gt;&amp;rdquo;&lt;/p&gt;</description></item><item><title>Production Monitoring: You Can't Fix What You Can't See</title><link>https://dynamicallyblunttech.com/posts/production-monitoring-you-can-t-fix-what-you-can-t-see/</link><pubDate>Tue, 27 Oct 2026 08:14:19 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/production-monitoring-you-can-t-fix-what-you-can-t-see/</guid><description>&lt;p&gt;Previous parts: &#10; &#10; &lt;a href="https://dynamicallyblunttech.com/posts/building-a-production-kafka-producer/"&gt;Part 1: Kafka Producer&lt;/a&gt; | &#10; &#10; &lt;a href="https://dynamicallyblunttech.com/posts/building-production-grade-kafka-consumer-patterns/"&gt;Part 2: Consumer + DLQ&lt;/a&gt; | &#10; &#10; &lt;a href="https://dynamicallyblunttech.com/posts/real-time-aggregations-with-kafka-streams-at-10k-events-sec/"&gt;Part 3: Real-Time Aggregations&lt;/a&gt; | &#10; &#10; &lt;a href="https://dynamicallyblunttech.com/posts/from-localhost-to-kubernetes-deploying-streammetrics-at-scale/"&gt;Part 4: Docker + Kubernetes&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;You know that feeling when your app is running in production and someone asks &amp;ldquo;Is everything okay?&amp;rdquo; and you respond with &amp;ldquo;&amp;hellip;I think so?&amp;rdquo; Yeah, that&amp;rsquo;s not good enough.&lt;/p&gt;&#10;&lt;p&gt;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 blind. Sure, the pods were running. The logs looked fine. But I had no idea:&lt;/p&gt;</description></item><item><title>Docker Desktop Model Runner</title><link>https://dynamicallyblunttech.com/posts/docker-desktop-model-runner/</link><pubDate>Tue, 27 Oct 2026 08:14:18 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/docker-desktop-model-runner/</guid><description>&lt;p&gt;In today&amp;rsquo;s rapidly evolving tech landscape, the availability of diverse AI models for everyday users marks a significant shift in how we interact with technology. However, with this convenience comes a critical responsibility: &lt;em&gt;ensuring data privacy remains intact&lt;/em&gt;. Enter Docker Desktop, a powerful tool that revolutionised application deployment by packaging large applications as lightweight images, which can be executed in isolated environments called containers.&lt;/p&gt;&#10;&lt;p&gt;One of the standout features of Docker Desktop is the &lt;strong&gt;Docker Model Runner&lt;/strong&gt;. This innovative addition empowers developers to run AI models locally on their machines. By leveraging this feature, users can harness the capabilities of advanced AI without the need to share sensitive data or manage complex API keys. With Docker Model Runner, you can focus on development and experimentation while maintaining control over your data privacy.&lt;/p&gt;</description></item><item><title>Set Swappiness in Linux</title><link>https://dynamicallyblunttech.com/posts/set-swappiness-in-linux/</link><pubDate>Tue, 27 Oct 2026 08:14:18 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/set-swappiness-in-linux/</guid><description>&lt;p&gt;In this post we will look into how to change the swappiness value in Linux.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Swappiness&lt;/strong&gt; is the kernel parameter that defines how much your Linux kernel will use to copy RAM contents to swap. A low swap value means kernel will try to avoid swapping as much as possible, while a higher value will tend to use more data for swapping.&lt;/p&gt;&#10;&lt;h3 id="approach-1" class="relative group"&gt;Approach 1: &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#approach-1" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h3&gt;&lt;h4 id="steps" class="relative group"&gt;Steps &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#steps" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h4&gt;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Login as root.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;To get the current swappiness value:&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;</description></item><item><title>CodeForgeAI: Building a 5-Agent Multi-LLM Pipeline That Writes, Reviews, Tests, and Deploys Java Code — Entirely Locally</title><link>https://dynamicallyblunttech.com/posts/codeforgeai-building-a-5-agent-multi-llm-pipeline-that-writes-reviews-tests-and-deploys-java-cod/</link><pubDate>Tue, 27 Oct 2026 08:14:17 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/codeforgeai-building-a-5-agent-multi-llm-pipeline-that-writes-reviews-tests-and-deploys-java-cod/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; — 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.&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;h2 id="table-of-contents" class="relative group"&gt;&lt;strong&gt;Table of Contents&lt;/strong&gt; &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#table-of-contents" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;ol&gt;&#10;&lt;li&gt;Motivation &amp;amp; Goals&lt;/li&gt;&#10;&lt;li&gt;Tech Stack&lt;/li&gt;&#10;&lt;li&gt;End-to-End Pipeline Architecture&#10;&lt;ol&gt;&#10;&lt;li&gt;The 5 Agents — Deep Dive&lt;/li&gt;&#10;&lt;li&gt;Business Analyst Agent&lt;/li&gt;&#10;&lt;li&gt;Code Generator Agent&lt;/li&gt;&#10;&lt;li&gt;Code Review Agent&lt;/li&gt;&#10;&lt;li&gt;Test Generator Agent&lt;/li&gt;&#10;&lt;li&gt;Test Executor Agent&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;RAG: Codebase Ingestion &amp;amp; Vector Store&lt;/li&gt;&#10;&lt;li&gt;The Hardest Part: Running Multiple LLMs Locally via Ollama&#10;&lt;ol&gt;&#10;&lt;li&gt;Hardware Constraints&lt;/li&gt;&#10;&lt;li&gt;Models We Evaluated&lt;/li&gt;&#10;&lt;li&gt;The num_ctx Uniformity Breakthrough&lt;/li&gt;&#10;&lt;li&gt;Final Model Decision&lt;/li&gt;&#10;&lt;li&gt;Ollama Environment Variables That Mattered&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;Challenges We Solved&lt;/li&gt;&#10;&lt;li&gt;Code Structure&lt;/li&gt;&#10;&lt;li&gt;Real-Time UI with Vaadin &amp;amp; Server Push&lt;/li&gt;&#10;&lt;li&gt;Jira Integration&lt;/li&gt;&#10;&lt;li&gt;Human-in-the-Loop Checkpoints&lt;/li&gt;&#10;&lt;li&gt;What We Learned&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="1-motivation--goals" class="relative group"&gt;&lt;strong&gt;1. Motivation &amp;amp; Goals&lt;/strong&gt; &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#1-motivation--goals" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Generative AI is reshaping software development, but most AI coding tools are cloud-hosted, meaning proprietary code is sent to external servers. For enterprise environments where source code must never leave the network, that&amp;rsquo;s a hard blocker.&lt;/p&gt;</description></item><item><title>Log4j Vulnerability - Continued</title><link>https://dynamicallyblunttech.com/posts/log4j-vulnerability-continued/</link><pubDate>Tue, 27 Oct 2026 08:14:17 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/log4j-vulnerability-continued/</guid><description>&lt;p&gt;There was second discovery of a new vulnerability on the recent version of log4j 2.15.0.&lt;/p&gt;&#10;&lt;h2 id="denial-of-service-attack" class="relative group"&gt;Denial of Service Attack &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#denial-of-service-attack" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;If the service or application is vulnerable to DoS attack, then a attacker can block the service or the application by bombarding it with infinite request, which will result in failure of the service because of the overburden resource utilization.&lt;/p&gt;</description></item><item><title>Scraping Youtube Videos - Using Python's Requests &amp; JSON Libraries</title><link>https://dynamicallyblunttech.com/posts/scraping-youtube-metadata-in-python-using-requests-and-json-libraries-only/</link><pubDate>Tue, 27 Oct 2026 08:14:17 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/scraping-youtube-metadata-in-python-using-requests-and-json-libraries-only/</guid><description>&lt;p&gt;In this post we will look into &lt;em&gt;&lt;strong&gt;Scraping any Youtube video&lt;/strong&gt;&lt;/em&gt; metadata to get the views, likes, dislikes, published date etc. information using &lt;em&gt;&lt;strong&gt;Python&lt;/strong&gt;&lt;/em&gt;. We will not be using any third party libraries which parse the HTML like Beautiful Soup.&lt;/p&gt;&#10;&lt;h3 id="problem-statement" class="relative group"&gt;&lt;strong&gt;Problem Statement:&lt;/strong&gt; &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#problem-statement" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;To fetch Youtube video metadata like its View count, Likes/Dislikes count, Published Date, Title of the video etc. without using any 3rd party libraries which parses HTML or Javascript. To add to that, we will not be using the &lt;em&gt;&lt;strong&gt;Youtube API&lt;/strong&gt;&lt;/em&gt; to fetch data.&lt;/p&gt;</description></item><item><title>Spring Data JPA with MongoDB</title><link>https://dynamicallyblunttech.com/posts/spring-data-jpa-with-mongodb/</link><pubDate>Tue, 27 Oct 2026 08:14:17 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/spring-data-jpa-with-mongodb/</guid><description>&lt;p&gt;In this post we will create a simple Spring JPA project which will connect to MongoDB and create a document, where we will save records and then will try to fetch those records using JPA repository built in methods.&lt;/p&gt;&#10;&lt;p&gt;In this post we will try performing all CRUD Operation on MongoDB Using JSON queries in Spring Data JPA&lt;/p&gt;&#10;&lt;h2 id="project-structure" class="relative group"&gt;&lt;strong&gt;Project Structure&lt;/strong&gt; &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#project-structure" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;We will create Employee repository which will store the Employee models, and will create Test cases to fetch data based on JSON queries from MongoDB on my local.&lt;/p&gt;</description></item><item><title>CCA-F Domain 4: Prompt Engineering and Structured Output</title><link>https://dynamicallyblunttech.com/posts/cca-f-domain-4-prompt-engineering-and-structured-output/</link><pubDate>Tue, 27 Oct 2026 08:14:16 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/cca-f-domain-4-prompt-engineering-and-structured-output/</guid><description>&lt;h3 id="as-we-discussed-in-the-previous-post-on-domain-3-claude-code-configuration-and-workflow-this-part-of-the-post-will-cover-the-domain-4-which-holds-20-weightage-in-the-exam" class="relative group"&gt;As we discussed in the previous post on &lt;a href="https://dynamicallyblunttech.com/post/cca-f-domain-3-claude-code-configuration-and-workflows-key-concepts"&gt;Domain 3: Claude Code Configuration and Workflow&lt;/a&gt;, this part of the post will cover the Domain 4 which holds 20% weightage in the exam. &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#as-we-discussed-in-the-previous-post-on-domain-3-claude-code-configuration-and-workflow-this-part-of-the-post-will-cover-the-domain-4-which-holds-20-weightage-in-the-exam" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h3&gt;&lt;h3 id="if-you-have-directly-stumbled-upon-this-page-i-am-preparing-for-the-claude-certified-architect--foundations-cca-f-and-placing-all-types-of-practice-questions-that-i-encounter-this-may-help-others-but-objective-is-to-keep-track-of-key-concept-and-some-practice-question-that-define-the-topics-as-well" class="relative group"&gt;If you have directly stumbled upon this page, I am preparing for the Claude Certified Architect — Foundations (CCA-F), and placing all types of practice questions that I encounter. This may help others, but objective is to keep track of key concept and some practice question that define the topics as well. &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#if-you-have-directly-stumbled-upon-this-page-i-am-preparing-for-the-claude-certified-architect--foundations-cca-f-and-placing-all-types-of-practice-questions-that-i-encounter-this-may-help-others-but-objective-is-to-keep-track-of-key-concept-and-some-practice-question-that-define-the-topics-as-well" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;Where to Register: &lt;a href="https://anthropic-partners.skilljar.com/claude-certified-architect-foundations-certification" target="_blank" rel="noreferrer"&gt;https://anthropic-partners.skilljar.com/claude-certified-architect-foundations-certification&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Chatbot using Spring AI and OpenAI</title><link>https://dynamicallyblunttech.com/posts/chatbot-using-spring-ai-and-openai/</link><pubDate>Tue, 27 Oct 2026 08:14:16 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/chatbot-using-spring-ai-and-openai/</guid><description>&lt;p&gt;In the previous post about utilizing Spring AI with Ollama and employing Docker Model Runner to execute AI models locally, this post will expand on that by developing a chatbot. This chatbot will retain interaction data in memory, facilitating more meaningful communication.&lt;/p&gt;&#10;&lt;p&gt;In this post, we will use the Docker Model Runner to run Google&amp;rsquo;s Gemma AI model in our local machine with OpenAI, and create a spring boot AI chat application which will generate responses based on the previous context.&lt;/p&gt;</description></item><item><title>Custom Java Class : Peculiar Cases</title><link>https://dynamicallyblunttech.com/posts/custom-java-class-peculiar-cases/</link><pubDate>Tue, 27 Oct 2026 08:14:16 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/custom-java-class-peculiar-cases/</guid><description>&lt;p&gt;This post is about understanding the type of interview questions which can come from a Custom Java class where we can override &lt;em&gt;equals&lt;/em&gt;, &lt;em&gt;hashcode&lt;/em&gt;, *toString *or implements the Interface to *sort *the list of this custom Java class.&lt;/p&gt;&#10;&lt;p&gt;Lets go one by one, where you start your coding round and the first information provided is&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;1.&lt;/strong&gt; Create a Customer Java class which has Name, Age and Profession attributes. The interviewer also added override the *toString *method to display it in below format.&lt;/p&gt;</description></item><item><title>Web Socket Client - Receiving Stream of Messages</title><link>https://dynamicallyblunttech.com/posts/web-socket-client-receiving-stream-of-messages/</link><pubDate>Tue, 27 Oct 2026 08:14:16 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/web-socket-client-receiving-stream-of-messages/</guid><description>&lt;p&gt;In this post we will be creating a Web Socket Client which will receive all messages coming from the Web Socket Server.&lt;/p&gt;&#10;&lt;h3 id="web-sockets" class="relative group"&gt;&lt;strong&gt;Web Sockets&lt;/strong&gt; &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#web-sockets" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;The web socket is a communication protocol like HTTP used in client - server architecture. But, unlike HTTP, web-sockets are &lt;em&gt;&lt;strong&gt;bi-directional, full duplex&lt;/strong&gt;&lt;/em&gt; communication protocol. This means that the data can be flown in either directions, client to server or server to client.&lt;/p&gt;</description></item><item><title>Building Production-Grade Apache Kafka Consumer Patterns</title><link>https://dynamicallyblunttech.com/posts/building-production-grade-kafka-consumer-patterns/</link><pubDate>Tue, 27 Oct 2026 08:14:15 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/building-production-grade-kafka-consumer-patterns/</guid><description>&lt;p&gt;&lt;strong&gt;Part 2 of the StreamMetrics Series&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;*Previous parts: &lt;em&gt;&#10; &#10; &lt;a href="https://dynamicallyblunttech.com/posts/building-a-production-kafka-producer/"&gt;&lt;em&gt;Part 1: Kafka Producer&lt;/em&gt;&lt;/a&gt;&lt;/em&gt; | &lt;em&gt;&#10; &#10; &lt;a href="https://dynamicallyblunttech.com/posts/real-time-aggregations-with-kafka-streams-at-10k-events-sec/"&gt;*Part 3: Real-time Aggregation *&lt;/a&gt;&lt;/em&gt; | *&#10; &#10; &lt;a href="https://dynamicallyblunttech.com/posts/from-localhost-to-kubernetes-deploying-streammetrics-at-scale/"&gt;&lt;em&gt;Part 4: From Localhost to Kubernetes&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;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 &#10; &#10; &lt;a href="https://dynamicallyblunttech.com/posts/building-a-production-kafka-producer/"&gt;Part 1&lt;/a&gt; we built the producer, today we add the consumer.&lt;/p&gt;&#10;&lt;h4 id="why-this-matters" class="relative group"&gt;&lt;strong&gt;Why This Matters&lt;/strong&gt; &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#why-this-matters" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;Most tutorials show you how to build a Kafka consumer. They show you @KafkaListener, they show you how to read a message, and they call it production-ready. It is not!&lt;/p&gt;</description></item><item><title>KUBERNETES LEARNING PHASE 1 - BASIC COMMANDS</title><link>https://dynamicallyblunttech.com/posts/kubernetes-learning-phase-1-basic-commands/</link><pubDate>Tue, 27 Oct 2026 08:14:15 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/kubernetes-learning-phase-1-basic-commands/</guid><description>&lt;p&gt;This post will only includes scenario based Kubernetes problem and the commands/debugging steps. It will be updated whenever I learn something new.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;For Installation of Kubernetes refer here&lt;/strong&gt;: &lt;a href="https://kubernetes.io/docs/tasks/tools/" target="_blank" rel="noreferrer"&gt;https://kubernetes.io/docs/tasks/tools/&lt;/a&gt;&lt;/p&gt;&#10;&lt;h3 id="case-1-get-all-pods-in-a-namespace" class="relative group"&gt;Case 1: Get all pods in a namespace &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#case-1-get-all-pods-in-a-namespace" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl get pods &lt;span style="color:#f92672"&gt;-&lt;/span&gt;n &lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt;namespace_name&lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="case-2-get-all-namespaces" class="relative group"&gt;Case 2: Get all namespaces &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#case-2-get-all-namespaces" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl get namespaces &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;OR&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl get ns&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="case-3-create-pods-with-a-name-and-image-in-a-particular-namespace" class="relative group"&gt;Case 3: Create pods with a name and image in a particular namespace &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#case-3-create-pods-with-a-name-and-image-in-a-particular-namespace" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl run &lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt;pod_name&lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#f92672"&gt;--&lt;/span&gt;image&lt;span style="color:#f92672"&gt;=&amp;lt;&lt;/span&gt;image_name&lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt;n &lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt;namespace&lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;e.g.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Aspect Programming in Spring - Logging</title><link>https://dynamicallyblunttech.com/posts/aspect-programming-in-spring-logging/</link><pubDate>Tue, 27 Oct 2026 08:14:14 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/aspect-programming-in-spring-logging/</guid><description>&lt;p&gt;Spring provides a simple and powerful way of writing custom wrappers function which can be executed around a range of methods. Aspect-oriented programming complements Object-oriented programming by providing another way of thinking about program structure.&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;The key unit of modularity in Aspects oriented programming (AOP) is the Aspects. Aspects enables modularization of concerns that cut across multiple types and objects. Such concerns are termed as &amp;ldquo;cross-cutting&amp;rdquo; concerns.&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;AOP is used in Spring framework to:&lt;/p&gt;</description></item><item><title>Exploring Government's Cowin APIs</title><link>https://dynamicallyblunttech.com/posts/exploring-government-s-cowin-apis/</link><pubDate>Tue, 27 Oct 2026 08:14:14 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/exploring-government-s-cowin-apis/</guid><description>&lt;p&gt;In this post we will be looking into the CoWIN APIs which GoI has published during the covid period where the third party app can utilize the APIs to create there own app.&lt;/p&gt;&#10;&lt;p&gt;We used only few API from the public list and created a &lt;em&gt;&lt;strong&gt;Spring boot application&lt;/strong&gt;&lt;/em&gt; which will get me the list of all the available slots for either the old or young people based on their age on a given date and list of pin codes.&lt;/p&gt;</description></item><item><title>II - Tokenization using Apache OpenNLP</title><link>https://dynamicallyblunttech.com/posts/ii-tokenization-using-apache-opennlp/</link><pubDate>Tue, 27 Oct 2026 08:14:14 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/ii-tokenization-using-apache-opennlp/</guid><description>&lt;p&gt;In this post we will create tokens of the given string using &lt;strong&gt;Apache OpenNLP&lt;/strong&gt; library.&lt;/p&gt;&#10;&lt;p&gt;This post is a continuation of the previous post &lt;a href="https://www.dynamicallyblunttech.com/post/i-sentence-segmentation-using-apache-opennlp" target="_blank" rel="noreferrer"&gt;&lt;strong&gt;Find Sentences using Apache Open NLP&lt;/strong&gt;&lt;/a&gt;**. **Refer to this post first for the setting up your project with Apache OpenNLP library. In the previous post we used &lt;em&gt;&lt;strong&gt;SentenceDetecterME&lt;/strong&gt;&lt;/em&gt;, &lt;em&gt;&lt;strong&gt;SentenceModel&lt;/strong&gt;&lt;/em&gt;, and ***Span ***class of the openNLP library.&lt;/p&gt;&#10;&lt;p&gt;Apache OpenNLP library provides the &lt;em&gt;&lt;strong&gt;SimpleTokenizer&lt;/strong&gt;&lt;/em&gt;, ***WhitespaceTokenizer ***and ***TokenizerME ***which will use the normal process to tokenize by splitting the string either on whitespace or using some already trained models. These classes doesn&amp;rsquo;t expose their constructors, so we have to use ***INSTANCE ***to get the instance of these classes.&lt;/p&gt;</description></item><item><title>IV - Recognizing Parts Of Speech Using Apache OpenNLP</title><link>https://dynamicallyblunttech.com/posts/iv-recognizing-parts-of-speech-using-apache-opennlp/</link><pubDate>Tue, 27 Oct 2026 08:14:14 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/iv-recognizing-parts-of-speech-using-apache-opennlp/</guid><description>&lt;p&gt;In this post we will discuss on recognizing parts of speech in a given sentence using &lt;em&gt;&lt;strong&gt;Apache OpenNLP&lt;/strong&gt;&lt;/em&gt; library. This is part of the series on &lt;em&gt;learning Natural Language Processing&lt;/em&gt; using Apache OpenNLP library.&lt;/p&gt;&#10;&lt;p&gt;Like other models where we detect sentence, or find names, or tokenize any give string, in this post also we will be using one of the trained models which is provided by Apache Open NLP library only.&lt;/p&gt;</description></item><item><title>Meet Smart Devops Assistant: Vision, Stack and Journey so far</title><link>https://dynamicallyblunttech.com/posts/meet-smart-devops-assistant-vision-stack-and-journey-so-far/</link><pubDate>Tue, 27 Oct 2026 08:14:14 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/meet-smart-devops-assistant-vision-stack-and-journey-so-far/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;&lt;em&gt;PRs that review themselves. Tests that write themselves. Stand-ups that summarise themselves.&lt;/em&gt;&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;Say hello to &lt;strong&gt;Smart DevOps Assistant (SDA)&lt;/strong&gt; — an AI-augmented helper that plugs into your developer workflow and reduces review/summary/test friction to near-zero.&lt;/p&gt;&#10;&lt;h2 id="why-this-project-exists-and-who-its-for" class="relative group"&gt;&lt;strong&gt;Why this project exists (and who it’s for)&lt;/strong&gt; &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#why-this-project-exists-and-who-its-for" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Modern teams drown in pull requests, context switching, and “Did we test that?” moments. SDA is for engineers who want:&lt;/p&gt;</description></item><item><title>CCA-F Domain 2: Tool Design and MCP Integration - Key Concepts</title><link>https://dynamicallyblunttech.com/posts/cca-f-domain-2-tool-design-and-mcp-integration-key-concepts/</link><pubDate>Tue, 27 Oct 2026 08:14:13 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/cca-f-domain-2-tool-design-and-mcp-integration-key-concepts/</guid><description>&lt;h3 id="as-we-discussed-in-the-previous-post-on-domain-1-agentic-architecture-and-orchestration-this-part-of-the-post-will-cover-the-domain-2-which-holds-18-weightage-in-the-exam" class="relative group"&gt;As we discussed in the previous post on &lt;a href="https://dynamicallyblunttech.com/post/cca-f-domain1-agentic-architecture-orchestration-key-concepts"&gt;Domain 1-Agentic Architecture and Orchestration&lt;/a&gt;, this part of the post will cover the Domain 2 which holds 18% weightage in the exam. &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#as-we-discussed-in-the-previous-post-on-domain-1-agentic-architecture-and-orchestration-this-part-of-the-post-will-cover-the-domain-2-which-holds-18-weightage-in-the-exam" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h3&gt;&lt;h3 id="if-you-have-directly-stumbled-upon-this-page-i-am-preparing-for-the-claude-certified-architect--foundations-cca-f-and-placing-all-types-of-practice-questions-that-i-encounter-this-may-help-others-but-objective-is-to-keep-track-of-key-concept-and-some-practice-question-that-define-the-topics-as-well" class="relative group"&gt;If you have directly stumbled upon this page, I am preparing for the Claude Certified Architect — Foundations (CCA-F), and placing all types of practice questions that I encounter. This may help others, but objective is to keep track of key concept and some practice question that define the topics as well. &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#if-you-have-directly-stumbled-upon-this-page-i-am-preparing-for-the-claude-certified-architect--foundations-cca-f-and-placing-all-types-of-practice-questions-that-i-encounter-this-may-help-others-but-objective-is-to-keep-track-of-key-concept-and-some-practice-question-that-define-the-topics-as-well" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;Where to Register: &lt;a href="https://anthropic-partners.skilljar.com/claude-certified-architect-foundations-certification" target="_blank" rel="noreferrer"&gt;https://anthropic-partners.skilljar.com/claude-certified-architect-foundations-certification&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Produce &amp; Consume Messages Using Apache Kafka</title><link>https://dynamicallyblunttech.com/posts/produce-consume-string-messages-using-apache-kafka-and-java/</link><pubDate>Tue, 27 Oct 2026 08:14:13 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/produce-consume-string-messages-using-apache-kafka-and-java/</guid><description>&lt;p&gt;In this post, we will create a Kafka producer which will produce string messages as Rest call and a consumer which will consume the produced messages.&lt;/p&gt;&#10;&lt;h2 id="installsetup-kafka" class="relative group"&gt;&lt;strong&gt;Install/Setup Kafka&lt;/strong&gt; &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#installsetup-kafka" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;To download Kafka refer to the &lt;a href="https://kafka.apache.org/downloads" target="_blank" rel="noreferrer"&gt;Apache Kafka Download website&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;Pick any of the desired package. For this post we chose 2.8.1&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Scala 2.12 - &lt;a href="https://www.apache.org/dyn/closer.cgi?path=/kafka/3.0.0/kafka_2.12-3.0.0.tgz" target="_blank" rel="noreferrer"&gt;&lt;em&gt;kafka_2.12-3.0.0.tgz&lt;/em&gt;&lt;/a&gt; (&lt;a href="https://downloads.apache.org/kafka/3.0.0/kafka_2.12-3.0.0.tgz.asc" target="_blank" rel="noreferrer"&gt;&lt;em&gt;asc&lt;/em&gt;&lt;/a&gt;, &lt;a href="https://downloads.apache.org/kafka/3.0.0/kafka_2.12-3.0.0.tgz.sha512" target="_blank" rel="noreferrer"&gt;&lt;em&gt;sha512&lt;/em&gt;&lt;/a&gt;)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="note-the-version-2133-is-not-working-and-will-throw-connection-refused-error" class="relative group"&gt;&lt;strong&gt;NOTE&lt;/strong&gt;: The version 2.13.3 is not working and will throw Connection Refused error. &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#note-the-version-2133-is-not-working-and-will-throw-connection-refused-error" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h4&gt;&lt;h3 id="steps-to-setup" class="relative group"&gt;&lt;strong&gt;Steps to Setup:&lt;/strong&gt; &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#steps-to-setup" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;Extract the tgz file to some directory.&lt;/p&gt;</description></item><item><title>Reactive Programming in Java</title><link>https://dynamicallyblunttech.com/posts/reactive-programming-in-java/</link><pubDate>Tue, 27 Oct 2026 08:14:13 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/reactive-programming-in-java/</guid><description>&lt;p&gt;In this post, we will try to understand the basics of the &lt;em&gt;&lt;strong&gt;Reactive programming&lt;/strong&gt;&lt;/em&gt;, what are the core features of it and how to handle the errors in reactive programming. This post will be more on the explanation section and less on coding something. That will come later.&lt;/p&gt;&#10;&lt;p&gt;According to Wikipedia, Reactive Programming is defined as:&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;Reactive programming is an asynchronous programming paradigm concerned with data streams and the propagation of change. This means that it becomes possible to express static (e.g. arrays) or dynamic (e.g. event emitters) data streams with ease via the employed programming language(s).&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item><item><title>Read/Write Excel Using Apache POI &amp; Java</title><link>https://dynamicallyblunttech.com/posts/read-write-excel-using-apache-poi-java/</link><pubDate>Tue, 27 Oct 2026 08:14:13 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/read-write-excel-using-apache-poi-java/</guid><description>&lt;p&gt;This post will explore Apache POI library which is used to read any excel document and can also edit the excel sheets.&lt;/p&gt;&#10;&lt;p&gt;Apache POI (&lt;em&gt;&lt;strong&gt;Poor Obfuscation Implementation&lt;/strong&gt;&lt;/em&gt;) is open source java project to read or write Microsoft excel documents. The latest version is &lt;strong&gt;5.0.1&lt;/strong&gt;&lt;/p&gt;&#10;&lt;h3 id="dependencies" class="relative group"&gt;&lt;strong&gt;Dependencies&lt;/strong&gt; &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#dependencies" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;To include Apache POI libraries, there are two libraries to handle different version of Excel.&lt;/p&gt;</description></item><item><title>#LC226 - Inversion Of Binary Tree Using Recursion</title><link>https://dynamicallyblunttech.com/posts/lc226-inversion-of-binary-tree-using-recursion/</link><pubDate>Tue, 27 Oct 2026 08:14:12 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/lc226-inversion-of-binary-tree-using-recursion/</guid><description>&lt;p&gt;Following the last post on the&lt;a href="https://www.dynamicallyblunttech.com/post/binary-tree-traversal" target="_blank" rel="noreferrer"&gt;* binary tree traversals*&lt;/a&gt;, in this post we will try to invert a given binary tree.&lt;/p&gt;&#10;&lt;p&gt;Binary tree is a data structure in which a node can have maximum two child nodes and minimum zero nodes. Each node contains the value of the node, the left node reference and right node reference.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 4&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;/&lt;/span&gt; &lt;span style="color:#960050;background-color:#1e0010"&gt;\&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 2 7&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;/&lt;/span&gt; &lt;span style="color:#960050;background-color:#1e0010"&gt;\&lt;/span&gt; &lt;span style="color:#f92672"&gt;/&lt;/span&gt; &lt;span style="color:#960050;background-color:#1e0010"&gt;\&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;1 3 6 9&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In the above binary tree, root node has a value of 4 and 2 is the left node of the root and 7 is right node of the root. &lt;em&gt;&lt;strong&gt;An inverted node will look like this, where the left node is swapped with the right node.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Building a Production Kafka Producer</title><link>https://dynamicallyblunttech.com/posts/building-a-production-kafka-producer/</link><pubDate>Tue, 27 Oct 2026 08:14:12 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/building-a-production-kafka-producer/</guid><description>&lt;p&gt;&lt;strong&gt;Part 1 of the StreamMetrics Series&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;*Previous parts: &lt;em&gt;&#10; &#10; &lt;a href="https://dynamicallyblunttech.com/posts/building-production-grade-kafka-consumer-patterns/"&gt;&lt;em&gt;Part 2: Consumer + DLQ&lt;/em&gt;&lt;/a&gt;&lt;/em&gt; | &lt;em&gt;&#10; &#10; &lt;a href="https://dynamicallyblunttech.com/posts/real-time-aggregations-with-kafka-streams-at-10k-events-sec/"&gt;&lt;em&gt;Part 3: Real-Time Aggregations&lt;/em&gt;&lt;/a&gt;&lt;/em&gt; | &lt;em&gt;&#10; &#10; &lt;a href="https://dynamicallyblunttech.com/posts/from-localhost-to-kubernetes-deploying-streammetrics-at-scale/"&gt;&lt;em&gt;Part 4: From Localhost to Kubernetes&lt;/em&gt;&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;Love how it rhymes &amp;ldquo;Production Kafka Producer&amp;rdquo;.&lt;/p&gt;&#10;&lt;p&gt;Here&amp;rsquo;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 &amp;ndash; sometimes listens, and on others, feels cornered by his other siblings. This is the &lt;em&gt;&lt;strong&gt;Tale&lt;/strong&gt;&lt;/em&gt; of making the brothers listen and show how the configurations works when we enter the world of multi-node cluster in Kafka and Spring.&lt;/p&gt;</description></item><item><title>Day to Day Lambda &amp; Functional Programming in Java 8</title><link>https://dynamicallyblunttech.com/posts/day-to-day-lambda-functional-programming-java-8/</link><pubDate>Tue, 27 Oct 2026 08:14:12 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/day-to-day-lambda-functional-programming-java-8/</guid><description>&lt;p&gt;If you have seen lately, everyone has shifted to Java 8 and is more or less trying to move from lengthy code blocks to few lines/precise use of Lambda and Functional Programming introduced in Java 8. So, we will talk about all day to day operations that can be converted to use lambda or functional programming and make our code precise and simple.&lt;/p&gt;&#10;&lt;p&gt;This post will be a bit lengthy where we will write &lt;em&gt;Junit5&lt;/em&gt; tests and the code for every scenario. It will be interesting to know, as these days, a lot of companies are focusing on candidates to know the use of lambda expressions at least.&lt;/p&gt;</description></item><item><title>Maven - Manifest file and Jar with Dependencies</title><link>https://dynamicallyblunttech.com/posts/maven-manifest-file-and-jar-with-dependencies/</link><pubDate>Tue, 27 Oct 2026 08:14:12 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/maven-manifest-file-and-jar-with-dependencies/</guid><description>&lt;p&gt;In this post, we will build a simple maven project which will create two jar files, which can be executed using below command&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;java &lt;span style="color:#f92672"&gt;-&lt;/span&gt;jar sample.&lt;span style="color:#a6e22e"&gt;jar&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt;arguments space separated&lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In maven, there is plugin called *maven-assembly-plugin, *which will assemble the dependencies and package it into a jar file, provided packaging as jar is given in the maven pom.xml file.&lt;/p&gt;&#10;&lt;p&gt;So, first and foremost thing is to have packaging given as jar like this&lt;/p&gt;</description></item><item><title>Reading CSV file in Python with Encoding</title><link>https://dynamicallyblunttech.com/posts/reading-csv-file-in-python-with-encoding/</link><pubDate>Tue, 27 Oct 2026 08:14:12 +0530</pubDate><guid>https://dynamicallyblunttech.com/posts/reading-csv-file-in-python-with-encoding/</guid><description>&lt;p&gt;This post will be to resolve a particular error I encountered while reading the csv files for one of my task. This csv file can contain &lt;em&gt;non-English&lt;/em&gt; characters like Chinese or Japanese and hence we need to use the correct encoding format to read the file.&lt;/p&gt;&#10;&lt;p&gt;Lets say the csv file contains following:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;Title&amp;#34;&lt;/span&gt;,&lt;span style="color:#e6db74"&gt;&amp;#34;Id&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;2018-适用于 Windows Server 2016 的 05 累积更新，适合基于 x64 的系统 (KB4103723)&amp;#34;&lt;/span&gt;,&lt;span style="color:#e6db74"&gt;&amp;#34;e6c7b5bd04ec&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;2021-适用于 Windows Server 2016 的 09 服务堆栈更新，适合基于 x64 的系统 (KB5005698)&amp;#34;&lt;/span&gt;,&lt;span style="color:#e6db74"&gt;&amp;#34;840e7e93b835&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;Windows 恶意软件删除工具 x64 - v5.96 (KB890830)&amp;#34;&lt;/span&gt;,&lt;span style="color:#e6db74"&gt;&amp;#34;cffc4d7bc390&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;As you can see it contains windows update KB name in Chinese characters.&lt;/p&gt;</description></item></channel></rss>