<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url><loc>https://www.wittytech.dev/</loc></url>
  <url><loc>https://www.wittytech.dev/blog</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/topics</loc></url>
  <url><loc>https://www.wittytech.dev/about</loc></url>
  <url><loc>https://www.wittytech.dev/courses</loc></url>
  <url><loc>https://www.wittytech.dev/blog/why-ai-pipelines-need-versioned-data-as-well-as-versioned-code</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/how-to-back-up-a-vector-database-and-test-the-restore</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/benefits-of-infrastructure-as-code-for-customer-ai-handovers</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/how-to-pin-python-dependencies-for-reproducible-ai-builds</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/why-platform-teams-should-offer-a-golden-path-for-ai-services</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/how-to-set-budgets-and-cost-alerts-for-ai-workloads-on-aws</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/benefits-of-spot-instances-for-batch-ai-jobs</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/how-to-enforce-policies-on-kubernetes-ai-workloads-with-kyverno</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/why-you-should-sign-model-artifacts-and-container-images</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/how-to-scan-ai-container-images-for-vulnerabilities-in-ci</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/how-to-promote-models-between-environments-with-mlflow</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/benefits-of-tracking-latency-percentiles-for-llm-apis</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/how-to-run-a-blameless-postmortem-for-an-ai-failure</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/how-to-alert-on-model-provider-outages-before-users-notice</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/why-logging-prompts-and-responses-is-worth-the-privacy-work</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/how-to-monitor-retrieval-quality-in-a-production-rag-system</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/benefits-of-writing-ai-incident-runbooks-in-advance</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/how-to-build-a-grafana-dashboard-for-token-usage-and-cost</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/why-slos-for-ai-features-need-more-than-uptime</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/how-to-trace-llm-calls-with-opentelemetry</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/how-to-store-and-rotate-llm-api-keys-with-aws-secrets-manager</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/how-to-detect-drift-between-terraform-code-and-your-cloud-account</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/benefits-of-tagging-every-ai-resource-from-day-one</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/how-to-choose-between-ecs-eks-and-sagemaker-on-aws</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/why-serverless-is-often-the-wrong-home-for-llm-workloads</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/how-to-structure-terraform-modules-for-an-ai-platform</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/benefits-of-multi-region-failover-for-ai-features</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/how-to-keep-llm-api-traffic-off-the-public-internet-on-aws</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/why-every-model-provider-should-sit-behind-an-ai-gateway</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/how-to-manage-amazon-bedrock-access-with-terraform</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/how-to-size-kubernetes-requests-and-limits-for-ai-services</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/benefits-of-separate-node-pools-for-training-and-inference</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/how-to-cut-cold-starts-for-model-serving-pods</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/why-model-weights-don-t-belong-in-your-container-image</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/how-to-use-karpenter-to-right-size-gpu-nodes-on-amazon-eks</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/how-to-write-maintainable-helm-charts-for-ai-services</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/benefits-of-gitops-with-argo-cd-for-ml-platform-teams</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/why-autoscaling-llm-inference-on-cpu-metrics-fails</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/how-to-serve-open-weight-llms-on-kubernetes-with-vllm</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/how-to-schedule-gpu-workloads-on-kubernetes-without-wasting-cards</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/why-trunk-based-development-suits-small-ai-teams</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/how-to-build-small-fast-docker-images-for-python-ai-services</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/benefits-of-preview-environments-for-ai-pull-requests</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/how-to-record-and-replay-production-traffic-to-test-ai-changes</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/how-to-deploy-to-aws-from-github-actions-without-stored-keys</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/benefits-of-feature-flags-for-shipping-ai-features-safely</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/how-to-roll-back-a-bad-model-or-prompt-change-in-minutes</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/why-canary-releases-matter-more-for-ai-features</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/versioning-prompts-like-code-a-release-process-for-llm-features</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/how-to-build-a-ci-cd-pipeline-for-an-llm-powered-service</loc><lastmod>2026-09-12</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/claude-for-code-review-setting-up-automated-pr-feedback-loops</loc><lastmod>2026-09-11</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/cost-optimizing-a-claude-based-pipeline-without-downgrading-quality</loc><lastmod>2026-09-11</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/claude-s-context-window-practical-limits-nobody-tells-you-about</loc><lastmod>2026-09-11</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/how-to-run-claude-agents-in-a-sandboxed-enterprise-environment</loc><lastmod>2026-09-11</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/claude-skills-packaging-institutional-knowledge-into-reusable-workflows</loc><lastmod>2026-09-11</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/five-claude-prompting-patterns-that-survive-contact-with-real-users</loc><lastmod>2026-09-11</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/claude-s-constitutional-ai-what-it-means-for-enterprise-trust-reviews</loc><lastmod>2026-09-11</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/claude-code-hooks-automating-guardrails-your-team-actually-needs</loc><lastmod>2026-09-11</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/claude-and-vision-extracting-data-from-scanned-enterprise-documents</loc><lastmod>2026-09-11</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/writing-evals-for-claude-powered-agents-a-starter-template</loc><lastmod>2026-09-11</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/claude-api-rate-limits-what-breaks-first-in-production</loc><lastmod>2026-09-11</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/how-claude-handles-ambiguous-enterprise-requirements-and-how-to-help-it</loc><lastmod>2026-09-11</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/claude-s-artifacts-building-internal-tools-without-a-frontend-team</loc><lastmod>2026-09-11</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/migrating-from-gpt-4-to-claude-a-practical-porting-guide</loc><lastmod>2026-09-11</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/claude-code-subagents-explained-when-to-fork-when-to-spawn-fresh</loc><lastmod>2026-09-11</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/debugging-claude-tool-calling-failures-a-troubleshooting-checklist</loc><lastmod>2026-09-11</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/claude-s-computer-use-a-field-guide-for-forward-deployed-engineers</loc><lastmod>2026-09-11</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/how-to-structure-system-prompts-for-claude-in-enterprise-deployments</loc><lastmod>2026-09-11</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/claude-projects-vs-custom-rag-pipelines-picking-the-right-tool</loc><lastmod>2026-09-11</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/prompt-caching-in-claude-cutting-your-api-bill-without-cutting-quality</loc><lastmod>2026-09-11</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/building-a-customer-support-agent-with-claude-and-tool-use</loc><lastmod>2026-09-11</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/claude-s-extended-thinking-mode-when-it-helps-and-when-it-s-overkill</loc><lastmod>2026-09-11</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/how-to-give-claude-long-term-memory-with-file-based-context</loc><lastmod>2026-09-11</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/setting-up-claude-code-in-your-ci-pipeline-in-15-minutes</loc><lastmod>2026-09-11</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/claude-sonnet-5-vs-opus-5-which-model-should-power-your-production-agent</loc><lastmod>2026-09-11</lastmod></url>
  <url><loc>https://www.wittytech.dev/blog/forward-deployed-engineering-market-analysis-2026</loc><lastmod>2026-09-10</lastmod></url>
</urlset>
