
  <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
      <title>Nadim Tuhin</title>
      <link>https://www.nadimtuhin.com/blog</link>
      <description>Staff engineer and tech lead with 10+ years shipping production systems. Open to remote Staff and Tech Lead roles.</description>
      <language>en-us</language>
      <managingEditor>nadimtuhin@gmail.com (Nadim Tuhin)</managingEditor>
      <webMaster>nadimtuhin@gmail.com (Nadim Tuhin)</webMaster>
      <lastBuildDate>Mon, 05 Oct 2026 00:00:00 GMT</lastBuildDate>
      <atom:link href="https://www.nadimtuhin.com/tags/til/feed.xml" rel="self" type="application/rss+xml"/>
      
  <item>
    <guid>https://www.nadimtuhin.com/blog/til-gitignored-sitemap-goes-stale</guid>
    <title>TIL: a gitignored sitemap.xml is stale on every machine except the builder</title>
    <link>https://www.nadimtuhin.com/blog/til-gitignored-sitemap-goes-stale</link>
    <description>My IndexNow script read public/sitemap.xml and sent 93 URLs. The live sitemap had 123. The local copy is gitignored, so it only updates when I build.</description>
    <pubDate>Mon, 05 Oct 2026 00:00:00 GMT</pubDate>
    <author>nadimtuhin@gmail.com (Nadim Tuhin)</author>
    <category>til</category><category>seo</category><category>nextjs</category><category>automation</category>
  </item>

  <item>
    <guid>https://www.nadimtuhin.com/blog/til-hermes-mcp-header-env-var-401</guid>
    <title>TIL: an MCP header with ${VAR} reads the agent .env, not your shell</title>
    <link>https://www.nadimtuhin.com/blog/til-hermes-mcp-header-env-var-401</link>
    <description>My MCP server answered 401 even though the API key worked. The header sent the literal text ${VAR} because the variable was only in my shell.</description>
    <pubDate>Sun, 04 Oct 2026 00:00:00 GMT</pubDate>
    <author>nadimtuhin@gmail.com (Nadim Tuhin)</author>
    <category>til</category><category>mcp</category><category>debugging</category><category>ai-tooling</category>
  </item>

  <item>
    <guid>https://www.nadimtuhin.com/blog/til-pnpm-override-dev-only-dependabot</guid>
    <title>TIL: fix a dev-only Dependabot alert with a pnpm override</title>
    <link>https://www.nadimtuhin.com/blog/til-pnpm-override-dev-only-dependabot</link>
    <description>A plain pnpm update would not move a transitive dependency pinned by its parent. A one-line pnpm override did, and GitHub closed the alert.</description>
    <pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate>
    <author>nadimtuhin@gmail.com (Nadim Tuhin)</author>
    <category>til</category><category>pnpm</category><category>security</category><category>nodejs</category>
  </item>

  <item>
    <guid>https://www.nadimtuhin.com/blog/til-two-copies-of-a-binary-on-path-brew-shadow-warning</guid>
    <title>TIL: `brew install` warns when another copy of the tool sits earlier on your PATH</title>
    <link>https://www.nadimtuhin.com/blog/til-two-copies-of-a-binary-on-path-brew-shadow-warning</link>
    <description>I had three copies of one CLI on my PATH. Homebrew warned that the new one would never run by name, and which -a showed the shadowing.</description>
    <pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate>
    <author>nadimtuhin@gmail.com (Nadim Tuhin)</author>
    <category>til</category><category>homebrew</category><category>macos</category><category>path</category>
  </item>

  <item>
    <guid>https://www.nadimtuhin.com/blog/til-sqlite-text-column-compares-greater-than-any-number</guid>
    <title>TIL: in SQLite a TEXT column is greater than every number, so `ts &gt; 1e12` matches everything</title>
    <link>https://www.nadimtuhin.com/blog/til-sqlite-text-column-compares-greater-than-any-number</link>
    <description>A TEXT-typed timestamp column compared against a number is always greater, so the filter matched every row. Casting the column fixed it.</description>
    <pubDate>Sat, 19 Sep 2026 00:00:00 GMT</pubDate>
    <author>nadimtuhin@gmail.com (Nadim Tuhin)</author>
    <category>til</category><category>sqlite</category><category>sql</category>
  </item>

  <item>
    <guid>https://www.nadimtuhin.com/blog/til-git-worktree-runs-hooks-from-the-main-checkout</guid>
    <title>TIL: a git worktree runs hooks from the main checkout .git/hooks, not its own files</title>
    <link>https://www.nadimtuhin.com/blog/til-git-worktree-runs-hooks-from-the-main-checkout</link>
    <description>I edited a pre-push hook in a worktree and nothing changed. Git was running the installed copy from the main repo.</description>
    <pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate>
    <author>nadimtuhin@gmail.com (Nadim Tuhin)</author>
    <category>til</category><category>git</category><category>worktrees</category><category>hooks</category>
  </item>

  <item>
    <guid>https://www.nadimtuhin.com/blog/til-vite-tsconfig-nearest-file-wins-not-include</guid>
    <title>TIL: Vite uses the nearest tsconfig.json and ignores `include`, so JSX silently fell back to the classic runtime</title>
    <link>https://www.nadimtuhin.com/blog/til-vite-tsconfig-nearest-file-wins-not-include</link>
    <description>Hundreds of tests failed with React is not defined. The fix was one line in the tsconfig that the component files actually resolve to.</description>
    <pubDate>Thu, 10 Sep 2026 00:00:00 GMT</pubDate>
    <author>nadimtuhin@gmail.com (Nadim Tuhin)</author>
    <category>til</category><category>vite</category><category>typescript</category><category>testing</category>
  </item>

  <item>
    <guid>https://www.nadimtuhin.com/blog/til-pipe-to-tail-hides-failed-command</guid>
    <title>TIL: a pipe into tail returns tail exit code, so a failed push looks like success</title>
    <link>https://www.nadimtuhin.com/blog/til-pipe-to-tail-hides-failed-command</link>
    <description>A failed git push piped into tail still exited 0, and the script moved on. set -o pipefail makes the pipeline report the failure.</description>
    <pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate>
    <author>nadimtuhin@gmail.com (Nadim Tuhin)</author>
    <category>til</category><category>bash</category><category>git</category><category>ci</category>
  </item>

    </channel>
  </rss>
