<?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>DEV Community: Atharva Khairnar</title>
    <description>The latest articles on DEV Community by Atharva Khairnar (@sai_khairnar_1392791fe9b5).</description>
    <link>https://dev.to/sai_khairnar_1392791fe9b5</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3647441%2F2d257f04-70ee-4b96-ab89-adf309ebcb48.jpeg</url>
      <title>DEV Community: Atharva Khairnar</title>
      <link>https://dev.to/sai_khairnar_1392791fe9b5</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sai_khairnar_1392791fe9b5"/>
    <language>en</language>
    <item>
      <title>Why Most Developers Learn Docker but Never Learn What Comes Next</title>
      <dc:creator>Atharva Khairnar</dc:creator>
      <pubDate>Thu, 18 Jun 2026 11:36:04 +0000</pubDate>
      <link>https://dev.to/sai_khairnar_1392791fe9b5/why-most-developers-learn-docker-but-never-learn-what-comes-next-2o1p</link>
      <guid>https://dev.to/sai_khairnar_1392791fe9b5/why-most-developers-learn-docker-but-never-learn-what-comes-next-2o1p</guid>
      <description>&lt;h1&gt;
  
  
  Why I Started Learning Kubernetes After Docker (And What Changed)
&lt;/h1&gt;

&lt;p&gt;Most developers stop after learning Docker.&lt;/p&gt;

&lt;p&gt;I used to think Docker was enough too.&lt;/p&gt;

&lt;p&gt;I could containerize applications, run containers, and deploy services. But as soon as multiple containers entered the picture, new challenges appeared:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Service discovery&lt;/li&gt;
&lt;li&gt;Scaling&lt;/li&gt;
&lt;li&gt;Load balancing&lt;/li&gt;
&lt;li&gt;Health checks&lt;/li&gt;
&lt;li&gt;Rolling updates&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is where Kubernetes started making sense.&lt;/p&gt;

&lt;h2&gt;
  
  
  Docker Solves Packaging
&lt;/h2&gt;

&lt;p&gt;Docker makes applications portable.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker build &lt;span class="nt"&gt;-t&lt;/span&gt; my-app &lt;span class="nb"&gt;.&lt;/span&gt;
docker run my-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The same application can run anywhere.&lt;/p&gt;

&lt;p&gt;But Docker doesn't solve large-scale orchestration.&lt;/p&gt;

&lt;h2&gt;
  
  
  Kubernetes Solves Operations
&lt;/h2&gt;

&lt;p&gt;Kubernetes focuses on managing containers at scale.&lt;/p&gt;

&lt;p&gt;Instead of manually starting containers, Kubernetes can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Restart failed containers&lt;/li&gt;
&lt;li&gt;Scale applications automatically&lt;/li&gt;
&lt;li&gt;Perform rolling updates&lt;/li&gt;
&lt;li&gt;Distribute traffic&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;apps/v1&lt;/span&gt;
&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Deployment&lt;/span&gt;
&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;web-app&lt;/span&gt;
&lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;replicas&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With a single configuration, Kubernetes can manage multiple instances automatically.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Surprised Me
&lt;/h2&gt;

&lt;p&gt;The biggest lesson wasn't learning Pods, Services, or Deployments.&lt;/p&gt;

&lt;p&gt;It was realized that Docker and Kubernetes solve completely different problems.&lt;/p&gt;

&lt;p&gt;Docker packages applications.&lt;/p&gt;

&lt;p&gt;Kubernetes manages them.&lt;/p&gt;

&lt;p&gt;Understanding this distinction made the entire cloud-native ecosystem much easier to understand.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>docker</category>
      <category>kubernetes</category>
    </item>
    <item>
      <title>Let's Be Real about DevOps in 2026</title>
      <dc:creator>Atharva Khairnar</dc:creator>
      <pubDate>Thu, 18 Jun 2026 11:29:21 +0000</pubDate>
      <link>https://dev.to/sai_khairnar_1392791fe9b5/lets-be-real-about-devops-in-2026-2e2</link>
      <guid>https://dev.to/sai_khairnar_1392791fe9b5/lets-be-real-about-devops-in-2026-2e2</guid>
      <description>&lt;h1&gt;
  
  
  The Autonomous Infrastructure Era
&lt;/h1&gt;

&lt;p&gt;If an AI agent can watch Kubernetes logs, detect an &lt;code&gt;ImagePullBackOff&lt;/code&gt; error, identify the root cause, generate a fix, create a pull request, and restore the deployment...&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Do we still need massive Internal Developer Platforms (IDPs)?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Or is AI about to flatten the infrastructure layer itself?&lt;/p&gt;




&lt;h2&gt;
  
  
  The Purpose of Today's IDPs
&lt;/h2&gt;

&lt;p&gt;Most Internal Developer Platforms exist to reduce complexity.&lt;/p&gt;

&lt;p&gt;Instead of every developer becoming a Kubernetes expert, teams build &lt;strong&gt;Golden Paths&lt;/strong&gt; that provide:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Standardized deployments&lt;/li&gt;
&lt;li&gt;Self-service infrastructure&lt;/li&gt;
&lt;li&gt;Security guardrails&lt;/li&gt;
&lt;li&gt;Operational best practices&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal is simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Make the right way the easiest way.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  But What Happens When AI Understands the Entire Stack?
&lt;/h2&gt;

&lt;p&gt;Imagine an AI agent with access to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Kubernetes events&lt;/li&gt;
&lt;li&gt;Application logs&lt;/li&gt;
&lt;li&gt;CI/CD pipelines&lt;/li&gt;
&lt;li&gt;Infrastructure configurations&lt;/li&gt;
&lt;li&gt;Monitoring dashboards&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of following a predefined workflow, the agent can reason about the system in real time.&lt;/p&gt;

&lt;p&gt;A deployment fails.&lt;/p&gt;

&lt;p&gt;The agent investigates.&lt;/p&gt;

&lt;p&gt;The agent identifies the issue.&lt;/p&gt;

&lt;p&gt;The agent proposes a fix.&lt;/p&gt;

&lt;p&gt;The agent creates a PR.&lt;/p&gt;

&lt;p&gt;The agent restores service.&lt;/p&gt;

&lt;p&gt;All without a developer manually jumping between multiple dashboards.&lt;/p&gt;




&lt;h2&gt;
  
  
  A Traditional Workflow
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Developer
    ↓
Check Logs
    ↓
Identify Issue
    ↓
Update Config
    ↓
Create PR
    ↓
Deploy Fix
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  A Possible Future Workflow
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Error
   ↓
Analysis
   ↓
PR Generation
   ↓
Recovery
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Example
&lt;/h2&gt;

&lt;p&gt;Imagine a deployment failure caused by an invalid image tag.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;apps/v1&lt;/span&gt;
&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Deployment&lt;/span&gt;
&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;web-app&lt;/span&gt;

&lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;template&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;containers&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;main&lt;/span&gt;
          &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;registry.com/app:latest&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;An AI agent detects the issue and proposes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;apps/v1&lt;/span&gt;
&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Deployment&lt;/span&gt;
&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;web-app&lt;/span&gt;

&lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;template&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;containers&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;main&lt;/span&gt;
          &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;registry.com/app:v2.0.1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The change is validated and submitted automatically.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Real Question
&lt;/h2&gt;

&lt;p&gt;Perhaps AI won't replace infrastructure platforms.&lt;/p&gt;

&lt;p&gt;Perhaps infrastructure platforms will evolve into AI-powered control planes.&lt;/p&gt;

&lt;p&gt;Instead of providing static workflows, they provide:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Context&lt;/li&gt;
&lt;li&gt;Guardrails&lt;/li&gt;
&lt;li&gt;Permissions&lt;/li&gt;
&lt;li&gt;Observability&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;while autonomous agents handle execution.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thought
&lt;/h2&gt;

&lt;p&gt;For years we've focused on making infrastructure easier for developers.&lt;/p&gt;

&lt;p&gt;The next phase might be making infrastructure understandable for AI agents.&lt;/p&gt;

&lt;p&gt;And if that happens, the role of the platform may change more dramatically than the infrastructure itself.&lt;/p&gt;




&lt;h3&gt;
  
  
  What do you think?
&lt;/h3&gt;

&lt;p&gt;Will AI reduce the need for large Internal Developer Platforms?&lt;/p&gt;

&lt;p&gt;Or will it make them even more important?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>kubernetes</category>
      <category>automation</category>
      <category>agentaichallenge</category>
    </item>
    <item>
      <title>As a developer, what are you spending most of your time learning in 2026?</title>
      <dc:creator>Atharva Khairnar</dc:creator>
      <pubDate>Tue, 16 Jun 2026 11:49:43 +0000</pubDate>
      <link>https://dev.to/sai_khairnar_1392791fe9b5/as-a-developer-what-are-you-spending-most-of-your-time-learning-in-2026-mj8</link>
      <guid>https://dev.to/sai_khairnar_1392791fe9b5/as-a-developer-what-are-you-spending-most-of-your-time-learning-in-2026-mj8</guid>
      <description>&lt;ol&gt;
&lt;li&gt;AI/GenAI&lt;/li&gt;
&lt;li&gt;Cloud&lt;/li&gt;
&lt;li&gt;DevOps&lt;/li&gt;
&lt;li&gt;System Design&lt;/li&gt;
&lt;li&gt;Full Stack&lt;/li&gt;
&lt;li&gt;Cybersecurity&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Curious to see where everyone is investing their time.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Why Retrieval Quality Can Matter More Than Model Quality in RAG Systems</title>
      <dc:creator>Atharva Khairnar</dc:creator>
      <pubDate>Mon, 15 Jun 2026 06:12:10 +0000</pubDate>
      <link>https://dev.to/sai_khairnar_1392791fe9b5/why-retrieval-quality-can-matter-more-than-model-quality-in-rag-systems-ij0</link>
      <guid>https://dev.to/sai_khairnar_1392791fe9b5/why-retrieval-quality-can-matter-more-than-model-quality-in-rag-systems-ij0</guid>
      <description>&lt;p&gt;One thing that stands out while working with RAG systems is how much influence the retriever has on the final answer.&lt;/p&gt;

&lt;p&gt;A common assumption is that improving the model will automatically improve the results. In reality, the model can only work with the context it receives.&lt;/p&gt;

&lt;p&gt;If the retriever brings back irrelevant documents, incomplete information, or misses the most relevant content entirely, even a powerful LLM will struggle to produce a useful response.&lt;/p&gt;

&lt;p&gt;That's what makes retrievers so important.&lt;/p&gt;

&lt;p&gt;Their job isn't to generate answers. Their job is to find the right information at the right time.&lt;/p&gt;

&lt;p&gt;In many RAG pipelines, improving retrieval quality can have a bigger impact than switching to a larger model.&lt;/p&gt;

&lt;p&gt;The model gets most of the attention, but the retriever often decides whether the answer has a chance of being correct in the first place.&lt;/p&gt;

&lt;p&gt;Have you found retrieval quality or model quality to be the bigger bottleneck in your RAG applications?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffficfbujk9mcc7c0tcth.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffficfbujk9mcc7c0tcth.png" alt=" " width="799" height="269"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>langchain</category>
    </item>
    <item>
      <title>Is AI Whispering the Evolution of Prompt Engineering?</title>
      <dc:creator>Atharva Khairnar</dc:creator>
      <pubDate>Thu, 11 Jun 2026 14:57:37 +0000</pubDate>
      <link>https://dev.to/sai_khairnar_1392791fe9b5/is-ai-whispering-the-evolution-of-prompt-engineering-33c1</link>
      <guid>https://dev.to/sai_khairnar_1392791fe9b5/is-ai-whispering-the-evolution-of-prompt-engineering-33c1</guid>
      <description>&lt;p&gt;For a long time, the focus in GenAI has been &lt;strong&gt;Prompt Engineering&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The common advice was simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Write better prompts&lt;/li&gt;
&lt;li&gt;Provide more context&lt;/li&gt;
&lt;li&gt;Structure instructions carefully&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Recently, I came across the term &lt;strong&gt;AI Whispering&lt;/strong&gt;, which introduces a slightly different perspective.&lt;/p&gt;

&lt;p&gt;Instead of treating AI interactions as a one-shot prompt, AI Whispering views the process as an ongoing conversation.&lt;/p&gt;

&lt;p&gt;The goal isn't necessarily to craft the perfect prompt on the first attempt, but to guide the model through:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Refinement&lt;/li&gt;
&lt;li&gt;Clarification&lt;/li&gt;
&lt;li&gt;Iteration&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Prompt Engineering vs AI Whispering
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Prompt Engineering&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Focuses on designing effective instructions&lt;/li&gt;
&lt;li&gt;Optimizes the initial prompt&lt;/li&gt;
&lt;li&gt;Treats the interaction as a structured input-output process&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;AI Whispering&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Focuses on steering the interaction&lt;/li&gt;
&lt;li&gt;Uses follow-up questions and feedback&lt;/li&gt;
&lt;li&gt;Treats the process as a collaborative conversation&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  An Interesting Observation
&lt;/h2&gt;

&lt;p&gt;Many real-world AI workflows already look more like AI Whispering than traditional Prompt Engineering.&lt;/p&gt;

&lt;p&gt;We rarely stop after a single prompt.&lt;/p&gt;

&lt;p&gt;Instead, we:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Refine requirements&lt;/li&gt;
&lt;li&gt;Challenge outputs&lt;/li&gt;
&lt;li&gt;Ask follow-up questions&lt;/li&gt;
&lt;li&gt;Gradually shape the response&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As models become more capable, I wonder whether the key skill will shift from &lt;strong&gt;writing prompts&lt;/strong&gt; to &lt;strong&gt;guiding conversations&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Do You Think?
&lt;/h2&gt;

&lt;p&gt;Is AI Whispering genuinely different?&lt;/p&gt;

&lt;p&gt;Or is it simply Prompt Engineering with a new name?&lt;/p&gt;

</description>
      <category>promptengineering</category>
      <category>ai</category>
    </item>
    <item>
      <title>Why people Think Runnables Are One of the Most Underrated Concepts in LangChain</title>
      <dc:creator>Atharva Khairnar</dc:creator>
      <pubDate>Thu, 11 Jun 2026 14:29:33 +0000</pubDate>
      <link>https://dev.to/sai_khairnar_1392791fe9b5/why-i-think-runnables-are-one-of-the-most-underrated-concepts-in-langchain-4m3b</link>
      <guid>https://dev.to/sai_khairnar_1392791fe9b5/why-i-think-runnables-are-one-of-the-most-underrated-concepts-in-langchain-4m3b</guid>
      <description>&lt;p&gt;One thing I found interesting while working with LangChain is the concept of Runnables.&lt;/p&gt;

&lt;p&gt;At first, they look like a small abstraction. But as workflows grow, their value becomes much more obvious.&lt;/p&gt;

&lt;p&gt;Without Runnables, every component would need its own way of being called and connected. Prompts, models, retrievers, and output parsers would all behave differently.&lt;/p&gt;

&lt;p&gt;Runnables solve this by providing a common interface across components.&lt;/p&gt;

&lt;p&gt;This means a PromptTemplate, an LLM, a Retriever, or an Output Parser can all be connected together in a consistent way.&lt;/p&gt;

&lt;p&gt;What I like most is that they make workflows feel composable.&lt;/p&gt;

&lt;p&gt;Instead of thinking about individual components, you start thinking about pipelines and workflows.&lt;/p&gt;

&lt;p&gt;A simple concept on the surface, but one that sits at the foundation of many LangChain applications.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fagduh0edjx1a4u403sij.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fagduh0edjx1a4u403sij.jpg" alt=" " width="800" height="1200"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>langchain</category>
      <category>rag</category>
      <category>genai</category>
    </item>
    <item>
      <title>If an LLM Can Answer a Question, Why Does LangChain Need Chains?</title>
      <dc:creator>Atharva Khairnar</dc:creator>
      <pubDate>Tue, 09 Jun 2026 10:12:45 +0000</pubDate>
      <link>https://dev.to/sai_khairnar_1392791fe9b5/if-an-llm-can-answer-a-question-why-does-langchain-need-chains-4hja</link>
      <guid>https://dev.to/sai_khairnar_1392791fe9b5/if-an-llm-can-answer-a-question-why-does-langchain-need-chains-4hja</guid>
      <description>&lt;p&gt;When someone uses a GenAI application, it often feels simple:&lt;/p&gt;

&lt;p&gt;Ask a question → Get an answer.&lt;/p&gt;

&lt;p&gt;But have you ever wondered what actually happens between those two steps?&lt;/p&gt;

&lt;p&gt;In many real-world AI applications, a single user request can trigger multiple operations:&lt;/p&gt;

&lt;p&gt;A prompt is generated or formatted&lt;br&gt;
An LLM is called&lt;br&gt;
The output is processed&lt;br&gt;
The response is validated&lt;br&gt;
Data is converted into a structured format&lt;/p&gt;

&lt;p&gt;Suddenly, what looked like a single AI call becomes a complete workflow.&lt;/p&gt;

&lt;p&gt;The Challenge&lt;/p&gt;

&lt;p&gt;Imagine handling each of these steps manually.&lt;/p&gt;

&lt;p&gt;Every component would need its own code, its own logic, and its own data flow.&lt;/p&gt;

&lt;p&gt;As applications become more complex, managing these interactions quickly becomes difficult.&lt;/p&gt;

&lt;p&gt;This raises an important question:&lt;/p&gt;

&lt;p&gt;How can we connect all these steps in a clean and reusable way?&lt;/p&gt;

&lt;p&gt;Enter Chains&lt;/p&gt;

&lt;p&gt;This is where Chains in LangChain become useful.&lt;/p&gt;

&lt;p&gt;A chain allows multiple components to be linked together into a workflow.&lt;/p&gt;

&lt;p&gt;Instead of managing each step independently, the output of one step automatically becomes the input of the next.&lt;/p&gt;

&lt;p&gt;A simplified example:&lt;/p&gt;

&lt;p&gt;User Input&lt;br&gt;
↓&lt;br&gt;
Prompt Template&lt;br&gt;
↓&lt;br&gt;
LLM&lt;br&gt;
↓&lt;br&gt;
Output Parser&lt;br&gt;
↓&lt;br&gt;
Final Response&lt;/p&gt;

&lt;p&gt;This creates a structured pipeline rather than a collection of disconnected operations.&lt;/p&gt;

&lt;p&gt;Why Does This Matter?&lt;/p&gt;

&lt;p&gt;As GenAI applications grow, developers spend less time worrying about individual model calls and more time thinking about workflows.&lt;/p&gt;

&lt;p&gt;Questions become:&lt;/p&gt;

&lt;p&gt;How does data move through the system?&lt;br&gt;
How do different components interact?&lt;br&gt;
How can workflows be reused?&lt;/p&gt;

&lt;p&gt;Chains help answer those questions.&lt;/p&gt;

&lt;p&gt;An Interesting Fact&lt;/p&gt;

&lt;p&gt;One thing I found interesting is that many advanced AI systems start with simple chains.&lt;/p&gt;

&lt;p&gt;Before adding agents, memory, tool calling, or multi-agent architectures, developers often build workflows using chains.&lt;/p&gt;

&lt;p&gt;In many cases, agents themselves depend on underlying chain-based execution patterns.&lt;/p&gt;

</description>
      <category>langchain</category>
      <category>ai</category>
      <category>genai</category>
      <category>llm</category>
    </item>
    <item>
      <title>Exploring How Redis Can Improve GenAI Application Performance</title>
      <dc:creator>Atharva Khairnar</dc:creator>
      <pubDate>Mon, 08 Jun 2026 03:14:02 +0000</pubDate>
      <link>https://dev.to/sai_khairnar_1392791fe9b5/exploring-how-redis-can-improve-genai-application-performance-3a2j</link>
      <guid>https://dev.to/sai_khairnar_1392791fe9b5/exploring-how-redis-can-improve-genai-application-performance-3a2j</guid>
      <description>&lt;p&gt;As I continue exploring GenAI systems, one challenge that keeps appearing is handling repeated requests efficiently.&lt;/p&gt;

&lt;p&gt;Every time a user sends a request to an AI application, the model performs inference to generate a response. While this works well, repeated requests can increase both latency and inference costs, especially as the number of users grows.&lt;/p&gt;

&lt;p&gt;This led me to explore how Redis can be used as part of a GenAI application's architecture.&lt;/p&gt;

&lt;p&gt;The Challenge&lt;/p&gt;

&lt;p&gt;Consider a scenario where users frequently request the same information or interact with similar workflows.&lt;/p&gt;

&lt;p&gt;Without any optimization:&lt;/p&gt;

&lt;p&gt;User Request → LLM Inference → Response&lt;/p&gt;

&lt;p&gt;The model performs inference every time, even when similar data has already been processed.&lt;/p&gt;

&lt;p&gt;As traffic increases, this can lead to:&lt;/p&gt;

&lt;p&gt;Higher response times&lt;br&gt;
Increased infrastructure costs&lt;br&gt;
Additional load on AI services&lt;br&gt;
Where Redis Fits In&lt;/p&gt;

&lt;p&gt;Redis is an in-memory data store known for its speed and simplicity.&lt;/p&gt;

&lt;p&gt;In GenAI applications, Redis can be used to store:&lt;/p&gt;

&lt;p&gt;Frequently accessed responses&lt;br&gt;
Session data&lt;br&gt;
Conversation state&lt;br&gt;
Intermediate processing results&lt;/p&gt;

&lt;p&gt;A simplified flow might look like:&lt;/p&gt;

&lt;p&gt;User Request → Redis Check&lt;/p&gt;

&lt;p&gt;If data exists:&lt;/p&gt;

&lt;p&gt;Return cached result&lt;/p&gt;

&lt;p&gt;If data does not exist:&lt;/p&gt;

&lt;p&gt;Call LLM&lt;br&gt;
Generate response&lt;br&gt;
Store result in Redis&lt;br&gt;
Return response&lt;/p&gt;

&lt;p&gt;This helps reduce unnecessary processing and can improve overall application performance.&lt;/p&gt;

&lt;p&gt;What I Found Interesting&lt;/p&gt;

&lt;p&gt;One thing that stood out to me is how modern AI systems still rely heavily on traditional infrastructure concepts.&lt;/p&gt;

&lt;p&gt;When learning GenAI, it's easy to focus only on models, prompts, and frameworks. However, building efficient AI applications also requires understanding components such as caching, databases, cloud infrastructure, and system design.&lt;/p&gt;

&lt;p&gt;Redis is a great example of how an established technology continues to be highly relevant in AI-powered applications.&lt;/p&gt;

&lt;p&gt;Final Thoughts&lt;/p&gt;

&lt;p&gt;I'm still exploring this area, but learning how infrastructure components integrate with AI systems has been an interesting experience.&lt;/p&gt;

&lt;p&gt;It reinforces the idea that building GenAI applications is not only about working with models—it's also about designing systems that can perform efficiently at scale.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffvivc49lx8ny7oc47g0u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffvivc49lx8ny7oc47g0u.png" alt=" " width="799" height="316"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>DSA Alone Is No Longer Enough: Why Students Should Learn Beyond Coding Problems</title>
      <dc:creator>Atharva Khairnar</dc:creator>
      <pubDate>Fri, 05 Jun 2026 05:19:19 +0000</pubDate>
      <link>https://dev.to/sai_khairnar_1392791fe9b5/dsa-alone-is-no-longer-enough-why-students-should-learn-beyond-coding-problems-4kik</link>
      <guid>https://dev.to/sai_khairnar_1392791fe9b5/dsa-alone-is-no-longer-enough-why-students-should-learn-beyond-coding-problems-4kik</guid>
      <description>&lt;p&gt;For a long time, the standard advice for computer science students was simple:&lt;/p&gt;

&lt;p&gt;Learn a programming language, practice Data Structures and Algorithms, solve LeetCode problems, and prepare for interviews.&lt;/p&gt;

&lt;p&gt;While this advice is still valuable, the software industry has evolved significantly over the last few years.&lt;/p&gt;

&lt;p&gt;Today, companies are building large-scale distributed systems, cloud-native applications, AI-powered products, and highly scalable platforms. As a result, the expectations from software engineers are changing as well.&lt;/p&gt;

&lt;p&gt;DSA remains important because it teaches problem-solving, logical thinking, and helps in technical interviews. However, real-world software development involves much more than solving algorithmic problems.&lt;/p&gt;

&lt;p&gt;Modern engineers are expected to understand concepts such as:&lt;/p&gt;

&lt;p&gt;System Design&lt;br&gt;
Cloud Computing&lt;br&gt;
Databases&lt;br&gt;
DevOps Practices&lt;br&gt;
CI/CD Pipelines&lt;br&gt;
Containerization with Docker&lt;br&gt;
Orchestration with Kubernetes&lt;br&gt;
Distributed Systems&lt;br&gt;
Machine Learning and AI&lt;br&gt;
Large Language Models (LLMs)&lt;/p&gt;

&lt;p&gt;A student may be able to solve difficult LeetCode problems, but building and deploying a production-ready application requires a completely different skill set.&lt;/p&gt;

&lt;p&gt;For example, creating a full-stack application is only the first step. Questions that come next are often more important:&lt;/p&gt;

&lt;p&gt;How will the application be deployed?&lt;br&gt;
How will it scale when traffic increases?&lt;br&gt;
How will data be stored and backed up?&lt;br&gt;
How will failures be handled?&lt;br&gt;
How will updates be released without downtime?&lt;br&gt;
How will monitoring and logging be implemented?&lt;/p&gt;

&lt;p&gt;These are real engineering challenges that developers face every day.&lt;/p&gt;

&lt;p&gt;The goal should not be to stop learning DSA. Instead, students should combine DSA with broader system knowledge.&lt;/p&gt;

&lt;p&gt;A balanced learning path could look like:&lt;/p&gt;

&lt;p&gt;Programming Fundamentals&lt;br&gt;
Data Structures and Algorithms&lt;br&gt;
Databases&lt;br&gt;
Backend Development&lt;br&gt;
Cloud Computing&lt;br&gt;
DevOps and CI/CD&lt;br&gt;
System Design&lt;br&gt;
AI and Emerging Technologies&lt;/p&gt;

&lt;p&gt;The students who stand out in the coming years will not necessarily be those who solve the most coding questions. They will be the ones who can understand, build, deploy, and maintain complete systems.&lt;/p&gt;

&lt;p&gt;The industry needs engineers, not just interview problem solvers.&lt;/p&gt;

&lt;p&gt;DSA can help you get an interview.&lt;/p&gt;

&lt;p&gt;Understanding systems can help you build a career.&lt;/p&gt;

</description>
      <category>llm</category>
      <category>ai</category>
      <category>devops</category>
      <category>dsa</category>
    </item>
    <item>
      <title>Full Stack Projects Are Not Enough Anymore</title>
      <dc:creator>Atharva Khairnar</dc:creator>
      <pubDate>Mon, 25 May 2026 07:12:43 +0000</pubDate>
      <link>https://dev.to/sai_khairnar_1392791fe9b5/full-stack-projects-are-not-enough-anymore-3oo</link>
      <guid>https://dev.to/sai_khairnar_1392791fe9b5/full-stack-projects-are-not-enough-anymore-3oo</guid>
      <description>&lt;p&gt;A lot of students learn full-stack development today.&lt;/p&gt;

&lt;p&gt;They build projects using React, Node.js, MongoDB, APIs, and modern frameworks.&lt;/p&gt;

&lt;p&gt;But very few try to integrate the cloud into their projects.&lt;/p&gt;

&lt;p&gt;Not because the cloud is unimportant, but because it feels difficult and confusing at first.&lt;/p&gt;

&lt;p&gt;And that’s where students can actually stand out.&lt;/p&gt;

&lt;p&gt;Building a full-stack project is good.&lt;br&gt;
But deploying it, scaling it, using cloud storage, CI/CD, containers, monitoring, and infrastructure makes it feel closer to a real-world system rather than just another CRUD project.&lt;/p&gt;

&lt;p&gt;The difference between developers is slowly shifting from:&lt;/p&gt;

&lt;p&gt;Who can build applications? To whom can one build production-ready systems?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>programming</category>
    </item>
    <item>
      <title>Good Code Is Not the Same as Production-Ready Code</title>
      <dc:creator>Atharva Khairnar</dc:creator>
      <pubDate>Wed, 28 Jan 2026 18:56:05 +0000</pubDate>
      <link>https://dev.to/sai_khairnar_1392791fe9b5/good-code-is-not-the-same-as-production-ready-code-54g1</link>
      <guid>https://dev.to/sai_khairnar_1392791fe9b5/good-code-is-not-the-same-as-production-ready-code-54g1</guid>
      <description>&lt;p&gt;For developers or students with around 3–6 months of experience, writing clean and working code feels like a big achievement — and it should. It means you understand syntax, logic, and basic structure.&lt;/p&gt;

&lt;p&gt;But there’s an important distinction that often appears next:&lt;/p&gt;

&lt;p&gt;Good code is not always production-ready code.&lt;/p&gt;

&lt;p&gt;Production environments introduce realities that local development rarely shows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Network failures&lt;/li&gt;
&lt;li&gt;Unexpected input&lt;/li&gt;
&lt;li&gt;Performance constraints&lt;/li&gt;
&lt;li&gt;Security concerns&lt;/li&gt;
&lt;li&gt;Long-term maintenance&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Code that works perfectly in isolation may fail under these conditions.&lt;/p&gt;

&lt;p&gt;As developers, growth happens when we:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Revisit the code we’ve already written&lt;/li&gt;
&lt;li&gt;Ask how it behaves under failure&lt;/li&gt;
&lt;li&gt;Explore better ways to structure it&lt;/li&gt;
&lt;li&gt;Improve readability, error handling, and scalability&lt;/li&gt;
&lt;li&gt;Learn alternative approaches and design patterns&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This doesn’t mean rewriting everything from scratch. Often, it’s about refining the same logic with better practices.&lt;/p&gt;

&lt;p&gt;Exploring production-ready methodologies — logging, validation, defensive coding, monitoring, and clear boundaries — helps bridge the gap between “it works” and “it lasts.”&lt;/p&gt;

&lt;p&gt;That shift in mindset is what turns a beginner developer into a reliable engineer.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>webdev</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Things Tutorials Don’t Teach You About Building Real Applications</title>
      <dc:creator>Atharva Khairnar</dc:creator>
      <pubDate>Mon, 26 Jan 2026 18:08:31 +0000</pubDate>
      <link>https://dev.to/sai_khairnar_1392791fe9b5/things-tutorials-dont-teach-you-about-building-real-applications-11go</link>
      <guid>https://dev.to/sai_khairnar_1392791fe9b5/things-tutorials-dont-teach-you-about-building-real-applications-11go</guid>
      <description>&lt;p&gt;After working on multiple real-world applications, one thing has become clear to me: Tutorials are useful, but they only cover a very small part of what it actually means to build software.&lt;/p&gt;

&lt;p&gt;Real applications expose challenges that tutorials rarely address — not because they are unimportant, but because they are hard to simulate in controlled examples.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Hard Problems Are Rarely About Syntax&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In real systems, bugs are rarely caused by not knowing a language feature.&lt;/p&gt;

&lt;p&gt;Most problems come from:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Incorrect assumptions about data&lt;/li&gt;
&lt;li&gt;Misunderstood requirements&lt;/li&gt;
&lt;li&gt;Unclear ownership between services&lt;/li&gt;
&lt;li&gt;Edge cases that were not considered&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Syntax can be learned quickly. Judgment and system thinking take time.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>webdev</category>
      <category>architecture</category>
    </item>
  </channel>
</rss>
