<?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: Aakash</title>
    <description>The latest articles on DEV Community by Aakash (@deathsaber).</description>
    <link>https://dev.to/deathsaber</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%2F2692176%2Fc01ef77d-2895-45c0-92b2-bf88e0061d86.jpg</url>
      <title>DEV Community: Aakash</title>
      <link>https://dev.to/deathsaber</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/deathsaber"/>
    <language>en</language>
    <item>
      <title>From on-prem to the cloud - Lessons Learned</title>
      <dc:creator>Aakash</dc:creator>
      <pubDate>Sun, 03 May 2026 08:36:11 +0000</pubDate>
      <link>https://dev.to/deathsaber/from-on-prem-to-the-cloud-lessons-learned-4pge</link>
      <guid>https://dev.to/deathsaber/from-on-prem-to-the-cloud-lessons-learned-4pge</guid>
      <description>&lt;p&gt;A recent conversation with &lt;a href="https://peerlist.io/raymondoyondi" rel="noopener noreferrer"&gt;Raymond Oyondi&lt;/a&gt; on Peerlist made me rack my memories a bit and reflect on how much software and infrastructure have changed over the years.&lt;/p&gt;

&lt;p&gt;I joined the industry back when cloud still felt more like a concept than a default. A lot of systems were still being built and maintained in environments where the infrastructure was very much in your hands. You knew the machines, the network, the limits, the weak points. If something needed scaling, it was not a button click and a dashboard graph. It meant spinning up another server, configuring it, wiring it into the network and load balancer, deploying the application, syncing state, setting up monitoring, and making sure the whole thing did not fall apart under pressure. We had automation in places, of course, but nowhere near the kind of convenience people now take for granted.&lt;/p&gt;

&lt;p&gt;A lot has changed since then. But the funny thing is, the biggest lesson for me is that the old principles never really went away.&lt;/p&gt;

&lt;p&gt;Cloud changed the speed. It changed the abstractions. It changed how easily we can provision, scale and recover. But it did not change the laws underneath. Capacity still matters. Latency still matters. State still causes pain. Network boundaries still introduce failure. Bad assumptions still come back to collect interest.&lt;/p&gt;

&lt;p&gt;That is probably the biggest thing I learned moving from on-prem and bare-metal thinking into cloud-native systems: the tooling changed more than the fundamentals did.&lt;/p&gt;

&lt;p&gt;Earlier, a lot of software lived as one big application. One service, one deployment unit, one giant block with hard coupling inside it. It was not always pretty, but it was straightforward in one sense: most of the complexity lived inside the application itself. Since the infrastructure was under our control, nobody really panicked about it. You managed the box, tuned the app, scaled when needed, and kept things moving.&lt;/p&gt;

&lt;p&gt;Then cloud became normal, and with it came speed, flexibility, and a different cost model. Suddenly, scaling was easier. You no longer had to treat infrastructure changes like a mini project every single time. But that convenience also exposed something important: a lot of monoliths were expensive in ways people had not fully noticed before.&lt;/p&gt;

&lt;p&gt;You would see an application chewing through resources and the default response would be to scale the whole thing. More compute, more memory, more replicas, more money. But when you looked closer, often only certain parts of the application were actually responsible for that load. Maybe one workflow was CPU-heavy. Maybe one module was doing aggressive I/O. Maybe one part had bursty traffic while the rest of the system just sat there minding its own business.&lt;/p&gt;

&lt;p&gt;That is where the architectural shift really starts to make sense.&lt;/p&gt;

&lt;p&gt;Instead of treating the software like one sealed black box, you begin to see it as a collection of components with different scaling patterns and different operational needs. So you start isolating them. You break out the hot paths. You separate the parts that need to scale from the parts that do not. Pretty soon, what used to be a monolith starts becoming a patchwork of smaller services talking to each other.&lt;/p&gt;

&lt;p&gt;And yes, that can absolutely be the right move.&lt;/p&gt;

&lt;p&gt;But I also think this is where a lot of people get seduced by architecture diagrams and forget the bill that comes later.&lt;/p&gt;

&lt;p&gt;Microservices are not free. They reduce one kind of pain and introduce another. You gain independent scaling, but you also gain more network hops, more deployment surfaces, more observability needs, more operational coordination, more failure modes, and more opportunities for state to become inconsistent. The complexity does not disappear. It just moves.&lt;/p&gt;

&lt;p&gt;Earlier, if two parts of the system needed to coordinate, that problem often lived inside one process boundary. Now it may live across services, shared storage, queues, caches, retries, and eventual consistency rules. You may need supporting software to make the architecture work. You may need shared storage. You may need to handle read-write races and stale data. You may need to think much harder about idempotency, ordering, duplicate events, and what “correct” even means in a distributed system.&lt;/p&gt;

&lt;p&gt;So for me, the lesson was never “microservices good, monolith bad.” That is too simplistic and honestly a bit lazy.&lt;/p&gt;

&lt;p&gt;The real lesson was this: design around the behavior of the system, not around fashionable architecture labels.&lt;/p&gt;

&lt;p&gt;If one deployable unit works, keep it one deployable unit. If certain modules clearly have different scaling needs, isolate them. If you are introducing distributed complexity, make sure the benefits are worth the operational cost. Use the minimum supporting software necessary. Every extra moving part is one more thing to monitor, patch, debug, secure and explain at 2 AM.&lt;/p&gt;

&lt;p&gt;Another lesson that became much more obvious in the cloud-native world is that deployment topology matters a lot more than many developers initially think. Two services talking to each other on a diagram is easy. The actual topology, where they run, how they communicate, what latency sits between them, how failover behaves, where state lives, and what happens during partial failure, is where reality begins.&lt;/p&gt;

&lt;p&gt;I have also come to appreciate observability discipline much more over time. In distributed systems, tracing tools are great and OpenTelemetry has helped a lot, but tooling alone does not save you. If your logs are inconsistent, your labels are exploding in cardinality, your trace attributes are a mess, and every team names the same thing differently, you are not observing a system. You are generating noise. Good observability needs discipline: standard log formats, sensible naming conventions, rules for metrics and labels, and a sampling strategy that matches the criticality of the application. Otherwise, you either drown in telemetry or pay too much to keep it.&lt;/p&gt;

&lt;p&gt;So when I think about high availability at scale, my biggest lesson learned is actually a simple one.&lt;/p&gt;

&lt;p&gt;Break systems into modules where it genuinely helps. Keep supporting software to a minimum. Be aware of deployment topology. Respect state. And never assume cloud removed the need for sound systems thinking. It did not. It just made it easier to build distributed systems before earning the scars required to run them well.&lt;/p&gt;

&lt;p&gt;Cloud is powerful. But it is still someone else’s computer. And the old bare-metal lessons still hold stronger than people think.&lt;/p&gt;

</description>
      <category>infrastructure</category>
      <category>cloud</category>
      <category>architecture</category>
      <category>learning</category>
    </item>
    <item>
      <title>Quick Hack: Save up to 99% tokens in Coding Agents</title>
      <dc:creator>Aakash</dc:creator>
      <pubDate>Fri, 01 May 2026 02:19:38 +0000</pubDate>
      <link>https://dev.to/deathsaber/quick-hack-save-up-to-99-tokens-in-coding-agents-4k33</link>
      <guid>https://dev.to/deathsaber/quick-hack-save-up-to-99-tokens-in-coding-agents-4k33</guid>
      <description>&lt;p&gt;Anyone using coding agents like Codex must be aware of the pains of stricter token limits. I am on the Plus plan and the 5-hour limits are so short, they are really annoying. Came across a package called distill - &lt;a href="https://github.com/samuelfaj/distill" rel="noopener noreferrer"&gt;https://github.com/samuelfaj/distill&lt;/a&gt; - which claims to reduce token usage by 99%. Behind the scenes, it works by by compressing command output using a LLM (local or hosted) before it reaches the model. Well, I started using it and it is helping in extending my sessions. Sharing in case it helps others stretch their limits a bit further.&lt;/p&gt;

&lt;h2&gt;
  
  
  Known Issues -
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The latest build supports Windows but hasn't been published in npm yet. If you stumble upon it, just like me, use the commands in &lt;a href="https://github.com/samuelfaj/distill/issues/10#issuecomment-4357327959" rel="noopener noreferrer"&gt;this comment&lt;/a&gt; to set it up (or just copy them from the end of this post).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It silently fails for newer, reasoning models, like the GPT-5 family. I have submitted &lt;a href="https://github.com/samuelfaj/distill/issues/15" rel="noopener noreferrer"&gt;this issue&lt;/a&gt; to add support for the newer models and working on a fix (hope the maintainer is open to contribution!). Meanwhile, use it with the non-reasoning models like gpt-4o, gpt-4.1 or gpt-5-chat-latest&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Windows Install Commands
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Install bun - &lt;code&gt;npm install -g bun&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Clone and install - &lt;code&gt;git clone https://github.com/samuelfaj/distill.git; cd distill; npm install&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Build the binary - &lt;code&gt;npm run build:bins&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Add to path -
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="n"&gt;New-Item&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-ItemType&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Directory&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Force&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;packages\distill-win32-x64\bin&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Out-Null&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="nx"&gt;Copy-Item&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dist&lt;/span&gt;&lt;span class="nx"&gt;\bun-windows-x64\distill.exe&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;packages\distill-win32-x64\bin\distill.exe&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Force&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once that's done, try verifying  -&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="gp"&gt;PS D:\custom_pnpm\distill&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;distill &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;span class="go"&gt;1.4.1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>ai</category>
      <category>vibecoding</category>
      <category>githubcopilot</category>
      <category>programming</category>
    </item>
    <item>
      <title>Why Most Bank Statement Converters Fail</title>
      <dc:creator>Aakash</dc:creator>
      <pubDate>Sun, 29 Mar 2026 12:47:44 +0000</pubDate>
      <link>https://dev.to/deathsaber/why-most-bank-statement-converters-fail-4ha9</link>
      <guid>https://dev.to/deathsaber/why-most-bank-statement-converters-fail-4ha9</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/deathsaber/why-pdf-bank-statement-conversion-is-harder-than-it-looks-2opa" class="crayons-story__hidden-navigation-link"&gt;Why PDF Bank Statement Conversion Is Harder Than It Looks&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/deathsaber" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F2692176%2Fc01ef77d-2895-45c0-92b2-bf88e0061d86.jpg" alt="deathsaber profile" class="crayons-avatar__image" width="96" height="96"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/deathsaber" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Aakash
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Aakash
                
              
              &lt;div id="story-author-preview-content-3425116" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/deathsaber" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F2692176%2Fc01ef77d-2895-45c0-92b2-bf88e0061d86.jpg" class="crayons-avatar__image" alt="" width="96" height="96"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Aakash&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/deathsaber/why-pdf-bank-statement-conversion-is-harder-than-it-looks-2opa" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Mar 29&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/deathsaber/why-pdf-bank-statement-conversion-is-harder-than-it-looks-2opa" id="article-link-3425116"&gt;
          Why PDF Bank Statement Conversion Is Harder Than It Looks
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/fintech"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;fintech&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/saas"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;saas&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/productivity"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;productivity&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/deathsaber/why-pdf-bank-statement-conversion-is-harder-than-it-looks-2opa#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            6 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>ai</category>
      <category>fintech</category>
      <category>saas</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Why Just PDF-to-Excel Is Not Enough For Bank Statements</title>
      <dc:creator>Aakash</dc:creator>
      <pubDate>Sun, 29 Mar 2026 12:47:05 +0000</pubDate>
      <link>https://dev.to/deathsaber/why-just-pdf-to-excel-is-not-enough-for-bank-statements-nb8</link>
      <guid>https://dev.to/deathsaber/why-just-pdf-to-excel-is-not-enough-for-bank-statements-nb8</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/deathsaber/why-pdf-bank-statement-conversion-is-harder-than-it-looks-2opa" class="crayons-story__hidden-navigation-link"&gt;Why PDF Bank Statement Conversion Is Harder Than It Looks&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/deathsaber" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F2692176%2Fc01ef77d-2895-45c0-92b2-bf88e0061d86.jpg" alt="deathsaber profile" class="crayons-avatar__image" width="96" height="96"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/deathsaber" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Aakash
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Aakash
                
              
              &lt;div id="story-author-preview-content-3425116" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/deathsaber" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F2692176%2Fc01ef77d-2895-45c0-92b2-bf88e0061d86.jpg" class="crayons-avatar__image" alt="" width="96" height="96"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Aakash&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/deathsaber/why-pdf-bank-statement-conversion-is-harder-than-it-looks-2opa" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Mar 29&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/deathsaber/why-pdf-bank-statement-conversion-is-harder-than-it-looks-2opa" id="article-link-3425116"&gt;
          Why PDF Bank Statement Conversion Is Harder Than It Looks
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/fintech"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;fintech&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/saas"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;saas&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/productivity"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;productivity&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/deathsaber/why-pdf-bank-statement-conversion-is-harder-than-it-looks-2opa#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            6 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>ai</category>
      <category>fintech</category>
      <category>saas</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Why PDF Bank Statement Conversion Is Harder Than It Looks</title>
      <dc:creator>Aakash</dc:creator>
      <pubDate>Sun, 29 Mar 2026 12:45:43 +0000</pubDate>
      <link>https://dev.to/deathsaber/why-pdf-bank-statement-conversion-is-harder-than-it-looks-2opa</link>
      <guid>https://dev.to/deathsaber/why-pdf-bank-statement-conversion-is-harder-than-it-looks-2opa</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;A bank statement PDF to Excel converter sounds like a solved problem until you actually start looking at real statements. The easy part is getting some rows out. The hard part is getting output that somebody can trust enough to use without doing half the work manually again.&lt;/p&gt;

&lt;p&gt;That was the big realization for me.&lt;/p&gt;

&lt;p&gt;What looked like a simple OCR or extraction problem turned out to be a much uglier workflow problem involving layout variance, scanned documents, broken tables, inconsistent debit and credit conventions, balance mismatches and a very unforgiving downstream use-case. In accounting and bookkeeping workflows, “almost correct” is often just a slower form of manual work.&lt;/p&gt;

&lt;p&gt;That is the problem space I ended up getting into with a friend of mine, and it eventually became the basis for &lt;a href="https://smartbankstatement.com" rel="noopener noreferrer"&gt;Smart Bank Statement&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The naive version of the problem
&lt;/h2&gt;

&lt;p&gt;On paper, this problem sounds embarrassingly simple.&lt;/p&gt;

&lt;p&gt;Take a PDF bank statement. Extract the rows. Put them into Excel or CSV. Done.&lt;/p&gt;

&lt;p&gt;That is how most people think about it at first, and honestly, that is also how a lot of tools position it. They talk about conversion as if the job ends the moment rows appear in a spreadsheet.&lt;/p&gt;

&lt;p&gt;But that framing hides the real problem.&lt;/p&gt;

&lt;p&gt;Because when somebody says they want to convert a bank statement PDF into Excel, they usually do not mean “give me some table-like output.” They mean “give me data that is clean enough to reconcile, import, audit or work with downstream without me babysitting every row.”&lt;/p&gt;

&lt;p&gt;That is a much higher bar.&lt;/p&gt;

&lt;p&gt;Once you use that bar instead of the softer “did we extract something?” bar, the problem changes shape immediately.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where things start breaking
&lt;/h2&gt;

&lt;p&gt;A lot of document workflows look good right until you leave clean demo inputs and meet real files.&lt;/p&gt;

&lt;p&gt;Bank statements are especially annoying because the documents vary in all the ways that matter. Some are digital PDFs with selectable text. Some are scanned. Some have low quality images. Some use multi-column layouts. Some place debit and credit in separate columns. Some collapse them into one amount column and expect the sign convention to imply direction. Some carry balances row by row. Some do not. Some have strange description wrapping or continuation rows. Some have pages where the statement header, footer or summary table looks suspiciously like transactional content.&lt;/p&gt;

&lt;p&gt;And then there are the really fun ones: documents with multiple accounts in one file, broken table boundaries, passbook-style formats or statements where the extraction is not catastrophically wrong, just subtly wrong enough to waste your afternoon.&lt;/p&gt;

&lt;p&gt;That last category is the one I dislike most.&lt;/p&gt;

&lt;p&gt;If the extraction completely fails, at least the failure is obvious. If it succeeds just enough to look plausible while still shifting a row, dropping a value or distorting a balance trail, the user has to detect it manually. In finance workflows, that is where trust gets destroyed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why OCR accuracy is the wrong metric
&lt;/h2&gt;

&lt;p&gt;One thing I became more skeptical of very quickly is marketing around raw OCR accuracy.&lt;/p&gt;

&lt;p&gt;The reason is simple: accuracy by itself is too vague to mean much in this context.&lt;/p&gt;

&lt;p&gt;A tool can claim very high extraction accuracy and still fail the actual workflow. It can extract text well and still produce inconsistent structure. It can identify numbers correctly and still associate them with the wrong row. It can read a page and still mis-handle the running balance. It can parse a date and still break when a narrative spills across lines.&lt;/p&gt;

&lt;p&gt;So the real question is not just, “How accurately did you read the document?”&lt;/p&gt;

&lt;p&gt;It is, “Can the output be trusted enough that the user saves time instead of spending that time validating the tool?”&lt;/p&gt;

&lt;p&gt;That is a very different metric.&lt;/p&gt;

&lt;p&gt;In bookkeeping or accounting, 99% correctness is not automatically good if the missing 1% takes disproportionate effort to find. One bad transaction can force somebody to retrace the whole sheet. A balance mismatch means somebody has to stop and investigate. A few line items shifted out of place can make a reconciliation job unreliable.&lt;/p&gt;

&lt;p&gt;So for me, this stopped being an OCR problem pretty fast. It became a trust, validation and downstream-structure problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  The market realization
&lt;/h2&gt;

&lt;p&gt;This part also changed how I thought about the product side of it.&lt;/p&gt;

&lt;p&gt;When I first got into this space, the broader finance angle looked tempting. Dashboards, summaries, analysis, personal finance views, maybe even a bigger “financial intelligence” layer. That all sounds interesting, and it demos well.&lt;/p&gt;

&lt;p&gt;But the pain there felt softer.&lt;/p&gt;

&lt;p&gt;The harder, more immediate pain was earlier in the pipeline: getting messy statements into a usable format in the first place. Before dashboards, before analytics, before any fancy insight layer, there is an ugly preprocessing problem. And if that problem is not solved well, everything after it gets contaminated.&lt;/p&gt;

&lt;p&gt;That was where things started becoming more compelling.&lt;/p&gt;

&lt;p&gt;My friend Rupam had already been exploring the space when I got involved. Once I joined, a lot of our conversations became less about “what broad finance thing can we build?” and more about “where is the sharper workflow pain, and what are people already wasting time on?”&lt;/p&gt;

&lt;p&gt;That question led us toward bank statements and document conversion much more strongly than toward the analyzer-style direction.&lt;/p&gt;

&lt;h2&gt;
  
  
  What building around this taught me
&lt;/h2&gt;

&lt;p&gt;The first lesson was that “PDF to Excel” is one of those phrases that hides an enormous amount of unpleasant detail behind a very normal-sounding sentence.&lt;/p&gt;

&lt;p&gt;The second lesson was that narrowing the product made it stronger.&lt;/p&gt;

&lt;p&gt;There is a strong temptation, especially early on, to make a product broader because broader sounds more ambitious. In reality, broader often means blurrier. The more we looked at the workflow, the more it made sense to stay focused: take bank statement PDFs, extract the data, normalize it properly and make the result actually usable.&lt;/p&gt;

&lt;p&gt;The third lesson was that extraction is only one layer. Validation matters just as much. In some cases, more. If you do not have ways to detect suspicious output, verify balance consistency or surface probable mistakes, you are not really solving the full problem. You are just producing output that still needs human suspicion attached to it.&lt;/p&gt;

&lt;p&gt;And once human suspicion becomes mandatory, part of the product value disappears.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we ended up building
&lt;/h2&gt;

&lt;p&gt;That is the line of thinking that eventually became Smart Bank Statement.&lt;/p&gt;

&lt;p&gt;Rupam had the initial seed of the idea. I joined once things were already moving, and together we pushed it through the more difficult stage: looking harder at the market, rejecting the softer and more crowded direction, narrowing the scope and getting an MVP built around a workflow that felt painful enough to matter.&lt;/p&gt;

&lt;p&gt;I do not find that story as glamorous as the polished startup version where the product vision arrives fully formed from day one. But it is closer to how real products actually happen.&lt;/p&gt;

&lt;p&gt;Usually, the better version only reveals itself after you spend time with the uglier parts of the workflow.&lt;/p&gt;

&lt;p&gt;In this case, the uglier part was clear enough: bank statement PDFs are not hard because they are impossible to read. They are hard because people need the output to be trustworthy.&lt;/p&gt;

&lt;p&gt;That difference ended up shaping both the build and the business direction.&lt;/p&gt;

&lt;h2&gt;
  
  
  Parting thoughts
&lt;/h2&gt;

&lt;p&gt;If you are working on document AI, OCR or extraction tooling, I think this is an easy trap to fall into: treating extraction success as the end of the problem.&lt;/p&gt;

&lt;p&gt;A lot of the time, it is just the beginning.&lt;/p&gt;

&lt;p&gt;The real problem starts when the extracted output has to survive contact with actual use. Can somebody reconcile with it? Can they import it? Can they audit it? Can they trust it enough not to manually re-check everything anyway?&lt;/p&gt;

&lt;p&gt;That is the standard I care about much more now.&lt;/p&gt;

&lt;p&gt;And that shift in perspective is probably the most useful thing I got from building in this space.&lt;/p&gt;

&lt;p&gt;The tool that came out of it is Smart Bank Statement, but the bigger lesson for me was this: document extraction stops being an OCR problem very quickly. It becomes a reliability problem.&lt;/p&gt;

&lt;p&gt;And reliability is always where the easy-looking stuff gets hard.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>fintech</category>
      <category>saas</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How I Keep Coding Agents from Creating Monoliths and Repetition</title>
      <dc:creator>Aakash</dc:creator>
      <pubDate>Sat, 21 Mar 2026 19:14:50 +0000</pubDate>
      <link>https://dev.to/deathsaber/how-i-keep-coding-agents-from-creating-monoliths-and-repetition-4gmd</link>
      <guid>https://dev.to/deathsaber/how-i-keep-coding-agents-from-creating-monoliths-and-repetition-4gmd</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/deathsaber/ai-can-write-code-fast-keeping-it-clean-is-the-hard-part-16m3" class="crayons-story__hidden-navigation-link"&gt;AI Can Write Code Fast. Keeping It Clean Is the Hard Part&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/deathsaber" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F2692176%2Fc01ef77d-2895-45c0-92b2-bf88e0061d86.jpg" alt="deathsaber profile" class="crayons-avatar__image" width="96" height="96"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/deathsaber" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Aakash
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Aakash
                
              
              &lt;div id="story-author-preview-content-3381388" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/deathsaber" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F2692176%2Fc01ef77d-2895-45c0-92b2-bf88e0061d86.jpg" class="crayons-avatar__image" alt="" width="96" height="96"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Aakash&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/deathsaber/ai-can-write-code-fast-keeping-it-clean-is-the-hard-part-16m3" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Mar 21&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/deathsaber/ai-can-write-code-fast-keeping-it-clean-is-the-hard-part-16m3" id="article-link-3381388"&gt;
          AI Can Write Code Fast. Keeping It Clean Is the Hard Part
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag crayons-tag--filled  " href="/t/discuss"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;discuss&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/llm"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;llm&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/vibecoding"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;vibecoding&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/deathsaber/ai-can-write-code-fast-keeping-it-clean-is-the-hard-part-16m3#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            2 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>ai</category>
      <category>discuss</category>
      <category>llm</category>
      <category>vibecoding</category>
    </item>
    <item>
      <title>Coding Agents Keep Wrecking My Clean Scaffolding — So I Fixed the Rules</title>
      <dc:creator>Aakash</dc:creator>
      <pubDate>Sat, 21 Mar 2026 19:14:27 +0000</pubDate>
      <link>https://dev.to/deathsaber/coding-agents-keep-wrecking-my-clean-scaffolding-so-i-fixed-the-rules-dp5</link>
      <guid>https://dev.to/deathsaber/coding-agents-keep-wrecking-my-clean-scaffolding-so-i-fixed-the-rules-dp5</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/deathsaber/ai-can-write-code-fast-keeping-it-clean-is-the-hard-part-16m3" class="crayons-story__hidden-navigation-link"&gt;AI Can Write Code Fast. Keeping It Clean Is the Hard Part&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/deathsaber" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F2692176%2Fc01ef77d-2895-45c0-92b2-bf88e0061d86.jpg" alt="deathsaber profile" class="crayons-avatar__image" width="96" height="96"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/deathsaber" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Aakash
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Aakash
                
              
              &lt;div id="story-author-preview-content-3381388" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/deathsaber" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F2692176%2Fc01ef77d-2895-45c0-92b2-bf88e0061d86.jpg" class="crayons-avatar__image" alt="" width="96" height="96"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Aakash&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/deathsaber/ai-can-write-code-fast-keeping-it-clean-is-the-hard-part-16m3" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Mar 21&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/deathsaber/ai-can-write-code-fast-keeping-it-clean-is-the-hard-part-16m3" id="article-link-3381388"&gt;
          AI Can Write Code Fast. Keeping It Clean Is the Hard Part
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag crayons-tag--filled  " href="/t/discuss"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;discuss&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/llm"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;llm&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/vibecoding"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;vibecoding&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/deathsaber/ai-can-write-code-fast-keeping-it-clean-is-the-hard-part-16m3#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            2 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>ai</category>
      <category>discuss</category>
      <category>llm</category>
      <category>vibecoding</category>
    </item>
    <item>
      <title>AI Can Write Code Fast. Keeping It Clean Is the Hard Part</title>
      <dc:creator>Aakash</dc:creator>
      <pubDate>Sat, 21 Mar 2026 19:12:32 +0000</pubDate>
      <link>https://dev.to/deathsaber/ai-can-write-code-fast-keeping-it-clean-is-the-hard-part-16m3</link>
      <guid>https://dev.to/deathsaber/ai-can-write-code-fast-keeping-it-clean-is-the-hard-part-16m3</guid>
      <description>&lt;p&gt;I'll keep this one shorter than usual. &lt;/p&gt;

&lt;p&gt;Remember the good old days when we wrote the entire codebase by hand? Being the writer, we knew the pains of maintaining it so we'd keep it as clean and minimal as possible and avoid spaghetti logic and repetition.&lt;/p&gt;

&lt;p&gt;With the advent of Coding Agents, coding has never been easier but also, never been messier. Huge functions, giant files, repeated logic, contradictory assumptions, logic strewn around like spaghetti without a proper structure etc. are just a few of the problems I have noticed. Now, just a review takes so much of cognitive overload from just trying to follow the structure, forget wrapping your head around the huge monoliths.&lt;br&gt;
In so many of my projects I see this pattern repeat - I set up a scaffolding and put in the backbone - all clean and DRY. Then the agent takes over. By the time it is done, the drift from my clean code to the mess makes me want to gorge my eyes out!&lt;/p&gt;

&lt;p&gt;I tried prompting it to JUST KEEP IT CLEAN, DRY AND REUSE INSTEAD OF RE-INVENT but with repeated context compressions, it soon gets lost. Well, I got fed up and thought of writing a set of SKILLS but came across the &lt;strong&gt;clean code skills&lt;/strong&gt; pack which enforce Robert C. Martin's Clean Code principles. The set of skills were good but it missed the major pain I faced - keeping the code appropriate and avoiding monoliths. So I forked it and added the skill in. I have submitted a PR to the upstream but meanwhile, you can use my &lt;a href="https://github.com/aakashH242/clean-dry-code-skills" rel="noopener noreferrer"&gt;fork - CLEAN DRY CODE SKILLS&lt;/a&gt;. It's mainly for python but the principles can be applied to other languages too.&lt;/p&gt;

&lt;p&gt;I hope the community finds it useful. Please add in other skills there you think is missing - I will be maintaining this fork so we can get it merged there. Do drop a star if you like it! &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PS&lt;/strong&gt; - I'm curious to find what other drifts and annoying patterns you have noticed when an agent works on your codebase.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>discuss</category>
      <category>llm</category>
      <category>vibecoding</category>
    </item>
    <item>
      <title>I Thought I Built an MCP Adapter. I Actually Built an Attack Surface.</title>
      <dc:creator>Aakash</dc:creator>
      <pubDate>Mon, 16 Mar 2026 18:42:16 +0000</pubDate>
      <link>https://dev.to/deathsaber/i-thought-i-built-an-mcp-adapter-i-actually-built-an-attack-surface-3cio</link>
      <guid>https://dev.to/deathsaber/i-thought-i-built-an-mcp-adapter-i-actually-built-an-attack-surface-3cio</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/deathsaber/the-day-my-mcp-adapter-stopped-being-just-plumbing-k60" class="crayons-story__hidden-navigation-link"&gt;The day my MCP adapter stopped being just plumbing&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/deathsaber" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F2692176%2Fc01ef77d-2895-45c0-92b2-bf88e0061d86.jpg" alt="deathsaber profile" class="crayons-avatar__image" width="96" height="96"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/deathsaber" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Aakash
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Aakash
                
              
              &lt;div id="story-author-preview-content-3359987" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/deathsaber" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F2692176%2Fc01ef77d-2895-45c0-92b2-bf88e0061d86.jpg" class="crayons-avatar__image" alt="" width="96" height="96"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Aakash&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/deathsaber/the-day-my-mcp-adapter-stopped-being-just-plumbing-k60" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Mar 16&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/deathsaber/the-day-my-mcp-adapter-stopped-being-just-plumbing-k60" id="article-link-3359987"&gt;
          The day my MCP adapter stopped being just plumbing
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag crayons-tag--filled  " href="/t/showdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;showdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/mcp"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;mcp&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/security"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;security&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/deathsaber/the-day-my-mcp-adapter-stopped-being-just-plumbing-k60" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt; reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/deathsaber/the-day-my-mcp-adapter-stopped-being-just-plumbing-k60#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            6 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>ai</category>
      <category>mcp</category>
      <category>security</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Remote MCP Adapter v0.3.0: When a Gateway Becomes a Security Boundary</title>
      <dc:creator>Aakash</dc:creator>
      <pubDate>Mon, 16 Mar 2026 18:41:04 +0000</pubDate>
      <link>https://dev.to/deathsaber/remote-mcp-adapter-v030-when-a-gateway-becomes-a-security-boundary-2nij</link>
      <guid>https://dev.to/deathsaber/remote-mcp-adapter-v030-when-a-gateway-becomes-a-security-boundary-2nij</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/deathsaber/the-day-my-mcp-adapter-stopped-being-just-plumbing-k60" class="crayons-story__hidden-navigation-link"&gt;The day my MCP adapter stopped being just plumbing&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/deathsaber" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F2692176%2Fc01ef77d-2895-45c0-92b2-bf88e0061d86.jpg" alt="deathsaber profile" class="crayons-avatar__image" width="96" height="96"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/deathsaber" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Aakash
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Aakash
                
              
              &lt;div id="story-author-preview-content-3359987" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/deathsaber" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F2692176%2Fc01ef77d-2895-45c0-92b2-bf88e0061d86.jpg" class="crayons-avatar__image" alt="" width="96" height="96"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Aakash&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/deathsaber/the-day-my-mcp-adapter-stopped-being-just-plumbing-k60" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Mar 16&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/deathsaber/the-day-my-mcp-adapter-stopped-being-just-plumbing-k60" id="article-link-3359987"&gt;
          The day my MCP adapter stopped being just plumbing
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag crayons-tag--filled  " href="/t/showdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;showdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/mcp"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;mcp&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/security"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;security&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/deathsaber/the-day-my-mcp-adapter-stopped-being-just-plumbing-k60" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt; reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/deathsaber/the-day-my-mcp-adapter-stopped-being-just-plumbing-k60#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            6 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>ai</category>
      <category>mcp</category>
      <category>security</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Remote MCP Is Not Just a Transport Problem Anymore</title>
      <dc:creator>Aakash</dc:creator>
      <pubDate>Mon, 16 Mar 2026 18:40:11 +0000</pubDate>
      <link>https://dev.to/deathsaber/remote-mcp-is-not-just-a-transport-problem-anymore-2fik</link>
      <guid>https://dev.to/deathsaber/remote-mcp-is-not-just-a-transport-problem-anymore-2fik</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/deathsaber/the-day-my-mcp-adapter-stopped-being-just-plumbing-k60" class="crayons-story__hidden-navigation-link"&gt;The day my MCP adapter stopped being just plumbing&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/deathsaber" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F2692176%2Fc01ef77d-2895-45c0-92b2-bf88e0061d86.jpg" alt="deathsaber profile" class="crayons-avatar__image" width="96" height="96"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/deathsaber" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Aakash
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Aakash
                
              
              &lt;div id="story-author-preview-content-3359987" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/deathsaber" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F2692176%2Fc01ef77d-2895-45c0-92b2-bf88e0061d86.jpg" class="crayons-avatar__image" alt="" width="96" height="96"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Aakash&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/deathsaber/the-day-my-mcp-adapter-stopped-being-just-plumbing-k60" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Mar 16&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/deathsaber/the-day-my-mcp-adapter-stopped-being-just-plumbing-k60" id="article-link-3359987"&gt;
          The day my MCP adapter stopped being just plumbing
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag crayons-tag--filled  " href="/t/showdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;showdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/mcp"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;mcp&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/security"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;security&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/deathsaber/the-day-my-mcp-adapter-stopped-being-just-plumbing-k60" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt; reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/deathsaber/the-day-my-mcp-adapter-stopped-being-just-plumbing-k60#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            6 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>ai</category>
      <category>mcp</category>
      <category>security</category>
      <category>showdev</category>
    </item>
    <item>
      <title>I Built an MCP Adapter for Convenience. Then I Had to Harden It</title>
      <dc:creator>Aakash</dc:creator>
      <pubDate>Mon, 16 Mar 2026 18:39:25 +0000</pubDate>
      <link>https://dev.to/deathsaber/i-built-an-mcp-adapter-for-convenience-then-i-had-to-harden-it-2hb</link>
      <guid>https://dev.to/deathsaber/i-built-an-mcp-adapter-for-convenience-then-i-had-to-harden-it-2hb</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/deathsaber/the-day-my-mcp-adapter-stopped-being-just-plumbing-k60" class="crayons-story__hidden-navigation-link"&gt;The day my MCP adapter stopped being just plumbing&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/deathsaber" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F2692176%2Fc01ef77d-2895-45c0-92b2-bf88e0061d86.jpg" alt="deathsaber profile" class="crayons-avatar__image" width="96" height="96"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/deathsaber" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Aakash
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Aakash
                
              
              &lt;div id="story-author-preview-content-3359987" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/deathsaber" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F2692176%2Fc01ef77d-2895-45c0-92b2-bf88e0061d86.jpg" class="crayons-avatar__image" alt="" width="96" height="96"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Aakash&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/deathsaber/the-day-my-mcp-adapter-stopped-being-just-plumbing-k60" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Mar 16&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/deathsaber/the-day-my-mcp-adapter-stopped-being-just-plumbing-k60" id="article-link-3359987"&gt;
          The day my MCP adapter stopped being just plumbing
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag crayons-tag--filled  " href="/t/showdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;showdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/mcp"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;mcp&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/security"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;security&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/deathsaber/the-day-my-mcp-adapter-stopped-being-just-plumbing-k60" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt; reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/deathsaber/the-day-my-mcp-adapter-stopped-being-just-plumbing-k60#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            6 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
    </item>
  </channel>
</rss>
