<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Vishal Jangid — Writing</title>
    <link>https://vishaljangid.in/writing</link>
    <description>Systems that have to be correct, not just finished — pharmaceutical research platforms, enterprise distributor systems, and AI features that survive production. Nine years of it. Available for technical advisory and delivery work.</description>
    <language>en</language>
    <item>
      <title>The Error Message Was Lying</title>
      <link>https://vishaljangid.in/writing/the-error-was-lying</link>
      <guid>https://vishaljangid.in/writing/the-error-was-lying</guid>
      <pubDate>Thu, 14 May 2026 00:00:00 GMT</pubDate>
      <category>Debugging</category>
      <description>A Salesforce JWT auth failure that had nothing to do with JWT, Salesforce, or auth. On reading errors as evidence rather than instructions.</description>
    </item>
    <item>
      <title>Permissions Are Architecture, Not a Feature</title>
      <link>https://vishaljangid.in/writing/permissions-are-architecture</link>
      <guid>https://vishaljangid.in/writing/permissions-are-architecture</guid>
      <pubDate>Mon, 02 Mar 2026 00:00:00 GMT</pubDate>
      <category>Architecture</category>
      <description>Every system that gets permissions late pays for it twice. Notes from nine years maintaining a four-layer permissions model.</description>
    </item>
    <item>
      <title>In Offline-First Apps, Sync Is the Product</title>
      <link>https://vishaljangid.in/writing/offline-first-is-the-product</link>
      <guid>https://vishaljangid.in/writing/offline-first-is-the-product</guid>
      <pubDate>Tue, 18 Nov 2025 00:00:00 GMT</pubDate>
      <category>Architecture</category>
      <description>Building a field platform that had to work with no signal taught me that the UI is the easy half — and that sync bugs never announce themselves.</description>
    </item>
  </channel>
</rss>