<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Pramod Kumar</title>
    <description>The latest articles on Forem by Pramod Kumar (@pramod_kumar_0820).</description>
    <link>https://forem.com/pramod_kumar_0820</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3814079%2F5ab2c1c8-aa8c-40ba-a01d-d708a20f4472.png</url>
      <title>Forem: Pramod Kumar</title>
      <link>https://forem.com/pramod_kumar_0820</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/pramod_kumar_0820"/>
    <language>en</language>
    <item>
      <title>Why Senior Engineers Are Quietly Moving Away from Microservices (And Back to Monoliths)</title>
      <dc:creator>Pramod Kumar</dc:creator>
      <pubDate>Sun, 05 Apr 2026 14:27:24 +0000</pubDate>
      <link>https://forem.com/pramod_kumar_0820/why-senior-engineers-are-quietly-moving-away-from-microservices-and-back-to-monoliths-3khk</link>
      <guid>https://forem.com/pramod_kumar_0820/why-senior-engineers-are-quietly-moving-away-from-microservices-and-back-to-monoliths-3khk</guid>
      <description>&lt;p&gt;For years, microservices have been the gold standard of modern architecture. Scalable, flexible, independent deployments — what’s not to love?&lt;/p&gt;

&lt;p&gt;But something interesting is happening lately…&lt;/p&gt;

&lt;p&gt;Senior engineers — the ones who’ve &lt;em&gt;actually lived through production pain&lt;/em&gt; — are slowly, quietly moving back toward monoliths.&lt;/p&gt;

&lt;p&gt;Let’s talk about why 👇&lt;/p&gt;




&lt;h3&gt;
  
  
  🧩 1. Microservices Add Massive Complexity
&lt;/h3&gt;

&lt;p&gt;In theory:&lt;br&gt;
👉 Small, independent services&lt;br&gt;
👉 Clear boundaries&lt;br&gt;
👉 Easy scaling&lt;/p&gt;

&lt;p&gt;In reality:&lt;br&gt;
❌ Distributed systems problems&lt;br&gt;
❌ Network latency&lt;br&gt;
❌ Debugging across services&lt;br&gt;
❌ Versioning hell&lt;/p&gt;

&lt;p&gt;You don’t just write code anymore — you manage &lt;em&gt;communication between systems&lt;/em&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  🔍 2. Debugging Becomes a Nightmare
&lt;/h3&gt;

&lt;p&gt;Bug in a monolith:&lt;br&gt;
→ Check logs → fix → done&lt;/p&gt;

&lt;p&gt;Bug in microservices:&lt;br&gt;
→ Which service?&lt;br&gt;
→ Which version?&lt;br&gt;
→ Is it network? auth? data mismatch?&lt;br&gt;
→ Trace across 5–10 services&lt;/p&gt;

&lt;p&gt;Suddenly, a “simple bug” becomes a full investigation.&lt;/p&gt;




&lt;h3&gt;
  
  
  ⚙️ 3. Operational Overhead Explodes
&lt;/h3&gt;

&lt;p&gt;Microservices require:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CI/CD pipelines for each service&lt;/li&gt;
&lt;li&gt;Monitoring &amp;amp; alerting per service&lt;/li&gt;
&lt;li&gt;Service discovery&lt;/li&gt;
&lt;li&gt;API gateways&lt;/li&gt;
&lt;li&gt;Container orchestration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s a &lt;em&gt;lot&lt;/em&gt; of infrastructure before solving actual business problems.&lt;/p&gt;




&lt;h3&gt;
  
  
  🧠 4. Cognitive Load is Real
&lt;/h3&gt;

&lt;p&gt;With microservices:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Engineers must understand multiple repos&lt;/li&gt;
&lt;li&gt;Different services, patterns, and contracts&lt;/li&gt;
&lt;li&gt;System-wide behavior&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With a monolith:&lt;br&gt;
✔ One codebase&lt;br&gt;
✔ Easier onboarding&lt;br&gt;
✔ Clearer mental model&lt;/p&gt;

&lt;p&gt;Less context-switching = more productivity.&lt;/p&gt;




&lt;h3&gt;
  
  
  🚀 5. Monoliths Are Not the Enemy
&lt;/h3&gt;

&lt;p&gt;Modern monoliths (a.k.a. &lt;em&gt;modular monoliths&lt;/em&gt;) offer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clear internal boundaries&lt;/li&gt;
&lt;li&gt;Simpler deployment&lt;/li&gt;
&lt;li&gt;Easier testing&lt;/li&gt;
&lt;li&gt;Faster iteration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can still scale — just &lt;em&gt;intelligently&lt;/em&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  ⚖️ 6. Microservices Still Have a Place
&lt;/h3&gt;

&lt;p&gt;They make sense when:&lt;br&gt;
✅ Teams are large and independent&lt;br&gt;
✅ Systems need extreme scalability&lt;br&gt;
✅ Domains are clearly separable&lt;/p&gt;

&lt;p&gt;But for most startups and mid-sized teams?&lt;/p&gt;

&lt;p&gt;👉 They’re often &lt;em&gt;overkill&lt;/em&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  💡 The Real Takeaway
&lt;/h3&gt;

&lt;p&gt;Microservices aren’t bad.&lt;/p&gt;

&lt;p&gt;But they’re not a &lt;em&gt;default choice&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Senior engineers are realizing:&lt;br&gt;
👉 Start simple&lt;br&gt;
👉 Scale complexity only when needed&lt;br&gt;
👉 Optimize for developer productivity, not trends&lt;/p&gt;




&lt;p&gt;🔥 The industry is maturing.&lt;/p&gt;

&lt;p&gt;We’re moving from:&lt;br&gt;
“Microservices everywhere!”&lt;br&gt;
to&lt;br&gt;
“Use the right tool for the job.”&lt;/p&gt;




&lt;p&gt;If you’ve worked with both architectures, you know:&lt;br&gt;
👉 Simplicity wins more often than hype.&lt;/p&gt;




&lt;p&gt;I’ve broken this down in more detail (with real-world examples) here:&lt;br&gt;
🔗 &lt;a href="https://medium.com/@pramod.er90/why-senior-engineers-are-quietly-moving-away-from-microservices-and-back-to-monoliths-d19a97a81da2" rel="noopener noreferrer"&gt;https://medium.com/@pramod.er90/why-senior-engineers-are-quietly-moving-away-from-microservices-and-back-to-monoliths-d19a97a81da2&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  softwareengineering #microservices #systemdesign #backend #devcommunity
&lt;/h1&gt;

</description>
      <category>ai</category>
      <category>backend</category>
      <category>microservices</category>
      <category>systemdesign</category>
    </item>
    <item>
      <title>Why JSON Breaks in AI Pipelines — and the TOON Format I Built to Fix It</title>
      <dc:creator>Pramod Kumar</dc:creator>
      <pubDate>Sat, 04 Apr 2026 04:49:13 +0000</pubDate>
      <link>https://forem.com/pramod_kumar_0820/why-json-breaks-in-ai-pipelines-and-the-toon-format-i-built-to-fix-it-2hp</link>
      <guid>https://forem.com/pramod_kumar_0820/why-json-breaks-in-ai-pipelines-and-the-toon-format-i-built-to-fix-it-2hp</guid>
      <description>&lt;h2&gt;
  
  
  Why JSON Breaks in AI Pipelines — and the TOON Format I Built to Fix It
&lt;/h2&gt;

&lt;p&gt;JSON has been the default data format for decades. It’s simple, readable, and works almost everywhere.&lt;/p&gt;

&lt;p&gt;But recently, while building AI-driven workflows, I kept running into the same problem:&lt;/p&gt;

&lt;p&gt;👉 JSON isn’t designed for &lt;em&gt;meaning&lt;/em&gt;. It’s designed for &lt;em&gt;structure&lt;/em&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem I Hit
&lt;/h2&gt;

&lt;p&gt;When working with LLMs and agent-based systems, I noticed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;JSON is &lt;strong&gt;too verbose&lt;/strong&gt; for iterative reasoning&lt;/li&gt;
&lt;li&gt;Nested structures become &lt;strong&gt;hard to interpret semantically&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Relationships between data are &lt;strong&gt;implicit, not explicit&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Small changes break parsing or require rigid schemas&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Example
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"task"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"generateReport"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"input"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"user"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Alex"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"role"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"developer"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This works for machines — but for AI systems trying to &lt;em&gt;reason&lt;/em&gt;, it’s noisy.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Needed Instead
&lt;/h2&gt;

&lt;p&gt;I wasn’t looking for a “better JSON”.&lt;/p&gt;

&lt;p&gt;I needed something that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is &lt;strong&gt;human-readable at a glance&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Represents &lt;strong&gt;relationships clearly&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Works well with &lt;strong&gt;AI parsing + generation&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Reduces unnecessary syntax&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Introducing TOON (Experimental)
&lt;/h2&gt;

&lt;p&gt;So I started experimenting with a lightweight format I’m calling &lt;strong&gt;TOON&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Same data in TOON:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;task&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="s"&gt;name -&amp;gt; generateReport&lt;/span&gt;
  &lt;span class="s"&gt;input&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;
    &lt;span class="s"&gt;user -&amp;gt; Alex&lt;/span&gt;
    &lt;span class="s"&gt;role -&amp;gt; developer&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  What’s Different?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Less syntax, more signal
&lt;/h3&gt;

&lt;p&gt;No quotes, fewer brackets — easier to scan.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Explicit relationships
&lt;/h3&gt;

&lt;p&gt;Using &lt;code&gt;-&amp;gt;&lt;/code&gt; makes intent clearer than key-value ambiguity.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. AI-friendly structure
&lt;/h3&gt;

&lt;p&gt;LLMs tend to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;generate this format more consistently&lt;/li&gt;
&lt;li&gt;interpret it with fewer errors&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Where This Actually Helped
&lt;/h2&gt;

&lt;p&gt;In my tests (early stage):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Prompt-to-structure conversion became &lt;strong&gt;more stable&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Parsing required &lt;strong&gt;less strict validation&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Debugging outputs was &lt;strong&gt;faster&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  But It’s Not Perfect
&lt;/h2&gt;

&lt;p&gt;This is not a “JSON killer”.&lt;/p&gt;

&lt;p&gt;TOON currently lacks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Standardization&lt;/li&gt;
&lt;li&gt;Tooling ecosystem&lt;/li&gt;
&lt;li&gt;Performance benchmarks at scale&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And JSON is still the best choice for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;APIs&lt;/li&gt;
&lt;li&gt;Production systems&lt;/li&gt;
&lt;li&gt;Interoperability&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  So Why Explore This?
&lt;/h2&gt;

&lt;p&gt;Because AI systems are changing how we think about data.&lt;/p&gt;

&lt;p&gt;We’re moving from:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“How do we structure data for machines?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;to:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“How do we structure data for reasoning systems?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Full Article Medium Link: &lt;a href="https://medium.com/stackademic/farewell-json-hello-toon-the-future-just-arrived-561b74a0059e" rel="noopener noreferrer"&gt;https://medium.com/stackademic/farewell-json-hello-toon-the-future-just-arrived-561b74a0059e&lt;/a&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>ai</category>
      <category>json</category>
      <category>webdev</category>
    </item>
    <item>
      <title>This One Spring Boot Change Made My API 10 Faster (It Wasn’t Caching)</title>
      <dc:creator>Pramod Kumar</dc:creator>
      <pubDate>Fri, 03 Apr 2026 16:21:07 +0000</pubDate>
      <link>https://forem.com/pramod_kumar_0820/this-one-spring-boot-change-made-my-api-10x-faster-it-wasnt-caching-16o0</link>
      <guid>https://forem.com/pramod_kumar_0820/this-one-spring-boot-change-made-my-api-10x-faster-it-wasnt-caching-16o0</guid>
      <description>&lt;p&gt;Response time dropped from 1200ms → 120ms.&lt;/p&gt;

&lt;p&gt;I always thought caching was the biggest performance booster…&lt;/p&gt;

&lt;p&gt;Turns out, I was completely overlooking something much simpler.&lt;/p&gt;

&lt;p&gt;After reducing my API response size by 80%, the performance improvement was insane — nearly 10× faster responses.&lt;/p&gt;

&lt;p&gt;In this article, I break down:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why large payloads silently kill performance&lt;/li&gt;
&lt;li&gt;The exact mistake I was making in Spring Boot&lt;/li&gt;
&lt;li&gt;How I fixed it with a simple change&lt;/li&gt;
&lt;li&gt;Real before vs after impact&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're working with Spring Boot APIs, this might save you hours of optimization work.&lt;/p&gt;

&lt;p&gt;👉 Read the full article here: &lt;a href="https://medium.com/@pramod.er90/this-one-spring-boot-change-made-my-api-10-faster-it-wasnt-caching-8d18bdf196b0?sk=fe6436e07e4acc739bcd1c6e7dbfe501" rel="noopener noreferrer"&gt;https://medium.com/@pramod.er90/this-one-spring-boot-change-made-my-api-10-faster-it-wasnt-caching-8d18bdf196b0?sk=fe6436e07e4acc739bcd1c6e7dbfe501&lt;/a&gt;&lt;/p&gt;

</description>
      <category>springboot</category>
      <category>java</category>
      <category>performance</category>
      <category>backend</category>
    </item>
    <item>
      <title>🚀 Building Production-Ready AI Systems with Spring Boot 4 + JDK 21 (Part 2)</title>
      <dc:creator>Pramod Kumar</dc:creator>
      <pubDate>Mon, 30 Mar 2026 15:05:39 +0000</pubDate>
      <link>https://forem.com/pramod_kumar_0820/building-production-ready-ai-systems-with-spring-boot-4-jdk-21-part-2-3flk</link>
      <guid>https://forem.com/pramod_kumar_0820/building-production-ready-ai-systems-with-spring-boot-4-jdk-21-part-2-3flk</guid>
      <description>&lt;p&gt;Most AI backends work… until they don’t.&lt;/p&gt;

&lt;p&gt;You ship a simple API:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;POST /ai → returns response
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Everything looks fine — until:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;💸 costs explode (same prompts repeated)&lt;/li&gt;
&lt;li&gt;🐢 responses feel slow&lt;/li&gt;
&lt;li&gt;🚨 bots spam your API&lt;/li&gt;
&lt;li&gt;🤖 answers lack real context&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In Part 1, we built a scalable backend.&lt;/p&gt;

&lt;p&gt;In this post, we turn it into a &lt;strong&gt;real AI system&lt;/strong&gt; using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🔴 Redis (distributed cache)&lt;/li&gt;
&lt;li&gt;🌊 Streaming (SSE)&lt;/li&gt;
&lt;li&gt;🚦 Rate limiting&lt;/li&gt;
&lt;li&gt;🧠 RAG (context-aware AI)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔗 Full Detailed Guide (Medium)
&lt;/h2&gt;

&lt;p&gt;👉 &lt;strong&gt;Read the full 6-min deep dive with diagrams &amp;amp; full code:&lt;/strong&gt;&lt;br&gt;
👉 &lt;em&gt;[Add your Medium link here]&lt;/em&gt;&lt;/p&gt;


&lt;h1&gt;
  
  
  🧱 1. Redis — Stop Burning Money
&lt;/h1&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nd"&gt;@Cacheable&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"ai-cache"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="nf"&gt;generate&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;aiClient&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;generate&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;👉 Shared cache across instances → &lt;strong&gt;massive cost reduction&lt;/strong&gt;&lt;/p&gt;


&lt;h1&gt;
  
  
  🌊 2. Streaming — Real-Time UX
&lt;/h1&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nd"&gt;@GetMapping&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"/stream"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;produces&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;MediaType&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;TEXT_EVENT_STREAM_VALUE&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nc"&gt;Flux&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;stream&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nc"&gt;Flux&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;create&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sink&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;Thread&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;startVirtualThread&lt;/span&gt;&lt;span class="o"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;aiService&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;generate&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;token&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;split&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;" "&lt;/span&gt;&lt;span class="o"&gt;))&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
                &lt;span class="n"&gt;sink&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;next&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;token&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="o"&gt;}&lt;/span&gt;
            &lt;span class="n"&gt;sink&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;complete&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
        &lt;span class="o"&gt;});&lt;/span&gt;
    &lt;span class="o"&gt;});&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;👉 ChatGPT-like experience ⚡&lt;/p&gt;


&lt;h1&gt;
  
  
  🚦 3. Rate Limiting — Protect Your API
&lt;/h1&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bucket&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;tryConsume&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;))&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;chain&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;doFilter&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setStatus&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;429&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;👉 Prevent abuse + control cost&lt;/p&gt;


&lt;h1&gt;
  
  
  🧠 4. RAG — Context-Aware AI
&lt;/h1&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;prompt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"""
Answer using context:
%s

Question: %s
"""&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;formatted&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;question&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;👉 AI becomes &lt;strong&gt;smarter, not just reactive&lt;/strong&gt;&lt;/p&gt;


&lt;h1&gt;
  
  
  🔁 Final Architecture
&lt;/h1&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Client
  ↓
Rate Limiter
  ↓
Service
  ↓
Redis + RAG + Streaming
  ↓
AI Client
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  🔥 What You Built
&lt;/h1&gt;

&lt;p&gt;✔ Distributed cache&lt;br&gt;
✔ Streaming API&lt;br&gt;
✔ Rate-limited system&lt;br&gt;
✔ Context-aware AI&lt;/p&gt;


&lt;h1&gt;
  
  
  🏁 Final Thought
&lt;/h1&gt;

&lt;p&gt;Most developers build:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Controller → AI API
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You’re building:&lt;br&gt;
👉 &lt;strong&gt;AI systems that scale&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🔗 Full Article (Recommended)
&lt;/h2&gt;

&lt;p&gt;👉 Part 1: &lt;a href="https://medium.com/stackademic/production-ready-ai-with-spring-boot-4-jdk-21-using-webclient-part-1-b609dda54d8c" rel="noopener noreferrer"&gt;https://medium.com/stackademic/production-ready-ai-with-spring-boot-4-jdk-21-using-webclient-part-1-b609dda54d8c&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;👉 Part 2: &lt;a href="https://medium.com/@pramod.er90/scalable-ai-systems-with-redis-streaming-rag-spring-boot-4-jdk-21-part-2-983e505b16da" rel="noopener noreferrer"&gt;https://medium.com/@pramod.er90/scalable-ai-systems-with-redis-streaming-rag-spring-boot-4-jdk-21-part-2-983e505b16da&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;💬 Follow for Part 3: Kafka + Observability + Multi-Tenant AI Systems&lt;/p&gt;

</description>
      <category>springboot</category>
      <category>ai</category>
      <category>systemdesign</category>
      <category>java</category>
    </item>
    <item>
      <title>💡 **20 Java Stream Interview Questions — Every Backend Developer Must Know**</title>
      <dc:creator>Pramod Kumar</dc:creator>
      <pubDate>Fri, 20 Mar 2026 09:27:41 +0000</pubDate>
      <link>https://forem.com/pramod_kumar_0820/20-java-stream-interview-questions-every-backend-developer-must-know-55o7</link>
      <guid>https://forem.com/pramod_kumar_0820/20-java-stream-interview-questions-every-backend-developer-must-know-55o7</guid>
      <description>&lt;p&gt;Preparing for backend interviews? Java Streams are a must. Here’s a quick snapshot 👇&lt;/p&gt;

&lt;p&gt;🔹 What is a Stream? → Processes data functionally&lt;br&gt;
🔹 &lt;code&gt;map()&lt;/code&gt; vs &lt;code&gt;flatMap()&lt;/code&gt; → transform vs flatten&lt;br&gt;
🔹 &lt;code&gt;filter()&lt;/code&gt; → conditional selection&lt;br&gt;
🔹 &lt;code&gt;reduce()&lt;/code&gt; → aggregation&lt;br&gt;
🔹 &lt;code&gt;collect()&lt;/code&gt; → convert to collection&lt;br&gt;
🔹 Intermediate vs Terminal ops&lt;br&gt;
🔹 &lt;code&gt;findFirst()&lt;/code&gt; vs &lt;code&gt;findAny()&lt;/code&gt;&lt;br&gt;
🔹 &lt;code&gt;distinct()&lt;/code&gt;, &lt;code&gt;sorted()&lt;/code&gt;&lt;br&gt;
🔹 Parallel streams (when to use/avoid)&lt;br&gt;
🔹 &lt;code&gt;peek()&lt;/code&gt; for debugging&lt;br&gt;
🔹 &lt;code&gt;limit()&lt;/code&gt; vs &lt;code&gt;skip()&lt;/code&gt;&lt;br&gt;
🔹 Optional in Streams&lt;/p&gt;

&lt;p&gt;…and more!&lt;/p&gt;

&lt;p&gt;🚀 Clean, concise, and interview-ready.&lt;/p&gt;

&lt;p&gt;👉 Full explanations + code examples on Medium (link in comments)&lt;/p&gt;

&lt;p&gt;🔖 Save this for quick revision!&lt;/p&gt;

&lt;p&gt;Full Medium Link:&lt;br&gt;
&lt;a href="https://medium.com/@pramod.er90/20-java-stream-interview-questions-with-solutions-every-backend-developer-must-know-27c2fc7141e4" rel="noopener noreferrer"&gt;https://medium.com/@pramod.er90/20-java-stream-interview-questions-with-solutions-every-backend-developer-must-know-27c2fc7141e4&lt;/a&gt;&lt;/p&gt;

</description>
      <category>java</category>
      <category>javastream</category>
      <category>backenddevelopment</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>Java 26 Released 🚀: What’s New, What Matters &amp; Why It’s Faster Than Ever</title>
      <dc:creator>Pramod Kumar</dc:creator>
      <pubDate>Wed, 18 Mar 2026 04:30:38 +0000</pubDate>
      <link>https://forem.com/pramod_kumar_0820/java-26-released-whats-new-what-matters-why-its-faster-than-ever-3kcd</link>
      <guid>https://forem.com/pramod_kumar_0820/java-26-released-whats-new-what-matters-why-its-faster-than-ever-3kcd</guid>
      <description>&lt;p&gt;Java 26 has officially been released (March 2026), and while it may not look like a massive update, it introduces some important improvements under the hood.&lt;/p&gt;

&lt;p&gt;From HTTP/3 support to structured concurrency and JVM performance upgrades, this release focuses on making Java faster, cleaner, and more modern.&lt;/p&gt;

&lt;p&gt;I’ve written a detailed breakdown with examples 👇&lt;br&gt;
👉 &lt;a href="https://medium.com/@pramod.er90/java-26-released-whats-new-what-matters-why-it-s-faster-than-ever-717562987e65" rel="noopener noreferrer"&gt;https://medium.com/@pramod.er90/java-26-released-whats-new-what-matters-why-it-s-faster-than-ever-717562987e65&lt;/a&gt;&lt;/p&gt;

</description>
      <category>java</category>
      <category>programming</category>
      <category>softwaredevelopment</category>
      <category>backenddevelopment</category>
    </item>
    <item>
      <title>7 Java Stream Mistakes That Quietly Hurt Your Production Code ⚠️</title>
      <dc:creator>Pramod Kumar</dc:creator>
      <pubDate>Mon, 16 Mar 2026 10:04:20 +0000</pubDate>
      <link>https://forem.com/pramod_kumar_0820/7-java-stream-mistakes-that-quietly-hurt-your-production-code-1o49</link>
      <guid>https://forem.com/pramod_kumar_0820/7-java-stream-mistakes-that-quietly-hurt-your-production-code-1o49</guid>
      <description>&lt;p&gt;Java Streams are powerful.&lt;/p&gt;

&lt;p&gt;But in real production systems, I've seen them &lt;strong&gt;quietly introduce performance issues, readability problems, and even bugs&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Here are &lt;strong&gt;7 mistakes Java developers often make with Streams&lt;/strong&gt; 👇&lt;/p&gt;




&lt;h3&gt;
  
  
  1️⃣ Using Streams for Simple Iteration
&lt;/h3&gt;

&lt;p&gt;Streams look elegant, but sometimes a &lt;strong&gt;simple loop is clearer and faster&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;❌&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;list&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;stream&lt;/span&gt;&lt;span class="o"&gt;().&lt;/span&gt;&lt;span class="na"&gt;forEach&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;item&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;process&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="o"&gt;));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✅&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Item&lt;/span&gt; &lt;span class="n"&gt;item&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;list&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;process&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use streams when &lt;strong&gt;transforming data&lt;/strong&gt;, not just looping.&lt;/p&gt;




&lt;h3&gt;
  
  
  2️⃣ Forgetting Streams Are Lazy
&lt;/h3&gt;

&lt;p&gt;Intermediate operations don't execute until a &lt;strong&gt;terminal operation&lt;/strong&gt; is called.&lt;/p&gt;

&lt;p&gt;❌&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;list&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;stream&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;filter&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;map&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nothing runs here.&lt;/p&gt;

&lt;p&gt;✅&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;list&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;stream&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;filter&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;map&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;toList&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  3️⃣ Blindly Using &lt;code&gt;parallelStream()&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Parallel streams can:&lt;/p&gt;

&lt;p&gt;• increase CPU usage&lt;br&gt;
• cause thread contention&lt;br&gt;
• slow your application&lt;/p&gt;

&lt;p&gt;❌&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;list&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;parallelStream&lt;/span&gt;&lt;span class="o"&gt;().&lt;/span&gt;&lt;span class="na"&gt;forEach&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;process&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Always &lt;strong&gt;benchmark before using parallel streams&lt;/strong&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  4️⃣ Mutating Shared State
&lt;/h3&gt;

&lt;p&gt;Streams should be &lt;strong&gt;stateless&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;❌&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;List&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Integer&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;ArrayList&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&amp;gt;();&lt;/span&gt;
&lt;span class="n"&gt;list&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;stream&lt;/span&gt;&lt;span class="o"&gt;().&lt;/span&gt;&lt;span class="na"&gt;forEach&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;result:&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;add&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✅&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;List&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Integer&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;list&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;stream&lt;/span&gt;&lt;span class="o"&gt;().&lt;/span&gt;&lt;span class="na"&gt;toList&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Side effects inside streams can cause &lt;strong&gt;serious concurrency bugs&lt;/strong&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  5️⃣ Creating Unreadable Stream Chains
&lt;/h3&gt;

&lt;p&gt;When stream pipelines get too long, readability suffers.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;list&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;stream&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;filter&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;isActive&lt;/span&gt;&lt;span class="o"&gt;())&lt;/span&gt;
    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;map&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getOrders&lt;/span&gt;&lt;span class="o"&gt;())&lt;/span&gt;
    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;flatMap&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;List:&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;stream&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;filter&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;o&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;o&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getPrice&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;map&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;Order:&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;getCustomer&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;distinct&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;toList&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Break complex pipelines into &lt;strong&gt;smaller steps&lt;/strong&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  6️⃣ Using &lt;code&gt;map()&lt;/code&gt; Instead of &lt;code&gt;flatMap()&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;This is a very common mistake with nested collections.&lt;/p&gt;

&lt;p&gt;❌&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;Stream&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;List&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Order&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;orders&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;
    &lt;span class="n"&gt;users&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;stream&lt;/span&gt;&lt;span class="o"&gt;().&lt;/span&gt;&lt;span class="na"&gt;map&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;User:&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;getOrders&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✅&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;Stream&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Order&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;orders&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;
    &lt;span class="n"&gt;users&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;stream&lt;/span&gt;&lt;span class="o"&gt;().&lt;/span&gt;&lt;span class="na"&gt;flatMap&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;user&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getOrders&lt;/span&gt;&lt;span class="o"&gt;().&lt;/span&gt;&lt;span class="na"&gt;stream&lt;/span&gt;&lt;span class="o"&gt;());&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;flatMap()&lt;/code&gt; &lt;strong&gt;flattens nested streams&lt;/strong&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  7️⃣ Trying to Reuse a Stream
&lt;/h3&gt;

&lt;p&gt;Streams &lt;strong&gt;cannot be reused&lt;/strong&gt; after a terminal operation.&lt;/p&gt;

&lt;p&gt;❌&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;Stream&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Integer&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;stream&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;list&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;stream&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;span class="n"&gt;stream&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;count&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;span class="n"&gt;stream&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;forEach&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;println&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✅&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;list&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;stream&lt;/span&gt;&lt;span class="o"&gt;().&lt;/span&gt;&lt;span class="na"&gt;count&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;span class="n"&gt;list&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;stream&lt;/span&gt;&lt;span class="o"&gt;().&lt;/span&gt;&lt;span class="na"&gt;forEach&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;println&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;💡 &lt;strong&gt;Final Thought&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Streams are powerful — but &lt;strong&gt;readability, maintainability, and performance should always come first&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Clean code &amp;gt; clever code.&lt;/p&gt;




&lt;p&gt;📖 &lt;strong&gt;I wrote a deeper breakdown with examples here:&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  👉 &lt;em&gt;Read the full article on Medium:&lt;/em&gt; &lt;strong&gt;&lt;a href="https://medium.com/@pramod.er90/bb6af5e0361f" rel="noopener noreferrer"&gt;https://medium.com/@pramod.er90/bb6af5e0361f&lt;/a&gt;&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;💬 Curious:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which Java Stream mistake have you seen the most in production?&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>java</category>
      <category>javastreams</category>
      <category>backenddevelopment</category>
      <category>programming</category>
    </item>
    <item>
      <title>Stop Using map() for Nested Collections In Java — Use flatMap() Instead</title>
      <dc:creator>Pramod Kumar</dc:creator>
      <pubDate>Fri, 13 Mar 2026 11:56:38 +0000</pubDate>
      <link>https://forem.com/pramod_kumar_0820/stop-using-map-for-nested-collections-use-flatmap-instead-1p1i</link>
      <guid>https://forem.com/pramod_kumar_0820/stop-using-map-for-nested-collections-use-flatmap-instead-1p1i</guid>
      <description>&lt;p&gt;Most Java developers learn map() pretty quickly when working with Streams.&lt;/p&gt;

&lt;p&gt;But things start getting confusing when dealing with nested collections.&lt;/p&gt;

&lt;p&gt;For example, imagine a simple backend model:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Customer → Accounts → Transactions&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you try to extract transactions using map(), you might end up with something like:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;List&amp;lt;List&amp;lt;List&amp;lt;Transaction&amp;gt;&amp;gt;&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Not exactly helpful.&lt;/p&gt;

&lt;p&gt;In this article, I explain how flatMap() solves this problem using practical examples from a banking-style backend system, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Flattening nested collections&lt;/li&gt;
&lt;li&gt;Filtering high-value debit transactions&lt;/li&gt;
&lt;li&gt;Generating transaction statements&lt;/li&gt;
&lt;li&gt;Fraud detection example&lt;/li&gt;
&lt;li&gt;map() vs flatMap() comparison&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Interview questions&lt;/p&gt;

&lt;p&gt;If you're working with Java Streams, especially with nested data structures, this might help.&lt;/p&gt;

&lt;p&gt;👉 Read the full article here:&lt;br&gt;
&lt;a href="https://medium.com/@pramod.er90/stop-using-map-for-nested-collections-use-flatmap-instead-2276dbb4fa78" rel="noopener noreferrer"&gt;https://medium.com/@pramod.er90/stop-using-map-for-nested-collections-use-flatmap-instead-2276dbb4fa78&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Curious — what part of Java Streams was hardest for you to understand?&lt;/p&gt;

</description>
      <category>java</category>
      <category>backenddevelopment</category>
      <category>programming</category>
      <category>javastream</category>
    </item>
    <item>
      <title>Spring Boot 4.x — A Big Step Forward for Java Developers</title>
      <dc:creator>Pramod Kumar</dc:creator>
      <pubDate>Fri, 13 Mar 2026 05:21:52 +0000</pubDate>
      <link>https://forem.com/pramod_kumar_0820/spring-boot-4x-a-big-step-forward-for-java-developers-2pma</link>
      <guid>https://forem.com/pramod_kumar_0820/spring-boot-4x-a-big-step-forward-for-java-developers-2pma</guid>
      <description>&lt;p&gt;🚀 Spring Boot 4.x — A Big Step Forward for Java Developers&lt;/p&gt;

&lt;p&gt;The new generation of Spring Boot is pushing Java development further into the &lt;strong&gt;cloud-native era&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Here are a few things that stand out for the developer community:&lt;/p&gt;

&lt;p&gt;• ⚡ Faster startup and improved performance&lt;br&gt;
• 📦 Better container &amp;amp; Docker support&lt;br&gt;
• 🔍 Improved observability and metrics&lt;br&gt;
• 🧠 Cleaner configuration management&lt;br&gt;
• ☁️ More cloud-native friendly architecture&lt;br&gt;
• 🔧 Improved native image support&lt;/p&gt;

&lt;p&gt;One thing I appreciate about Spring Boot is how it continues to &lt;strong&gt;remove boilerplate and simplify enterprise Java development&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Instead of spending hours on configuration, developers can focus on &lt;strong&gt;building scalable services and APIs&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Curious to hear from the dev community 👨‍💻&lt;/p&gt;

&lt;p&gt;👉 What feature of Spring Boot do you use the most in production?&lt;/p&gt;

</description>
      <category>springboot</category>
      <category>java</category>
      <category>backenddevelopment</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>🚫 Stop Creating ObjectMapper Instances in Spring Boot — Let Spring Manage It</title>
      <dc:creator>Pramod Kumar</dc:creator>
      <pubDate>Wed, 11 Mar 2026 05:08:30 +0000</pubDate>
      <link>https://forem.com/pramod_kumar_0820/stop-creating-objectmapper-instances-in-spring-boot-let-spring-manage-it-2bj8</link>
      <guid>https://forem.com/pramod_kumar_0820/stop-creating-objectmapper-instances-in-spring-boot-let-spring-manage-it-2bj8</guid>
      <description>&lt;p&gt;Many Spring Boot developers have written this line at least once:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;ObjectMapper&lt;/span&gt; &lt;span class="n"&gt;mapper&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;ObjectMapper&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It works… but inside a Spring Boot application, this can silently introduce problems.&lt;/p&gt;

&lt;p&gt;Creating ObjectMapper manually bypasses Spring Boot’s Jackson configuration, which means you might lose:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Registered modules like JavaTimeModule&lt;/li&gt;
&lt;li&gt;Custom serializers/desterilizes&lt;/li&gt;
&lt;li&gt;Global JSON configuration&lt;/li&gt;
&lt;li&gt;Consistent serialization across APIs&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Spring Boot already provides a fully configured ObjectMapper as a singleton bean, so the better approach is simply to inject it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nd"&gt;@Service&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;JsonService&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="nc"&gt;ObjectMapper&lt;/span&gt; &lt;span class="n"&gt;objectMapper&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nf"&gt;JsonService&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;ObjectMapper&lt;/span&gt; &lt;span class="n"&gt;objectMapper&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;objectMapper&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;objectMapper&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This ensures your application uses one consistent JSON configuration everywhere.&lt;/p&gt;

&lt;p&gt;Spring Boot also automatically converts objects to JSON in controllers using MappingJackson2HttpMessageConverter, so in many cases you don’t need to use ObjectMapper directly at all.&lt;/p&gt;

&lt;p&gt;I wrote a full guide explaining the common mistakes developers make and the correct way to use ObjectMapper in Spring Boot.&lt;/p&gt;

&lt;p&gt;👉 Read the full article:&lt;br&gt;
&lt;a href="https://medium.com/write-a-catalyst/stop-creating-objectmapper-instances-in-spring-boot-let-spring-manage-it-21b038252c6b" rel="noopener noreferrer"&gt;https://medium.com/write-a-catalyst/stop-creating-objectmapper-instances-in-spring-boot-let-spring-manage-it-21b038252c6b&lt;/a&gt;&lt;/p&gt;

</description>
      <category>java</category>
      <category>springboot</category>
      <category>json</category>
      <category>backenddevelopment</category>
    </item>
    <item>
      <title>🚨 Why Your Spring Boot API Takes 3 Seconds to Respond (And How We Reduced It to 200 ms)</title>
      <dc:creator>Pramod Kumar</dc:creator>
      <pubDate>Mon, 09 Mar 2026 14:58:46 +0000</pubDate>
      <link>https://forem.com/pramod_kumar_0820/why-your-spring-boot-api-takes-3-seconds-to-respond-and-how-we-reduced-it-to-200-ms-5813</link>
      <guid>https://forem.com/pramod_kumar_0820/why-your-spring-boot-api-takes-3-seconds-to-respond-and-how-we-reduced-it-to-200-ms-5813</guid>
      <description>&lt;p&gt;Before optimization: ~3000 ms&lt;br&gt;
After optimization: ~200 ms&lt;/p&gt;

&lt;p&gt;Our Spring Boot API suddenly started taking &lt;strong&gt;3 seconds&lt;/strong&gt; to respond in production.&lt;/p&gt;

&lt;p&gt;But in development it was only &lt;strong&gt;150–200 ms&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;After profiling the system we discovered the issue wasn't one big problem.&lt;/p&gt;

&lt;p&gt;It was several small performance bottlenecks working together:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;N+1 Hibernate queries
&lt;/li&gt;
&lt;li&gt;missing database indexes
&lt;/li&gt;
&lt;li&gt;blocking controller operations
&lt;/li&gt;
&lt;li&gt;excessive logging
&lt;/li&gt;
&lt;li&gt;large JSON responses
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After fixing them step by step, the response time dropped from &lt;strong&gt;3 seconds to around 200 ms&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Here are the exact improvements that made the difference.&lt;/p&gt;

&lt;p&gt;👉 Originally published on Medium. Republished here for the Dev.to community:&lt;br&gt;
&lt;a href="https://medium.com/@pramod.er90/why-your-spring-boot-api-takes-3-seconds-to-respond-and-how-to-fix-it-160f37a4aaa7" rel="noopener noreferrer"&gt;https://medium.com/@pramod.er90/why-your-spring-boot-api-takes-3-seconds-to-respond-and-how-to-fix-it-160f37a4aaa7&lt;/a&gt;&lt;/p&gt;

</description>
      <category>springboot</category>
      <category>java</category>
      <category>backend</category>
      <category>performance</category>
    </item>
    <item>
      <title>Hey</title>
      <dc:creator>Pramod Kumar</dc:creator>
      <pubDate>Mon, 09 Mar 2026 09:13:57 +0000</pubDate>
      <link>https://forem.com/pramod_kumar_0820/hey-mie</link>
      <guid>https://forem.com/pramod_kumar_0820/hey-mie</guid>
      <description>&lt;p&gt;Hello Everyone,&lt;/p&gt;

&lt;p&gt;How are you doing today?&lt;/p&gt;

</description>
      <category>springboot</category>
      <category>java</category>
      <category>backenddevelopment</category>
      <category>fullstack</category>
    </item>
  </channel>
</rss>
