<?xml version="1.0" encoding="UTF-8" ?>
  <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
      <title>Devansh Tiwari</title>
      <link>https://www.devanshtiwari.com</link>
      <description>Building AI stock analysis at Metis. Writing about cost-optimized LLM infrastructure, multi-provider routing, and shipping AI products end-to-end.</description>
      <language>en-us</language>
      <atom:link href="https://www.devanshtiwari.com/rss" rel="self" type="application/rss+xml" />
      <item>
          <title>I Built a Browser SDK That Classifies Sessions Into Three Categories, Not Two</title>
          <link>https://www.devanshtiwari.com/blog/nyasa-bot-detection-sdk</link>
          <description>CAPTCHA and fingerprinting were built for clumsy bots. In 2026, LLM agents fill forms with realistic typing cadence, patch out webdriver flags, and solve CAPTCHA for $0.50. Nyasa adds a third actor to the model: AuthorizedAgent. One SDK, 24 signals, six detection rules.</description>
          <pubDate>Thu, 21 May 2026 18:30:00 GMT</pubDate>
          <guid>https://www.devanshtiwari.com/blog/nyasa-bot-detection-sdk</guid>
        </item>
<item>
          <title>Adding a view counter to your portfolio for free</title>
          <link>https://www.devanshtiwari.com/blog/view-counter-nextjs-portfolio-free</link>
          <description>How to track blog post views in a Next.js portfolio without paying anything. AWS DynamoDB, two API routes, and a five-second delay so bounces do not count.</description>
          <pubDate>Mon, 11 May 2026 18:30:00 GMT</pubDate>
          <guid>https://www.devanshtiwari.com/blog/view-counter-nextjs-portfolio-free</guid>
        </item>
<item>
          <title>2025</title>
          <link>https://www.devanshtiwari.com/blog/2025</link>
          <description>The hardest year of my life. A startup failed. I ran out of map. And somehow, I came out the other side a little more real.</description>
          <pubDate>Sun, 10 May 2026 18:30:00 GMT</pubDate>
          <guid>https://www.devanshtiwari.com/blog/2025</guid>
        </item>
<item>
          <title>Your Google Sheets Signup Form Is Silently Losing Rows. Here&apos;s Why.</title>
          <link>https://www.devanshtiwari.com/blog/sheetforge-google-sheets-backend-data-loss</link>
          <description>The Google Sheets API drops rows under concurrent writes. It&apos;s a documented bug and every wrapper (SheetDB, Sheety, SheetBest) inherits it. I ran the test against all of them. Fifty parallel writes, somewhere between 35 and 47 rows. Every run different. Here is the bug, why a lock doesn&apos;t fix it, and what I built instead.</description>
          <pubDate>Tue, 21 Apr 2026 18:30:00 GMT</pubDate>
          <guid>https://www.devanshtiwari.com/blog/sheetforge-google-sheets-backend-data-loss</guid>
        </item>
<item>
          <title>Gemini 2.5 Flash Was Returning 37 Tokens. Here&apos;s Why.</title>
          <link>https://www.devanshtiwari.com/blog/gemini-2-5-flash-37-tokens-debugging</link>
          <description>I set max_tokens=1000 on a Gemini 2.5 Flash call. Got back 37 tokens. No error, no warning. The real cause was reasoning tokens eating the output budget, a bug documented in 15+ open GitHub issues but missing from every tutorial. Here is the full debugging trail, the three-tier fix with tradeoffs, and a diagnostic script.</description>
          <pubDate>Sun, 19 Apr 2026 18:30:00 GMT</pubDate>
          <guid>https://www.devanshtiwari.com/blog/gemini-2-5-flash-37-tokens-debugging</guid>
        </item>
<item>
          <title>LiteLLM Got Hacked. I Built a Simpler LLM Gateway You Can Actually Audit.</title>
          <link>https://www.devanshtiwari.com/blog/litellm-got-hacked-freellm-alternative</link>
          <description>The most popular LLM routing library got compromised in a supply chain attack. 95 million monthly downloads. Credential harvester, Kubernetes backdoor, persistent RCE. I built FreeLLM as a narrower, auditable alternative: 6 providers, 262 tests, one job.</description>
          <pubDate>Mon, 13 Apr 2026 18:30:00 GMT</pubDate>
          <guid>https://www.devanshtiwari.com/blog/litellm-got-hacked-freellm-alternative</guid>
        </item>
<item>
          <title>I Built an OpenAI-Compatible Gateway That Routes Across 5 Free LLM Providers</title>
          <link>https://www.devanshtiwari.com/blog/freellm-one-endpoint-five-providers</link>
          <description>Every LLM provider has a free tier. Combined, they give you ~80 requests per minute. FreeLLM routes your requests across Groq, Gemini, Mistral, Cerebras, and Ollama with automatic failover. One endpoint. Zero cost.</description>
          <pubDate>Mon, 06 Apr 2026 18:30:00 GMT</pubDate>
          <guid>https://www.devanshtiwari.com/blog/freellm-one-endpoint-five-providers</guid>
        </item>
<item>
          <title>How I Validated a SaaS Product Before Writing Code: 70 Traders, 3 Interviews, 27 Days</title>
          <link>https://www.devanshtiwari.com/blog/how-i-validated-metis-before-writing-code</link>
          <description>91% of Indian retail traders lose money. I surveyed 70+ traders and did deep interviews before writing a single line of code. Here is exactly how I validated Metis, what I cut, and the one interview quote that killed 4 features.</description>
          <pubDate>Sun, 22 Mar 2026 18:30:00 GMT</pubDate>
          <guid>https://www.devanshtiwari.com/blog/how-i-validated-metis-before-writing-code</guid>
        </item>
<item>
          <title>Why Shopify Will Never Become Amazon And Why That’s a Strength</title>
          <link>https://medium.com/@devanshtiwari365/why-shopify-will-never-become-amazon-and-why-thats-a-strength-f53294451413?source=rss-68f2c6ce0b54------2</link>
          <description>A beginner’s take on why two giants are playing completely different gamesMost people who follow e-commerce assume Shopify and Amazon are on a collision cour...</description>
          <pubDate>Mon, 02 Mar 2026 20:26:09 GMT</pubDate>
          <guid>https://medium.com/@devanshtiwari365/why-shopify-will-never-become-amazon-and-why-thats-a-strength-f53294451413?source=rss-68f2c6ce0b54------2</guid>
        </item>
<item>
          <title>Why Your .env Variables Are undefined in Production (And How to Fix It for Good)</title>
          <link>https://medium.com/@devanshtiwari365/why-your-env-variables-are-undefined-in-production-and-how-to-fix-it-for-good-bf20bb0ce960?source=rss-68f2c6ce0b54------2</link>
          <description>Your app works perfectly in development, with all your API keys loading correctly from your .env file using react-native-dotenv. But when… Continue reading o...</description>
          <pubDate>Wed, 17 Sep 2025 18:04:43 GMT</pubDate>
          <guid>https://medium.com/@devanshtiwari365/why-your-env-variables-are-undefined-in-production-and-how-to-fix-it-for-good-bf20bb0ce960?source=rss-68f2c6ce0b54------2</guid>
        </item>
<item>
          <title>Why Your KeyboardAvoidingView Pushes Content Off-Screen (And How to Actually Fix It)</title>
          <link>https://javascript.plainenglish.io/why-your-keyboardavoidingview-pushes-content-off-screen-and-how-to-actually-fix-it-d54d250ece7f?source=rss-68f2c6ce0b54------2</link>
          <description>You reach for KeyboardAvoidingView to prevent the keyboard from hiding your inputs. But instead of a smooth experience, your content gets… Continue reading o...</description>
          <pubDate>Mon, 15 Sep 2025 00:20:12 GMT</pubDate>
          <guid>https://javascript.plainenglish.io/why-your-keyboardavoidingview-pushes-content-off-screen-and-how-to-actually-fix-it-d54d250ece7f?source=rss-68f2c6ce0b54------2</guid>
        </item>
<item>
          <title>How to Fix React Native’s Most Annoying Error</title>
          <link>https://medium.com/@devanshtiwari365/how-to-fix-react-natives-most-annoying-error-b5fe8c8871fa?source=rss-68f2c6ce0b54------2</link>
          <description>You’re working on your React Native app. You save a file, the app reloads, and then you see it. The red screen. Continue reading on Medium »</description>
          <pubDate>Sat, 13 Sep 2025 05:16:10 GMT</pubDate>
          <guid>https://medium.com/@devanshtiwari365/how-to-fix-react-natives-most-annoying-error-b5fe8c8871fa?source=rss-68f2c6ce0b54------2</guid>
        </item>
<item>
          <title>That Cryptic Zod Error Just Wasted Your Afternoon. Let’s Fix That Forever.</title>
          <link>https://medium.com/codetodeploy/that-cryptic-zod-error-just-wasted-your-afternoon-lets-fix-that-forever-cef47f9956bd?source=rss-68f2c6ce0b54------2</link>
          <description>You’ve probably typed import { z } from &apos;zod&apos; a thousand times, but do you really know what&apos;s happening under the hood? It&apos;s time to pull… Continue reading o...</description>
          <pubDate>Wed, 10 Sep 2025 13:09:54 GMT</pubDate>
          <guid>https://medium.com/codetodeploy/that-cryptic-zod-error-just-wasted-your-afternoon-lets-fix-that-forever-cef47f9956bd?source=rss-68f2c6ce0b54------2</guid>
        </item>
<item>
          <title>Stop Writing Useless Commits: The 2025 Guide to Commit Sanity</title>
          <link>https://medium.com/@devanshtiwari365/stop-writing-useless-commits-the-2025-guide-to-commit-sanity-17f6fcce0222?source=rss-68f2c6ce0b54------2</link>
          <description>Ever scrolled through a git log and felt like you were deciphering an ancient, cryptic scroll? &quot;Fixed stuff,&quot; &quot;changes,&quot; &quot;commit&quot; – sound… Continue reading o...</description>
          <pubDate>Tue, 09 Sep 2025 11:11:36 GMT</pubDate>
          <guid>https://medium.com/@devanshtiwari365/stop-writing-useless-commits-the-2025-guide-to-commit-sanity-17f6fcce0222?source=rss-68f2c6ce0b54------2</guid>
        </item>
    </channel>
  </rss>