<?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">
  <url>
    <loc>https://anishfyi.com/writings/why-i-hand-wrote-a-javascript-framework/</loc>
    <lastmod>2026-07-29</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.8</priority>
  
    <image:image>
      <image:loc>https://anishfyi.com/writings/why-i-hand-wrote-a-javascript-framework/header.png</image:loc>
      <image:title>Why I hand-wrote a JavaScript framework in 2026</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://anishfyi.com/writings/why-your-scraper-gets-a-403/</loc>
    <lastmod>2026-07-28</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.8</priority>
  
    <image:image>
      <image:loc>https://anishfyi.com/writings/why-your-scraper-gets-a-403/header.png</image:loc>
      <image:title>Why your scraper gets a 403 and your browser does not</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://anishfyi.com/writings/parse-first-escalate-only-what-you-must/</loc>
    <lastmod>2026-07-27</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.8</priority>
  
    <image:image>
      <image:loc>https://anishfyi.com/writings/parse-first-escalate-only-what-you-must/header.png</image:loc>
      <image:title>Parse first, escalate only what you must</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://anishfyi.com/writings/querion-read-only-analyst/</loc>
    <lastmod>2026-06-14</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  
    <image:image>
      <image:loc>https://anishfyi.com/writings/querion-read-only-analyst/header.png</image:loc>
      <image:title>Building Querion: a Read-Only, Natural-Language Data Analyst</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://anishfyi.com/writings/trove-persistent-memory-claude-code/</loc>
    <lastmod>2026-06-10</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  
    <image:image>
      <image:loc>https://anishfyi.com/writings/trove-persistent-memory-claude-code/header.png</image:loc>
      <image:title>Trove: Giving Claude Code a Persistent Memory</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://anishfyi.com/writings/django-rest-framework-apis/</loc>
    <lastmod>2026-05-12</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  
    <image:image>
      <image:loc>https://anishfyi.com/writings/django-rest-framework-apis/header.png</image:loc>
      <image:title>Designing Clean REST APIs with Django REST Framework</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://anishfyi.com/writings/order-state-machine/</loc>
    <lastmod>2026-04-28</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  
    <image:image>
      <image:loc>https://anishfyi.com/writings/order-state-machine/header.png</image:loc>
      <image:title>Modeling an Order Workflow as a State Machine</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://anishfyi.com/writings/hmac-webhook-verification/</loc>
    <lastmod>2026-04-14</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  
    <image:image>
      <image:loc>https://anishfyi.com/writings/hmac-webhook-verification/header.png</image:loc>
      <image:title>Verifying Inbound Webhooks with HMAC Signatures</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://anishfyi.com/writings/n-plus-one-queries/</loc>
    <lastmod>2026-03-30</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  
    <image:image>
      <image:loc>https://anishfyi.com/writings/n-plus-one-queries/header.png</image:loc>
      <image:title>Killing N+1 Queries with select_related and prefetch_related</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://anishfyi.com/writings/redis-caching-django/</loc>
    <lastmod>2026-03-16</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  
    <image:image>
      <image:loc>https://anishfyi.com/writings/redis-caching-django/header.png</image:loc>
      <image:title>Caching High-Traffic Endpoints with Redis</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://anishfyi.com/writings/celery-rabbitmq-jobs/</loc>
    <lastmod>2026-03-02</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  
    <image:image>
      <image:loc>https://anishfyi.com/writings/celery-rabbitmq-jobs/header.png</image:loc>
      <image:title>Background Jobs with Celery and RabbitMQ</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://anishfyi.com/writings/token-authentication-django/</loc>
    <lastmod>2026-02-16</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  
    <image:image>
      <image:loc>https://anishfyi.com/writings/token-authentication-django/header.png</image:loc>
      <image:title>Token Authentication for a Django API</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://anishfyi.com/writings/bulk-update-export-endpoints/</loc>
    <lastmod>2026-02-02</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  
    <image:image>
      <image:loc>https://anishfyi.com/writings/bulk-update-export-endpoints/header.png</image:loc>
      <image:title>Bulk Update and Export Endpoints at Scale</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://anishfyi.com/writings/django-signals/</loc>
    <lastmod>2026-01-19</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  
    <image:image>
      <image:loc>https://anishfyi.com/writings/django-signals/header.png</image:loc>
      <image:title>Decoupling Side Effects with Django Signals</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://anishfyi.com/writings/zero-downtime-migrations/</loc>
    <lastmod>2026-01-05</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  
    <image:image>
      <image:loc>https://anishfyi.com/writings/zero-downtime-migrations/header.png</image:loc>
      <image:title>Zero-Downtime Database Migrations in Django</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://anishfyi.com/writings/elasticsearch-django-search/</loc>
    <lastmod>2025-12-15</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  
    <image:image>
      <image:loc>https://anishfyi.com/writings/elasticsearch-django-search/header.png</image:loc>
      <image:title>Full-Text Search with Elasticsearch and Django</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://anishfyi.com/writings/pdf-generation-reportlab/</loc>
    <lastmod>2025-12-01</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  
    <image:image>
      <image:loc>https://anishfyi.com/writings/pdf-generation-reportlab/header.png</image:loc>
      <image:title>Generating PDF Documents in Django with ReportLab</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://anishfyi.com/writings/testing-django-pytest/</loc>
    <lastmod>2025-11-17</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  
    <image:image>
      <image:loc>https://anishfyi.com/writings/testing-django-pytest/header.png</image:loc>
      <image:title>Testing a Django API with pytest</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://anishfyi.com/writings/production-observability/</loc>
    <lastmod>2025-11-03</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  
    <image:image>
      <image:loc>https://anishfyi.com/writings/production-observability/header.png</image:loc>
      <image:title>Production Observability with Sentry, Prometheus, and Grafana</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://anishfyi.com/writings/dockerizing-django/</loc>
    <lastmod>2025-10-20</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  
    <image:image>
      <image:loc>https://anishfyi.com/writings/dockerizing-django/header.png</image:loc>
      <image:title>Dockerizing a Django App for Dev and Production</image:title>
    </image:image>
  </url>
</urlset>
