<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://zoelog.vercel.app</loc>
<priority>1</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/articles</loc>
<priority>0.9</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/projects</loc>
<priority>0.9</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/snippets</loc>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/about</loc>
<priority>0.7</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/archive</loc>
<priority>0.6</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/articles/frontend/migrating-supabase-to-neon-authjs-vercel-blob</loc>
<lastmod>2026-06-10T00:00:00.000Z</lastmod>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/articles/frontend/swiper-v8-to-v11-loop-mode-migration</loc>
<lastmod>2026-04-22T00:00:00.000Z</lastmod>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/articles/frontend/migrating-syntax-highlighting-prism-to-shiki</loc>
<lastmod>2026-04-15T00:00:00.000Z</lastmod>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/articles/frontend/msw-v1-to-v2-migration-jest-setup</loc>
<lastmod>2026-04-14T00:00:00.000Z</lastmod>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/articles/infrastructure/why-node-24-improved-performance</loc>
<lastmod>2026-04-02T00:00:00.000Z</lastmod>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/articles/frontend/virtualizing-mui-autocomplete-react-window</loc>
<lastmod>2026-03-31T00:00:00.000Z</lastmod>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/articles/infrastructure/upgrading-nodejs-20-to-24-nextjs-docker</loc>
<lastmod>2026-03-25T00:00:00.000Z</lastmod>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/articles/frontend/svg-custom-fonts-opentype-figma-illustrator</loc>
<lastmod>2026-01-14T00:00:00.000Z</lastmod>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/articles/infrastructure/nextjs-16-ssg-turbopack-s3-upload</loc>
<lastmod>2026-01-07T00:00:00.000Z</lastmod>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/articles/frontend/nextjs-app-router-migration-mdx-to-markdown</loc>
<lastmod>2025-12-30T00:00:00.000Z</lastmod>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/articles/frontend/react-19-migration-recoil</loc>
<lastmod>2025-12-30T00:00:00.000Z</lastmod>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/articles/frontend/trying-vitest-coming-from-jest</loc>
<lastmod>2025-12-22T00:00:00.000Z</lastmod>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/articles/infrastructure/git-sparse-checkout-large-repos</loc>
<lastmod>2025-12-19T00:00:00.000Z</lastmod>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/articles/frontend/building-svg-chart-generator-sheetjs-storybook</loc>
<lastmod>2025-12-15T00:00:00.000Z</lastmod>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/articles/infrastructure/npm-ignore-scripts-flag</loc>
<lastmod>2025-12-01T00:00:00.000Z</lastmod>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/articles/fullstack/integrating-bigquery-nextjs</loc>
<lastmod>2025-11-25T00:00:00.000Z</lastmod>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/articles/fullstack/solving-google-sheets-timeout-buildtime-json</loc>
<lastmod>2025-11-19T00:00:00.000Z</lastmod>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/articles/infrastructure/shell-tools-setup-checklist</loc>
<lastmod>2025-10-30T00:00:00.000Z</lastmod>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/articles/infrastructure/infra-tools-setup-checklist</loc>
<lastmod>2025-10-24T00:00:00.000Z</lastmod>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/articles/infrastructure/nextjs-docker-build-cache</loc>
<lastmod>2025-10-10T00:00:00.000Z</lastmod>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/articles/backend/automating-spreadsheet-to-github-workflow</loc>
<lastmod>2025-10-08T00:00:00.000Z</lastmod>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/articles/infrastructure/tgw-advanced-patterns</loc>
<lastmod>2025-09-17T00:00:00.000Z</lastmod>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/articles/frontend/nextjs-setup-checklist</loc>
<lastmod>2025-09-12T00:00:00.000Z</lastmod>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/articles/fullstack/migrating-ssr-to-isg-production</loc>
<lastmod>2025-09-09T00:00:00.000Z</lastmod>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/articles/observability/understanding-jvm-garbage-collection</loc>
<lastmod>2025-08-18T00:00:00.000Z</lastmod>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/articles/observability/zero-noise-monitoring</loc>
<lastmod>2025-08-15T00:00:00.000Z</lastmod>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/articles/infrastructure/nextjs-sre-perspective</loc>
<lastmod>2025-08-14T00:00:00.000Z</lastmod>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/articles/infrastructure/aws-s3-cp-vs-sync</loc>
<lastmod>2025-08-02T00:00:00.000Z</lastmod>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/articles/observability/datadog-query-lessons</loc>
<lastmod>2025-07-30T00:00:00.000Z</lastmod>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/articles/infrastructure/kubernetes-secrets-rotation</loc>
<lastmod>2025-07-22T00:00:00.000Z</lastmod>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/articles/infrastructure/deploy-cfn-with-gha</loc>
<lastmod>2025-07-14T00:00:00.000Z</lastmod>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/articles/infrastructure/enable-multi-cpu-nodejs</loc>
<lastmod>2025-06-30T00:00:00.000Z</lastmod>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/articles/infrastructure/liveness-vs-readiness</loc>
<lastmod>2025-06-11T00:00:00.000Z</lastmod>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/articles/infrastructure/k8s-dns-resolution-and-coredns</loc>
<lastmod>2025-05-12T00:00:00.000Z</lastmod>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/articles/backend/slack-bot-akamai-cache-purge-lambda</loc>
<lastmod>2025-04-15T00:00:00.000Z</lastmod>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/articles/infrastructure/aws-oidc-gha</loc>
<lastmod>2025-03-27T00:00:00.000Z</lastmod>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/articles/frontend/android-webview-native-call</loc>
<lastmod>2025-01-14T00:00:00.000Z</lastmod>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/articles/infrastructure/s3-lambda</loc>
<lastmod>2025-01-09T00:00:00.000Z</lastmod>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/articles/infrastructure/akamai-cache-design</loc>
<lastmod>2024-12-03T00:00:00.000Z</lastmod>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/articles/fullstack/fixing-cookie-loss-fastify-nextjs</loc>
<lastmod>2024-09-19T00:00:00.000Z</lastmod>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/articles/frontend/generate-type-from-json</loc>
<lastmod>2024-07-25T00:00:00.000Z</lastmod>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/articles/frontend/dark-theme-with-emotion</loc>
<lastmod>2024-07-21T00:00:00.000Z</lastmod>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/articles/frontend/configure-ssr-emotion-nextjs</loc>
<lastmod>2024-07-15T00:00:00.000Z</lastmod>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/articles/frontend/mdx-syntax-highlighting-prism</loc>
<lastmod>2024-07-15T00:00:00.000Z</lastmod>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/articles/infrastructure/deploy-nextjs-ssg-to-s3</loc>
<lastmod>2024-03-15T00:00:00.000Z</lastmod>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/articles/infrastructure/gas-calendar-slack-reminder</loc>
<lastmod>2023-11-16T00:00:00.000Z</lastmod>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/snippets/gha/comment-to-pr</loc>
<lastmod>2025-01-29T00:00:00.000Z</lastmod>
<priority>0.6</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/snippets/gha/send-message-to-slack</loc>
<lastmod>2024-07-08T00:00:00.000Z</lastmod>
<priority>0.6</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/snippets/gha/create-pr</loc>
<lastmod>2023-10-06T00:00:00.000Z</lastmod>
<priority>0.6</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/projects/creative-workflow-tool</loc>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/projects/creative-workflow-tool/picking-the-stack</loc>
<lastmod>2026-05-08T00:00:00.000Z</lastmod>
<priority>0.7</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/projects/creative-workflow-tool/setting-up-the-ai-workflow</loc>
<lastmod>2026-05-12T00:00:00.000Z</lastmod>
<priority>0.7</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/projects/creative-workflow-tool/building-ui-first-on-mocks</loc>
<lastmod>2026-05-30T00:00:00.000Z</lastmod>
<priority>0.7</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/projects/creative-workflow-tool/workflow-ui-on-next-16</loc>
<lastmod>2026-06-11T00:00:00.000Z</lastmod>
<priority>0.7</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/projects/creative-workflow-tool/shipping-to-cloud-run</loc>
<lastmod>2026-06-13T00:00:00.000Z</lastmod>
<priority>0.7</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/projects/creative-workflow-tool/building-against-a-moving-spec</loc>
<lastmod>2026-06-22T00:00:00.000Z</lastmod>
<priority>0.7</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/projects/slack-gemini-bot</loc>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/projects/slack-gemini-bot/first-flask-app-nextjs-perspective</loc>
<lastmod>2025-10-21T00:00:00.000Z</lastmod>
<priority>0.7</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/projects/slack-gemini-bot/typescript-to-python-dev-setup</loc>
<lastmod>2025-10-21T00:00:00.000Z</lastmod>
<priority>0.7</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/projects/slack-gemini-bot/deploying-python-to-gcp-cloud-run</loc>
<lastmod>2025-11-11T00:00:00.000Z</lastmod>
<priority>0.7</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/projects/slack-gemini-bot/integrating-gemini-vertex-ai</loc>
<lastmod>2025-11-12T00:00:00.000Z</lastmod>
<priority>0.7</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/projects/slack-gemini-bot/adding-gcs-memory-to-gemini</loc>
<lastmod>2025-12-08T00:00:00.000Z</lastmod>
<priority>0.7</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/projects/slack-gemini-bot/troubleshooting-duplicate-messages-and-cold-starts</loc>
<lastmod>2025-12-17T00:00:00.000Z</lastmod>
<priority>0.7</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/projects/slack-gemini-bot/setting-up-analytics-with-bigquery-and-looker-studio</loc>
<lastmod>2025-12-18T00:00:00.000Z</lastmod>
<priority>0.7</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/projects/slack-gemini-bot/auto-refreshing-gcs-memory-with-pubsub</loc>
<lastmod>2026-01-28T00:00:00.000Z</lastmod>
<priority>0.7</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/projects/slack-gemini-bot/adding-user-feedback-buttons</loc>
<lastmod>2026-03-03T00:00:00.000Z</lastmod>
<priority>0.7</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/projects/slack-gemini-bot/adding-knowledge-via-slack-workflow</loc>
<lastmod>2026-03-23T00:00:00.000Z</lastmod>
<priority>0.7</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/projects/slack-gemini-bot/migrating-from-gemini-to-claude</loc>
<lastmod>2026-04-08T00:00:00.000Z</lastmod>
<priority>0.7</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/projects/slack-gemini-bot/adding-similar-case-recommendations</loc>
<lastmod>2026-04-15T00:00:00.000Z</lastmod>
<priority>0.7</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/projects/slack-gemini-bot/syncing-confluence-to-gcs</loc>
<lastmod>2026-04-23T00:00:00.000Z</lastmod>
<priority>0.7</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/projects/slack-workflow-automations</loc>
<priority>0.8</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/projects/slack-workflow-automations/private-dms-from-a-slack-workflow</loc>
<lastmod>2026-06-02T00:00:00.000Z</lastmod>
<priority>0.7</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/projects/slack-workflow-automations/slack-form-to-spreadsheet-and-calendar</loc>
<lastmod>2026-06-04T00:00:00.000Z</lastmod>
<priority>0.7</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/projects/slack-workflow-automations/auto-routing-reports-to-the-right-owner</loc>
<lastmod>2026-06-06T00:00:00.000Z</lastmod>
<priority>0.7</priority>
</url>
<url>
<loc>https://zoelog.vercel.app/projects/slack-workflow-automations/letting-an-ai-agent-open-the-pr</loc>
<lastmod>2026-06-09T00:00:00.000Z</lastmod>
<priority>0.7</priority>
</url>
</urlset>
