<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://blog.davidhahn.co</loc>
    <lastmod>2026-06-06T17:28:11.591Z</lastmod>
    <changefreq>always</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc>https://blog.davidhahn.co/prompt-engineering-lessons-from-building-a-problem-generator</loc>
    <lastmod>2026-06-06T01:38:58.657Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://blog.davidhahn.co/structured-output-when-to-use-prompting-vs-forced-tool-use</loc>
    <lastmod>2026-06-06T01:34:17.439Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://blog.davidhahn.co/the-llm-as-judge-problem-making-automated-evaluation-reliable</loc>
    <lastmod>2026-06-04T21:51:25.366Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://blog.davidhahn.co/designing-an-llm-system-that-actually-solves-a-real-problem</loc>
    <lastmod>2026-06-04T20:33:38.867Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://blog.davidhahn.co/building-rag-from-scratch-embeddings-pgvector-and-a-bug-worth-knowing</loc>
    <lastmod>2026-06-04T20:27:52.860Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://blog.davidhahn.co/tool-use-how-the-model-calls-your-code-and-what-it-never-sees</loc>
    <lastmod>2026-06-03T00:51:10.774Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://blog.davidhahn.co/why-streaming-changes-how-you-build-llm-powered-interfaces</loc>
    <lastmod>2026-06-03T00:46:31.013Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://blog.davidhahn.co/series/anthropic-api</loc>
    <lastmod>2026-06-06T17:28:11.591Z</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://blog.davidhahn.co/series/study-buddy</loc>
    <lastmod>2026-06-06T17:28:11.591Z</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://blog.davidhahn.co/series/python-for-js</loc>
    <lastmod>2026-06-06T17:28:11.591Z</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://blog.davidhahn.co/archive</loc>
    <lastmod>2026-06-06T17:28:11.591Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://blog.davidhahn.co/recommendations</loc>
    <lastmod>2026-06-06T17:28:11.591Z</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.4</priority>
  </url>
</urlset>