<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://www.pablofr.com/</loc>
<lastmod>2026-10-22T22:26:09.056Z</lastmod>
<changefreq>weekly</changefreq>
<priority>1</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog</loc>
<lastmod>2026-10-22T22:26:09.056Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.pablofr.com/projects</loc>
<lastmod>2026-10-22T22:26:09.056Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://www.pablofr.com/downloads</loc>
<lastmod>2026-10-22T22:26:09.056Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/the-21st-visitor-broke-live-mail</loc>
<lastmod>2026-10-22T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/building-a-temporary-email-service</loc>
<lastmod>2026-10-22T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/pg-cron-as-a-clock</loc>
<lastmod>2026-10-21T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/per-file-encryption-keys</loc>
<lastmod>2026-10-21T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/immutable-invoices-in-postgres</loc>
<lastmod>2026-10-21T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/confirming-agent-actions</loc>
<lastmod>2026-10-21T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/resumable-ai-responses</loc>
<lastmod>2026-10-21T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/ai-cost-per-feature</loc>
<lastmod>2026-10-21T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/reading-documents-with-ai</loc>
<lastmod>2026-10-21T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/red-teaming-ai-agents</loc>
<lastmod>2026-10-21T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/ai-agent-guardrails</loc>
<lastmod>2026-10-21T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/agent-memory-across-channels</loc>
<lastmod>2026-10-21T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/tool-permissions-for-ai-agents</loc>
<lastmod>2026-10-21T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/layered-knowledge-for-ai-agents</loc>
<lastmod>2026-10-21T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/clear-proxy-for-ai-agents</loc>
<lastmod>2026-10-21T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/privacy-filters-for-ai-agents</loc>
<lastmod>2026-10-21T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/deterministic-rules-for-ai-agents</loc>
<lastmod>2026-10-21T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/k3s-vs-k0s-vs-kubernetes</loc>
<lastmod>2026-10-19T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/pixel-art-ai-assistant</loc>
<lastmod>2026-10-16T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/alternatives-to-jev</loc>
<lastmod>2026-10-15T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/a-model-that-decides-for-you</loc>
<lastmod>2026-10-15T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/a-book-in-twenty-five-faces</loc>
<lastmod>2026-10-10T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/one-page-eight-urls</loc>
<lastmod>2026-10-10T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/two-builds-one-address</loc>
<lastmod>2026-10-10T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/off-until-someone-asks</loc>
<lastmod>2026-10-09T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/an-approximation-that-never-decides</loc>
<lastmod>2026-08-24T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/a-bucket-that-can-say-no</loc>
<lastmod>2026-07-29T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/giving-an-inbox-to-each-agent</loc>
<lastmod>2026-07-23T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/building-a-better-whatsapp-sdk</loc>
<lastmod>2026-07-22T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/distance-from-a-message-to-your-code</loc>
<lastmod>2026-07-21T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/a-kernel-per-bad-idea</loc>
<lastmod>2026-07-17T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/a-wrapper-is-a-bug-report</loc>
<lastmod>2026-07-15T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/fluid-compute-on-your-own-vps</loc>
<lastmod>2026-07-13T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/vector-search-on-object-storage</loc>
<lastmod>2026-07-13T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/a-url-that-speaks-markdown</loc>
<lastmod>2026-07-11T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/minhash-lsh-bot-fingerprinting</loc>
<lastmod>2026-07-10T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/anatomy-of-a-payments-api</loc>
<lastmod>2026-07-10T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/non-custodial-payment-gateway</loc>
<lastmod>2026-07-09T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/datamuro-data-seal</loc>
<lastmod>2026-07-07T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/how-reactions-work</loc>
<lastmod>2026-07-06T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/how-vercel-works</loc>
<lastmod>2026-07-06T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/anti-bot-architecture-2026</loc>
<lastmod>2026-07-06T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/generative-colorfield-colors-of-motion</loc>
<lastmod>2026-07-05T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/more-backend-than-a-blog-needs</loc>
<lastmod>2026-07-05T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/protomarc-forensic-marking</loc>
<lastmod>2026-07-04T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/pfrctl-infrastructure-as-code</loc>
<lastmod>2026-07-04T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/generative-avatars-dither-halftone</loc>
<lastmod>2026-07-04T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/generative-vasarely-in-code</loc>
<lastmod>2026-07-04T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/understanding-react-server-components</loc>
<lastmod>2026-02-10T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/getting-started-with-nextjs-16</loc>
<lastmod>2026-02-10T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.pablofr.com/blog/building-apis-with-hono</loc>
<lastmod>2026-02-10T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
</urlset>
