<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url><loc>https://devdick.com</loc><changefreq>weekly</changefreq></url>
  <url><loc>https://devdick.com/about</loc><changefreq>weekly</changefreq></url>
  <url><loc>https://devdick.com/projects</loc><changefreq>weekly</changefreq></url>
  <url><loc>https://devdick.com/blog</loc><changefreq>weekly</changefreq></url>
  <url><loc>https://devdick.com/videos</loc><changefreq>weekly</changefreq></url>
  <url><loc>https://devdick.com/contact</loc><changefreq>weekly</changefreq></url>
  <url><loc>https://devdick.com/blog/twelve-years-thirty-systems-one-standard</loc><lastmod>2026-06-30</lastmod></url>
  <url><loc>https://devdick.com/blog/what-i-would-build-differently-if-starting-selltrove-today</loc><lastmod>2026-06-30</lastmod></url>
  <url><loc>https://devdick.com/blog/vector-databases-and-semantic-search-what-i-learned-building-aria</loc><lastmod>2026-06-30</lastmod></url>
  <url><loc>https://devdick.com/blog/the-engineering-lessons-from-50m-in-processed-transactions</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/the-first-90-days-on-a-legacy-codebase</loc><lastmod>2026-06-30</lastmod></url>
  <url><loc>https://devdick.com/blog/the-loneliness-of-the-long-term-build</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/the-case-for-boring-technology</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/building-for-low-bandwidth-engineering-for-real-users</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/the-anatomy-of-a-production-outage</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/distributed-transactions-why-you-probably-do-not-need-one</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/how-i-reduced-selltroves-api-response-time-by-60</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/building-apis-for-mobile-what-desktop-developers-miss</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/building-reliable-webhooks-the-provider-side</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/what-keeping-me-up-at-night-building-selltrove-at-scale</loc><lastmod>2026-06-30</lastmod></url>
  <url><loc>https://devdick.com/blog/saas-architecture-what-the-tutorials-skip</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/teach-what-you-know</loc><lastmod>2026-06-30</lastmod></url>
  <url><loc>https://devdick.com/blog/apache-kafka-at-scale-lessons-from-the-syssoft-iot-pipeline</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/php-82-readonly-classes-why-i-am-adopting-them-everywhere</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/onnx-runtime-cut-our-inference-latency-by-35</loc><lastmod>2026-06-30</lastmod></url>
  <url><loc>https://devdick.com/blog/the-discipline-of-shipping</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/the-invisible-architecture-how-selltrove-scales-to-10000-sellers</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/the-art-of-the-technical-postmortem</loc><lastmod>2026-06-30</lastmod></url>
  <url><loc>https://devdick.com/blog/the-seniority-gap-nobody-talks-about</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/cloudfront-is-more-than-a-cdn</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/the-senior-engineers-reading-list</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/when-to-reach-for-a-message-queue-vs-a-job-queue</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/code-review-is-a-teaching-opportunity-not-gatekeeping</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/kubernetes-is-infrastructure-treat-it-like-one</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/to-the-developer-who-thinks-the-playing-field-is-not-level</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/apache-kafka-vs-aws-sqs-choosing-for-production</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/nextjs-app-router-what-changed-for-production-engineering</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/choosing-between-synchronous-and-asynchronous-communication-in-microservices</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/graphql-vs-rest-an-honest-comparison-from-production</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/measuring-engineering-productivity-without-gaming-it</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/why-i-moved-ml-workloads-to-aws-eks</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/on-call-engineering-the-survival-guide</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/why-i-standardised-on-pydantic-for-all-data-validation</loc><lastmod>2026-06-30</lastmod></url>
  <url><loc>https://devdick.com/blog/understanding-dynamodb-when-to-use-it-and-when-to-run</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/fastapi-is-the-best-python-web-framework-for-apis</loc><lastmod>2026-06-30</lastmod></url>
  <url><loc>https://devdick.com/blog/the-28-conversion-uplift-nobody-asked-about</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/writing-code-that-future-you-will-thank-present-you-for</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/prompt-engineering-is-software-engineering</loc><lastmod>2026-06-30</lastmod></url>
  <url><loc>https://devdick.com/blog/the-economics-of-technical-debt</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/caching-strategy-is-architecture-not-optimisation</loc><lastmod>2026-06-30</lastmod></url>
  <url><loc>https://devdick.com/blog/aws-lambda-is-not-free-measure-before-you-scale</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/microservices-are-not-an-architecture-they-are-a-consequence</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/s3-is-infinitely-scalable-your-code-is-not</loc><lastmod>2026-06-30</lastmod></url>
  <url><loc>https://devdick.com/blog/python-asyncio-is-not-as-hard-as-people-make-it-sound</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/what-llms-are-actually-good-at-and-what-they-are-not</loc><lastmod>2026-06-30</lastmod></url>
  <url><loc>https://devdick.com/blog/the-database-is-the-last-line-of-defence</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/the-most-important-engineering-skill-is-not-technical</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/event-driven-architecture-when-to-use-it-and-when-to-avoid-it</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/redis-is-not-a-database-but-treat-it-like-one</loc><lastmod>2026-06-30</lastmod></url>
  <url><loc>https://devdick.com/blog/rate-limiting-is-an-act-of-respect</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/my-approach-to-code-that-touches-money</loc><lastmod>2026-06-30</lastmod></url>
  <url><loc>https://devdick.com/blog/api-design-is-a-contract-design-it-like-one</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/github-actions-is-all-the-cicd-most-projects-need</loc><lastmod>2026-06-30</lastmod></url>
  <url><loc>https://devdick.com/blog/mysql-full-text-search-vs-elasticsearch-choosing-the-right-tool</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/database-migrations-without-downtime</loc><lastmod>2026-06-30</lastmod></url>
  <url><loc>https://devdick.com/blog/webhook-security-what-most-developers-skip</loc><lastmod>2026-06-30</lastmod></url>
  <url><loc>https://devdick.com/blog/jwt-is-not-a-session-stop-using-it-like-one</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/monitoring-is-not-optional-it-is-the-job</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/the-git-workflow-that-keeps-production-deployments-boring</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/zero-trust-is-not-a-product-you-buy-it-is-a-decision-you-make</loc><lastmod>2026-06-30</lastmod></url>
  <url><loc>https://devdick.com/blog/typescript-is-not-optional-for-production-javascript</loc><lastmod>2026-06-30</lastmod></url>
  <url><loc>https://devdick.com/blog/the-authentication-checklist-every-application-needs</loc><lastmod>2026-06-30</lastmod></url>
  <url><loc>https://devdick.com/blog/overfitting-is-not-embarrassing-deploying-it-is</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/docker-in-production-what-nobody-tells-you</loc><lastmod>2026-06-30</lastmod></url>
  <url><loc>https://devdick.com/blog/queue-everything-that-can-wait</loc><lastmod>2026-06-30</lastmod></url>
  <url><loc>https://devdick.com/blog/machine-learning-does-not-replace-the-expert-it-amplifies-them</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/design-for-failure-every-system-will-fail</loc><lastmod>2026-06-30</lastmod></url>
  <url><loc>https://devdick.com/blog/laravel-queues-in-production-the-gotchas-nobody-warns-you-about</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/the-stored-procedure-debate-why-i-still-use-them</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/read-the-source-code</loc><lastmod>2026-06-30</lastmod></url>
  <url><loc>https://devdick.com/blog/feature-engineering-is-80-of-your-model-quality</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/pci-dss-is-not-a-checkbox-it-is-a-discipline</loc><lastmod>2026-06-30</lastmod></url>
  <url><loc>https://devdick.com/blog/php-is-not-dead-it-is-evolving-faster-than-its-critics</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/the-60-second-query-that-changed-a-business</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/building-multi-currency-systems-that-do-not-lie</loc><lastmod>2026-06-30</lastmod></url>
  <url><loc>https://devdick.com/blog/idempotency-is-not-optional-in-payment-systems</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/the-hidden-cost-of-not-writing-tests</loc><lastmod>2026-06-30</lastmod></url>
  <url><loc>https://devdick.com/blog/input-validation-is-your-first-line-of-defence</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/african-tech-does-not-have-a-talent-problem-it-has-a-tooling-problem</loc><lastmod>2026-06-30</lastmod></url>
  <url><loc>https://devdick.com/blog/eloquent-is-lying-to-you-about-your-database-performance</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/stop-deploying-by-hand-i-mean-it</loc><lastmod>2026-06-30</lastmod></url>
  <url><loc>https://devdick.com/blog/early-intervention-is-exponential</loc><lastmod>2026-06-30</lastmod></url>
  <url><loc>https://devdick.com/blog/postgresql-vs-mysql-stop-asking-start-benchmarking</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/measure-your-models-honestly</loc><lastmod>2026-06-30</lastmod></url>
  <url><loc>https://devdick.com/blog/indexes-are-free-performance-use-them</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/the-bug-that-changed-how-i-write-code-forever</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/fraud-smells-like-a-pattern</loc><lastmod>2026-06-30</lastmod></url>
  <url><loc>https://devdick.com/blog/payments-are-not-a-feature-they-are-an-infrastructure</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/digital-privacy-is-a-right-not-a-privilege</loc><lastmod>2026-06-30</lastmod></url>
  <url><loc>https://devdick.com/blog/modular-or-die-the-only-erp-architecture-that-survives-reality</loc><lastmod>2026-06-30</lastmod></url>
  <url><loc>https://devdick.com/blog/the-language-does-not-matter-the-thinking-does</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/schema-first-always</loc><lastmod>2026-06-30</lastmod></url>
  <url><loc>https://devdick.com/blog/what-a-raw-packet-taught-me-about-trust</loc><lastmod>2026-06-30</lastmod></url>
  <url><loc>https://devdick.com/blog/the-double-entry-principle-why-financial-systems-cannot-afford-bugs</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/security-is-not-a-feature-it-is-the-foundation</loc><lastmod>2026-06-29</lastmod></url>
  <url><loc>https://devdick.com/blog/why-i-started-coding-at-2-am</loc><lastmod>2026-06-30</lastmod></url>
  <url><loc>https://devdick.com/projects/selltrove</loc></url>
  <url><loc>https://devdick.com/projects/afripay</loc></url>
  <url><loc>https://devdick.com/projects/sabivox</loc></url>
  <url><loc>https://devdick.com/projects/africred</loc></url>
  <url><loc>https://devdick.com/projects/ventura</loc></url>
  <url><loc>https://devdick.com/projects/deex</loc></url>
  <url><loc>https://devdick.com/projects/embedded-iot-ies</loc></url>
  <url><loc>https://devdick.com/projects/xentinel</loc></url>
  <url><loc>https://devdick.com/projects/core-sync</loc></url>
  <url><loc>https://devdick.com/projects/prime-erp</loc></url>
  <url><loc>https://devdick.com/projects/titan-pay</loc></url>
  <url><loc>https://devdick.com/projects/biggy</loc></url>
  <url><loc>https://devdick.com/projects/drone-security</loc></url>
</urlset>