<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url><loc>https://labs.adrianwaldron.com/</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics</loc></url>
<url><loc>https://labs.adrianwaldron.com/p/how-i-hardened-apollo-s-scanner-against-prompt-injection-two-cheap-fixes-that-actually-work</loc><lastmod>2026-04-16</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/how-my-own-robot-reviewer-caught-my-secret-sitting-in-ps-aux</loc><lastmod>2026-04-16</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/how-one-bad-enum-was-silently-killing-my-entire-scan-batch</loc><lastmod>2026-04-16</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/my-own-rule-said-don-t-cap-it-i-capped-it-anyway</loc><lastmod>2026-04-16</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/the-bug-that-corrupted-my-scanner-state-and-the-three-line-fix</loc><lastmod>2026-04-16</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/the-one-retry-rule-i-wish-i-d-learned-before-building-two-systems</loc><lastmod>2026-04-16</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/the-problem-with-letting-your-ai-agents-read-their-own-prior-work</loc><lastmod>2026-04-16</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/the-three-lines-that-fixed-a-race-condition-i-didn-t-know-i-had</loc><lastmod>2026-04-16</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/validate-your-env-vars-at-boot-or-pay-the-price-later</loc><lastmod>2026-04-16</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/what-csp-taught-me-about-third-party-resource-types</loc><lastmod>2026-04-16</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/what-pydantic-s-extra-forbid-gets-wrong-when-your-data-comes-from-an-llm</loc><lastmod>2026-04-16</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/why-i-ended-up-with-one-json-parser-for-two-different-llm-models</loc><lastmod>2026-04-16</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/an-id-is-not-a-password-how-we-closed-an-idor-in-our-cancer-patient-chat-app</loc><lastmod>2026-04-09</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/how-a-failed-junction-insert-left-me-with-orphaned-rows</loc><lastmod>2026-04-09</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/how-a-fullscreen-overlay-fixed-our-broken-mobile-booking-form</loc><lastmod>2026-04-09</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/how-a-single-string-was-gutting-my-entire-content-security-policy</loc><lastmod>2026-04-09</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/how-eliminating-any-types-made-our-build-the-first-line-of-defence</loc><lastmod>2026-04-09</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/how-localstorage-bridged-sessions-and-then-became-a-security-hole</loc><lastmod>2026-04-09</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/how-two-characters-broke-my-hubspot-pre-fill-and-what-it-taught-me-about-third-party-forms</loc><lastmod>2026-04-09</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/stop-saving-on-return-mobile-users-tap-away</loc><lastmod>2026-04-09</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/the-api-won-t-tell-you-when-you-re-paying-twice</loc><lastmod>2026-04-09</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/the-auth-gate-that-wasn-t-guarding-the-real-door</loc><lastmod>2026-04-09</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/the-lazy-loading-trap-that-made-my-lcp-worse-and-how-i-fixed-it</loc><lastmod>2026-04-09</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/the-save-worked-the-ui-still-snapped-back-here-s-why</loc><lastmod>2026-04-09</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/the-shopify-sync-that-never-had-a-race-condition-and-the-ones-that-did</loc><lastmod>2026-04-09</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/when-the-swift-compiler-refuses-to-build-your-view-listen-to-it</loc><lastmod>2026-04-09</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/when-your-mcp-search-returns-the-envelope-not-the-data</loc><lastmod>2026-04-09</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/when-your-validator-is-the-bug-not-the-data</loc><lastmod>2026-04-09</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/why-every-create-flow-should-auto-navigate-to-what-you-just-made</loc><lastmod>2026-04-09</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/why-i-stopped-letting-chat-failures-eat-my-users-words</loc><lastmod>2026-04-09</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/why-i-stopped-trusting-my-own-frontend</loc><lastmod>2026-04-09</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/why-stripping-html-tags-isn-t-enough-two-cmses-taught-me-this-in-one-week</loc><lastmod>2026-04-09</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/why-swipe-to-delete-always-needs-a-confirmation-step</loc><lastmod>2026-04-09</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/a-generator-script-in-your-repo-is-not-proof-it-made-your-assets</loc><lastmod>2026-04-02</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/how-an-open-redirect-hid-inside-our-next-js-server-actions</loc><lastmod>2026-04-02</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/how-belt-and-suspenders-broke-my-swift-supabase-decoder</loc><lastmod>2026-04-02</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/how-my-ios-app-learned-to-lie-and-how-i-fixed-it</loc><lastmod>2026-04-02</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/how-one-await-stopped-my-ios-crm-from-lying-to-users</loc><lastmod>2026-04-02</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/how-prisma-s-nested-relation-creates-silently-ate-my-sales-data</loc><lastmod>2026-04-02</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/how-targeted-diagnostics-killed-a-timezone-bug-i-d-been-guessing-at</loc><lastmod>2026-04-02</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/one-missing-env-var-that-took-down-every-cron-job-at-once</loc><lastmod>2026-04-02</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/page-auth-doesn-t-guard-server-actions-every-action-needs-its-own-lock</loc><lastmod>2026-04-02</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/the-ai-recommendations-looked-great-the-data-was-lying</loc><lastmod>2026-04-02</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/the-metric-was-wrong-because-the-baseline-was-wrong</loc><lastmod>2026-04-02</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/the-supabase-linter-warning-that-silently-empties-your-tables</loc><lastmod>2026-04-02</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/the-supabaseclientoptions-argument-order-trap-nobody-warns-you-about</loc><lastmod>2026-04-02</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/the-timezone-bug-that-taught-me-to-measure-from-what-you-trust</loc><lastmod>2026-04-02</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/what-replaced-element-actually-means-and-why-it-broke-my-presentation-mode-canvas</loc><lastmod>2026-04-02</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/when-your-data-is-saving-fine-and-the-dashboard-still-lies-to-you</loc><lastmod>2026-04-02</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/why-my-ga4-dashboard-worked-locally-but-broke-on-vercel-every-time</loc><lastmod>2026-04-02</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/why-my-supabase-ios-app-failed-silently-and-it-was-the-key-format</loc><lastmod>2026-04-02</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/why-your-demo-mode-should-touch-zero-backend</loc><lastmod>2026-04-02</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/how-a-swapped-argument-order-killed-our-supabase-ios-connection-silently</loc><lastmod>2026-01-15</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/how-supabase-s-batch-upsert-silently-swallowed-our-sales-data</loc><lastmod>2026-01-15</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/p/why-i-built-a-demo-mode-that-never-touches-the-backend</loc><lastmod>2026-01-15</lastmod></url>
<url><loc>https://labs.adrianwaldron.com/topics/security</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/ios</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/debugging</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/supabase</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/nextjs</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/swift</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/llm</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/python</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/ux</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/next-js</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/react</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/systems</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/ai</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/architecture</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/autonomous-agents</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/chat</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/hubspot</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/mcp</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/mobile</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/server-actions</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/state-management</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/validation</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/vercel</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/web</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/ai-agents</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/ai-pipelines</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/analytics</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/api</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/api-design</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/apis</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/async</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/auth</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/automation</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/backend</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/caching</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/cancer-doctor-finder</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/canvas</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/cms</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/config</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/council</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/dashboards</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/data</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/data-import</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/data-integrity</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/data-loss</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/data-quality</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/databases</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/demo</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/dev-workflow</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/devops</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/dx</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/forms</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/frontend</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/git</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/google-analytics</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/images</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/integration</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/javascript</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/lessons-learned</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/localstorage</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/patterns</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/performance</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/pipelines</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/postgres</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/prisma</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/prompt-engineering</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/pydantic</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/quickbooks</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/reliability</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/resilience</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/swiftui</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/sync</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/timezone</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/timezones</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/typescript</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/ui</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/web-dev</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/webinars</loc></url>
<url><loc>https://labs.adrianwaldron.com/topics/zod</loc></url>
</urlset>
