<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
  xmlns:xhtml="http://www.w3.org/1999/xhtml">
  <url>
    <loc>/tags/bazel/</loc>
    <lastmod>2026-04-17T14:00:00-07:00</lastmod>
  </url><url>
    <loc>/series/bazel-torch/</loc>
    <lastmod>2026-04-17T14:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/bazel-torch-explicit-system-torch-pr-review/</loc>
    <lastmod>2026-04-17T14:00:00-07:00</lastmod>
  </url><url>
    <loc>/categories/build/</loc>
    <lastmod>2026-04-17T14:00:00-07:00</lastmod>
  </url><url>
    <loc>/categories/</loc>
    <lastmod>2026-04-17T14:00:00-07:00</lastmod>
  </url><url>
    <loc>/tags/dependencies/</loc>
    <lastmod>2026-04-17T14:00:00-07:00</lastmod>
  </url><url>
    <loc>/</loc>
    <lastmod>2026-04-17T14:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/</loc>
    <lastmod>2026-04-17T14:00:00-07:00</lastmod>
  </url><url>
    <loc>/series/</loc>
    <lastmod>2026-04-17T14:00:00-07:00</lastmod>
  </url><url>
    <loc>/tags/</loc>
    <lastmod>2026-04-17T14:00:00-07:00</lastmod>
  </url><url>
    <loc>/tags/torch/</loc>
    <lastmod>2026-04-17T14:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/image-build-incident-and-workplace-language-arts/</loc>
    <lastmod>2026-04-17T10:00:00-07:00</lastmod>
  </url><url>
    <loc>/tags/azure/</loc>
    <lastmod>2026-04-17T10:00:00-07:00</lastmod>
  </url><url>
    <loc>/tags/ci/</loc>
    <lastmod>2026-04-17T10:00:00-07:00</lastmod>
  </url><url>
    <loc>/tags/communication/</loc>
    <lastmod>2026-04-17T10:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/distilling-colleagues-jie-li/</loc>
    <lastmod>2026-04-17T10:00:00-07:00</lastmod>
  </url><url>
    <loc>/tags/infra/</loc>
    <lastmod>2026-04-17T10:00:00-07:00</lastmod>
  </url><url>
    <loc>/tags/learning/</loc>
    <lastmod>2026-04-17T10:00:00-07:00</lastmod>
  </url><url>
    <loc>/tags/monorepo/</loc>
    <lastmod>2026-04-17T10:00:00-07:00</lastmod>
  </url><url>
    <loc>/tags/terraform/</loc>
    <lastmod>2026-04-17T10:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/bazel-migration-war-story-phase-0-and-1/</loc>
    <lastmod>2026-04-16T11:00:00-07:00</lastmod>
  </url><url>
    <loc>/tags/migration/</loc>
    <lastmod>2026-04-16T11:00:00-07:00</lastmod>
  </url><url>
    <loc>/tags/ai-tooling/</loc>
    <lastmod>2026-04-15T12:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/til-diarization-and-training-stages/</loc>
    <lastmod>2026-04-15T12:00:00-07:00</lastmod>
  </url><url>
    <loc>/tags/docker/</loc>
    <lastmod>2026-04-15T10:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/why-bazel-ci-needs-its-own-docker-image/</loc>
    <lastmod>2026-04-15T10:00:00-08:00</lastmod>
  </url><url>
    <loc>/tags/design/</loc>
    <lastmod>2026-04-15T09:00:00-07:00</lastmod>
  </url><url>
    <loc>/tags/devex/</loc>
    <lastmod>2026-04-15T09:00:00-07:00</lastmod>
  </url><url>
    <loc>/tags/infrastructure/</loc>
    <lastmod>2026-04-15T09:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/local-agent-scheduler-cron-daemon-on-your-mac/</loc>
    <lastmod>2026-04-15T09:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/shipping-your-local-ai-server-to-your-team/</loc>
    <lastmod>2026-04-15T09:00:00-07:00</lastmod>
  </url><url>
    <loc>/tags/oncall/</loc>
    <lastmod>2026-04-12T10:00:00-07:00</lastmod>
  </url><url>
    <loc>/series/oncall-chronicles/</loc>
    <lastmod>2026-04-12T10:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/oncall-kb-enrichment/</loc>
    <lastmod>2026-04-12T10:00:00-07:00</lastmod>
  </url><url>
    <loc>/tags/_chsh/</loc>
    <lastmod>2026-04-11T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/tags/automation/</loc>
    <lastmod>2026-04-11T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/tags/claude-code/</loc>
    <lastmod>2026-04-11T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/tags/hammerspoon/</loc>
    <lastmod>2026-04-11T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/tags/macos/</loc>
    <lastmod>2026-04-11T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/system-wide-translate-to-chinese-on-macos/</loc>
    <lastmod>2026-04-11T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/tags/python/</loc>
    <lastmod>2026-04-10T18:00:00-07:00</lastmod>
  </url><url>
    <loc>/tags/testing/</loc>
    <lastmod>2026-04-10T18:00:00-07:00</lastmod>
  </url><url>
    <loc>/tags/til/</loc>
    <lastmod>2026-04-10T18:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/til-python-sys-modules-collision-test-passes-alone-fails-together/</loc>
    <lastmod>2026-04-10T18:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/til-multi-arch-docker-images-are-not-optional/</loc>
    <lastmod>2026-04-10T12:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/til-five-things-from-a-chaotic-cicd-oncall-night/</loc>
    <lastmod>2026-04-09T23:00:00-07:00</lastmod>
  </url><url>
    <loc>/tags/github/</loc>
    <lastmod>2026-04-09T12:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/til-github-auto-merge-silently-fails-on-disallowed-merge-method/</loc>
    <lastmod>2026-04-09T12:00:00-07:00</lastmod>
  </url><url>
    <loc>/tags/github-actions/</loc>
    <lastmod>2026-04-08T10:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/how-our-main-ci-workflow-actually-works/</loc>
    <lastmod>2026-04-08T10:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/bazel-torch-gpu-vs-cpu/</loc>
    <lastmod>2026-04-06T10:00:00-08:00</lastmod>
  </url><url>
    <loc>/tags/cuda/</loc>
    <lastmod>2026-04-04T10:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/nccl-and-infiniband-map-of-territory/</loc>
    <lastmod>2026-04-04T10:00:00-08:00</lastmod>
  </url><url>
    <loc>/tags/emacs/</loc>
    <lastmod>2026-04-04T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/file-search-cheatsheet/</loc>
    <lastmod>2026-04-04T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/til-curling-private-github-release-assets/</loc>
    <lastmod>2026-04-03T12:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/auth-landscape-for-new-grads/</loc>
    <lastmod>2026-04-03T10:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/two-ways-to-make-claude-read-your-ci-logs/</loc>
    <lastmod>2026-03-23T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/tags/esl/</loc>
    <lastmod>2026-03-15T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/series/esl-at-work/</loc>
    <lastmod>2026-03-15T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/esl-at-work-phrase-book-patterns-that-reduce-cognitive-load/</loc>
    <lastmod>2026-03-15T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/categories/live/</loc>
    <lastmod>2026-03-15T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/tags/neurodivergence/</loc>
    <lastmod>2026-03-15T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/1600-lines-of-yaml-github-actions-workflow-refactor/</loc>
    <lastmod>2026-03-13T10:00:00-07:00</lastmod>
  </url><url>
    <loc>/tags/_star/</loc>
    <lastmod>2026-03-13T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/series/bazel-migration/</loc>
    <lastmod>2026-03-13T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/bazel-migration-the-roi-math-of-knowing-your-blockers/</loc>
    <lastmod>2026-03-13T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/from-ci-failure-to-ai-explanation/</loc>
    <lastmod>2026-03-13T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/harness-engineering-the-missing-manual/</loc>
    <lastmod>2026-03-13T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/learn-to-review-prs-faster/</loc>
    <lastmod>2026-03-13T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/the-agent-era-needs-more-than-a-slack-thread/</loc>
    <lastmod>2026-03-13T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/the-soft-fail-pattern-for-advisory-ci-checks/</loc>
    <lastmod>2026-03-13T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/where-does-devex-end-and-everything-else-begin/</loc>
    <lastmod>2026-03-13T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/bazel-migration-21-open-prs-and-a-mass-extinction/</loc>
    <lastmod>2026-03-12T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/bazel-migration-common-blockers-and-the-roadmap-out/</loc>
    <lastmod>2026-03-12T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/tags/cc-toolchain/</loc>
    <lastmod>2026-03-12T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/bazel-migration-cross-reference-posts-prs-and-connections/</loc>
    <lastmod>2026-03-12T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/bazel-migration-how-i-gave-the-monorepo-a-complete-dep-graph/</loc>
    <lastmod>2026-03-12T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/series/ci-observability/</loc>
    <lastmod>2026-03-12T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/ci-observability-tracing-the-training-metrics-pipeline/</loc>
    <lastmod>2026-03-12T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/esl-at-work-the-system-freezes-for-three-seconds/</loc>
    <lastmod>2026-03-12T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/i-thought-it-was-just-one-tag-docker-image-tagging-rabbit-hole/</loc>
    <lastmod>2026-03-12T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/the-bazel-blog-map/</loc>
    <lastmod>2026-03-12T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/tags/kubernetes/</loc>
    <lastmod>2026-03-12T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/tags/meta/</loc>
    <lastmod>2026-03-12T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/bazel-migration-a-cuda-package-without-bazel-knowing-about-cuda/</loc>
    <lastmod>2026-03-11T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/bazel-migration-the-biggest-blocker-was-a-cython-package/</loc>
    <lastmod>2026-03-11T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/parallel-claude-sessions-beat-subagents/</loc>
    <lastmod>2026-03-11T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/ai-ci-helper-first-real-test/</loc>
    <lastmod>2026-03-11T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/bazel-migration-cracking-the-biggest-blocker-4-cython-files/</loc>
    <lastmod>2026-03-10T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/series/python-packaging/</loc>
    <lastmod>2026-03-10T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/python-packaging-native-code-in-a-monorepo/</loc>
    <lastmod>2026-03-10T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/tags/dep-graph/</loc>
    <lastmod>2026-03-09T12:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/gpu-test-targeting-with-bazel-dep-graph/</loc>
    <lastmod>2026-03-09T12:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/scoped-pyright-via-dep-graph/</loc>
    <lastmod>2026-03-09T12:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/teaching-bazel-to-see-non-python-deps/</loc>
    <lastmod>2026-03-09T12:00:00-07:00</lastmod>
  </url><url>
    <loc>/series/docker-builds/</loc>
    <lastmod>2026-03-09T10:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/docker-builds-how-yolo-tags-images-and-the-stale-prepuller/</loc>
    <lastmod>2026-03-09T10:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/bazel-migration-reading-status-like-a-map/</loc>
    <lastmod>2026-03-09T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/tags/deep-dive/</loc>
    <lastmod>2026-03-09T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/bazel-migration-benchmarking-bazel-vs-the-status-quo/</loc>
    <lastmod>2026-03-09T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/bazel-migration-torch-packages-the-complete-decision-tree/</loc>
    <lastmod>2026-03-09T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/bazel-torch-bazel-doesnt-care-what-version-of-numpy-you-have/</loc>
    <lastmod>2026-03-09T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/bazel-torch-two-prs-one-compiler-and-a-package-that-didnt-need-either/</loc>
    <lastmod>2026-03-09T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/build-files-that-lie-missing-deps-in-bazel/</loc>
    <lastmod>2026-03-09T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/esl-at-work-meeting-prep-when-english-isnt-free/</loc>
    <lastmod>2026-03-09T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/tags/gazelle/</loc>
    <lastmod>2026-03-09T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/inside-find-changed-how-a-monorepos-homegrown-test-selector-actually-works/</loc>
    <lastmod>2026-03-09T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/the-30-second-fix-nobody-did-for-3-months-stale-docker-prepuller/</loc>
    <lastmod>2026-03-09T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/the-test-hierarchy-map-pytest-bazel-and-everything-in-between/</loc>
    <lastmod>2026-03-09T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/what-a-full-dep-graph-actually-unlocks/</loc>
    <lastmod>2026-03-09T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/bazel-torch-two-python-interpreters/</loc>
    <lastmod>2026-03-08T14:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/sequence-length-distribution-mfu-at-scale/</loc>
    <lastmod>2026-03-08T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/i-build-the-kitchen-but-ive-never-cooked-a-build-engineers-ml-gap/</loc>
    <lastmod>2026-03-08T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/the-dep-graph-is-the-product-bazel-query-over-migration/</loc>
    <lastmod>2026-03-08T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/personal-llm-benchmarks/</loc>
    <lastmod>2026-03-08T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/the-prototype-layer-closed-prs-and-experimental-infra/</loc>
    <lastmod>2026-03-08T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/i-had-ai-write-my-pr-now-i-need-to-understand-the-review/</loc>
    <lastmod>2026-03-08T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/bazel-rules-python-vs-rules-py/</loc>
    <lastmod>2026-03-08T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/tags/debugging/</loc>
    <lastmod>2026-03-07T10:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/enterprise-ai-tooling-layers-of-confusion/</loc>
    <lastmod>2026-03-07T10:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/python-packaging-native-build-tooling-below-import-torch/</loc>
    <lastmod>2026-03-07T10:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/bazel-python-build-chain/</loc>
    <lastmod>2026-03-07T10:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/bazel-migration-studying-a-migration-playbook/</loc>
    <lastmod>2026-03-07T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/browser-tiling-vs-corporate-sso/</loc>
    <lastmod>2026-03-07T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/ccboard-v2-design/</loc>
    <lastmod>2026-03-07T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/monorepo-test-planner/</loc>
    <lastmod>2026-03-07T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/meeting-transcripts-are-trapped-in-otter/</loc>
    <lastmod>2026-03-07T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/the-parser-map-every-tool-in-your-python-monorepo/</loc>
    <lastmod>2026-03-07T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/terminal-productivity-iterm2-claude-code/</loc>
    <lastmod>2026-03-07T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/two-engineers-one-dependency-graph-parallel-ci-work/</loc>
    <lastmod>2026-03-07T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/bazel-migration-mai-config-the-first-torch-package/</loc>
    <lastmod>2026-03-06T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/bazel-torch-it-works-but-i-cant-merge-it/</loc>
    <lastmod>2026-03-06T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/ci-observability-anatomy-of-a-25-minute-lint-check/</loc>
    <lastmod>2026-03-06T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/series/gazelle/</loc>
    <lastmod>2026-03-06T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/gazelle-reading-the-source-code/</loc>
    <lastmod>2026-03-06T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/github-actions-triggers/</loc>
    <lastmod>2026-03-06T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/liu-jia-on-ai-brains-and-the-meaning-of-intelligence/</loc>
    <lastmod>2026-03-06T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/tags/philosophy/</loc>
    <lastmod>2026-03-06T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/tags/pl/</loc>
    <lastmod>2026-03-06T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/i-opened-our-pyrightconfig-and-found-11-ghost-environments/</loc>
    <lastmod>2026-03-05T14:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/asts-for-the-impatient-python-developer/</loc>
    <lastmod>2026-03-05T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/bazel-torch-when-a-macro-hides-tests-from-an-entire-platform/</loc>
    <lastmod>2026-03-05T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/tags/caching/</loc>
    <lastmod>2026-03-05T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/ci-observability-six-layers-deep-in-a-grafana-panel/</loc>
    <lastmod>2026-03-05T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/docker-builds-debugging-stuck-builds-with-datadog-and-gh-api/</loc>
    <lastmod>2026-03-05T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/docker-builds-when-the-cache-becomes-the-bottleneck/</loc>
    <lastmod>2026-03-05T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/gazelle-python-in-a-monorepo-the-invisible-machinery/</loc>
    <lastmod>2026-03-05T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/gazelle-when-it-cant-help-hand-writing-build-files/</loc>
    <lastmod>2026-03-05T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/reading-a-monorepo-like-an-archaeologist-forks-prefixes-and-org-structure/</loc>
    <lastmod>2026-03-05T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/three-paths-to-2m-in-ai/</loc>
    <lastmod>2026-03-05T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/wait-for-label/</loc>
    <lastmod>2026-03-05T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/ai-ci-fixer-was-broken/</loc>
    <lastmod>2026-03-05T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/ci-observability-runner-utilization-and-the-wrong-question/</loc>
    <lastmod>2026-03-04T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/esl-at-work-meeting-prep-as-engineering/</loc>
    <lastmod>2026-03-04T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/github-pr-review-has-three-buttons-and-they-matter/</loc>
    <lastmod>2026-03-04T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/how-i-review-prs-i-dont-own/</loc>
    <lastmod>2026-03-04T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/how-our-gpu-tests-actually-work/</loc>
    <lastmod>2026-03-04T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/pyright-runs-on-100-packages-when-1-changed/</loc>
    <lastmod>2026-03-04T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/ast-vs-grep-for-ci/</loc>
    <lastmod>2026-03-04T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/the-500-lines-that-run-every-gpu-test/</loc>
    <lastmod>2026-03-04T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/the-last-mile-problem-in-ai-ci-fix-loops/</loc>
    <lastmod>2026-03-04T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/github-actions-cache-guide/</loc>
    <lastmod>2026-03-04T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/what-you-learn-when-you-graph-a-monorepo/</loc>
    <lastmod>2026-03-04T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/esl-at-work-claude-code-meeting-phrases/</loc>
    <lastmod>2026-03-04T00:00:00+00:00</lastmod>
  </url><url>
    <loc>/posts/bazel-torch-presenting-the-pr-to-the-team/</loc>
    <lastmod>2026-03-03T13:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/bazel-torch-the-py-torch-test-pattern/</loc>
    <lastmod>2026-03-03T12:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/bazel-migration-6-packages-10-bumps-9-pushes/</loc>
    <lastmod>2026-03-03T08:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/bazel-cc-toolchain-i-was-wrong-about-use-default-shell-env/</loc>
    <lastmod>2026-03-03T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/python-packaging-how-blobfuse-works/</loc>
    <lastmod>2026-03-02T14:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/hitchhikers-guide-to-yolo-monorepo/</loc>
    <lastmod>2026-03-02T14:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/caching-layers-for-a-python-monorepo/</loc>
    <lastmod>2026-03-02T12:10:00-08:00</lastmod>
  </url><url>
    <loc>/tags/uv/</loc>
    <lastmod>2026-03-02T12:10:00-08:00</lastmod>
  </url><url>
    <loc>/posts/new-hires-guide-to-mai-infrastructure-terminology/</loc>
    <lastmod>2026-03-02T10:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/bazel-migration-cascade-analysis-which-packages-torch-blocks/</loc>
    <lastmod>2026-03-02T10:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/slack-enterprise-tokens-debugging-guide/</loc>
    <lastmod>2026-03-02T10:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/bazel-target-compatible-with-vs-select/</loc>
    <lastmod>2026-03-02T10:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/docker-builds-four-tries-one-dockerfile/</loc>
    <lastmod>2026-03-02T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/esl-at-work-the-doc-i-couldnt-read/</loc>
    <lastmod>2026-03-02T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/github-rate-limits/</loc>
    <lastmod>2026-03-02T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/hermetic-cc-toolchain-for-python-sdists-in-bazel/</loc>
    <lastmod>2026-03-02T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/python-packaging-pyproject-toml-101/</loc>
    <lastmod>2026-03-02T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/two-dependency-graphs-that-disagree-in-a-monorepo/</loc>
    <lastmod>2026-03-02T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/use-ai-agent-to-extreme/</loc>
    <lastmod>2026-03-02T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/docker-builds-when-one-cache-hides-another/</loc>
    <lastmod>2026-03-02T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/bazel-torch-option-a-the-simplest-option-that-wasnt/</loc>
    <lastmod>2026-03-01T08:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/esl-at-work-pushback-phrases-for-code-review/</loc>
    <lastmod>2026-02-27T14:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/bazel-cc-toolchain-for-python-c-extensions/</loc>
    <lastmod>2026-02-27T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/ci-observability-proving-a-ci-fix-actually-worked/</loc>
    <lastmod>2026-02-26T14:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/the-claude-code-config-ecosystem/</loc>
    <lastmod>2026-02-26T14:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/docker-builds-i-shipped-an-optimization-and-nothing-happened/</loc>
    <lastmod>2026-02-26T10:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/two-days-to-merge-six-files-docker-ci-friction/</loc>
    <lastmod>2026-02-25T14:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/bazel-torch-three-ways-to-smuggle-torch-in/</loc>
    <lastmod>2026-02-25T09:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/esl-at-work-selling-a-technical-problem-before-the-solution/</loc>
    <lastmod>2026-02-25T08:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/bazel-torch-making-bazel-see-system-torch-in-docker/</loc>
    <lastmod>2026-02-24T18:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/bazel-torch-option-b-and-the-five-obstacles/</loc>
    <lastmod>2026-02-24T16:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/docker-builds-the-two-phase-cache-trick/</loc>
    <lastmod>2026-02-24T14:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/gpu-tests-in-bazel-the-resource-problem/</loc>
    <lastmod>2026-02-24T14:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/bazel-torch-test-classification-the-real-ci-problem/</loc>
    <lastmod>2026-02-24T12:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/azure-acr-jargon-explained/</loc>
    <lastmod>2026-02-24T10:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/bazel-torch-what-does-success-actually-look-like/</loc>
    <lastmod>2026-02-24T10:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/when-homegrown-ci-tools-hit-the-ceiling/</loc>
    <lastmod>2026-02-24T10:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/bazel-migration-the-four-levels-of-readiness/</loc>
    <lastmod>2026-02-23T18:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/bazel-torch-the-override-that-overrode-everything/</loc>
    <lastmod>2026-02-23T18:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/gazelle-aspect-gazelle-cache-internals/</loc>
    <lastmod>2026-02-23T17:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/emacs-config-reload-layers/</loc>
    <lastmod>2026-02-23T14:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/til-uv-override-requirement-in-aspect-rules-py/</loc>
    <lastmod>2026-02-23T12:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/docker-builds-how-to-prove-an-optimization-actually-worked/</loc>
    <lastmod>2026-02-23T10:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/docker-builds-mount-tricks-and-the-uv-stable-lock-pattern/</loc>
    <lastmod>2026-02-23T10:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/docker-builds-reading-build-and-uv-sync-logs/</loc>
    <lastmod>2026-02-23T10:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/docker-builds-shipping-the-uv-stable-lock-optimization/</loc>
    <lastmod>2026-02-23T10:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/esl-at-work-ai-as-a-cheat-code/</loc>
    <lastmod>2026-02-23T09:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/esl-at-work-practice-log-1-prepping-a-weekly-sync/</loc>
    <lastmod>2026-02-23T09:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/ci-runner-landscape-for-monorepos/</loc>
    <lastmod>2026-02-23T09:00:00-08:00</lastmod>
  </url><url>
    <loc>/tags/go/</loc>
    <lastmod>2026-02-22T23:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/bazel-go-linker-compiler-flags/</loc>
    <lastmod>2026-02-22T23:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/bazel-ci-cache-strategies/</loc>
    <lastmod>2026-02-22T22:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/bazel-torch-how-bazel-resolves-python-deps-and-why-torch-breaks/</loc>
    <lastmod>2026-02-22T17:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/bazel-migration-62-percent-blocked-by-torch/</loc>
    <lastmod>2026-02-22T14:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/python-packaging-why-large-monorepos-build-their-own-package-manager/</loc>
    <lastmod>2026-02-22T11:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/gpu-meets-bazel-monorepo/</loc>
    <lastmod>2026-02-22T11:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/monorepo-integration-tests-bazel/</loc>
    <lastmod>2026-02-21T23:17:33-08:00</lastmod>
  </url><url>
    <loc>/posts/docker-builds-5-bazel-image-build-patterns-in-a-monorepo/</loc>
    <lastmod>2026-02-21T22:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/python-packaging-claude-code-built-my-pypi-infrastructure/</loc>
    <lastmod>2026-02-21T22:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/navigating-openai-code-maze-at-microsoft/</loc>
    <lastmod>2026-02-21T14:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/azure-devops-mcp-vs-azure-mcp/</loc>
    <lastmod>2026-02-21T10:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/python-packaging-testing-ado-pypi-feed-access-from-terminal/</loc>
    <lastmod>2026-02-21T10:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/docker-builds-layer-caching-trick-for-monorepo-lockfiles/</loc>
    <lastmod>2026-02-20T13:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/one-number-rules-them-all-omini-architecture/</loc>
    <lastmod>2026-02-20T11:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/docker-builds-splitting-uv-lock-for-faster-builds/</loc>
    <lastmod>2026-02-20T09:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/docker-builds-getting-ccache-in-with-buildkit-cache-mounts/</loc>
    <lastmod>2026-02-20T07:45:00-08:00</lastmod>
  </url><url>
    <loc>/posts/uber-flaky-test-system/</loc>
    <lastmod>2026-02-19T22:30:00-08:00</lastmod>
  </url><url>
    <loc>/posts/process-wrangling-on-macos-and-linux/</loc>
    <lastmod>2026-02-19T20:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/python-packaging-why-uv-sync-takes-40-minutes-on-a-cluster/</loc>
    <lastmod>2026-02-19T17:30:00-08:00</lastmod>
  </url><url>
    <loc>/posts/ai-powered-ci-failure-analysis/</loc>
    <lastmod>2026-02-19T10:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/decoding-infra-meeting-jargon/</loc>
    <lastmod>2026-02-19T10:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/bazel-query-survival-guide/</loc>
    <lastmod>2026-02-18T23:10:00-08:00</lastmod>
  </url><url>
    <loc>/posts/docker-builds-docker-build-vs-bazel-rules-oci/</loc>
    <lastmod>2026-02-18T23:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/four-ways-bazel-breaks-your-python-tests/</loc>
    <lastmod>2026-02-18T23:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/gazelle-python-manifest-and-modules-mapping/</loc>
    <lastmod>2026-02-18T22:30:00-08:00</lastmod>
  </url><url>
    <loc>/posts/python-packaging-uv-cli-cheatsheet/</loc>
    <lastmod>2026-02-18T22:30:00-08:00</lastmod>
  </url><url>
    <loc>/posts/networking-jargon-new-hire-guide/</loc>
    <lastmod>2026-02-18T14:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/kubernetes-networking-for-people-who-just-want-a-url/</loc>
    <lastmod>2026-02-18T11:30:00-08:00</lastmod>
  </url><url>
    <loc>/posts/wiring-ai-agents-into-ci-from-cold-dm-to-working-pipeline/</loc>
    <lastmod>2026-02-18T10:30:00-08:00</lastmod>
  </url><url>
    <loc>/posts/how-to-add-a-3rdparty-helm-chart-to-your-gitops-repo/</loc>
    <lastmod>2026-02-18T00:15:00-08:00</lastmod>
  </url><url>
    <loc>/posts/bazel-tests-passing-but-none-running/</loc>
    <lastmod>2026-02-17T22:30:00-08:00</lastmod>
  </url><url>
    <loc>/posts/python-packaging-pypi-registries-and-proxies-demystified/</loc>
    <lastmod>2026-02-17T15:30:00-08:00</lastmod>
  </url><url>
    <loc>/posts/formatters-linters-type-checkers-and-lsp/</loc>
    <lastmod>2026-02-15T15:30:00-08:00</lastmod>
  </url><url>
    <loc>/posts/ci-observability-tracing-ci-data-into-datadog/</loc>
    <lastmod>2026-02-15T14:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/docker-builds-fixing-slow-builds-without-rewriting-everything/</loc>
    <lastmod>2026-02-15T11:30:00-08:00</lastmod>
  </url><url>
    <loc>/posts/docker-builds-anatomy-of-a-40-minute-build/</loc>
    <lastmod>2026-02-15T11:20:00-08:00</lastmod>
  </url><url>
    <loc>/posts/docker-builds-the-uv-lock-cache-bust-problem/</loc>
    <lastmod>2026-02-15T11:10:00-08:00</lastmod>
  </url><url>
    <loc>/posts/docker-builds-bazel-wont-speed-up-your-docker-build/</loc>
    <lastmod>2026-02-15T11:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/openclaw-architecture-breakdown/</loc>
    <lastmod>2026-02-15T01:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/dns-bouncing-and-the-cost-of-one-endpoint/</loc>
    <lastmod>2026-02-15T00:30:00-08:00</lastmod>
  </url><url>
    <loc>/posts/python-packaging-what-most-devs-get-wrong/</loc>
    <lastmod>2026-02-14T10:40:00-08:00</lastmod>
  </url><url>
    <loc>/posts/bazel-torch-when-bazel-enters-dependency-resolution/</loc>
    <lastmod>2026-02-14T10:30:00-08:00</lastmod>
  </url><url>
    <loc>/posts/python-packaging-deps-at-gpu-scale/</loc>
    <lastmod>2026-02-14T10:20:00-08:00</lastmod>
  </url><url>
    <loc>/posts/python-packaging-how-python-resolves-dependencies/</loc>
    <lastmod>2026-02-14T10:10:00-08:00</lastmod>
  </url><url>
    <loc>/posts/python-packaging-uv-and-the-zoo-of-tools/</loc>
    <lastmod>2026-02-14T10:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/bazel-migration-the-delete-and-regenerate-roundtrip/</loc>
    <lastmod>2026-02-12T10:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/circular-deps-in-bazel-py-binary-as-firewall/</loc>
    <lastmod>2026-02-11T18:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/three-upstream-prs-in-one-day-contributing-to-aspect-rules-py/</loc>
    <lastmod>2026-02-11T14:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/python-packaging-from-pip-parse-to-uv-lock-in-bazel/</loc>
    <lastmod>2026-02-11T10:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/acr-dns-bouncing-when-geo-replication-breaks-your-ci/</loc>
    <lastmod>2026-02-10T10:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/bazel-marker-files-how-bazel-knows-when-to-redownload/</loc>
    <lastmod>2026-02-09T10:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/docker-builds-container-image-tagging-and-the-danger-of-latest/</loc>
    <lastmod>2026-02-08T18:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/docker-builds-whats-inside-a-40gb-ml-training-container/</loc>
    <lastmod>2026-02-08T14:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/gazelle-how-import-yaml-becomes-pypi-pyyaml/</loc>
    <lastmod>2026-02-08T10:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/k8s-securitycontext-why-fsgroup-alone-wont-fix-permission-denied/</loc>
    <lastmod>2026-02-07T10:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/python-packaging-why-your-build-tool-downloads-java/</loc>
    <lastmod>2026-02-06T10:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/ci-observability-statsd-prometheus-grafana-for-github-actions/</loc>
    <lastmod>2026-02-05T10:00:00-08:00</lastmod>
  </url><url>
    <loc>/tags/observability/</loc>
    <lastmod>2026-02-05T10:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/docker-builds-the-three-layers-of-caching-in-ci/</loc>
    <lastmod>2026-02-04T10:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/docker-builds-dind-vs-kubernetes-mode-and-17-minute-image-pulls/</loc>
    <lastmod>2026-02-02T10:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/k8s-affinity-and-tolerations-the-nightclub-bouncer-model/</loc>
    <lastmod>2026-01-30T14:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/docker-builds-the-remote-buildkit-experiment/</loc>
    <lastmod>2026-01-30T10:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/ci-shows-no-failing-tests-but-tests-are-failing/</loc>
    <lastmod>2026-01-29T10:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/gpu-test-sharding-weighted-distribution-across-h100-nodes/</loc>
    <lastmod>2026-01-28T10:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/bazel-test-output-bulky/</loc>
    <lastmod>2025-09-20T14:38:00-07:00</lastmod>
  </url><url>
    <loc>/tags/adhd/</loc>
    <lastmod>2025-08-07T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/migrated/building-systems-neurodivergent-brain/</loc>
    <lastmod>2025-08-07T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/tags/neurodiversity/</loc>
    <lastmod>2025-08-07T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/tags/productivity/</loc>
    <lastmod>2025-08-07T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/tags/systems-thinking/</loc>
    <lastmod>2025-08-07T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/migrated/adhd-developers-paradox/</loc>
    <lastmod>2025-08-07T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/migrated/esl-learning-system-for-engineers/</loc>
    <lastmod>2025-05-22T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/migrated/emacs-native-compilation-debug/</loc>
    <lastmod>2025-05-12T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/migrated/emacs-upgrade-2025/</loc>
    <lastmod>2025-05-12T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/embrace-the-chaos/</loc>
    <lastmod>2025-04-23T21:37:00-07:00</lastmod>
  </url><url>
    <loc>/posts/to-my-chaotic-brain/</loc>
    <lastmod>2025-04-23T20:56:00-07:00</lastmod>
  </url><url>
    <loc>/posts/migrated/open-source-licenses-what-engineers-actually-need-to-know/</loc>
    <lastmod>2025-01-19T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/tags/open-source/</loc>
    <lastmod>2025-01-19T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/bazel-parallelism-explained/</loc>
    <lastmod>2025-01-15T10:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/bazel-remote-cache-execution-deep-dive/</loc>
    <lastmod>2025-01-15T10:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/menu-tips-language-food-learning/</loc>
    <lastmod>2025-01-15T10:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/output-components-list/</loc>
    <lastmod>2025-01-15T10:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/doc-terminology-breakdown/</loc>
    <lastmod>2025-01-15T10:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/migrated/shell-scripting-the-stuff-nobody-teaches-you/</loc>
    <lastmod>2025-01-08T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/migrated/lessons-from-batch-migrating-seven-go-services-to-bazel/</loc>
    <lastmod>2025-01-02T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/bazel-cache/</loc>
    <lastmod>2024-12-29T21:29:00-08:00</lastmod>
  </url><url>
    <loc>/posts/migrated/bazels-analysis-phase-and-in-memory-cache/</loc>
    <lastmod>2024-12-26T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/migrated/ibazel-bazels-file-watcher-and-live-reload/</loc>
    <lastmod>2024-12-21T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/a-deep-dive-into-bazel/</loc>
    <lastmod>2024-12-01T21:08:00-08:00</lastmod>
  </url><url>
    <loc>/series/blogging-setup/</loc>
    <lastmod>2024-11-30T20:05:00-08:00</lastmod>
  </url><url>
    <loc>/posts/blogging-setup-part-2-github-action-and-aws-s3/</loc>
    <lastmod>2024-11-30T20:05:00-08:00</lastmod>
  </url><url>
    <loc>/posts/blogging-setup-part-1-emacs-org-mode-ox-hugo-and-hugo/</loc>
    <lastmod>2024-11-29T19:08:00-08:00</lastmod>
  </url><url>
    <loc>/tags/code-review/</loc>
    <lastmod>2024-11-20T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/migrated/logical-fallacies-at-work/</loc>
    <lastmod>2024-11-20T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/migrated/solitude-procrastination-and-the-aesthetic-self/</loc>
    <lastmod>2024-11-09T00:00:00-08:00</lastmod>
  </url><url>
    <loc>/posts/migrated/bazelcon-2024-field-notes/</loc>
    <lastmod>2024-10-14T10:00:00-07:00</lastmod>
  </url><url>
    <loc>/tags/conference/</loc>
    <lastmod>2024-10-14T10:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/migrated/four-years-in-hong-kong/</loc>
    <lastmod>2024-10-11T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/migrated/emacs-buffer-types/</loc>
    <lastmod>2024-10-08T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/migrated/why-communication-skills-matter/</loc>
    <lastmod>2024-10-03T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/migrated/procrastination-diagnosis-and-prescription/</loc>
    <lastmod>2024-09-20T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/migrated/developer-productivity-frameworks/</loc>
    <lastmod>2024-08-10T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/migrated/emacs-shell-options/</loc>
    <lastmod>2024-07-20T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/tags/linux/</loc>
    <lastmod>2024-07-20T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/tags/sysadmin/</loc>
    <lastmod>2024-07-20T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/migrated/tmux-screen-nohup/</loc>
    <lastmod>2024-07-20T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/migrated/emacs-org-screenshots/</loc>
    <lastmod>2024-06-29T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/tags/design-patterns/</loc>
    <lastmod>2024-06-01T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/migrated/factory-abstract-class-interface-and-the-multi-handler-pattern/</loc>
    <lastmod>2024-06-01T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/migrated/org-mode-review-system/</loc>
    <lastmod>2024-04-10T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/migrated/emacs-package-management/</loc>
    <lastmod>2024-03-15T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/migrated/emacs-keybinding-system/</loc>
    <lastmod>2024-03-15T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/migrated/bazelcon-2023-field-notes/</loc>
    <lastmod>2023-10-23T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/posts/migrated/cs-courses-that-shaped-how-i-think-about-systems/</loc>
    <lastmod>2022-07-01T00:00:00-07:00</lastmod>
  </url><url>
    <loc>/about/</loc>
  </url>
</urlset>
