<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://zidan.me/</loc></url><url><loc>https://zidan.me/blog/</loc></url><url><loc>https://zidan.me/blog/a-self-hosted-read-listen-ask-reader-my-journey-how-to-use-it/</loc></url><url><loc>https://zidan.me/blog/airflow-on-kubernetes-series/part-1-setup-helm-gitsync/</loc></url><url><loc>https://zidan.me/blog/airflow-on-kubernetes-series/part-2-database-pgbouncer/</loc></url><url><loc>https://zidan.me/blog/airflow-on-kubernetes-series/part-3-executors-and-lifecycle/</loc></url><url><loc>https://zidan.me/blog/airflow-on-kubernetes-series/part-4-xcom-secrets-slack/</loc></url><url><loc>https://zidan.me/blog/building-a-vision-language-api-to-convert-pdfs-into-markdown-with-smoldocling/</loc></url><url><loc>https://zidan.me/blog/crdts-from-scratch/part-1-foundations/</loc></url><url><loc>https://zidan.me/blog/crdts-from-scratch/part-2-the-crdt-zoo/</loc></url><url><loc>https://zidan.me/blog/crdts-from-scratch/part-3-use-cases-and-libraries/</loc></url><url><loc>https://zidan.me/blog/distributed-clocks-series/part-1-wall-clocks-and-causality/</loc></url><url><loc>https://zidan.me/blog/distributed-clocks-series/part-2-logical-clocks/</loc></url><url><loc>https://zidan.me/blog/distributed-clocks-series/part-3-hybrid-clocks-in-production/</loc></url><url><loc>https://zidan.me/blog/event-sourcing-from-the-ground-up/part-1-foundations/</loc></url><url><loc>https://zidan.me/blog/event-sourcing-from-the-ground-up/part-2-building-it-in-kotlin/</loc></url><url><loc>https://zidan.me/blog/event-sourcing-from-the-ground-up/part-3-cqrs-and-projections/</loc></url><url><loc>https://zidan.me/blog/event-sourcing-from-the-ground-up/part-4-production-realities/</loc></url><url><loc>https://zidan.me/blog/idempotency-series/part-1-the-exactly-once-lie/</loc></url><url><loc>https://zidan.me/blog/idempotency-series/part-2-building-the-key-store/</loc></url><url><loc>https://zidan.me/blog/idempotency-series/part-3-idempotent-consumers-and-pipelines/</loc></url><url><loc>https://zidan.me/blog/monitoring-next-js-with-prometheus-in-kubernetes/</loc></url><url><loc>https://zidan.me/blog/page/2/</loc></url><url><loc>https://zidan.me/blog/software-engineering-in-the-time-of-ai/</loc></url><url><loc>https://zidan.me/blog/turn-your-coding-agent-into-a-grounded-coding-assistant/</loc></url><url><loc>https://zidan.me/projects/</loc></url><url><loc>https://zidan.me/resume/</loc></url></urlset>