<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://jbpa.dev</loc>
<lastmod>2026-09-10T17:01:50.034Z</lastmod>
<changefreq>monthly</changefreq>
<priority>1</priority>
</url>
<url>
<loc>https://jbpa.dev/work</loc>
<lastmod>2026-09-10T17:01:50.034Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://jbpa.dev/services</loc>
<lastmod>2026-09-10T17:01:50.034Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://jbpa.dev/approach</loc>
<lastmod>2026-09-10T17:01:50.034Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://jbpa.dev/packages</loc>
<lastmod>2026-09-10T17:01:50.034Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://jbpa.dev/about</loc>
<lastmod>2026-09-10T17:01:50.034Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://jbpa.dev/contact</loc>
<lastmod>2026-09-10T17:01:50.034Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://jbpa.dev/privacy</loc>
<lastmod>2026-09-10T17:01:50.034Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.3</priority>
</url>
<url>
<loc>https://jbpa.dev/terms</loc>
<lastmod>2026-09-10T17:01:50.034Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.3</priority>
</url>
<url>
<loc>https://jbpa.dev/resume</loc>
<lastmod>2026-09-10T17:01:50.034Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://jbpa.dev/notes</loc>
<lastmod>2026-09-10T17:01:50.034Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.4</priority>
</url>
<url>
<loc>https://jbpa.dev/stack</loc>
<lastmod>2026-09-10T17:01:50.034Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://jbpa.dev/developers</loc>
<lastmod>2026-09-10T17:01:50.034Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.4</priority>
</url>
<url>
<loc>https://jbpa.dev/colophon</loc>
<lastmod>2026-09-10T17:01:50.034Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.1</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/ship-source-code</loc>
<lastmod>2026-08-28T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/boring-technology-lgu</loc>
<lastmod>2026-08-14T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/offline-first-clinic-records</loc>
<lastmod>2026-07-30T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/before-saying-yes</loc>
<lastmod>2026-07-12T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/designing-for-low-end-devices</loc>
<lastmod>2026-06-25T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/data-privacy-act-small-systems</loc>
<lastmod>2026-06-08T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/postgres-indexes-that-matter</loc>
<lastmod>2026-05-22T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/why-i-dont-use-orm-magic</loc>
<lastmod>2026-05-10T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/backup-strategy-small-teams</loc>
<lastmod>2026-04-28T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/typescript-in-government-systems</loc>
<lastmod>2026-04-15T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/server-logs-before-dashboards</loc>
<lastmod>2026-03-30T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/accessible-forms-government</loc>
<lastmod>2026-03-18T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/single-vps-architecture</loc>
<lastmod>2026-03-02T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/handover-docs-that-work</loc>
<lastmod>2026-02-14T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/queue-based-writes-explained</loc>
<lastmod>2026-01-28T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/choosing-a-tech-stack-2026</loc>
<lastmod>2026-01-10T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/database-migrations-without-fear</loc>
<lastmod>2025-12-18T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/why-i-measure-before-optimizing</loc>
<lastmod>2025-12-05T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/forms-that-dont-lose-data</loc>
<lastmod>2025-11-20T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/the-cost-of-premature-abstraction</loc>
<lastmod>2025-11-08T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/securing-admin-panels</loc>
<lastmod>2025-10-25T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/why-i-write-the-readme-first</loc>
<lastmod>2025-10-12T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/incremental-static-regeneration</loc>
<lastmod>2025-09-28T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/the-underrated-skill-of-reading-code</loc>
<lastmod>2025-09-15T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/environment-variables-done-right</loc>
<lastmod>2025-08-30T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/designing-for-the-maintainer</loc>
<lastmod>2025-08-16T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/rate-limiting-public-forms</loc>
<lastmod>2025-08-02T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/postgres-backup-restore-drill</loc>
<lastmod>2025-07-19T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/why-i-avoid-n-plus-one</loc>
<lastmod>2025-07-05T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/mobile-first-isnt-a-slogan</loc>
<lastmod>2025-06-21T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/the-value-of-boring-ui</loc>
<lastmod>2025-06-07T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/audit-logs-are-non-negotiable</loc>
<lastmod>2025-05-24T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/why-i-still-write-sql</loc>
<lastmod>2025-05-10T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/the-real-cost-of-a-rebuild</loc>
<lastmod>2025-04-26T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/testing-what-matters</loc>
<lastmod>2025-04-12T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/documentation-as-a-deliverable</loc>
<lastmod>2025-03-29T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/session-management-basics</loc>
<lastmod>2025-03-15T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/the-2am-test</loc>
<lastmod>2025-03-01T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/why-i-log-structured-json</loc>
<lastmod>2025-02-15T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/choosing-between-build-and-buy</loc>
<lastmod>2025-02-01T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/the-hidden-cost-of-free-tier</loc>
<lastmod>2025-01-18T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/input-validation-server-side</loc>
<lastmod>2025-01-04T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/why-i-prefer-server-rendering</loc>
<lastmod>2024-12-20T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/the-discipline-of-small-releases</loc>
<lastmod>2024-12-06T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/data-retention-policies</loc>
<lastmod>2024-11-22T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/why-i-still-use-server-side-forms</loc>
<lastmod>2024-11-08T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/the-myth-of-the-10x-stack</loc>
<lastmod>2024-10-25T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/handling-file-uploads-safely</loc>
<lastmod>2024-10-11T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/why-i-document-decisions</loc>
<lastmod>2024-09-27T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/the-ethics-of-client-data</loc>
<lastmod>2024-09-13T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/performance-budgets-that-stick</loc>
<lastmod>2024-08-30T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/why-i-avoid-microservices</loc>
<lastmod>2024-08-16T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/the-value-of-a-staging-environment</loc>
<lastmod>2024-08-02T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/writing-error-messages-that-help</loc>
<lastmod>2024-07-19T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/the-case-against-over-engineering</loc>
<lastmod>2024-07-05T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://jbpa.dev/notes/why-i-still-ssh-into-servers</loc>
<lastmod>2024-06-21T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
</urlset>
