<?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://dwsa-mm.com/</loc><lastmod>2026-05-20</lastmod></url>
  <url><loc>https://dwsa-mm.com/blog</loc><lastmod>2026-05-20</lastmod></url>
  <url><loc>https://dwsa-mm.com/about</loc><lastmod>2026-05-28</lastmod></url>
  
  <url>
    <loc>https://dwsa-mm.com/blog/kv-vs-d1-when-to-use-each-es</loc>
    <lastmod>2026-05-20</lastmod>
    <image:image>
      <image:loc>https://dwsa-mm.com/blog/kv-vs-d1-when-to-use-each-es/image</image:loc>
      <image:title>KV vs D1: Cuándo Usar Cada Uno en Cloudflare Workers</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://dwsa-mm.com/blog/kv-vs-d1-when-to-use-each</loc>
    <lastmod>2026-05-20</lastmod>
    <image:image>
      <image:loc>https://dwsa-mm.com/blog/kv-vs-d1-when-to-use-each/image</image:loc>
      <image:title>KV vs D1: When to Use Each on Cloudflare Workers</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://dwsa-mm.com/blog/one-year-edge-es</loc>
    <lastmod>2026-05-20</lastmod>
    <image:image>
      <image:loc>https://dwsa-mm.com/blog/one-year-edge-es/image</image:loc>
      <image:title>Un Año Construyendo en el Edge: Qué Cambiaría</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://dwsa-mm.com/blog/one-year-edge</loc>
    <lastmod>2026-05-20</lastmod>
    <image:image>
      <image:loc>https://dwsa-mm.com/blog/one-year-edge/image</image:loc>
      <image:title>One Year Building on the Edge: What I&apos;d Change</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://dwsa-mm.com/blog/toc-intersection-observer-es</loc>
    <lastmod>2026-05-20</lastmod>
    <image:image>
      <image:loc>https://dwsa-mm.com/blog/toc-intersection-observer-es/image</image:loc>
      <image:title>Construyendo una Tabla de Contenidos con IntersectionObserver (y el Bug de Entidades HTML Que Me Mordió)</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://dwsa-mm.com/blog/toc-intersection-observer</loc>
    <lastmod>2026-05-20</lastmod>
    <image:image>
      <image:loc>https://dwsa-mm.com/blog/toc-intersection-observer/image</image:loc>
      <image:title>Building a Table of Contents with IntersectionObserver (and the HTML Entity Bug That Bit Me)</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://dwsa-mm.com/blog/server-side-syntax-highlighting-es</loc>
    <lastmod>2026-05-19</lastmod>
    <image:image>
      <image:loc>https://dwsa-mm.com/blog/server-side-syntax-highlighting-es/image</image:loc>
      <image:title>Syntax Highlighting Server-Side Sin una Librería</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://dwsa-mm.com/blog/server-side-syntax-highlighting</loc>
    <lastmod>2026-05-19</lastmod>
    <image:image>
      <image:loc>https://dwsa-mm.com/blog/server-side-syntax-highlighting/image</image:loc>
      <image:title>Server-Side Syntax Highlighting Without a Library</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://dwsa-mm.com/blog/mobile-publishing-github-actions-es</loc>
    <lastmod>2026-05-19</lastmod>
    <image:image>
      <image:loc>https://dwsa-mm.com/blog/mobile-publishing-github-actions-es/image</image:loc>
      <image:title>Automatizando la Publicación de Posts desde el Móvil con GitHub Actions</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://dwsa-mm.com/blog/mobile-publishing-github-actions</loc>
    <lastmod>2026-05-19</lastmod>
    <image:image>
      <image:loc>https://dwsa-mm.com/blog/mobile-publishing-github-actions/image</image:loc>
      <image:title>Automating Post Publishing from a Mobile Device with GitHub Actions</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://dwsa-mm.com/blog/blog-on-cloudflare-workers-no-cms-es</loc>
    <lastmod>2026-05-18</lastmod>
    <image:image>
      <image:loc>https://dwsa-mm.com/blog/blog-on-cloudflare-workers-no-cms-es/image</image:loc>
      <image:title>Cómo agregar un blog a un Cloudflare Worker sin CMS — KV de Cloudflare como base de datos.</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://dwsa-mm.com/blog/blog-on-cloudflare-workers-no-cms</loc>
    <lastmod>2026-05-18</lastmod>
    <image:image>
      <image:loc>https://dwsa-mm.com/blog/blog-on-cloudflare-workers-no-cms/image</image:loc>
      <image:title>Adding a Blog to a Cloudflare Worker Without a CMS — Cloudflare KV as a Database.</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://dwsa-mm.com/blog/cloudflare-workers-custom-domain-es</loc>
    <lastmod>2026-05-17</lastmod>
    <image:image>
      <image:loc>https://dwsa-mm.com/blog/cloudflare-workers-custom-domain-es/image</image:loc>
      <image:title>Cómo hospedar un sitio personal en Cloudflare Workers con dominio propio — Lo que nadie te cuenta.</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://dwsa-mm.com/blog/cloudflare-workers-custom-domain</loc>
    <lastmod>2026-05-17</lastmod>
    <image:image>
      <image:loc>https://dwsa-mm.com/blog/cloudflare-workers-custom-domain/image</image:loc>
      <image:title>Hosting a Personal Site on Cloudflare Workers with a Custom Domain — What Nobody Tells You.</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://dwsa-mm.com/blog/staging-shared-infrastructure-es</loc>
    <lastmod>2026-05-16</lastmod>
    <image:image>
      <image:loc>https://dwsa-mm.com/blog/staging-shared-infrastructure-es/image</image:loc>
      <image:title>Staging Sin Duplicar Infraestructura</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://dwsa-mm.com/blog/staging-shared-infrastructure</loc>
    <lastmod>2026-05-16</lastmod>
    <image:image>
      <image:loc>https://dwsa-mm.com/blog/staging-shared-infrastructure/image</image:loc>
      <image:title>Staging Without Duplicating Infrastructure</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://dwsa-mm.com/blog/ci-auto-commit-es</loc>
    <lastmod>2026-05-15</lastmod>
    <image:image>
      <image:loc>https://dwsa-mm.com/blog/ci-auto-commit-es/image</image:loc>
      <image:title>CI Que Escribe de Vuelta al Repositorio</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://dwsa-mm.com/blog/ci-auto-commit</loc>
    <lastmod>2026-05-15</lastmod>
    <image:image>
      <image:loc>https://dwsa-mm.com/blog/ci-auto-commit/image</image:loc>
      <image:title>CI That Writes Back to the Repository</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://dwsa-mm.com/blog/r2-image-cdn-es</loc>
    <lastmod>2026-05-14</lastmod>
    <image:image>
      <image:loc>https://dwsa-mm.com/blog/r2-image-cdn-es/image</image:loc>
      <image:title>R2 como CDN de Imágenes: El Pipeline Completo</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://dwsa-mm.com/blog/r2-image-cdn</loc>
    <lastmod>2026-05-14</lastmod>
    <image:image>
      <image:loc>https://dwsa-mm.com/blog/r2-image-cdn/image</image:loc>
      <image:title>R2 as an Image CDN: The Complete Pipeline</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://dwsa-mm.com/blog/why-no-framework-es</loc>
    <lastmod>2026-05-13</lastmod>
    <image:image>
      <image:loc>https://dwsa-mm.com/blog/why-no-framework-es/image</image:loc>
      <image:title>Por Qué No Usé un Framework (Y Lo Que Realmente Me Costó)</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://dwsa-mm.com/blog/why-no-framework</loc>
    <lastmod>2026-05-13</lastmod>
    <image:image>
      <image:loc>https://dwsa-mm.com/blog/why-no-framework/image</image:loc>
      <image:title>Why I Didn&apos;t Use a Framework (And What It Actually Cost Me)</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://dwsa-mm.com/blog/workers-ai-production-es</loc>
    <lastmod>2026-05-12</lastmod>
    
  </url>
  <url>
    <loc>https://dwsa-mm.com/blog/workers-ai-production</loc>
    <lastmod>2026-05-12</lastmod>
    
  </url>
  <url>
    <loc>https://dwsa-mm.com/blog/d1-sqlite-edge-es</loc>
    <lastmod>2026-05-11</lastmod>
    <image:image>
      <image:loc>https://dwsa-mm.com/blog/d1-sqlite-edge-es/image</image:loc>
      <image:title>D1 SQLite en el Edge: Lo Que la Documentación No Te Cuenta</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://dwsa-mm.com/blog/d1-sqlite-edge</loc>
    <lastmod>2026-05-11</lastmod>
    <image:image>
      <image:loc>https://dwsa-mm.com/blog/d1-sqlite-edge/image</image:loc>
      <image:title>D1 SQLite on the Edge: What the Docs Don&apos;t Tell You</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://dwsa-mm.com/blog/edge-caching-workers-es</loc>
    <lastmod>2026-05-10</lastmod>
    <image:image>
      <image:loc>https://dwsa-mm.com/blog/edge-caching-workers-es/image</image:loc>
      <image:title>Caché en el Edge con Cloudflare Workers sin un CDN de pago</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://dwsa-mm.com/blog/edge-caching-workers</loc>
    <lastmod>2026-05-10</lastmod>
    <image:image>
      <image:loc>https://dwsa-mm.com/blog/edge-caching-workers/image</image:loc>
      <image:title>Edge Caching on Cloudflare Workers Without a Paid CDN</image:title>
    </image:image>
  </url>
</urlset>