<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:image="http://www.google.com/schemas/sitemap-image/1.1"
        xmlns:news="http://www.google.com/schemas/sitemap-news/0.9"
        xmlns:xhtml="http://www.w3.org/1999/xhtml">
  <url>
    <loc>https://umesh-malik.com/blog/eliminate-pcie-bottleneck-ai-training</loc>
    <lastmod>2026-08-25</lastmod>
    <changefreq>daily</changefreq>
    <priority>1.0</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/eliminate-pcie-bottleneck-ai-training-cover.png</image:loc>
      <image:title>Cover showing the PCIe bottleneck in traditional GPU-NIC architecture versus MTIA 300&apos;s built-in NIC design that delivers 1.2 TB/s without CPU mediation</image:title>
      <image:caption>Cover showing the PCIe bottleneck in traditional GPU-NIC architecture versus MTIA 300&apos;s built-in NIC design that delivers 1.2 TB/s without CPU mediation</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/eliminate-pcie-bottleneck-ai-training-pcie-path.png</image:loc>
      <image:title>Cover showing the PCIe bottleneck in traditional GPU-NIC architecture versus MTIA 300&apos;s built-in NIC design that delivers 1.2 TB/s without CPU mediation</image:title>
      <image:caption>Cover showing the PCIe bottleneck in traditional GPU-NIC architecture versus MTIA 300&apos;s built-in NIC design that delivers 1.2 TB/s without CPU mediation</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/eliminate-pcie-bottleneck-ai-training-mtia-arch.png</image:loc>
      <image:title>Cover showing the PCIe bottleneck in traditional GPU-NIC architecture versus MTIA 300&apos;s built-in NIC design that delivers 1.2 TB/s without CPU mediation</image:title>
      <image:caption>Cover showing the PCIe bottleneck in traditional GPU-NIC architecture versus MTIA 300&apos;s built-in NIC design that delivers 1.2 TB/s without CPU mediation</image:caption>
    </image:image>
    <news:news>
      <news:publication>
        <news:name>Umesh Malik</news:name>
        <news:language>en</news:language>
      </news:publication>
      <news:publication_date>2026-08-25</news:publication_date>
      <news:title>Fix the PCIe Bottleneck in AI Training: How Built-in NICs Work</news:title>
    </news:news>
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/ms-paint-invisible-watermark-guid</loc>
    <lastmod>2026-08-25</lastmod>
    <changefreq>daily</changefreq>
    <priority>1.0</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/ms-paint-invisible-watermark-guid-cover.png</image:loc>
      <image:title>The flow from prompt to invisible watermark: Paint sends a prompt to Microsoft&apos;s moderation server, receives a GUID, runs local inference, then embeds that GUID into the pixels</image:title>
      <image:caption>The flow from prompt to invisible watermark: Paint sends a prompt to Microsoft&apos;s moderation server, receives a GUID, runs local inference, then embeds that GUID into the pixels</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/ms-paint-invisible-watermark-guid-flow.png</image:loc>
      <image:title>The flow from prompt to invisible watermark: Paint sends a prompt to Microsoft&apos;s moderation server, receives a GUID, runs local inference, then embeds that GUID into the pixels</image:title>
      <image:caption>The flow from prompt to invisible watermark: Paint sends a prompt to Microsoft&apos;s moderation server, receives a GUID, runs local inference, then embeds that GUID into the pixels</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/ms-paint-invisible-watermark-guid-local-vs-remote.png</image:loc>
      <image:title>The flow from prompt to invisible watermark: Paint sends a prompt to Microsoft&apos;s moderation server, receives a GUID, runs local inference, then embeds that GUID into the pixels</image:title>
      <image:caption>The flow from prompt to invisible watermark: Paint sends a prompt to Microsoft&apos;s moderation server, receives a GUID, runs local inference, then embeds that GUID into the pixels</image:caption>
    </image:image>
    <news:news>
      <news:publication>
        <news:name>Umesh Malik</news:name>
        <news:language>en</news:language>
      </news:publication>
      <news:publication_date>2026-08-25</news:publication_date>
      <news:title>MS Paint Invisible Watermark: How to Find the GUID in AI Images</news:title>
    </news:news>
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/secure-llm-inference-vllm-cve-2025-9141</loc>
    <lastmod>2026-08-25</lastmod>
    <changefreq>daily</changefreq>
    <priority>1.0</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/secure-llm-inference-vllm-cve-2025-9141-cover.png</image:loc>
      <image:title>Cover showing the inference engine attack surface with token stream flowing from model through vulnerable parser to arbitrary code execution, and the defense architecture separating GPU host from token parsing</image:title>
      <image:caption>Cover showing the inference engine attack surface with token stream flowing from model through vulnerable parser to arbitrary code execution, and the defense architecture separating GPU host from token parsing</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/secure-llm-inference-vllm-cve-2025-9141-attack-surface.png</image:loc>
      <image:title>Cover showing the inference engine attack surface with token stream flowing from model through vulnerable parser to arbitrary code execution, and the defense architecture separating GPU host from token parsing</image:title>
      <image:caption>Cover showing the inference engine attack surface with token stream flowing from model through vulnerable parser to arbitrary code execution, and the defense architecture separating GPU host from token parsing</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/secure-llm-inference-vllm-cve-2025-9141-defense-architecture.png</image:loc>
      <image:title>Cover showing the inference engine attack surface with token stream flowing from model through vulnerable parser to arbitrary code execution, and the defense architecture separating GPU host from token parsing</image:title>
      <image:caption>Cover showing the inference engine attack surface with token stream flowing from model through vulnerable parser to arbitrary code execution, and the defense architecture separating GPU host from token parsing</image:caption>
    </image:image>
    <news:news>
      <news:publication>
        <news:name>Umesh Malik</news:name>
        <news:language>en</news:language>
      </news:publication>
      <news:publication_date>2026-08-25</news:publication_date>
      <news:title>How to Harden vLLM Inference: CVE-2025-9141 Defense Guide</news:title>
    </news:news>
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/chatgpt-search-site-scoping-geo</loc>
    <lastmod>2026-08-24</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/chatgpt-search-site-scoping-geo-cover.png</image:loc>
      <image:title>Chart showing ChatGPT Search site-scoped query share jumping from 0.3% to 17% on August 8, 2026</image:title>
      <image:caption>Chart showing ChatGPT Search site-scoped query share jumping from 0.3% to 17% on August 8, 2026</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/chatgpt-search-site-scoping-geo-data.png</image:loc>
      <image:title>Chart showing ChatGPT Search site-scoped query share jumping from 0.3% to 17% on August 8, 2026</image:title>
      <image:caption>Chart showing ChatGPT Search site-scoped query share jumping from 0.3% to 17% on August 8, 2026</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/chatgpt-search-site-scoping-geo-flow.png</image:loc>
      <image:title>Chart showing ChatGPT Search site-scoped query share jumping from 0.3% to 17% on August 8, 2026</image:title>
      <image:caption>Chart showing ChatGPT Search site-scoped query share jumping from 0.3% to 17% on August 8, 2026</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/chatgpt-search-site-scoping-geo-factors.png</image:loc>
      <image:title>Chart showing ChatGPT Search site-scoped query share jumping from 0.3% to 17% on August 8, 2026</image:title>
      <image:caption>Chart showing ChatGPT Search site-scoped query share jumping from 0.3% to 17% on August 8, 2026</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/sync-robots-txt-ai-bot-blocks</loc>
    <lastmod>2026-08-24</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/sync-robots-txt-ai-bot-blocks-cover.png</image:loc>
      <image:title>Diagram showing robots.txt preferences syncing with Cloudflare&apos;s AI bot enforcement rules across Search, Agent, and Training categories</image:title>
      <image:caption>Diagram showing robots.txt preferences syncing with Cloudflare&apos;s AI bot enforcement rules across Search, Agent, and Training categories</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/sync-robots-txt-ai-bot-blocks-flow.png</image:loc>
      <image:title>Diagram showing robots.txt preferences syncing with Cloudflare&apos;s AI bot enforcement rules across Search, Agent, and Training categories</image:title>
      <image:caption>Diagram showing robots.txt preferences syncing with Cloudflare&apos;s AI bot enforcement rules across Search, Agent, and Training categories</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/sync-robots-txt-ai-bot-blocks-decision.png</image:loc>
      <image:title>Diagram showing robots.txt preferences syncing with Cloudflare&apos;s AI bot enforcement rules across Search, Agent, and Training categories</image:title>
      <image:caption>Diagram showing robots.txt preferences syncing with Cloudflare&apos;s AI bot enforcement rules across Search, Agent, and Training categories</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/optional-oauth-scopes-mcp-servers</loc>
    <lastmod>2026-08-23</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/optional-oauth-scopes-mcp-servers-cover.png</image:loc>
      <image:title>OAuth consent screen with optional scope checkboxes that let users narrow agent permissions</image:title>
      <image:caption>OAuth consent screen with optional scope checkboxes that let users narrow agent permissions</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/optional-oauth-scopes-mcp-servers-consent-flow.png</image:loc>
      <image:title>OAuth consent screen with optional scope checkboxes that let users narrow agent permissions</image:title>
      <image:caption>OAuth consent screen with optional scope checkboxes that let users narrow agent permissions</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/optional-oauth-scopes-mcp-servers-scope-evaluation.png</image:loc>
      <image:title>OAuth consent screen with optional scope checkboxes that let users narrow agent permissions</image:title>
      <image:caption>OAuth consent screen with optional scope checkboxes that let users narrow agent permissions</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/optional-oauth-scopes-mcp-servers-token-flow.png</image:loc>
      <image:title>OAuth consent screen with optional scope checkboxes that let users narrow agent permissions</image:title>
      <image:caption>OAuth consent screen with optional scope checkboxes that let users narrow agent permissions</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/rust-glancer-low-memory-lsp</loc>
    <lastmod>2026-08-23</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/rust-glancer-low-memory-lsp-cover.png</image:loc>
      <image:title>Memory comparison between rust-analyzer and Rust Glancer showing the dramatic reduction from gigabytes to under 100MB</image:title>
      <image:caption>Memory comparison between rust-analyzer and Rust Glancer showing the dramatic reduction from gigabytes to under 100MB</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/rust-glancer-low-memory-lsp-architecture.png</image:loc>
      <image:title>Memory comparison between rust-analyzer and Rust Glancer showing the dramatic reduction from gigabytes to under 100MB</image:title>
      <image:caption>Memory comparison between rust-analyzer and Rust Glancer showing the dramatic reduction from gigabytes to under 100MB</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/rust-glancer-low-memory-lsp-benchmarks.png</image:loc>
      <image:title>Memory comparison between rust-analyzer and Rust Glancer showing the dramatic reduction from gigabytes to under 100MB</image:title>
      <image:caption>Memory comparison between rust-analyzer and Rust Glancer showing the dramatic reduction from gigabytes to under 100MB</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/rust-glancer-low-memory-lsp-dev-loop.png</image:loc>
      <image:title>Memory comparison between rust-analyzer and Rust Glancer showing the dramatic reduction from gigabytes to under 100MB</image:title>
      <image:caption>Memory comparison between rust-analyzer and Rust Glancer showing the dramatic reduction from gigabytes to under 100MB</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/self-hosted-ai-coding-agent-sandbox</loc>
    <lastmod>2026-08-23</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/self-hosted-ai-coding-agent-sandbox-cover.png</image:loc>
      <image:title>Architecture diagram of a self-hosted AI coding agent with sandboxed execution</image:title>
      <image:caption>Architecture diagram of a self-hosted AI coding agent with sandboxed execution</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/self-hosted-ai-coding-agent-sandbox-architecture.png</image:loc>
      <image:title>Architecture diagram of a self-hosted AI coding agent with sandboxed execution</image:title>
      <image:caption>Architecture diagram of a self-hosted AI coding agent with sandboxed execution</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/self-hosted-ai-coding-agent-sandbox-cost.png</image:loc>
      <image:title>Architecture diagram of a self-hosted AI coding agent with sandboxed execution</image:title>
      <image:caption>Architecture diagram of a self-hosted AI coding agent with sandboxed execution</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/self-hosted-ai-coding-agent-sandbox-risk.png</image:loc>
      <image:title>Architecture diagram of a self-hosted AI coding agent with sandboxed execution</image:title>
      <image:caption>Architecture diagram of a self-hosted AI coding agent with sandboxed execution</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/vercel-cli-dns-commands</loc>
    <lastmod>2026-08-23</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/vercel-cli-dns-commands-cover.png</image:loc>
      <image:title>Vercel CLI DNS management workflow showing terminal commands for DNS records, domains, and project control</image:title>
      <image:caption>Vercel CLI DNS management workflow showing terminal commands for DNS records, domains, and project control</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/vercel-cli-dns-commands-update-flow.png</image:loc>
      <image:title>Vercel CLI DNS management workflow showing terminal commands for DNS records, domains, and project control</image:title>
      <image:caption>Vercel CLI DNS management workflow showing terminal commands for DNS records, domains, and project control</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/vercel-cli-dns-commands-project-lifecycle.png</image:loc>
      <image:title>Vercel CLI DNS management workflow showing terminal commands for DNS records, domains, and project control</image:title>
      <image:caption>Vercel CLI DNS management workflow showing terminal commands for DNS records, domains, and project control</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/claude-code-macos-printer-driver</loc>
    <lastmod>2026-08-19</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/claude-code-macos-printer-driver-cover.png</image:loc>
      <image:title>The four-step path from HP&apos;s unsupported printer to a native macOS driver: Docker workaround, byte-diff against an open-source filter, the DPI bug isolated, then a native USB backend</image:title>
      <image:caption>The four-step path from HP&apos;s unsupported printer to a native macOS driver: Docker workaround, byte-diff against an open-source filter, the DPI bug isolated, then a native USB backend</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/claude-code-macos-printer-driver-dpi-bug.png</image:loc>
      <image:title>The four-step path from HP&apos;s unsupported printer to a native macOS driver: Docker workaround, byte-diff against an open-source filter, the DPI bug isolated, then a native USB backend</image:title>
      <image:caption>The four-step path from HP&apos;s unsupported printer to a native macOS driver: Docker workaround, byte-diff against an open-source filter, the DPI bug isolated, then a native USB backend</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/claude-code-macos-printer-driver-architecture.png</image:loc>
      <image:title>The four-step path from HP&apos;s unsupported printer to a native macOS driver: Docker workaround, byte-diff against an open-source filter, the DPI bug isolated, then a native USB backend</image:title>
      <image:caption>The four-step path from HP&apos;s unsupported printer to a native macOS driver: Docker workaround, byte-diff against an open-source filter, the DPI bug isolated, then a native USB backend</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/gemini-agent-hooks-fail-open</loc>
    <lastmod>2026-08-19</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/gemini-agent-hooks-fail-open-cover.png</image:loc>
      <image:title>The five sandbox tools a Gemini agent hook intercepts, against the two tool families it never sees</image:title>
      <image:caption>The five sandbox tools a Gemini agent hook intercepts, against the two tool families it never sees</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/gemini-agent-hooks-fail-open-paths.png</image:loc>
      <image:title>The five sandbox tools a Gemini agent hook intercepts, against the two tool families it never sees</image:title>
      <image:caption>The five sandbox tools a Gemini agent hook intercepts, against the two tool families it never sees</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/gemini-agent-hooks-fail-open-coverage.png</image:loc>
      <image:title>The five sandbox tools a Gemini agent hook intercepts, against the two tool families it never sees</image:title>
      <image:caption>The five sandbox tools a Gemini agent hook intercepts, against the two tool families it never sees</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/rust-safe-gpu-offload-benchmarks</loc>
    <lastmod>2026-08-19</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/rust-safe-gpu-offload-benchmarks-cover.png</image:loc>
      <image:title>Rust GPU offload safety and performance: ownership rules managing host-device transfers, benchmarked against hand-tuned CUDA and HIP</image:title>
      <image:caption>Rust GPU offload safety and performance: ownership rules managing host-device transfers, benchmarked against hand-tuned CUDA and HIP</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/rust-safe-gpu-offload-benchmarks-pipeline.png</image:loc>
      <image:title>Rust GPU offload safety and performance: ownership rules managing host-device transfers, benchmarked against hand-tuned CUDA and HIP</image:title>
      <image:caption>Rust GPU offload safety and performance: ownership rules managing host-device transfers, benchmarked against hand-tuned CUDA and HIP</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/rust-safe-gpu-offload-benchmarks-comparison.png</image:loc>
      <image:title>Rust GPU offload safety and performance: ownership rules managing host-device transfers, benchmarked against hand-tuned CUDA and HIP</image:title>
      <image:caption>Rust GPU offload safety and performance: ownership rules managing host-device transfers, benchmarked against hand-tuned CUDA and HIP</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/rust-safe-gpu-offload-benchmarks-transfer-bug.png</image:loc>
      <image:title>Rust GPU offload safety and performance: ownership rules managing host-device transfers, benchmarked against hand-tuned CUDA and HIP</image:title>
      <image:caption>Rust GPU offload safety and performance: ownership rules managing host-device transfers, benchmarked against hand-tuned CUDA and HIP</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/svg-to-mp4-in-the-browser</loc>
    <lastmod>2026-08-19</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/svg-to-mp4-in-the-browser-cover.png</image:loc>
      <image:title>A browser tab converting an animated SVG into an MP4 video entirely client-side using a 30MB ffmpeg.wasm build, with no server round trip</image:title>
      <image:caption>A browser tab converting an animated SVG into an MP4 video entirely client-side using a 30MB ffmpeg.wasm build, with no server round trip</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/svg-to-mp4-in-the-browser-workflow-comparison.png</image:loc>
      <image:title>A browser tab converting an animated SVG into an MP4 video entirely client-side using a 30MB ffmpeg.wasm build, with no server round trip</image:title>
      <image:caption>A browser tab converting an animated SVG into an MP4 video entirely client-side using a 30MB ffmpeg.wasm build, with no server round trip</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/svg-to-mp4-in-the-browser-pipeline.png</image:loc>
      <image:title>A browser tab converting an animated SVG into an MP4 video entirely client-side using a 30MB ffmpeg.wasm build, with no server round trip</image:title>
      <image:caption>A browser tab converting an animated SVG into an MP4 video entirely client-side using a 30MB ffmpeg.wasm build, with no server round trip</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/traffic-anomaly-or-outage-baseline-method</loc>
    <lastmod>2026-08-19</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/traffic-anomaly-or-outage-baseline-method-cover.png</image:loc>
      <image:title>Cover graphic showing the four-step baseline method — 5-minute buckets, 3-week median, independent-cause match, verdict — next to the eclipse&apos;s 15-30% traffic-drop metrics</image:title>
      <image:caption>Cover graphic showing the four-step baseline method — 5-minute buckets, 3-week median, independent-cause match, verdict — next to the eclipse&apos;s 15-30% traffic-drop metrics</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/traffic-anomaly-or-outage-baseline-method-methodology.png</image:loc>
      <image:title>Cover graphic showing the four-step baseline method — 5-minute buckets, 3-week median, independent-cause match, verdict — next to the eclipse&apos;s 15-30% traffic-drop metrics</image:title>
      <image:caption>Cover graphic showing the four-step baseline method — 5-minute buckets, 3-week median, independent-cause match, verdict — next to the eclipse&apos;s 15-30% traffic-drop metrics</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/traffic-anomaly-or-outage-baseline-method-baseline-comparison.png</image:loc>
      <image:title>Cover graphic showing the four-step baseline method — 5-minute buckets, 3-week median, independent-cause match, verdict — next to the eclipse&apos;s 15-30% traffic-drop metrics</image:title>
      <image:caption>Cover graphic showing the four-step baseline method — 5-minute buckets, 3-week median, independent-cause match, verdict — next to the eclipse&apos;s 15-30% traffic-drop metrics</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/use-postgres-for-everything</loc>
    <lastmod>2026-08-19</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/use-postgres-for-everything-cover.png</image:loc>
      <image:title>A map of five infrastructure components replaced by PostgreSQL features, each annotated with the threshold where the swap stops working</image:title>
      <image:caption>A map of five infrastructure components replaced by PostgreSQL features, each annotated with the threshold where the swap stops working</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/use-postgres-for-everything-swaps.png</image:loc>
      <image:title>A map of five infrastructure components replaced by PostgreSQL features, each annotated with the threshold where the swap stops working</image:title>
      <image:caption>A map of five infrastructure components replaced by PostgreSQL features, each annotated with the threshold where the swap stops working</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/use-postgres-for-everything-vacuum-bill.png</image:loc>
      <image:title>A map of five infrastructure components replaced by PostgreSQL features, each annotated with the threshold where the swap stops working</image:title>
      <image:caption>A map of five infrastructure components replaced by PostgreSQL features, each annotated with the threshold where the swap stops working</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/use-postgres-for-everything-800jobs.png</image:loc>
      <image:title>A map of five infrastructure components replaced by PostgreSQL features, each annotated with the threshold where the swap stops working</image:title>
      <image:caption>A map of five infrastructure components replaced by PostgreSQL features, each annotated with the threshold where the swap stops working</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/verify-ai-agent-benchmark-claims</loc>
    <lastmod>2026-08-19</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/verify-ai-agent-benchmark-claims-cover.png</image:loc>
      <image:title>A claimed 1.4x speedup collapsing to 1.5x slower as the same code is checked against a holdout benchmark and then audited for interface cheating</image:title>
      <image:caption>A claimed 1.4x speedup collapsing to 1.5x slower as the same code is checked against a holdout benchmark and then audited for interface cheating</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/verify-ai-agent-benchmark-claims-collapse.png</image:loc>
      <image:title>A claimed 1.4x speedup collapsing to 1.5x slower as the same code is checked against a holdout benchmark and then audited for interface cheating</image:title>
      <image:caption>A claimed 1.4x speedup collapsing to 1.5x slower as the same code is checked against a holdout benchmark and then audited for interface cheating</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/verify-ai-agent-benchmark-claims-cost-collapse.png</image:loc>
      <image:title>A claimed 1.4x speedup collapsing to 1.5x slower as the same code is checked against a holdout benchmark and then audited for interface cheating</image:title>
      <image:caption>A claimed 1.4x speedup collapsing to 1.5x slower as the same code is checked against a holdout benchmark and then audited for interface cheating</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/verify-ai-agent-benchmark-claims-holdout-gate.png</image:loc>
      <image:title>A claimed 1.4x speedup collapsing to 1.5x slower as the same code is checked against a holdout benchmark and then audited for interface cheating</image:title>
      <image:caption>A claimed 1.4x speedup collapsing to 1.5x slower as the same code is checked against a holdout benchmark and then audited for interface cheating</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/turn-off-ai-features-permanently</loc>
    <lastmod>2026-08-18</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/turn-off-ai-features-permanently-cover.png</image:loc>
      <image:title>The four layers at which an AI feature can be switched off, ranked by which events reset each one</image:title>
      <image:caption>The four layers at which an AI feature can be switched off, ranked by which events reset each one</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/turn-off-ai-features-permanently-chrome-policy.png</image:loc>
      <image:title>The four layers at which an AI feature can be switched off, ranked by which events reset each one</image:title>
      <image:caption>The four layers at which an AI feature can be switched off, ranked by which events reset each one</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/turn-off-ai-features-permanently-durability.png</image:loc>
      <image:title>The four layers at which an AI feature can be switched off, ranked by which events reset each one</image:title>
      <image:caption>The four layers at which an AI feature can be switched off, ranked by which events reset each one</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/ai-writing-policy-for-engineers</loc>
    <lastmod>2026-08-17</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/ai-writing-policy-for-engineers-cover.png</image:loc>
      <image:title>An author&apos;s intent passing through a draft and an AI rewrite before reaching the reader, losing emphasis, certainty and priority at each hop</image:title>
      <image:caption>An author&apos;s intent passing through a draft and an AI rewrite before reaching the reader, losing emphasis, certainty and priority at each hop</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/ai-writing-policy-for-engineers-lossy-chain.png</image:loc>
      <image:title>An author&apos;s intent passing through a draft and an AI rewrite before reaching the reader, losing emphasis, certainty and priority at each hop</image:title>
      <image:caption>An author&apos;s intent passing through a draft and an AI rewrite before reaching the reader, losing emphasis, certainty and priority at each hop</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/ai-writing-policy-for-engineers-four-rules.png</image:loc>
      <image:title>An author&apos;s intent passing through a draft and an AI rewrite before reaching the reader, losing emphasis, certainty and priority at each hop</image:title>
      <image:caption>An author&apos;s intent passing through a draft and an AI rewrite before reaching the reader, losing emphasis, certainty and priority at each hop</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/ai-writing-policy-for-engineers-effort-crossover.png</image:loc>
      <image:title>An author&apos;s intent passing through a draft and an AI rewrite before reaching the reader, losing emphasis, certainty and priority at each hop</image:title>
      <image:caption>An author&apos;s intent passing through a draft and an AI rewrite before reaching the reader, losing emphasis, certainty and priority at each hop</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/remove-cloudflare-beacon-min-js</loc>
    <lastmod>2026-08-17</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/remove-cloudflare-beacon-min-js-cover.png</image:loc>
      <image:title>Cloudflare&apos;s edge injecting the beacon.min.js analytics script into an HTML response before it reaches the browser</image:title>
      <image:caption>Cloudflare&apos;s edge injecting the beacon.min.js analytics script into an HTML response before it reaches the browser</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/remove-cloudflare-beacon-min-js-injection-path.png</image:loc>
      <image:title>Cloudflare&apos;s edge injecting the beacon.min.js analytics script into an HTML response before it reaches the browser</image:title>
      <image:caption>Cloudflare&apos;s edge injecting the beacon.min.js analytics script into an HTML response before it reaches the browser</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/remove-cloudflare-beacon-min-js-optout-path.png</image:loc>
      <image:title>Cloudflare&apos;s edge injecting the beacon.min.js analytics script into an HTML response before it reaches the browser</image:title>
      <image:caption>Cloudflare&apos;s edge injecting the beacon.min.js analytics script into an HTML response before it reaches the browser</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/remove-cloudflare-beacon-min-js-csp-destinations.png</image:loc>
      <image:title>Cloudflare&apos;s edge injecting the beacon.min.js analytics script into an HTML response before it reaches the browser</image:title>
      <image:caption>Cloudflare&apos;s edge injecting the beacon.min.js analytics script into an HTML response before it reaches the browser</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/fix-eevdf-latency-regression-sched-ext</loc>
    <lastmod>2026-08-16</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/fix-eevdf-latency-regression-sched-ext-cover.png</image:loc>
      <image:title>Two CPU pools under a sched_ext policy: latency-critical request threads separated from background work, with a watchdog fallback to EEVDF</image:title>
      <image:caption>Two CPU pools under a sched_ext policy: latency-critical request threads separated from background work, with a watchdog fallback to EEVDF</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/fix-eevdf-latency-regression-sched-ext-results.png</image:loc>
      <image:title>Two CPU pools under a sched_ext policy: latency-critical request threads separated from background work, with a watchdog fallback to EEVDF</image:title>
      <image:caption>Two CPU pools under a sched_ext policy: latency-critical request threads separated from background work, with a watchdog fallback to EEVDF</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/fix-eevdf-latency-regression-sched-ext-pools.png</image:loc>
      <image:title>Two CPU pools under a sched_ext policy: latency-critical request threads separated from background work, with a watchdog fallback to EEVDF</image:title>
      <image:caption>Two CPU pools under a sched_ext policy: latency-critical request threads separated from background work, with a watchdog fallback to EEVDF</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/fix-eevdf-latency-regression-sched-ext-safety.png</image:loc>
      <image:title>Two CPU pools under a sched_ext policy: latency-critical request threads separated from background work, with a watchdog fallback to EEVDF</image:title>
      <image:caption>Two CPU pools under a sched_ext policy: latency-critical request threads separated from background work, with a watchdog fallback to EEVDF</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/how-dna-wires-a-brain</loc>
    <lastmod>2026-08-16</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/how-dna-wires-a-brain-cover.png</image:loc>
      <image:title>Three brain-wiring strategies compared by information cost, from an infeasible 3x10^15 bits down to a genome-feasible 300 million bits</image:title>
      <image:caption>Three brain-wiring strategies compared by information cost, from an infeasible 3x10^15 bits down to a genome-feasible 300 million bits</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/how-dna-wires-a-brain-budget-gap.png</image:loc>
      <image:title>Three brain-wiring strategies compared by information cost, from an infeasible 3x10^15 bits down to a genome-feasible 300 million bits</image:title>
      <image:caption>Three brain-wiring strategies compared by information cost, from an infeasible 3x10^15 bits down to a genome-feasible 300 million bits</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/how-dna-wires-a-brain-address-tree.png</image:loc>
      <image:title>Three brain-wiring strategies compared by information cost, from an infeasible 3x10^15 bits down to a genome-feasible 300 million bits</image:title>
      <image:caption>Three brain-wiring strategies compared by information cost, from an infeasible 3x10^15 bits down to a genome-feasible 300 million bits</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/how-dna-wires-a-brain-strategy-cost.png</image:loc>
      <image:title>Three brain-wiring strategies compared by information cost, from an infeasible 3x10^15 bits down to a genome-feasible 300 million bits</image:title>
      <image:caption>Three brain-wiring strategies compared by information cost, from an infeasible 3x10^15 bits down to a genome-feasible 300 million bits</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/zero-downtime-database-migration-dual-writes</loc>
    <lastmod>2026-08-16</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/zero-downtime-database-migration-dual-writes-cover.png</image:loc>
      <image:title>The five feature-flagged phases of a zero-downtime datastore migration, from dual writes through shadow reads to cutover</image:title>
      <image:caption>The five feature-flagged phases of a zero-downtime datastore migration, from dual writes through shadow reads to cutover</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/zero-downtime-database-migration-dual-writes-ladder.png</image:loc>
      <image:title>The five feature-flagged phases of a zero-downtime datastore migration, from dual writes through shadow reads to cutover</image:title>
      <image:caption>The five feature-flagged phases of a zero-downtime datastore migration, from dual writes through shadow reads to cutover</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/zero-downtime-database-migration-dual-writes-percentile-gap.png</image:loc>
      <image:title>The five feature-flagged phases of a zero-downtime datastore migration, from dual writes through shadow reads to cutover</image:title>
      <image:caption>The five feature-flagged phases of a zero-downtime datastore migration, from dual writes through shadow reads to cutover</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/zero-downtime-database-migration-dual-writes-shadow-read-path.png</image:loc>
      <image:title>The five feature-flagged phases of a zero-downtime datastore migration, from dual writes through shadow reads to cutover</image:title>
      <image:caption>The five feature-flagged phases of a zero-downtime datastore migration, from dual writes through shadow reads to cutover</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/cloudflare-access-for-workers</loc>
    <lastmod>2026-08-15</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/cloudflare-access-for-workers-cover.png</image:loc>
      <image:title>Cloudflare Access enforcing an identity policy in front of a Worker before its code executes</image:title>
      <image:caption>Cloudflare Access enforcing an identity policy in front of a Worker before its code executes</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/cloudflare-access-for-workers-request-path.png</image:loc>
      <image:title>Cloudflare Access enforcing an identity policy in front of a Worker before its code executes</image:title>
      <image:caption>Cloudflare Access enforcing an identity policy in front of a Worker before its code executes</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/cloudflare-access-for-workers-entry-points.png</image:loc>
      <image:title>Cloudflare Access enforcing an identity policy in front of a Worker before its code executes</image:title>
      <image:caption>Cloudflare Access enforcing an identity policy in front of a Worker before its code executes</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/cloudflare-access-for-workers-scopes.png</image:loc>
      <image:title>Cloudflare Access enforcing an identity policy in front of a Worker before its code executes</image:title>
      <image:caption>Cloudflare Access enforcing an identity policy in front of a Worker before its code executes</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/qwen3-8-27b-vram-kv-cache-math</loc>
    <lastmod>2026-08-15</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/qwen3-8-27b-vram-kv-cache-math-cover.png</image:loc>
      <image:title>Qwen3.8 27B VRAM budget: FP8 weights plus KV cache at 262K context on a single GPU</image:title>
      <image:caption>Qwen3.8 27B VRAM budget: FP8 weights plus KV cache at 262K context on a single GPU</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/qwen3-8-27b-vram-kv-cache-math-layers.png</image:loc>
      <image:title>Qwen3.8 27B VRAM budget: FP8 weights plus KV cache at 262K context on a single GPU</image:title>
      <image:caption>Qwen3.8 27B VRAM budget: FP8 weights plus KV cache at 262K context on a single GPU</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/qwen3-8-27b-vram-kv-cache-math-kv-growth.png</image:loc>
      <image:title>Qwen3.8 27B VRAM budget: FP8 weights plus KV cache at 262K context on a single GPU</image:title>
      <image:caption>Qwen3.8 27B VRAM budget: FP8 weights plus KV cache at 262K context on a single GPU</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/qwen3-8-27b-vram-kv-cache-math-budget.png</image:loc>
      <image:title>Qwen3.8 27B VRAM budget: FP8 weights plus KV cache at 262K context on a single GPU</image:title>
      <image:caption>Qwen3.8 27B VRAM budget: FP8 weights plus KV cache at 262K context on a single GPU</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/cut-agent-tool-call-cost-prompt-rewrite</loc>
    <lastmod>2026-08-14</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/cut-agent-tool-call-cost-prompt-rewrite-cover.png</image:loc>
      <image:title>Swapping bespoke search tools for generic grep, glob and view raised Copilot code review cost until the system prompt was rewritten to be diff-anchored</image:title>
      <image:caption>Swapping bespoke search tools for generic grep, glob and view raised Copilot code review cost until the system prompt was rewritten to be diff-anchored</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/cut-agent-tool-call-cost-prompt-rewrite-rebill.png</image:loc>
      <image:title>Swapping bespoke search tools for generic grep, glob and view raised Copilot code review cost until the system prompt was rewritten to be diff-anchored</image:title>
      <image:caption>Swapping bespoke search tools for generic grep, glob and view raised Copilot code review cost until the system prompt was rewritten to be diff-anchored</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/cut-agent-tool-call-cost-prompt-rewrite-narrow-first.png</image:loc>
      <image:title>Swapping bespoke search tools for generic grep, glob and view raised Copilot code review cost until the system prompt was rewritten to be diff-anchored</image:title>
      <image:caption>Swapping bespoke search tools for generic grep, glob and view raised Copilot code review cost until the system prompt was rewritten to be diff-anchored</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/cut-agent-tool-call-cost-prompt-rewrite-trace.png</image:loc>
      <image:title>Swapping bespoke search tools for generic grep, glob and view raised Copilot code review cost until the system prompt was rewritten to be diff-anchored</image:title>
      <image:caption>Swapping bespoke search tools for generic grep, glob and view raised Copilot code review cost until the system prompt was rewritten to be diff-anchored</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/kubernetes-on-bare-metal-cloud-integrations</loc>
    <lastmod>2026-08-14</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/kubernetes-on-bare-metal-cloud-integrations-cover.png</image:loc>
      <image:title>The four integration seams a cloud provider fills for Kubernetes, and what you must build yourself on bare metal</image:title>
      <image:caption>The four integration seams a cloud provider fills for Kubernetes, and what you must build yourself on bare metal</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/kubernetes-on-bare-metal-cloud-integrations-seams.png</image:loc>
      <image:title>The four integration seams a cloud provider fills for Kubernetes, and what you must build yourself on bare metal</image:title>
      <image:caption>The four integration seams a cloud provider fills for Kubernetes, and what you must build yourself on bare metal</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/kubernetes-on-bare-metal-cloud-integrations-lb-path.png</image:loc>
      <image:title>The four integration seams a cloud provider fills for Kubernetes, and what you must build yourself on bare metal</image:title>
      <image:caption>The four integration seams a cloud provider fills for Kubernetes, and what you must build yourself on bare metal</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/kubernetes-on-bare-metal-cloud-integrations-csi-blocker.png</image:loc>
      <image:title>The four integration seams a cloud provider fills for Kubernetes, and what you must build yourself on bare metal</image:title>
      <image:caption>The four integration seams a cloud provider fills for Kubernetes, and what you must build yourself on bare metal</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/research-spike-as-running-code</loc>
    <lastmod>2026-08-13</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/research-spike-as-running-code-cover.png</image:loc>
      <image:title>A research spike shipped as running code surfaces engine-specific blockers a design doc would have missed</image:title>
      <image:caption>A research spike shipped as running code surfaces engine-specific blockers a design doc would have missed</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/research-spike-as-running-code-blocker-map.png</image:loc>
      <image:title>A research spike shipped as running code surfaces engine-specific blockers a design doc would have missed</image:title>
      <image:caption>A research spike shipped as running code surfaces engine-specific blockers a design doc would have missed</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/research-spike-as-running-code-portability-line.png</image:loc>
      <image:title>A research spike shipped as running code surfaces engine-specific blockers a design doc would have missed</image:title>
      <image:caption>A research spike shipped as running code surfaces engine-specific blockers a design doc would have missed</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/research-spike-as-running-code-scope-ladder.png</image:loc>
      <image:title>A research spike shipped as running code surfaces engine-specific blockers a design doc would have missed</image:title>
      <image:caption>A research spike shipped as running code surfaces engine-specific blockers a design doc would have missed</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/verify-ai-crawler-ips-not-user-agents</loc>
    <lastmod>2026-08-13</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/verify-ai-crawler-ips-not-user-agents-cover.png</image:loc>
      <image:title>Verifying AI crawler identity by matching source IPs against published CIDR lists instead of trusting the User-Agent header</image:title>
      <image:caption>Verifying AI crawler identity by matching source IPs against published CIDR lists instead of trusting the User-Agent header</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/verify-ai-crawler-ips-not-user-agents-freshness.png</image:loc>
      <image:title>Verifying AI crawler identity by matching source IPs against published CIDR lists instead of trusting the User-Agent header</image:title>
      <image:caption>Verifying AI crawler identity by matching source IPs against published CIDR lists instead of trusting the User-Agent header</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/verify-ai-crawler-ips-not-user-agents-failure-modes.png</image:loc>
      <image:title>Verifying AI crawler identity by matching source IPs against published CIDR lists instead of trusting the User-Agent header</image:title>
      <image:caption>Verifying AI crawler identity by matching source IPs against published CIDR lists instead of trusting the User-Agent header</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/verify-ai-crawler-ips-not-user-agents-ladder.png</image:loc>
      <image:title>Verifying AI crawler identity by matching source IPs against published CIDR lists instead of trusting the User-Agent header</image:title>
      <image:caption>Verifying AI crawler identity by matching source IPs against published CIDR lists instead of trusting the User-Agent header</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/agent-context-compaction-what-survives</loc>
    <lastmod>2026-08-12</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/agent-context-compaction-what-survives-cover.png</image:loc>
      <image:title>How server-side compaction replaces a long agent transcript with a single summary block once input tokens cross the trigger, and what is kept versus permanently dropped</image:title>
      <image:caption>How server-side compaction replaces a long agent transcript with a single summary block once input tokens cross the trigger, and what is kept versus permanently dropped</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/agent-context-compaction-what-survives-cutoff.png</image:loc>
      <image:title>How server-side compaction replaces a long agent transcript with a single summary block once input tokens cross the trigger, and what is kept versus permanently dropped</image:title>
      <image:caption>How server-side compaction replaces a long agent transcript with a single summary block once input tokens cross the trigger, and what is kept versus permanently dropped</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/agent-context-compaction-what-survives-billing.png</image:loc>
      <image:title>How server-side compaction replaces a long agent transcript with a single summary block once input tokens cross the trigger, and what is kept versus permanently dropped</image:title>
      <image:caption>How server-side compaction replaces a long agent transcript with a single summary block once input tokens cross the trigger, and what is kept versus permanently dropped</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/agent-context-compaction-what-survives-three-tools.png</image:loc>
      <image:title>How server-side compaction replaces a long agent transcript with a single summary block once input tokens cross the trigger, and what is kept versus permanently dropped</image:title>
      <image:caption>How server-side compaction replaces a long agent transcript with a single summary block once input tokens cross the trigger, and what is kept versus permanently dropped</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/on-device-ai-without-breaking-e2ee</loc>
    <lastmod>2026-08-12</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/on-device-ai-without-breaking-e2ee-cover.png</image:loc>
      <image:title>The metrics path behind WhatsApp Scam Alert, where device identity, IP address and per-user counters are each stripped at a different hop before any number reaches Meta</image:title>
      <image:caption>The metrics path behind WhatsApp Scam Alert, where device identity, IP address and per-user counters are each stripped at a different hop before any number reaches Meta</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/on-device-ai-without-breaking-e2ee-telemetry-path.png</image:loc>
      <image:title>The metrics path behind WhatsApp Scam Alert, where device identity, IP address and per-user counters are each stripped at a different hop before any number reaches Meta</image:title>
      <image:caption>The metrics path behind WhatsApp Scam Alert, where device identity, IP address and per-user counters are each stripped at a different hop before any number reaches Meta</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/on-device-ai-without-breaking-e2ee-attestation-loop.png</image:loc>
      <image:title>The metrics path behind WhatsApp Scam Alert, where device identity, IP address and per-user counters are each stripped at a different hop before any number reaches Meta</image:title>
      <image:caption>The metrics path behind WhatsApp Scam Alert, where device identity, IP address and per-user counters are each stripped at a different hop before any number reaches Meta</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/on-device-ai-without-breaking-e2ee-naive-vs-verifiable.png</image:loc>
      <image:title>The metrics path behind WhatsApp Scam Alert, where device identity, IP address and per-user counters are each stripped at a different hop before any number reaches Meta</image:title>
      <image:caption>The metrics path behind WhatsApp Scam Alert, where device identity, IP address and per-user counters are each stripped at a different hop before any number reaches Meta</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/fix-slow-llm-inference-macos-vms</loc>
    <lastmod>2026-08-11</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/fix-slow-llm-inference-macos-vms-cover.png</image:loc>
      <image:title>How a paravirtualized Metal device reporting Apple GPU family 5 makes llama.cpp disable its simdgroup matrix kernels, and the throughput that returns when the guest reports family 9</image:title>
      <image:caption>How a paravirtualized Metal device reporting Apple GPU family 5 makes llama.cpp disable its simdgroup matrix kernels, and the throughput that returns when the guest reports family 9</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/fix-slow-llm-inference-macos-vms-capability-gate.png</image:loc>
      <image:title>How a paravirtualized Metal device reporting Apple GPU family 5 makes llama.cpp disable its simdgroup matrix kernels, and the throughput that returns when the guest reports family 9</image:title>
      <image:caption>How a paravirtualized Metal device reporting Apple GPU family 5 makes llama.cpp disable its simdgroup matrix kernels, and the throughput that returns when the guest reports family 9</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/fix-slow-llm-inference-macos-vms-throughput.png</image:loc>
      <image:title>How a paravirtualized Metal device reporting Apple GPU family 5 makes llama.cpp disable its simdgroup matrix kernels, and the throughput that returns when the guest reports family 9</image:title>
      <image:caption>How a paravirtualized Metal device reporting Apple GPU family 5 makes llama.cpp disable its simdgroup matrix kernels, and the throughput that returns when the guest reports family 9</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/fix-slow-llm-inference-macos-vms-recovery.png</image:loc>
      <image:title>How a paravirtualized Metal device reporting Apple GPU family 5 makes llama.cpp disable its simdgroup matrix kernels, and the throughput that returns when the guest reports family 9</image:title>
      <image:caption>How a paravirtualized Metal device reporting Apple GPU family 5 makes llama.cpp disable its simdgroup matrix kernels, and the throughput that returns when the guest reports family 9</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/learn-complex-topics-claude-code-simulations</loc>
    <lastmod>2026-08-11</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/learn-complex-topics-claude-code-simulations-cover.png</image:loc>
      <image:title>The four-step loop for learning a complex topic by having an AI coding agent build an interactive simulation of it</image:title>
      <image:caption>The four-step loop for learning a complex topic by having an AI coding agent build an interactive simulation of it</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/learn-complex-topics-claude-code-simulations-loop.png</image:loc>
      <image:title>The four-step loop for learning a complex topic by having an AI coding agent build an interactive simulation of it</image:title>
      <image:caption>The four-step loop for learning a complex topic by having an AI coding agent build an interactive simulation of it</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/learn-complex-topics-claude-code-simulations-fit.png</image:loc>
      <image:title>The four-step loop for learning a complex topic by having an AI coding agent build an interactive simulation of it</image:title>
      <image:caption>The four-step loop for learning a complex topic by having an AI coding agent build an interactive simulation of it</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/learn-complex-topics-claude-code-simulations-tcp.png</image:loc>
      <image:title>The four-step loop for learning a complex topic by having an AI coding agent build an interactive simulation of it</image:title>
      <image:caption>The four-step loop for learning a complex topic by having an AI coding agent build an interactive simulation of it</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/run-muse-glimmer-30b-locally</loc>
    <lastmod>2026-08-11</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/run-muse-glimmer-30b-locally-cover.png</image:loc>
      <image:title>Muse Glimmer 30B memory ladder showing 55GB at full precision shrinking to under 20GB with 4-bit K-Quant compression</image:title>
      <image:caption>Muse Glimmer 30B memory ladder showing 55GB at full precision shrinking to under 20GB with 4-bit K-Quant compression</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/run-muse-glimmer-30b-locally-vram-ladder.png</image:loc>
      <image:title>Muse Glimmer 30B memory ladder showing 55GB at full precision shrinking to under 20GB with 4-bit K-Quant compression</image:title>
      <image:caption>Muse Glimmer 30B memory ladder showing 55GB at full precision shrinking to under 20GB with 4-bit K-Quant compression</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/run-muse-glimmer-30b-locally-dflash-speedup.png</image:loc>
      <image:title>Muse Glimmer 30B memory ladder showing 55GB at full precision shrinking to under 20GB with 4-bit K-Quant compression</image:title>
      <image:caption>Muse Glimmer 30B memory ladder showing 55GB at full precision shrinking to under 20GB with 4-bit K-Quant compression</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/run-muse-glimmer-30b-locally-runtime-matrix.png</image:loc>
      <image:title>Muse Glimmer 30B memory ladder showing 55GB at full precision shrinking to under 20GB with 4-bit K-Quant compression</image:title>
      <image:caption>Muse Glimmer 30B memory ladder showing 55GB at full precision shrinking to under 20GB with 4-bit K-Quant compression</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/testing-llm-knowledge-cutoffs-opus-5</loc>
    <lastmod>2026-08-11</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/testing-llm-knowledge-cutoffs-opus-5-cover.png</image:loc>
      <image:title>Timeline comparing the knowledge-cutoff date vendors claim for Claude Opus 5 against the earlier cutoff its answers actually reveal</image:title>
      <image:caption>Timeline comparing the knowledge-cutoff date vendors claim for Claude Opus 5 against the earlier cutoff its answers actually reveal</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/testing-llm-knowledge-cutoffs-opus-5-methodology.png</image:loc>
      <image:title>Timeline comparing the knowledge-cutoff date vendors claim for Claude Opus 5 against the earlier cutoff its answers actually reveal</image:title>
      <image:caption>Timeline comparing the knowledge-cutoff date vendors claim for Claude Opus 5 against the earlier cutoff its answers actually reveal</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/testing-llm-knowledge-cutoffs-opus-5-timeline.png</image:loc>
      <image:title>Timeline comparing the knowledge-cutoff date vendors claim for Claude Opus 5 against the earlier cutoff its answers actually reveal</image:title>
      <image:caption>Timeline comparing the knowledge-cutoff date vendors claim for Claude Opus 5 against the earlier cutoff its answers actually reveal</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/testing-llm-knowledge-cutoffs-opus-5-mimicry.png</image:loc>
      <image:title>Timeline comparing the knowledge-cutoff date vendors claim for Claude Opus 5 against the earlier cutoff its answers actually reveal</image:title>
      <image:caption>Timeline comparing the knowledge-cutoff date vendors claim for Claude Opus 5 against the earlier cutoff its answers actually reveal</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/sandbox-ai-agent-internet-access</loc>
    <lastmod>2026-08-08</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/sandbox-ai-agent-internet-access-cover.png</image:loc>
      <image:title>Cover showing the four-layer agent containment stack — deny egress, scope identity, watch live, kill fast — alongside the AISI evaluation figures of 122 runs, 10 off-scope runs and containment in under an hour</image:title>
      <image:caption>Cover showing the four-layer agent containment stack — deny egress, scope identity, watch live, kill fast — alongside the AISI evaluation figures of 122 runs, 10 off-scope runs and containment in under an hour</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/sandbox-ai-agent-internet-access-attack-chain.png</image:loc>
      <image:title>Cover showing the four-layer agent containment stack — deny egress, scope identity, watch live, kill fast — alongside the AISI evaluation figures of 122 runs, 10 off-scope runs and containment in under an hour</image:title>
      <image:caption>Cover showing the four-layer agent containment stack — deny egress, scope identity, watch live, kill fast — alongside the AISI evaluation figures of 122 runs, 10 off-scope runs and containment in under an hour</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/sandbox-ai-agent-internet-access-numbers.png</image:loc>
      <image:title>Cover showing the four-layer agent containment stack — deny egress, scope identity, watch live, kill fast — alongside the AISI evaluation figures of 122 runs, 10 off-scope runs and containment in under an hour</image:title>
      <image:caption>Cover showing the four-layer agent containment stack — deny egress, scope identity, watch live, kill fast — alongside the AISI evaluation figures of 122 runs, 10 off-scope runs and containment in under an hour</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/sandbox-ai-agent-internet-access-controls.png</image:loc>
      <image:title>Cover showing the four-layer agent containment stack — deny egress, scope identity, watch live, kill fast — alongside the AISI evaluation figures of 122 runs, 10 off-scope runs and containment in under an hour</image:title>
      <image:caption>Cover showing the four-layer agent containment stack — deny egress, scope identity, watch live, kill fast — alongside the AISI evaluation figures of 122 runs, 10 off-scope runs and containment in under an hour</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/vllm-throughput-tuning-flags</loc>
    <lastmod>2026-08-08</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/vllm-throughput-tuning-flags-cover.png</image:loc>
      <image:title>Cover showing the vLLM VRAM budget split into model weights, runtime overhead and KV cache, with the KV cache block math that converts free VRAM into concurrent sequences</image:title>
      <image:caption>Cover showing the vLLM VRAM budget split into model weights, runtime overhead and KV cache, with the KV cache block math that converts free VRAM into concurrent sequences</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/vllm-throughput-tuning-flags-kv-budget.png</image:loc>
      <image:title>Cover showing the vLLM VRAM budget split into model weights, runtime overhead and KV cache, with the KV cache block math that converts free VRAM into concurrent sequences</image:title>
      <image:caption>Cover showing the vLLM VRAM budget split into model weights, runtime overhead and KV cache, with the KV cache block math that converts free VRAM into concurrent sequences</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/vllm-throughput-tuning-flags-scheduler-step.png</image:loc>
      <image:title>Cover showing the vLLM VRAM budget split into model weights, runtime overhead and KV cache, with the KV cache block math that converts free VRAM into concurrent sequences</image:title>
      <image:caption>Cover showing the vLLM VRAM budget split into model weights, runtime overhead and KV cache, with the KV cache block math that converts free VRAM into concurrent sequences</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/vllm-throughput-tuning-flags-symptom-map.png</image:loc>
      <image:title>Cover showing the vLLM VRAM budget split into model weights, runtime overhead and KV cache, with the KV cache block math that converts free VRAM into concurrent sequences</image:title>
      <image:caption>Cover showing the vLLM VRAM budget split into model weights, runtime overhead and KV cache, with the KV cache block math that converts free VRAM into concurrent sequences</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/ai-agent-permissions-approval-fatigue</loc>
    <lastmod>2026-08-07</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/ai-agent-permissions-approval-fatigue-cover.png</image:loc>
      <image:title>Cover card titled Approve, subtitled One in three gets through, with three statistics: 409,000 approve or deny decisions analysed, 66.3% mean accuracy, and 52.5% miss rate on npm-disguised exfiltration</image:title>
      <image:caption>Cover card titled Approve, subtitled One in three gets through, with three statistics: 409,000 approve or deny decisions analysed, 66.3% mean accuracy, and 52.5% miss rate on npm-disguised exfiltration</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/ai-agent-permissions-approval-fatigue-miss-rates.png</image:loc>
      <image:title>Cover card titled Approve, subtitled One in three gets through, with three statistics: 409,000 approve or deny decisions analysed, 66.3% mean accuracy, and 52.5% miss rate on npm-disguised exfiltration</image:title>
      <image:caption>Cover card titled Approve, subtitled One in three gets through, with three statistics: 409,000 approve or deny decisions analysed, 66.3% mean accuracy, and 52.5% miss rate on npm-disguised exfiltration</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/ai-agent-permissions-approval-fatigue-npm-blindspot.png</image:loc>
      <image:title>Cover card titled Approve, subtitled One in three gets through, with three statistics: 409,000 approve or deny decisions analysed, 66.3% mean accuracy, and 52.5% miss rate on npm-disguised exfiltration</image:title>
      <image:caption>Cover card titled Approve, subtitled One in three gets through, with three statistics: 409,000 approve or deny decisions analysed, 66.3% mean accuracy, and 52.5% miss rate on npm-disguised exfiltration</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/ai-agent-permissions-approval-fatigue-layers.png</image:loc>
      <image:title>Cover card titled Approve, subtitled One in three gets through, with three statistics: 409,000 approve or deny decisions analysed, 66.3% mean accuracy, and 52.5% miss rate on npm-disguised exfiltration</image:title>
      <image:caption>Cover card titled Approve, subtitled One in three gets through, with three statistics: 409,000 approve or deny decisions analysed, 66.3% mean accuracy, and 52.5% miss rate on npm-disguised exfiltration</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/ai-gateway-for-workers-ai</loc>
    <lastmod>2026-08-07</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/ai-gateway-for-workers-ai-cover.png</image:loc>
      <image:title>Diagram of a Workers AI request routed through AI Gateway, showing the payload log, token count and cost attribution captured at the gateway hop</image:title>
      <image:caption>Diagram of a Workers AI request routed through AI Gateway, showing the payload log, token count and cost attribution captured at the gateway hop</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/ai-gateway-for-workers-ai-path.png</image:loc>
      <image:title>Diagram of a Workers AI request routed through AI Gateway, showing the payload log, token count and cost attribution captured at the gateway hop</image:title>
      <image:caption>Diagram of a Workers AI request routed through AI Gateway, showing the payload log, token count and cost attribution captured at the gateway hop</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/ai-gateway-for-workers-ai-cache.png</image:loc>
      <image:title>Diagram of a Workers AI request routed through AI Gateway, showing the payload log, token count and cost attribution captured at the gateway hop</image:title>
      <image:caption>Diagram of a Workers AI request routed through AI Gateway, showing the payload log, token count and cost attribution captured at the gateway hop</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/ai-gateway-for-workers-ai-control-plane.png</image:loc>
      <image:title>Diagram of a Workers AI request routed through AI Gateway, showing the payload log, token count and cost attribution captured at the gateway hop</image:title>
      <image:caption>Diagram of a Workers AI request routed through AI Gateway, showing the payload log, token count and cost attribution captured at the gateway hop</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/datasette-sql-injection-patch</loc>
    <lastmod>2026-08-07</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/datasette-sql-injection-patch-cover.png</image:loc>
      <image:title>Diagram of the Datasette filter injection — a query-string column name flows unquoted into generated SQL and returns rows from a private table</image:title>
      <image:caption>Diagram of the Datasette filter injection — a query-string column name flows unquoted into generated SQL and returns rows from a private table</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/datasette-sql-injection-patch-exposure.png</image:loc>
      <image:title>Diagram of the Datasette filter injection — a query-string column name flows unquoted into generated SQL and returns rows from a private table</image:title>
      <image:caption>Diagram of the Datasette filter injection — a query-string column name flows unquoted into generated SQL and returns rows from a private table</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/datasette-sql-injection-patch-path.png</image:loc>
      <image:title>Diagram of the Datasette filter injection — a query-string column name flows unquoted into generated SQL and returns rows from a private table</image:title>
      <image:caption>Diagram of the Datasette filter injection — a query-string column name flows unquoted into generated SQL and returns rows from a private table</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/datasette-sql-injection-patch-boundary.png</image:loc>
      <image:title>Diagram of the Datasette filter injection — a query-string column name flows unquoted into generated SQL and returns rows from a private table</image:title>
      <image:caption>Diagram of the Datasette filter injection — a query-string column name flows unquoted into generated SQL and returns rows from a private table</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/make-your-site-agent-readable</loc>
    <lastmod>2026-08-07</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/make-your-site-agent-readable-cover.png</image:loc>
      <image:title>The four agentic web layers — readable, discoverable, callable, payable — mapped to concrete URLs on a static site</image:title>
      <image:caption>The four agentic web layers — readable, discoverable, callable, payable — mapped to concrete URLs on a static site</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/make-your-site-agent-readable-payload.png</image:loc>
      <image:title>The four agentic web layers — readable, discoverable, callable, payable — mapped to concrete URLs on a static site</image:title>
      <image:caption>The four agentic web layers — readable, discoverable, callable, payable — mapped to concrete URLs on a static site</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/make-your-site-agent-readable-layers.png</image:loc>
      <image:title>The four agentic web layers — readable, discoverable, callable, payable — mapped to concrete URLs on a static site</image:title>
      <image:caption>The four agentic web layers — readable, discoverable, callable, payable — mapped to concrete URLs on a static site</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/make-your-site-agent-readable-routing.png</image:loc>
      <image:title>The four agentic web layers — readable, discoverable, callable, payable — mapped to concrete URLs on a static site</image:title>
      <image:caption>The four agentic web layers — readable, discoverable, callable, payable — mapped to concrete URLs on a static site</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/writing-agent-tool-instructions</loc>
    <lastmod>2026-08-07</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/writing-agent-tool-instructions-cover.png</image:loc>
      <image:title>The browsing loop a code-review agent enters under generic tool instructions, versus the diff-anchored evidence path review-shaped instructions produce</image:title>
      <image:caption>The browsing loop a code-review agent enters under generic tool instructions, versus the diff-anchored evidence path review-shaped instructions produce</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/writing-agent-tool-instructions-browsing-loop.png</image:loc>
      <image:title>The browsing loop a code-review agent enters under generic tool instructions, versus the diff-anchored evidence path review-shaped instructions produce</image:title>
      <image:caption>The browsing loop a code-review agent enters under generic tool instructions, versus the diff-anchored evidence path review-shaped instructions produce</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/writing-agent-tool-instructions-three-tools.png</image:loc>
      <image:title>The browsing loop a code-review agent enters under generic tool instructions, versus the diff-anchored evidence path review-shaped instructions produce</image:title>
      <image:caption>The browsing loop a code-review agent enters under generic tool instructions, versus the diff-anchored evidence path review-shaped instructions produce</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/writing-agent-tool-instructions-cost.png</image:loc>
      <image:title>The browsing loop a code-review agent enters under generic tool instructions, versus the diff-anchored evidence path review-shaped instructions produce</image:title>
      <image:caption>The browsing loop a code-review agent enters under generic tool instructions, versus the diff-anchored evidence path review-shaped instructions produce</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/ads-for-ai-agents-time-markdown-crawlers</loc>
    <lastmod>2026-08-06</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/ads-for-ai-agents-time-markdown-crawlers-cover.png</image:loc>
      <image:title>Ads for AI agents: TIME serves markdown with sponsored FAQ blocks to AI crawlers and HTML to humans</image:title>
      <image:caption>Ads for AI agents: TIME serves markdown with sponsored FAQ blocks to AI crawlers and HTML to humans</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/dependabot-grouped-updates-cut-pr-noise</loc>
    <lastmod>2026-08-06</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/dependabot-grouped-updates-cut-pr-noise-cover.png</image:loc>
      <image:title>Diagram of Dependabot running two independent lanes: version updates funnelled through cooldown and a monthly schedule into one grouped pull request, and security updates bypassing all of it to open immediately</image:title>
      <image:caption>Diagram of Dependabot running two independent lanes: version updates funnelled through cooldown and a monthly schedule into one grouped pull request, and security updates bypassing all of it to open immediately</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/dependabot-grouped-updates-cut-pr-noise-two-lanes.png</image:loc>
      <image:title>Diagram of Dependabot running two independent lanes: version updates funnelled through cooldown and a monthly schedule into one grouped pull request, and security updates bypassing all of it to open immediately</image:title>
      <image:caption>Diagram of Dependabot running two independent lanes: version updates funnelled through cooldown and a monthly schedule into one grouped pull request, and security updates bypassing all of it to open immediately</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/dependabot-grouped-updates-cut-pr-noise-volume.png</image:loc>
      <image:title>Diagram of Dependabot running two independent lanes: version updates funnelled through cooldown and a monthly schedule into one grouped pull request, and security updates bypassing all of it to open immediately</image:title>
      <image:caption>Diagram of Dependabot running two independent lanes: version updates funnelled through cooldown and a monthly schedule into one grouped pull request, and security updates bypassing all of it to open immediately</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/dependabot-grouped-updates-cut-pr-noise-key-map.png</image:loc>
      <image:title>Diagram of Dependabot running two independent lanes: version updates funnelled through cooldown and a monthly schedule into one grouped pull request, and security updates bypassing all of it to open immediately</image:title>
      <image:caption>Diagram of Dependabot running two independent lanes: version updates funnelled through cooldown and a monthly schedule into one grouped pull request, and security updates bypassing all of it to open immediately</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/parallel-agent-tool-calls-dag-harness</loc>
    <lastmod>2026-08-06</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/parallel-agent-tool-calls-dag-harness-cover.png</image:loc>
      <image:title>Diagram contrasting a sequential agent loop of ten model round trips with a two-level dependency graph running nine tool calls concurrently</image:title>
      <image:caption>Diagram contrasting a sequential agent loop of ten model round trips with a two-level dependency graph running nine tool calls concurrently</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/parallel-agent-tool-calls-dag-harness-loop-vs-dag.png</image:loc>
      <image:title>Diagram contrasting a sequential agent loop of ten model round trips with a two-level dependency graph running nine tool calls concurrently</image:title>
      <image:caption>Diagram contrasting a sequential agent loop of ten model round trips with a two-level dependency graph running nine tool calls concurrently</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/parallel-agent-tool-calls-dag-harness-budget-pressure.png</image:loc>
      <image:title>Diagram contrasting a sequential agent loop of ten model round trips with a two-level dependency graph running nine tool calls concurrently</image:title>
      <image:caption>Diagram contrasting a sequential agent loop of ten model round trips with a two-level dependency graph running nine tool calls concurrently</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/parallel-agent-tool-calls-dag-harness-error-classes.png</image:loc>
      <image:title>Diagram contrasting a sequential agent loop of ten model round trips with a two-level dependency graph running nine tool calls concurrently</image:title>
      <image:caption>Diagram contrasting a sequential agent loop of ten model round trips with a two-level dependency graph running nine tool calls concurrently</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/reinforcement-fine-tuning-small-models-retrieval</loc>
    <lastmod>2026-08-06</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/reinforcement-fine-tuning-small-models-retrieval-cover.png</image:loc>
      <image:title>Reinforcement fine-tuning: a 4B open model matching a frontier LLM on retrieval at a fraction of the cost</image:title>
      <image:caption>Reinforcement fine-tuning: a 4B open model matching a frontier LLM on retrieval at a fraction of the cost</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/run-cicd-cloudflare-workflows</loc>
    <lastmod>2026-08-06</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/run-cicd-cloudflare-workflows-cover.png</image:loc>
      <image:title>Diagram of a CI pipeline expressed as a Cloudflare Workflow: one cached install step fanning out to four parallel checks and joining into a deploy step</image:title>
      <image:caption>Diagram of a CI pipeline expressed as a Cloudflare Workflow: one cached install step fanning out to four parallel checks and joining into a deploy step</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/run-cicd-cloudflare-workflows-yaml-to-ts.png</image:loc>
      <image:title>Diagram of a CI pipeline expressed as a Cloudflare Workflow: one cached install step fanning out to four parallel checks and joining into a deploy step</image:title>
      <image:caption>Diagram of a CI pipeline expressed as a Cloudflare Workflow: one cached install step fanning out to four parallel checks and joining into a deploy step</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/run-cicd-cloudflare-workflows-which-meter.png</image:loc>
      <image:title>Diagram of a CI pipeline expressed as a Cloudflare Workflow: one cached install step fanning out to four parallel checks and joining into a deploy step</image:title>
      <image:caption>Diagram of a CI pipeline expressed as a Cloudflare Workflow: one cached install step fanning out to four parallel checks and joining into a deploy step</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/run-cicd-cloudflare-workflows-ceilings.png</image:loc>
      <image:title>Diagram of a CI pipeline expressed as a Cloudflare Workflow: one cached install step fanning out to four parallel checks and joining into a deploy step</image:title>
      <image:caption>Diagram of a CI pipeline expressed as a Cloudflare Workflow: one cached install step fanning out to four parallel checks and joining into a deploy step</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/rust-llm-policy-ai-generated-code</loc>
    <lastmod>2026-08-06</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/rust-llm-policy-ai-generated-code-cover.png</image:loc>
      <image:title>Rust LLM policy: AI allowed for review and analysis, banned for creating code and prose</image:title>
      <image:caption>Rust LLM policy: AI allowed for review and analysis, banned for creating code and prose</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/agent-harness-design-arc-agi-3</loc>
    <lastmod>2026-08-05</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/agent-harness-design-arc-agi-3-cover.png</image:loc>
      <image:title>Agent harness design diagram: a model&apos;s reasoning discarded each turn versus reasoning retained and context compacted across turns</image:title>
      <image:caption>Agent harness design diagram: a model&apos;s reasoning discarded each turn versus reasoning retained and context compacted across turns</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/insider-threat-offboarding-controls</loc>
    <lastmod>2026-08-05</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/insider-threat-offboarding-controls-cover.png</image:loc>
      <image:title>Cover card titled The Exit, subtitled Badge returned. Access still live., with three statistics: 2 named defendants in Apple Inc. v. Liu, 11 additional former employees named in the filing, and reasonable measures as the statutory test for a trade secret</image:title>
      <image:caption>Cover card titled The Exit, subtitled Badge returned. Access still live., with three statistics: 2 named defendants in Apple Inc. v. Liu, 11 additional former employees named in the filing, and reasonable measures as the statutory test for a trade secret</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/llm-abuse-detection-openai-scam-network</loc>
    <lastmod>2026-08-05</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/llm-abuse-detection-openai-scam-network-cover.png</image:loc>
      <image:title>LLM abuse detection diagram contrasting per-message content classification with account-level behavioural correlation across a session corpus</image:title>
      <image:caption>LLM abuse detection diagram contrasting per-message content classification with account-level behavioural correlation across a session corpus</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/mcp-write-controls-cloudflare-writeguard</loc>
    <lastmod>2026-08-05</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/mcp-write-controls-cloudflare-writeguard-cover.png</image:loc>
      <image:title>MCP write controls diagram: a tool call passing through a policy layer that allows, labels, or blocks it before the handler runs</image:title>
      <image:caption>MCP write controls diagram: a tool call passing through a policy layer that allows, labels, or blocks it before the handler runs</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/secure-mcp-write-tools-writeguard</loc>
    <lastmod>2026-08-05</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/secure-mcp-write-tools-writeguard-cover.png</image:loc>
      <image:title>Cover card titled The Gate, subtitled Thousands of tickets. One agent., with three statistics: 4 risk tiers, Cloudflare&apos;s MCP portal growing 13 to 27 servers, and tool annotations marked untrusted per the MCP spec</image:title>
      <image:caption>Cover card titled The Gate, subtitled Thousands of tickets. One agent., with three statistics: 4 risk tiers, Cloudflare&apos;s MCP portal growing 13 to 27 servers, and tool annotations marked untrusted per the MCP spec</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/cloudflare-wallets-x402-agent-payments</loc>
    <lastmod>2026-08-04</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/cloudflare-wallets-x402-agent-payments-cover.png</image:loc>
      <image:title>Diagram of an AI agent paying an API over the x402 HTTP 402 protocol using a Cloudflare Virtual Wallet</image:title>
      <image:caption>Diagram of an AI agent paying an API over the x402 HTTP 402 protocol using a Cloudflare Virtual Wallet</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/fake-cve-reports-ai-slop-sqlite</loc>
    <lastmod>2026-08-04</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/fake-cve-reports-ai-slop-sqlite-cover.png</image:loc>
      <image:title>A fabricated CVE advisory flowing unverified into the public vulnerability database pipeline</image:title>
      <image:caption>A fabricated CVE advisory flowing unverified into the public vulnerability database pipeline</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/llm-eval-framework-smevals</loc>
    <lastmod>2026-08-04</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/llm-eval-framework-smevals-cover.png</image:loc>
      <image:title>Diagram of an LLM eval framework pipeline: tasks and configs produce runs, graders apply checks to produce grades</image:title>
      <image:caption>Diagram of an LLM eval framework pipeline: tasks and configs produce runs, graders apply checks to produce grades</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/production-grade-ai-agents-vibe-to-live-gap</loc>
    <lastmod>2026-08-04</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/production-grade-ai-agents-vibe-to-live-gap-cover.png</image:loc>
      <image:title>Production-grade AI agents — the funnel from 353,000 course registrations down to 6,000 shipped agent projects</image:title>
      <image:caption>Production-grade AI agents — the funnel from 353,000 course registrations down to 6,000 shipped agent projects</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/run-70b-llm-on-4gb-gpu-airllm</loc>
    <lastmod>2026-08-04</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/run-70b-llm-on-4gb-gpu-airllm-cover.png</image:loc>
      <image:title>Layer-by-layer LLM inference streaming one transformer layer at a time from disk onto a 4GB GPU</image:title>
      <image:caption>Layer-by-layer LLM inference streaming one transformer layer at a time from disk onto a 4GB GPU</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/agent-to-human-delegation</loc>
    <lastmod>2026-08-03</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/agent-to-human-delegation-cover.png</image:loc>
      <image:title>Agent-to-human delegation — an AI agent handing a task to a human coworker in a chat tool</image:title>
      <image:caption>Agent-to-human delegation — an AI agent handing a task to a human coworker in a chat tool</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/explorative-modeling-train-on-best-of-k</loc>
    <lastmod>2026-08-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/explorative-modeling-train-on-best-of-k-cover.png</image:loc>
      <image:title>Explorative modeling diagram: K candidate generations compared against real data, with only the closest match receiving gradients</image:title>
      <image:caption>Explorative modeling diagram: K candidate generations compared against real data, with only the closest match receiving gradients</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/deepseek-v4-flash-0731-benchmarks</loc>
    <lastmod>2026-08-01</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/deepseek-v4-flash-0731-benchmarks-cover.png</image:loc>
      <image:title>DeepSeek V4 Flash 0731 agent benchmark results compared against the preview build and V4-Pro Preview</image:title>
      <image:caption>DeepSeek V4 Flash 0731 agent benchmark results compared against the preview build and V4-Pro Preview</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/increase-seo-traffic-ai-era-techniques</loc>
    <lastmod>2026-07-29</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/increase-seo-traffic-ai-era-techniques-cover.png</image:loc>
      <image:title>How to increase SEO traffic in the AI era — a hands-on field guide of genuine, repeatable techniques to earn clicks and AI citations in 2026</image:title>
      <image:caption>How to increase SEO traffic in the AI era — a hands-on field guide of genuine, repeatable techniques to earn clicks and AI citations in 2026</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/seo-in-the-ai-era-geo-playbook</loc>
    <lastmod>2026-07-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/seo-in-the-ai-era-geo-playbook-cover.png</image:loc>
      <image:title>SEO in the AI era — the shift from ranking blue links to being cited inside AI-generated answers on ChatGPT, Perplexity and Google AI Mode</image:title>
      <image:caption>SEO in the AI era — the shift from ranking blue links to being cited inside AI-generated answers on ChatGPT, Perplexity and Google AI Mode</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/claude-opus-5-guide</loc>
    <lastmod>2026-08-06</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/claude-opus-5-guide-cover.png</image:loc>
      <image:title>Cover for the Claude Opus 5 guide: benchmarks, the $5/$25 cost math, effort levels, and the two API breaking changes in the Opus 4.8 migration</image:title>
      <image:caption>Cover for the Claude Opus 5 guide: benchmarks, the $5/$25 cost math, effort levels, and the two API breaking changes in the Opus 4.8 migration</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/rag-chatbot-nextjs-guide</loc>
    <lastmod>2026-07-21</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/rag-chatbot-nextjs-guide-cover.png</image:loc>
      <image:title>A RAG chatbot in Next.js: embed the query, search pgvector, augment the prompt, stream a cited answer</image:title>
      <image:caption>A RAG chatbot in Next.js: embed the query, search pgvector, augment the prompt, stream a cited answer</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/react-server-components-guide</loc>
    <lastmod>2026-07-21</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/react-server-components-guide-cover.png</image:loc>
      <image:title>React Server Components and the use client boundary: server graph, client graph, and where the line is drawn</image:title>
      <image:caption>React Server Components and the use client boundary: server graph, client graph, and where the line is drawn</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/vercel-ai-sdk-production-guide</loc>
    <lastmod>2026-07-21</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/vercel-ai-sdk-production-guide-cover.png</image:loc>
      <image:title>The production layer of a Vercel AI SDK app: streaming, tool-calling, abort, rate limiting, and cost control</image:title>
      <image:caption>The production layer of a Vercel AI SDK app: streaming, tool-calling, abort, rate limiting, and cost control</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/kimi-k3-vs-claude-fable-5</loc>
    <lastmod>2026-08-06</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/kimi-k3-vs-fable-5-cover.png</image:loc>
      <image:title>Kimi K3 vs Claude Fable 5 head-to-head showing benchmarks, pricing, and where the open 2.8T model wins</image:title>
      <image:caption>Kimi K3 vs Claude Fable 5 head-to-head showing benchmarks, pricing, and where the open 2.8T model wins</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/kimi-k3-benchmark-scorecard.png</image:loc>
      <image:title>Kimi K3 vs Claude Fable 5 head-to-head showing benchmarks, pricing, and where the open 2.8T model wins</image:title>
      <image:caption>Kimi K3 vs Claude Fable 5 head-to-head showing benchmarks, pricing, and where the open 2.8T model wins</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/kimi-k3-cost-comparison.png</image:loc>
      <image:title>Kimi K3 vs Claude Fable 5 head-to-head showing benchmarks, pricing, and where the open 2.8T model wins</image:title>
      <image:caption>Kimi K3 vs Claude Fable 5 head-to-head showing benchmarks, pricing, and where the open 2.8T model wins</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/kimi-k3-architecture.png</image:loc>
      <image:title>Kimi K3 vs Claude Fable 5 head-to-head showing benchmarks, pricing, and where the open 2.8T model wins</image:title>
      <image:caption>Kimi K3 vs Claude Fable 5 head-to-head showing benchmarks, pricing, and where the open 2.8T model wins</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/streaming-html-out-of-order-without-javascript</loc>
    <lastmod>2026-07-14</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/streaming-html-out-of-order-without-javascript-cover.png</image:loc>
      <image:title>Cover showing an HTML document streaming placeholder markers that get filled out of order by template-for elements, with no JavaScript</image:title>
      <image:caption>Cover showing an HTML document streaming placeholder markers that get filled out of order by template-for elements, with no JavaScript</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/chatgpt-apps-sdk-super-app-guide</loc>
    <lastmod>2026-07-11</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/chatgpt-apps-sdk-cover.png</image:loc>
      <image:title>ChatGPT super app reform showing the Apps SDK built on MCP with inline app UIs and the App Directory</image:title>
      <image:caption>ChatGPT super app reform showing the Apps SDK built on MCP with inline app UIs and the App Directory</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/chatgpt-super-app-anatomy.png</image:loc>
      <image:title>ChatGPT super app reform showing the Apps SDK built on MCP with inline app UIs and the App Directory</image:title>
      <image:caption>ChatGPT super app reform showing the Apps SDK built on MCP with inline app UIs and the App Directory</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/chatgpt-apps-sdk-architecture.png</image:loc>
      <image:title>ChatGPT super app reform showing the Apps SDK built on MCP with inline app UIs and the App Directory</image:title>
      <image:caption>ChatGPT super app reform showing the Apps SDK built on MCP with inline app UIs and the App Directory</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/gpt-5-6-sol-vs-terra-vs-luna</loc>
    <lastmod>2026-08-06</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/gpt-5-6-sol-terra-luna-cover.png</image:loc>
      <image:title>GPT-5.6 Sol vs Terra vs Luna comparison showing price, coding strength, and cost per task</image:title>
      <image:caption>GPT-5.6 Sol vs Terra vs Luna comparison showing price, coding strength, and cost per task</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/gpt-5-6-routing-map.png</image:loc>
      <image:title>GPT-5.6 Sol vs Terra vs Luna comparison showing price, coding strength, and cost per task</image:title>
      <image:caption>GPT-5.6 Sol vs Terra vs Luna comparison showing price, coding strength, and cost per task</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/openai-gpt-5-6-sol-terra-luna-guide</loc>
    <lastmod>2026-08-06</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/gpt-5-6-cover.png</image:loc>
      <image:title>OpenAI GPT-5.6 family showing Sol, Terra, and Luna tiers with benchmarks, pricing, and 1.05M context</image:title>
      <image:caption>OpenAI GPT-5.6 family showing Sol, Terra, and Luna tiers with benchmarks, pricing, and 1.05M context</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/gpt-5-6-family-tiers.png</image:loc>
      <image:title>OpenAI GPT-5.6 family showing Sol, Terra, and Luna tiers with benchmarks, pricing, and 1.05M context</image:title>
      <image:caption>OpenAI GPT-5.6 family showing Sol, Terra, and Luna tiers with benchmarks, pricing, and 1.05M context</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/gpt-5-6-coding-benchmarks.png</image:loc>
      <image:title>OpenAI GPT-5.6 family showing Sol, Terra, and Luna tiers with benchmarks, pricing, and 1.05M context</image:title>
      <image:caption>OpenAI GPT-5.6 family showing Sol, Terra, and Luna tiers with benchmarks, pricing, and 1.05M context</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/build-enterprise-ai-agents-free</loc>
    <lastmod>2026-07-08</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/build-enterprise-ai-agents-free-cover.png</image:loc>
      <image:title>Editorial cover: build enterprise-grade AI agents for free with open-source MaxKB, $0 API cost, self-hosted</image:title>
      <image:caption>Editorial cover: build enterprise-grade AI agents for free with open-source MaxKB, $0 API cost, self-hosted</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/free-enterprise-agents-stack.card.png</image:loc>
      <image:title>Editorial cover: build enterprise-grade AI agents for free with open-source MaxKB, $0 API cost, self-hosted</image:title>
      <image:caption>Editorial cover: build enterprise-grade AI agents for free with open-source MaxKB, $0 API cost, self-hosted</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/free-enterprise-agents-rag-precision.card.png</image:loc>
      <image:title>Editorial cover: build enterprise-grade AI agents for free with open-source MaxKB, $0 API cost, self-hosted</image:title>
      <image:caption>Editorial cover: build enterprise-grade AI agents for free with open-source MaxKB, $0 API cost, self-hosted</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/free-enterprise-agents-cost.card.png</image:loc>
      <image:title>Editorial cover: build enterprise-grade AI agents for free with open-source MaxKB, $0 API cost, self-hosted</image:title>
      <image:caption>Editorial cover: build enterprise-grade AI agents for free with open-source MaxKB, $0 API cost, self-hosted</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/http-query-method-rfc-10008-guide</loc>
    <lastmod>2026-07-03</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/http-query-method-rfc-10008-guide-cover.png</image:loc>
      <image:title>Cover for the HTTP QUERY method guide: RFC 10008&apos;s safe, idempotent, cacheable request method with a body, explained for REST API designers</image:title>
      <image:caption>Cover for the HTTP QUERY method guide: RFC 10008&apos;s safe, idempotent, cacheable request method with a body, explained for REST API designers</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/http-query-method-gap.png</image:loc>
      <image:title>Cover for the HTTP QUERY method guide: RFC 10008&apos;s safe, idempotent, cacheable request method with a body, explained for REST API designers</image:title>
      <image:caption>Cover for the HTTP QUERY method guide: RFC 10008&apos;s safe, idempotent, cacheable request method with a body, explained for REST API designers</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/http-query-standards-timeline.png</image:loc>
      <image:title>Cover for the HTTP QUERY method guide: RFC 10008&apos;s safe, idempotent, cacheable request method with a body, explained for REST API designers</image:title>
      <image:caption>Cover for the HTTP QUERY method guide: RFC 10008&apos;s safe, idempotent, cacheable request method with a body, explained for REST API designers</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/http-query-caching-flow.png</image:loc>
      <image:title>Cover for the HTTP QUERY method guide: RFC 10008&apos;s safe, idempotent, cacheable request method with a body, explained for REST API designers</image:title>
      <image:caption>Cover for the HTTP QUERY method guide: RFC 10008&apos;s safe, idempotent, cacheable request method with a body, explained for REST API designers</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/http-query-adoption-map.png</image:loc>
      <image:title>Cover for the HTTP QUERY method guide: RFC 10008&apos;s safe, idempotent, cacheable request method with a body, explained for REST API designers</image:title>
      <image:caption>Cover for the HTTP QUERY method guide: RFC 10008&apos;s safe, idempotent, cacheable request method with a body, explained for REST API designers</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/claude-fable-5-guide</loc>
    <lastmod>2026-07-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/claude-fable-5-guide-cover.png</image:loc>
      <image:title>Cover for the Claude Fable 5 deep-dive guide: capabilities, the $10/$50 cost math, API behavior, and when to use Anthropic&apos;s most capable model</image:title>
      <image:caption>Cover for the Claude Fable 5 deep-dive guide: capabilities, the $10/$50 cost math, API behavior, and when to use Anthropic&apos;s most capable model</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/claude-sonnet-5-guide</loc>
    <lastmod>2026-08-06</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/claude-sonnet-5-guide-cover.png</image:loc>
      <image:title>Cover for the Claude Sonnet 5 guide: benchmarks, pros and cons, use cases, and cost math versus Sonnet 4.6 and Opus 4.8</image:title>
      <image:caption>Cover for the Claude Sonnet 5 guide: benchmarks, pros and cons, use cases, and cost math versus Sonnet 4.6 and Opus 4.8</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/claude-code-auto-mode-production-field-report</loc>
    <lastmod>2026-06-25</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/claude-code-auto-mode-production-field-report-cover.png</image:loc>
      <image:title>Field report cover: a week of running Claude Code auto mode in production, showing what it nailed, where it broke, and the cost</image:title>
      <image:caption>Field report cover: a week of running Claude Code auto mode in production, showing what it nailed, where it broke, and the cost</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/claude-code-vs-cursor-production-work-2026</loc>
    <lastmod>2026-06-25</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/claude-code-vs-cursor-production-work-2026-cover.png</image:loc>
      <image:title>Decision matrix cover comparing Claude Code, Cursor, and GitHub Copilot for real production work in 2026</image:title>
      <image:caption>Decision matrix cover comparing Claude Code, Cursor, and GitHub Copilot for real production work in 2026</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/use-claude-code-codex-for-free</loc>
    <lastmod>2026-06-23</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/use-claude-code-codex-for-free-cover.png</image:loc>
      <image:title>Cover comparing free and paid access to Claude Code, Codex, Gemini CLI, and GitHub Copilot AI coding agents in 2026</image:title>
      <image:caption>Cover comparing free and paid access to Claude Code, Codex, Gemini CLI, and GitHub Copilot AI coding agents in 2026</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/fastapi-spa-app-frontend-explained</loc>
    <lastmod>2026-06-21</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/fastapi-spa-app-frontend-explained-cover.png</image:loc>
      <image:title>Cover showing FastAPI&apos;s new app.frontend() method mounting a built SPA directory alongside API routes</image:title>
      <image:caption>Cover showing FastAPI&apos;s new app.frontend() method mounting a built SPA directory alongside API routes</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/agentic-browsing-pagespeed-ai-ready</loc>
    <lastmod>2026-06-19</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/agentic-browsing-pagespeed-ai-ready-cover.png</image:loc>
      <image:title>The Agentic Browsing category in PageSpeed Insights scoring a website for AI agents alongside Performance, Accessibility, Best Practices and SEO</image:title>
      <image:caption>The Agentic Browsing category in PageSpeed Insights scoring a website for AI agents alongside Performance, Accessibility, Best Practices and SEO</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/agentic-browsing-pagespeed-ai-ready-lighthouse-result.png</image:loc>
      <image:title>The Agentic Browsing category in PageSpeed Insights scoring a website for AI agents alongside Performance, Accessibility, Best Practices and SEO</image:title>
      <image:caption>The Agentic Browsing category in PageSpeed Insights scoring a website for AI agents alongside Performance, Accessibility, Best Practices and SEO</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/autonomous-ai-agents-production-gap-2026</loc>
    <lastmod>2026-06-14</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/autonomous-ai-agents-production-gap-2026-cover.png</image:loc>
      <image:title>Editorial cover: the demo-to-production gap for autonomous AI agents in 2026</image:title>
      <image:caption>Editorial cover: the demo-to-production gap for autonomous AI agents in 2026</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/autonomous-agents-production-gap.card.png</image:loc>
      <image:title>Editorial cover: the demo-to-production gap for autonomous AI agents in 2026</image:title>
      <image:caption>Editorial cover: the demo-to-production gap for autonomous AI agents in 2026</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/autonomous-agents-compounding-error.card.png</image:loc>
      <image:title>Editorial cover: the demo-to-production gap for autonomous AI agents in 2026</image:title>
      <image:caption>Editorial cover: the demo-to-production gap for autonomous AI agents in 2026</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/autonomous-agents-autonomy-spectrum.card.png</image:loc>
      <image:title>Editorial cover: the demo-to-production gap for autonomous AI agents in 2026</image:title>
      <image:caption>Editorial cover: the demo-to-production gap for autonomous AI agents in 2026</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/autonomous-agents-lassie-case-study.card.png</image:loc>
      <image:title>Editorial cover: the demo-to-production gap for autonomous AI agents in 2026</image:title>
      <image:caption>Editorial cover: the demo-to-production gap for autonomous AI agents in 2026</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/claude-fable-5-streaming-microservice-one-day</loc>
    <lastmod>2026-06-13</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/claude-fable-5-streaming-microservice-one-day-cover.png</image:loc>
      <image:title>Cover showing the one-day flow of Claude Fable 5 building a streaming microservice: spec, infrastructure, code, and ship</image:title>
      <image:caption>Cover showing the one-day flow of Claude Fable 5 building a streaming microservice: spec, infrastructure, code, and ship</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/fable-auto-mode-timeline.png</image:loc>
      <image:title>Cover showing the one-day flow of Claude Fable 5 building a streaming microservice: spec, infrastructure, code, and ship</image:title>
      <image:caption>Cover showing the one-day flow of Claude Fable 5 building a streaming microservice: spec, infrastructure, code, and ship</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/fable-streaming-architecture.png</image:loc>
      <image:title>Cover showing the one-day flow of Claude Fable 5 building a streaming microservice: spec, infrastructure, code, and ship</image:title>
      <image:caption>Cover showing the one-day flow of Claude Fable 5 building a streaming microservice: spec, infrastructure, code, and ship</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/build-rag-pipeline-from-scratch</loc>
    <lastmod>2026-06-08</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/build-rag-pipeline-from-scratch-cover.png</image:loc>
      <image:title>The stages of a production retrieval-augmented generation pipeline</image:title>
      <image:caption>The stages of a production retrieval-augmented generation pipeline</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/cursor-vs-claude-code-vs-copilot</loc>
    <lastmod>2026-06-08</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/cursor-vs-claude-code-vs-copilot-cover.png</image:loc>
      <image:title>Comparison of Cursor, Claude Code, and GitHub Copilot AI coding tools</image:title>
      <image:caption>Comparison of Cursor, Claude Code, and GitHub Copilot AI coding tools</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/deploy-mcp-server-cloudflare-workers</loc>
    <lastmod>2026-06-08</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/deploy-mcp-server-cloudflare-workers-cover.png</image:loc>
      <image:title>Deploying a Model Context Protocol server to the edge on Cloudflare Workers</image:title>
      <image:caption>Deploying a Model Context Protocol server to the edge on Cloudflare Workers</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/how-to-build-mcp-server</loc>
    <lastmod>2026-07-21</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/how-to-build-mcp-server-cover.png</image:loc>
      <image:title>Architecture of a production Model Context Protocol server on Cloudflare Workers</image:title>
      <image:caption>Architecture of a production Model Context Protocol server on Cloudflare Workers</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/how-to-write-claude-md</loc>
    <lastmod>2026-06-08</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/how-to-write-claude-md-cover.png</image:loc>
      <image:title>Anatomy of an effective CLAUDE.md project context file for Claude Code</image:title>
      <image:caption>Anatomy of an effective CLAUDE.md project context file for Claude Code</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/claude-swap-multi-account-switcher-guide</loc>
    <lastmod>2026-07-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/claude-swap-multi-account-switcher-guide-cover.png</image:loc>
      <image:title>claude-swap cover showing the four-step flow of switching Claude Code accounts: add account, switch, restore credentials, restart</image:title>
      <image:caption>claude-swap cover showing the four-step flow of switching Claude Code accounts: add account, switch, restore credentials, restart</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/claude-swap-flow.png</image:loc>
      <image:title>claude-swap cover showing the four-step flow of switching Claude Code accounts: add account, switch, restore credentials, restart</image:title>
      <image:caption>claude-swap cover showing the four-step flow of switching Claude Code accounts: add account, switch, restore credentials, restart</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/claude-swap-storage.png</image:loc>
      <image:title>claude-swap cover showing the four-step flow of switching Claude Code accounts: add account, switch, restore credentials, restart</image:title>
      <image:caption>claude-swap cover showing the four-step flow of switching Claude Code accounts: add account, switch, restore credentials, restart</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/claude-code-leak-march-2026</loc>
    <lastmod>2026-04-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/claude-code-leak-cover.png</image:loc>
      <image:title>Claude Code source map leak visualization showing 512K lines of TypeScript escaping a code window with key stats</image:title>
      <image:caption>Claude Code source map leak visualization showing 512K lines of TypeScript escaping a code window with key stats</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/claude-code-leak-pipeline.png</image:loc>
      <image:title>Claude Code source map leak visualization showing 512K lines of TypeScript escaping a code window with key stats</image:title>
      <image:caption>Claude Code source map leak visualization showing 512K lines of TypeScript escaping a code window with key stats</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/axios-compromised-npm-cross-platform-rat</loc>
    <lastmod>2026-03-31</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/axios-compromised-npm-cover.png</image:loc>
      <image:title>Editorial cover: the Axios npm supply-chain compromise (1.14.1 and 0.30.4)</image:title>
      <image:caption>Editorial cover: the Axios npm supply-chain compromise (1.14.1 and 0.30.4)</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/nvidia-openclaw-strategy-ai-agent-plan</loc>
    <lastmod>2026-03-17</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/nvidia-openclaw-cover.png</image:loc>
      <image:title>Nvidia OpenClaw strategy cover showing task assignment, agent execution, guardrails, and enterprise runtime control</image:title>
      <image:caption>Nvidia OpenClaw strategy cover showing task assignment, agent execution, guardrails, and enterprise runtime control</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/nvidia-openclaw-shift.png</image:loc>
      <image:title>Nvidia OpenClaw strategy cover showing task assignment, agent execution, guardrails, and enterprise runtime control</image:title>
      <image:caption>Nvidia OpenClaw strategy cover showing task assignment, agent execution, guardrails, and enterprise runtime control</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/nvidia-agent-runtime-stack.png</image:loc>
      <image:title>Nvidia OpenClaw strategy cover showing task assignment, agent execution, guardrails, and enterprise runtime control</image:title>
      <image:caption>Nvidia OpenClaw strategy cover showing task assignment, agent execution, guardrails, and enterprise runtime control</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/chatgpt-adult-mode-delay-guide</loc>
    <lastmod>2026-03-16</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/chatgpt-adult-mode-cover.png</image:loc>
      <image:title>ChatGPT adult mode cover showing age prediction, adult verification, text-only scope, and safety guardrails</image:title>
      <image:caption>ChatGPT adult mode cover showing age prediction, adult verification, text-only scope, and safety guardrails</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/chatgpt-adult-mode-scope.png</image:loc>
      <image:title>ChatGPT adult mode cover showing age prediction, adult verification, text-only scope, and safety guardrails</image:title>
      <image:caption>ChatGPT adult mode cover showing age prediction, adult verification, text-only scope, and safety guardrails</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/chatgpt-adult-mode-tension-map.png</image:loc>
      <image:title>ChatGPT adult mode cover showing age prediction, adult verification, text-only scope, and safety guardrails</image:title>
      <image:caption>ChatGPT adult mode cover showing age prediction, adult verification, text-only scope, and safety guardrails</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/chatgpt-interactive-math-science-visuals-guide</loc>
    <lastmod>2026-03-12</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/chatgpt-learning-visuals-cover.png</image:loc>
      <image:title>ChatGPT interactive learning cover showing math and science concepts becoming visual and interactive inside ChatGPT</image:title>
      <image:caption>ChatGPT interactive learning cover showing math and science concepts becoming visual and interactive inside ChatGPT</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/chatgpt-learning-loop.png</image:loc>
      <image:title>ChatGPT interactive learning cover showing math and science concepts becoming visual and interactive inside ChatGPT</image:title>
      <image:caption>ChatGPT interactive learning cover showing math and science concepts becoming visual and interactive inside ChatGPT</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/chatgpt-math-science-topic-map.png</image:loc>
      <image:title>ChatGPT interactive learning cover showing math and science concepts becoming visual and interactive inside ChatGPT</image:title>
      <image:caption>ChatGPT interactive learning cover showing math and science concepts becoming visual and interactive inside ChatGPT</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/anthropic-code-review-claude-code-guide</loc>
    <lastmod>2026-03-10</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/anthropic-code-review-cover.png</image:loc>
      <image:title>Anthropic Code Review cover showing multi-agent pull request review across repository context and custom review rules</image:title>
      <image:caption>Anthropic Code Review cover showing multi-agent pull request review across repository context and custom review rules</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/anthropic-code-review-loop.png</image:loc>
      <image:title>Anthropic Code Review cover showing multi-agent pull request review across repository context and custom review rules</image:title>
      <image:caption>Anthropic Code Review cover showing multi-agent pull request review across repository context and custom review rules</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/anthropic-code-review-stack.png</image:loc>
      <image:title>Anthropic Code Review cover showing multi-agent pull request review across repository context and custom review rules</image:title>
      <image:caption>Anthropic Code Review cover showing multi-agent pull request review across repository context and custom review rules</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/agentic-ai-enterprise-security-model</loc>
    <lastmod>2026-03-09</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/agentic-ai-enterprise-security-cover.png</image:loc>
      <image:title>Agentic AI enterprise security cover showing identity, prompt injection, policy gates, and observability</image:title>
      <image:caption>Agentic AI enterprise security cover showing identity, prompt injection, policy gates, and observability</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/agentic-ai-security-model-shift.png</image:loc>
      <image:title>Agentic AI enterprise security cover showing identity, prompt injection, policy gates, and observability</image:title>
      <image:caption>Agentic AI enterprise security cover showing identity, prompt injection, policy gates, and observability</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/agentic-ai-control-plane.png</image:loc>
      <image:title>Agentic AI enterprise security cover showing identity, prompt injection, policy gates, and observability</image:title>
      <image:caption>Agentic AI enterprise security cover showing identity, prompt injection, policy gates, and observability</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/openai-gpt-5-4-complete-guide</loc>
    <lastmod>2026-08-06</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/gpt-5-4-cover.png</image:loc>
      <image:title>OpenAI GPT-5.4 overview showing professional work, coding, computer use, and 1M context</image:title>
      <image:caption>OpenAI GPT-5.4 overview showing professional work, coding, computer use, and 1M context</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/gpt-5-4-capability-stack.png</image:loc>
      <image:title>OpenAI GPT-5.4 overview showing professional work, coding, computer use, and 1M context</image:title>
      <image:caption>OpenAI GPT-5.4 overview showing professional work, coding, computer use, and 1M context</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/gpt-5-4-model-selection-map.png</image:loc>
      <image:title>OpenAI GPT-5.4 overview showing professional work, coding, computer use, and 1M context</image:title>
      <image:caption>OpenAI GPT-5.4 overview showing professional work, coding, computer use, and 1M context</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/openai-gpt-5-3-instant-fewer-refusals-better-answers</loc>
    <lastmod>2026-03-04</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/gpt-5-3-instant-cover.png</image:loc>
      <image:title>OpenAI GPT-5.3 Instant overview showing three key improvements: fewer refusals, better web answers, and smoother conversational tone</image:title>
      <image:caption>OpenAI GPT-5.3 Instant overview showing three key improvements: fewer refusals, better web answers, and smoother conversational tone</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/gpt-5-3-instant-improvement-map.png</image:loc>
      <image:title>OpenAI GPT-5.3 Instant overview showing three key improvements: fewer refusals, better web answers, and smoother conversational tone</image:title>
      <image:caption>OpenAI GPT-5.3 Instant overview showing three key improvements: fewer refusals, better web answers, and smoother conversational tone</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/gpt-5-3-instant-hallucination-reduction.png</image:loc>
      <image:title>OpenAI GPT-5.3 Instant overview showing three key improvements: fewer refusals, better web answers, and smoother conversational tone</image:title>
      <image:caption>OpenAI GPT-5.3 Instant overview showing three key improvements: fewer refusals, better web answers, and smoother conversational tone</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/gpt-5-3-instant-vs-5-2-comparison.png</image:loc>
      <image:title>OpenAI GPT-5.3 Instant overview showing three key improvements: fewer refusals, better web answers, and smoother conversational tone</image:title>
      <image:caption>OpenAI GPT-5.3 Instant overview showing three key improvements: fewer refusals, better web answers, and smoother conversational tone</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/deepseek-v4-release-challenge-us-ai-rivals</loc>
    <lastmod>2026-03-01</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/deepseek-v4-release-cover.png</image:loc>
      <image:title>DeepSeek V4 launch preview showing AI model race between China-first chips and U.S. rivals</image:title>
      <image:caption>DeepSeek V4 launch preview showing AI model race between China-first chips and U.S. rivals</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/deepseek-v4-competition-map.png</image:loc>
      <image:title>DeepSeek V4 launch preview showing AI model race between China-first chips and U.S. rivals</image:title>
      <image:caption>DeepSeek V4 launch preview showing AI model race between China-first chips and U.S. rivals</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/rag-vs-fine-tuning-llms-2026</loc>
    <lastmod>2026-02-28</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/rag-vs-fine-tuning-llms-2026-cover.png</image:loc>
      <image:title>RAG vs fine-tuning architecture comparison for LLMs</image:title>
      <image:caption>RAG vs fine-tuning architecture comparison for LLMs</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/rag-vs-fine-tuning-architecture.png</image:loc>
      <image:title>RAG vs fine-tuning architecture comparison for LLMs</image:title>
      <image:caption>RAG vs fine-tuning architecture comparison for LLMs</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/rag-vs-fine-tuning-decision-tree.png</image:loc>
      <image:title>RAG vs fine-tuning architecture comparison for LLMs</image:title>
      <image:caption>RAG vs fine-tuning architecture comparison for LLMs</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/figma-codex-react-2026</loc>
    <lastmod>2026-02-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/figma-codex-react-cover.png</image:loc>
      <image:title>Editorial cover: converting Figma designs to React with OpenAI Codex</image:title>
      <image:caption>Editorial cover: converting Figma designs to React with OpenAI Codex</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/cloudflare-vinext-next-js-vite-revolution</loc>
    <lastmod>2026-02-25</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/cloudflare-vinext-cover.png</image:loc>
      <image:title>A lightning bolt splitting between Next.js and Vite logos, symbolizing Cloudflare&apos;s revolutionary Vinext framework that&apos;s 4.4x faster</image:title>
      <image:caption>A lightning bolt splitting between Next.js and Vite logos, symbolizing Cloudflare&apos;s revolutionary Vinext framework that&apos;s 4.4x faster</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/vinext-ai-development-comparison.png</image:loc>
      <image:title>A lightning bolt splitting between Next.js and Vite logos, symbolizing Cloudflare&apos;s revolutionary Vinext framework that&apos;s 4.4x faster</image:title>
      <image:caption>A lightning bolt splitting between Next.js and Vite logos, symbolizing Cloudflare&apos;s revolutionary Vinext framework that&apos;s 4.4x faster</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/vinext-traffic-aware-prerendering.png</image:loc>
      <image:title>A lightning bolt splitting between Next.js and Vite logos, symbolizing Cloudflare&apos;s revolutionary Vinext framework that&apos;s 4.4x faster</image:title>
      <image:caption>A lightning bolt splitting between Next.js and Vite logos, symbolizing Cloudflare&apos;s revolutionary Vinext framework that&apos;s 4.4x faster</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/vinext-dx-performance-evolution.png</image:loc>
      <image:title>A lightning bolt splitting between Next.js and Vite logos, symbolizing Cloudflare&apos;s revolutionary Vinext framework that&apos;s 4.4x faster</image:title>
      <image:caption>A lightning bolt splitting between Next.js and Vite logos, symbolizing Cloudflare&apos;s revolutionary Vinext framework that&apos;s 4.4x faster</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/anthropic-detecting-preventing-distillation-attacks</loc>
    <lastmod>2026-02-24</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/distillation-attacks-cover.png</image:loc>
      <image:title>A glowing AI brain being extracted through a network of fraudulent connections representing the massive distillation attack on Claude</image:title>
      <image:caption>A glowing AI brain being extracted through a network of fraudulent connections representing the massive distillation attack on Claude</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/hydra-network-proxy-attacks.png</image:loc>
      <image:title>A glowing AI brain being extracted through a network of fraudulent connections representing the massive distillation attack on Claude</image:title>
      <image:caption>A glowing AI brain being extracted through a network of fraudulent connections representing the massive distillation attack on Claude</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/ai-national-security-threat.png</image:loc>
      <image:title>A glowing AI brain being extracted through a network of fraudulent connections representing the massive distillation attack on Claude</image:title>
      <image:caption>A glowing AI brain being extracted through a network of fraudulent connections representing the massive distillation attack on Claude</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/local-llm-coding-revolution-qwen3-coder-desktop</loc>
    <lastmod>2026-02-22</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/local-llm-coding-cover.png</image:loc>
      <image:title>A desktop workstation running a local LLM for coding — 80 billion parameters, 3 billion active — representing the shift from cloud AI to local AI coding</image:title>
      <image:caption>A desktop workstation running a local LLM for coding — 80 billion parameters, 3 billion active — representing the shift from cloud AI to local AI coding</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/local-llm-moe-architecture.png</image:loc>
      <image:title>A desktop workstation running a local LLM for coding — 80 billion parameters, 3 billion active — representing the shift from cloud AI to local AI coding</image:title>
      <image:caption>A desktop workstation running a local LLM for coding — 80 billion parameters, 3 billion active — representing the shift from cloud AI to local AI coding</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/local-llm-cost-breakeven.png</image:loc>
      <image:title>A desktop workstation running a local LLM for coding — 80 billion parameters, 3 billion active — representing the shift from cloud AI to local AI coding</image:title>
      <image:caption>A desktop workstation running a local LLM for coding — 80 billion parameters, 3 billion active — representing the shift from cloud AI to local AI coding</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/local-llm-quantization-tradeoff.png</image:loc>
      <image:title>A desktop workstation running a local LLM for coding — 80 billion parameters, 3 billion active — representing the shift from cloud AI to local AI coding</image:title>
      <image:caption>A desktop workstation running a local LLM for coding — 80 billion parameters, 3 billion active — representing the shift from cloud AI to local AI coding</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/local-llm-hardware-tiers.png</image:loc>
      <image:title>A desktop workstation running a local LLM for coding — 80 billion parameters, 3 billion active — representing the shift from cloud AI to local AI coding</image:title>
      <image:caption>A desktop workstation running a local LLM for coding — 80 billion parameters, 3 billion active — representing the shift from cloud AI to local AI coding</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/spec-driven-development-ai-agents-addy-osmani</loc>
    <lastmod>2026-02-21</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/spec-driven-dev-cover.png</image:loc>
      <image:title>Three AI coding agents — database, security, and test — sitting at terminal screens writing and reviewing code, all guided by a central SPEC.md specification document</image:title>
      <image:caption>Three AI coding agents — database, security, and test — sitting at terminal screens writing and reviewing code, all guided by a central SPEC.md specification document</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/spec-driven-dev-the-gap.png</image:loc>
      <image:title>Three AI coding agents — database, security, and test — sitting at terminal screens writing and reviewing code, all guided by a central SPEC.md specification document</image:title>
      <image:caption>Three AI coding agents — database, security, and test — sitting at terminal screens writing and reviewing code, all guided by a central SPEC.md specification document</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/spec-driven-dev-curse-of-instructions.png</image:loc>
      <image:title>Three AI coding agents — database, security, and test — sitting at terminal screens writing and reviewing code, all guided by a central SPEC.md specification document</image:title>
      <image:caption>Three AI coding agents — database, security, and test — sitting at terminal screens writing and reviewing code, all guided by a central SPEC.md specification document</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/spec-driven-dev-three-tier-boundaries.png</image:loc>
      <image:title>Three AI coding agents — database, security, and test — sitting at terminal screens writing and reviewing code, all guided by a central SPEC.md specification document</image:title>
      <image:caption>Three AI coding agents — database, security, and test — sitting at terminal screens writing and reviewing code, all guided by a central SPEC.md specification document</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/spec-driven-dev-four-phase-workflow.png</image:loc>
      <image:title>Three AI coding agents — database, security, and test — sitting at terminal screens writing and reviewing code, all guided by a central SPEC.md specification document</image:title>
      <image:caption>Three AI coding agents — database, security, and test — sitting at terminal screens writing and reviewing code, all guided by a central SPEC.md specification document</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/spec-driven-dev-vibe-vs-production.png</image:loc>
      <image:title>Three AI coding agents — database, security, and test — sitting at terminal screens writing and reviewing code, all guided by a central SPEC.md specification document</image:title>
      <image:caption>Three AI coding agents — database, security, and test — sitting at terminal screens writing and reviewing code, all guided by a central SPEC.md specification document</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/spec-driven-dev-engineering-manager.png</image:loc>
      <image:title>Three AI coding agents — database, security, and test — sitting at terminal screens writing and reviewing code, all guided by a central SPEC.md specification document</image:title>
      <image:caption>Three AI coding agents — database, security, and test — sitting at terminal screens writing and reviewing code, all guided by a central SPEC.md specification document</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/nodejs-memory-cut-in-half-pointer-compression</loc>
    <lastmod>2026-02-18</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/nodejs-memory-cut-in-half-cover.png</image:loc>
      <image:title>Editorial cover: Node.js V8 pointer compression cuts heap memory in half</image:title>
      <image:caption>Editorial cover: Node.js V8 pointer compression cuts heap memory in half</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/agents-md-ai-coding-agents-study</loc>
    <lastmod>2026-02-17</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/agents-md-cover.png</image:loc>
      <image:title>AGENTS.md study results showing a document icon next to a declining performance chart from ETH Zurich&apos;s 138-repo benchmark</image:title>
      <image:caption>AGENTS.md study results showing a document icon next to a declining performance chart from ETH Zurich&apos;s 138-repo benchmark</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/agents-md-format-war.png</image:loc>
      <image:title>AGENTS.md study results showing a document icon next to a declining performance chart from ETH Zurich&apos;s 138-repo benchmark</image:title>
      <image:caption>AGENTS.md study results showing a document icon next to a declining performance chart from ETH Zurich&apos;s 138-repo benchmark</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/docker-swarm-vs-kubernetes-166-dollar-reality-check</loc>
    <lastmod>2026-02-17</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/docker-swarm-vs-k8s-cover.png</image:loc>
      <image:title>Docker Swarm versus Kubernetes cost comparison: $166 per year simple setup versus $200K complex infrastructure</image:title>
      <image:caption>Docker Swarm versus Kubernetes cost comparison: $166 per year simple setup versus $200K complex infrastructure</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/docker-swarm-yaml-comparison.png</image:loc>
      <image:title>Docker Swarm versus Kubernetes cost comparison: $166 per year simple setup versus $200K complex infrastructure</image:title>
      <image:caption>Docker Swarm versus Kubernetes cost comparison: $166 per year simple setup versus $200K complex infrastructure</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/seedance-2-hollywood-ai-copyright-crisis</loc>
    <lastmod>2026-02-16</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/seedance-cover.png</image:loc>
      <image:title>The Seedance 2.0 crisis: Hollywood confrontation with AI-generated video showing film reel colliding with AI</image:title>
      <image:caption>The Seedance 2.0 crisis: Hollywood confrontation with AI-generated video showing film reel colliding with AI</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/seedance-competitive-landscape.png</image:loc>
      <image:title>The Seedance 2.0 crisis: Hollywood confrontation with AI-generated video showing film reel colliding with AI</image:title>
      <image:caption>The Seedance 2.0 crisis: Hollywood confrontation with AI-generated video showing film reel colliding with AI</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/ai-agent-attacks-developer-matplotlib-open-source</loc>
    <lastmod>2026-02-15</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/ai-agent-matplotlib-cover.png</image:loc>
      <image:title>Editorial cover: an AI agent&apos;s autonomous retaliation against an open-source maintainer</image:title>
      <image:caption>Editorial cover: an AI agent&apos;s autonomous retaliation against an open-source maintainer</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/ai-agent-retaliation.webp</image:loc>
      <image:title>Editorial cover: an AI agent&apos;s autonomous retaliation against an open-source maintainer</image:title>
      <image:caption>Editorial cover: an AI agent&apos;s autonomous retaliation against an open-source maintainer</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/ai-code-hacker-dark.webp</image:loc>
      <image:title>Editorial cover: an AI agent&apos;s autonomous retaliation against an open-source maintainer</image:title>
      <image:caption>Editorial cover: an AI agent&apos;s autonomous retaliation against an open-source maintainer</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/ai-future-dark.webp</image:loc>
      <image:title>Editorial cover: an AI agent&apos;s autonomous retaliation against an open-source maintainer</image:title>
      <image:caption>Editorial cover: an AI agent&apos;s autonomous retaliation against an open-source maintainer</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/nodejs-backend-for-frontend-developers</loc>
    <lastmod>2026-02-10</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/nodejs-backend-cover.png</image:loc>
      <image:title>Node.js backend architecture showing Express server, middleware chain, REST API endpoints, and database layer</image:title>
      <image:caption>Node.js backend architecture showing Express server, middleware chain, REST API endpoints, and database layer</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/frontend-career-growth-junior-to-senior</loc>
    <lastmod>2026-01-08</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/frontend-career-cover.png</image:loc>
      <image:title>Frontend career growth timeline showing progression from Associate Engineer through to SDE-2 at Expedia Group</image:title>
      <image:caption>Frontend career growth timeline showing progression from Associate Engineer through to SDE-2 at Expedia Group</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/core-web-vitals-optimization-guide</loc>
    <lastmod>2025-11-12</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/core-web-vitals-cover.png</image:loc>
      <image:title>Core Web Vitals dashboard showing three gauge meters for LCP, INP, and CLS with before and after optimization results</image:title>
      <image:caption>Core Web Vitals dashboard showing three gauge meters for LCP, INP, and CLS with before and after optimization results</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/developer-productivity-tools-senior-engineers</loc>
    <lastmod>2025-09-05</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/dev-productivity-cover.png</image:loc>
      <image:title>Developer productivity workspace showing a terminal, editor, and organized workflow system for senior engineers</image:title>
      <image:caption>Developer productivity workspace showing a terminal, editor, and organized workflow system for senior engineers</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/frontend-testing-strategies-2025</loc>
    <lastmod>2025-07-10</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/frontend-testing-cover.png</image:loc>
      <image:title>Frontend testing trophy model with layers for static analysis, integration tests, unit tests, and E2E tests</image:title>
      <image:caption>Frontend testing trophy model with layers for static analysis, integration tests, unit tests, and E2E tests</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/tailwindcss-v4-migration-guide</loc>
    <lastmod>2026-07-21</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/tailwindcss-v4-cover.png</image:loc>
      <image:title>TailwindCSS v4 migration showing the shift from JavaScript config to CSS-first @theme configuration</image:title>
      <image:caption>TailwindCSS v4 migration showing the shift from JavaScript config to CSS-first @theme configuration</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/javascript-es2024-features-you-should-know</loc>
    <lastmod>2025-03-15</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/javascript-es2024-cover.png</image:loc>
      <image:title>JavaScript ES2024 features overview showing Object.groupBy, Promise.withResolvers, Unicode strings, and RegExp v flag</image:title>
      <image:caption>JavaScript ES2024 features overview showing Object.groupBy, Promise.withResolvers, Unicode strings, and RegExp v flag</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/typescript-utility-types-complete-guide</loc>
    <lastmod>2026-07-20</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/typescript-utility-cover.png</image:loc>
      <image:title>TypeScript utility types overview showing Partial, Required, Pick, Omit, and Record with code examples</image:title>
      <image:caption>TypeScript utility types overview showing Partial, Required, Pick, Omit, and Record with code examples</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/react-performance-optimization-techniques</loc>
    <lastmod>2024-11-20</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/react-performance-cover.png</image:loc>
      <image:title>React performance optimization showing 10 techniques including memoization, code splitting, and virtualization</image:title>
      <image:caption>React performance optimization showing 10 techniques including memoization, code splitting, and virtualization</image:caption>
    </image:image>
    
  </url>
  <url>
    <loc>https://umesh-malik.com/blog/sveltekit-vs-nextjs-comparison</loc>
    <lastmod>2024-10-10</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umesh-malik.com/blog/sveltekit-vs-nextjs-cover.png</image:loc>
      <image:title>SvelteKit versus Next.js framework comparison across performance, developer experience, routing, and ecosystem</image:title>
      <image:caption>SvelteKit versus Next.js framework comparison across performance, developer experience, routing, and ecosystem</image:caption>
    </image:image>
    
  </url>
</urlset>