<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
<url>
<loc>https://www.spasov.me</loc>
<lastmod>2026-03-29T14:16:39.795Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.spasov.me/portfolio</loc>
<lastmod>2026-03-29T14:16:39.795Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.spasov.me/portfolio/spasov-me-cms</loc>
<image:image>
<image:loc>https://media.spasov.me/files/spasov-me-00.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/z-embed-docs-demo-process-control.pptx</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/spasov-me-05.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/spasov-me-04.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/spasov-me-02.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/spasov-me-01.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/spasov-me-03.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/z-embed-docs-demo-spas-z-spasov-cv-jobs-bg-2024-05-30.pdf</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/z-embed-docs-demo-template-time-price-estimation.xlsx</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/spasov-me-08.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/spasov-me-06.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/spasov-me-performance-01.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/spasov-me-07.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/spasov-me-performance-02.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.773Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.spasov.me/portfolio/promptopia-cms</loc>
<image:image>
<image:loc>https://media.spasov.me/files/promptopia.mlt-cover.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/promptopia.mlt-05.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/promptopia.mlt-03.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/promptopia.mlt-02.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/promptopia.mlt-01.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/promptopia.mlt-04.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.774Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.spasov.me/portfolio/home-lab</loc>
<image:image>
<image:loc>https://media.spasov.me/files/homelab-proxmox-ve-cover.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/homelab-proxmox-ve-09.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/homelab-proxmox-ve-10.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/homelab-proxmox-ve-07.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/homelab-proxmox-ve-02.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/homelab-proxmox-ve-08.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/homelab-proxmox-ve-04.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/homelab-proxmox-ve-03.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/homelab-proxmox-ve-06.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/homelab-proxmox-ve-05.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/homelab-proxmox-ve-01.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.775Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.spasov.me/portfolio/weather-forecast</loc>
<image:image>
<image:loc>https://media.spasov.me/files/weather-forecast-cover.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/weather-forecast-04.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/weather-forecast-02.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/weather-forecast-01.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/weather-forecast-05.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/weather-forecast-03.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/weather-forecast-07.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/weather-forecast-06.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.776Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.spasov.me/portfolio/animated-portfolio</loc>
<image:image>
<image:loc>https://media.spasov.me/files/animated-portfolio-mlt-cover-01.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/animated-portfolio-mlt-cover-02.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/animated-portfolio-mlt-01.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/animated-portfolio-mlt-02.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/animated-portfolio-mlt-03.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/animated-portfolio-mlt-04.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.776Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.spasov.me/portfolio/vercel-basic-replica</loc>
<image:image>
<image:loc>https://media.spasov.me/files/vercel-basic-replica-00-cover.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/vercel-basic-replica-04.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/vercel-basic-replica-01.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/vercel-basic-replica-02.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/vercel-basic-replica-06.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/vercel-basic-replica-03.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/vercel-basic-replica-05.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/vercel-basic-replica-07.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.777Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.spasov.me/portfolio/bb-web-appstimate</loc>
<image:image>
<image:loc>https://media.spasov.me/files/appstimate-03.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/appstimate-02.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/appstimate-01.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/appstimate-04.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.777Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.spasov.me/portfolio/hyperzon-io-refactoring</loc>
<image:image>
<image:loc>https://media.spasov.me/files/hyperzon-refactoring-00.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/hyperzon-refactoring-02.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/hyperzon-refactoring-04.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/hyperzon-refactoring-03.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/hyperzon-refactoring-01.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.778Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.spasov.me/portfolio/swapi-starwars-searches</loc>
<image:image>
<image:loc>https://media.spasov.me/files/swapi-mlt-00.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/swapi-mlt-02.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/swapi-mlt-03.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/swapi-mlt-01.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.778Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.spasov.me/portfolio/game-hub</loc>
<image:image>
<image:loc>https://media.spasov.me/files/game-hub-mlt-00.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/game-hub-mlt-02.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/game-hub-mlt-01.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/game-hub-mlt-04.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/game-hub-mlt-05.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/game-hub-mlt-03.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.778Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.spasov.me/portfolio/mediawiki-projects</loc>
<image:image>
<image:loc>https://media.spasov.me/files/mediawiki-00-mlt.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/mediawiki-10-mlt.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/mediawiki-03-mlt.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/mediawiki-13-trivictoria.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/mediawiki-14-trivictoria.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/mediawiki-11-mlt.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/mediawiki-15-szs.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/mediawiki-09-mlt.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/mediawiki-12-trivictoria.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/mediawiki-01-mlt.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/mediawiki-16-szs.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/mediawiki-06-mlt.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/mediawiki-08-mlt.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/mediawiki-05-mlt.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/mediawiki-07-mlt.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/mediawiki-04-mlt.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/mediawiki-02-mlt.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.779Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.spasov.me/portfolio/builder-io-app-integration</loc>
<image:image>
<image:loc>https://media.spasov.me/files/builder-io-00.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/builder-io-04.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/builder-io-03.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/builder-io-06.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/builder-io-01.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/builder-io-02.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/builder-io-05.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/builder-io-07.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.780Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.spasov.me/portfolio/joker-ai</loc>
<image:image>
<image:loc>https://media.spasov.me/files/joker-ai-1.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/joker-ai-3.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/joker-ai-2.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.780Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.spasov.me/portfolio/api-translate-openai-to-cloudflare-ai</loc>
<image:image>
<image:loc>https://media.spasov.me/files/translation-api-openai-cloudflate-n8n.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.780Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.spasov.me/portfolio/snapix</loc>
<image:image>
<image:loc>https://media.spasov.me/files/snapix-screenshot-01.avif</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/snapix-screenshot-04.avif</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/snapix-screenshot-06.avif</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/snapix-screenshot-03.avif</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/snapix-screenshot-05.avif</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/snapix-screenshot-02.avif</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/snapix-screenshot-07.avif</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.780Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.spasov.me/portfolio/game-portfolio-2d</loc>
<image:image>
<image:loc>https://media.spasov.me/files/game-2d-portfolio-01.avif</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.781Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.spasov.me/portfolio/github-webhook-handler</loc>
<image:image>
<image:loc>https://media.spasov.me/files/gh-webhook-screenshot.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.781Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.spasov.me/about</loc>
<lastmod>2026-03-29T14:16:39.795Z</lastmod>
<changefreq>monthly</changefreq>
<priority>1</priority>
</url>
<url>
<loc>https://www.spasov.me/blog</loc>
<lastmod>2026-03-29T14:16:39.795Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/uspstah-redis-and-nextjs-14-ssg</loc>
<image:image>
<image:loc>https://media.spasov.me/files/nextjs-upstash-collide.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/nextjs-upstash.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.781Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/react-state-management</loc>
<image:image>
<image:loc>https://media.spasov.me/files/zustand-vs-redux.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.781Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/utc-to-relative-date-like-today</loc>
<image:image>
<image:loc>https://media.spasov.me/files/today-is-13th.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.782Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/pick-an-accent-color-from-string</loc>
<image:image>
<image:loc>https://media.spasov.me/files/pick-accent-color-from-string-00.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/pick-accent-color-from-string-01.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/pick-accent-color-from-string-02.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/spas-z-spasov-2015-thesis-abstract-full.pdf</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.782Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/vacation-july-2024</loc>
<image:image>
<image:loc>https://media.spasov.me/files/irakli-01.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/irakli-05.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/irakli-02.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/irakli-01.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/irakli-04.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/irakli-06.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/irakli-03.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/irakli-07.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.783Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/use-mrt-memo-mode-rows-workaround</loc>
<image:image>
<image:loc>https://media.spasov.me/files/mrt-v2-cover.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/szs-react-nextjs-performance-improvement.pdf</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.783Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/deploy-mongodb-with-tls-in-docker</loc>
<image:image>
<image:loc>https://media.spasov.me/files/mongodb-cover-image.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/MongoDb-CheatSheet.pdf</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.783Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/css-magics</loc>
<image:image>
<image:loc>https://media.spasov.me/files/blog-post-css-cover-image.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.783Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/react-js-references</loc>
<image:image>
<image:loc>https://media.spasov.me/files/blog-post-react-cover-image.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.783Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/nextjs-references</loc>
<image:image>
<image:loc>https://media.spasov.me/files/blog-nextjs-cover-image.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.784Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/maslinatas-olive-opening</loc>
<image:image>
<image:loc>https://media.spasov.me/files/vatosgym-maslinata-opening-cover.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.784Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/fitness-vacation-sept-2024</loc>
<image:image>
<image:loc>https://media.spasov.me/files/sunny-beach-2024-1.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/sunny-beach-2024-4.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/sunny-beach-2024-3.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/sunny-beach-2024-2.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/sunny-beach-2024-1.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.784Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/my-android-tab-setup</loc>
<image:image>
<image:loc>https://media.spasov.me/files/lenovo-tab-p12-matte-display-use.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.785Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/ubuntu-24-04-x11-qt-apps-issue</loc>
<image:image>
<image:loc>https://media.spasov.me/files/ubuntu-24-04-cover-image.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.785Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/high-quality-mechanical-parts</loc>
<image:image>
<image:loc>https://media.spasov.me/files/hes-me-turning-projects-cover.avif</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.785Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/great-production-performance-improvement</loc>
<image:image>
<image:loc>https://media.spasov.me/files/tech-env-hes-compact-part-mfg.avif</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/g50-approach-apply-results.avif</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/G50-setup-method-for-turning-machines.pdf</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.785Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/elegantly-scale-type-and-space-without-breakpoints</loc>
<image:image>
<image:loc>https://media.spasov.me/files/utopia-fyi-cover-image.avif</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/react-copy-paste-libraries</loc>
<image:image>
<image:loc>https://media.spasov.me/files/react-ui-components-cover.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/rendered-more-hooks-than-during-the-prev-render</loc>
<image:image>
<image:loc>https://media.spasov.me/files/blog-nextjs-cover-image.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/how-to-define-relations</loc>
<image:image>
<image:loc>https://media.spasov.me/files/blog-drizzle-cover-image.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/new-git-remote-via-cli-github</loc>
<image:image>
<image:loc>https://media.spasov.me/files/blog-github-cli-cover-image.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/git-and-github.pdf</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/mrt-recursive-table-export</loc>
<image:image>
<image:loc>https://media.spasov.me/files/mrt-v2-cover.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/postgresql-create-db-and-user</loc>
<image:image>
<image:loc>https://media.spasov.me/files/blog-postgresql-cover-image-alt.avif</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/postgresql-pgvector-docker-notes</loc>
<image:image>
<image:loc>https://media.spasov.me/files/blog-postgresql-cover-image.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/mount-a-hdd-to-mnt-backup</loc>
<image:image>
<image:loc>https://media.spasov.me/files/blog-linux-shell-cover-iage.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/setup-network-with-netplan</loc>
<image:image>
<image:loc>https://media.spasov.me/files/blog-linux-shell-cover-iage.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.787Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/update-iptables-and-make-them-persistent</loc>
<image:image>
<image:loc>https://media.spasov.me/files/ubuntu-network-blog-cover-image.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.787Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/developer-interview-questions</loc>
<image:image>
<image:loc>https://media.spasov.me/files/blog-post-react-cover-image.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/react-interview-mastery-2026-linkedin-js-page.pdf</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/react-interview-questions.pdf</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.787Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/scss-functions</loc>
<image:image>
<image:loc>https://media.spasov.me/files/blog-post-css-book-cover-image.avif</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.787Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/add-existing-hdd-to-proxmoxve</loc>
<image:image>
<image:loc>https://media.spasov.me/files/blog-proxmox-add-hdd-via-web-interface-0-cover.avif</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/blog-proxmox-add-hdd-via-web-interface-0-cover.avif</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/blog-proxmox-add-hdd-via-web-interface-3.avif</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/blog-proxmox-add-hdd-via-web-interface-5.avif</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/blog-proxmox-add-hdd-via-web-interface-4.avif</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/blog-proxmox-add-hdd-via-web-interface-1.avif</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/blog-proxmox-add-hdd-via-web-interface-2.avif</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.788Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/proxmoxve-modify-quorum</loc>
<image:image>
<image:loc>https://media.spasov.me/files/blog-proxmox-modify-quorum-cover-image.avif</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.788Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/three-powerful-css-functions-you-need-to-know</loc>
<image:image>
<image:loc>https://media.spasov.me/files/ThrePowerfulCSSFunctionsYouNeedToKnow-cover.avif</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/ThreePowerfulCSSFunctionsYouNeedToKnow.avif</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.788Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/socks5-proxy-for-ip-cidr-via-ssh-tunnel</loc>
<image:image>
<image:loc>https://media.spasov.me/files/blog-linux-shell-cover-iage.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/cludflare-ssh-tunnel.avif</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/Proxifier_Windos-11_setup_1920x1080.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.789Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/attaching-fqdn-to-aws-s3-bucket</loc>
<image:image>
<image:loc>https://media.spasov.me/files/blog-cover-aws-s3-fqdn.avif</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.789Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/aws-s3-and-cloudfront</loc>
<image:image>
<image:loc>https://media.spasov.me/files/blog-cover-aws-s3-fqdn.avif</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.789Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/manage-aws-s3-via-aws-sdk-client-s3</loc>
<image:image>
<image:loc>https://media.spasov.me/files/blog-cover-aws-s3-fqdn.avif</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.789Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/the-only-5-web-design-skills-that-actually-matter-2025</loc>
<image:image>
<image:loc>https://media.spasov.me/files/blog-cover-the-only-5-web-design-skills-2025.avif</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.790Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/all-core-system-design-concepts-explained</loc>
<image:image>
<image:loc>https://media.spasov.me/files/blog-modern-systems-cover-image.avif</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.790Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/ssh-persistent-tunnel</loc>
<image:image>
<image:loc>https://media.spasov.me/files/blog-linux-shell-cover-iage.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.790Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/restore-lxc-via-remote-instance</loc>
<image:image>
<image:loc>https://media.spasov.me/files/blog-linux-shell-cover-iage.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.790Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/blog-post-cover-debounce-react-state-to-redux</loc>
<image:image>
<image:loc>https://media.spasov.me/files/blog-post-cover-debounce-react-state-to-redux.avif</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/blog-post-cover-debounce-react-state-to-redux.avif</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.791Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/speculation-rules-web-api</loc>
<image:image>
<image:loc>https://media.spasov.me/files/blog-cover-speculation-rules-web-api.avif</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.791Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/how-to-manage-google-cloud-storage-gcs-with-aws-sdk-client-s3</loc>
<image:image>
<image:loc>https://media.spasov.me/files/blog-cover-image-google-cs-1.avif</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.791Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/n8n-the-provided-authorization-grant-or-refresh-token-is-invalid-expired-revoked</loc>
<image:image>
<image:loc>https://media.spasov.me/files/blog-cover-image-n8n-02.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.791Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/nextjs-15-route-navigation-and-caching</loc>
<image:image>
<image:loc>https://media.spasov.me/files/blog-post-cover-nextjs-react.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.791Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/reducing-critical-css-request-chains-in-nextjs-15-app-router</loc>
<image:image>
<image:loc>https://media.spasov.me/files/blog-post-cover-nextjs-react.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.792Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/eliminating-unnecessary-polyfills-in-nextjs-15-app-router</loc>
<image:image>
<image:loc>https://media.spasov.me/files/blog-post-cover-nextjs-react.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.792Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/fixing-forced-reflows-in-nextjs-apps</loc>
<image:image>
<image:loc>https://media.spasov.me/files/blog-post-cover-nextjs-react.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.792Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/fixing-nvme-passthrough-failure-after-kernel-upgrade-in-proxmox</loc>
<image:image>
<image:loc>https://media.spasov.me/files/blog-proxmox-add-hdd-via-web-interface-0-cover.avif</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.792Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/running-qdrant-with-docker-compose-api-access-networking-and-api-keys</loc>
<image:image>
<image:loc>https://media.spasov.me/files/vector-db-qdrant.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.792Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/pure-css-menu-css-positions-are-changing</loc>
<image:image>
<image:loc>https://media.spasov.me/files/new-css-posiotions-2025.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.793Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/react-patterns</loc>
<image:image>
<image:loc>https://media.spasov.me/files/blog-post-cover-react-patterns.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/Learning-patterns-final-v1.1.pdf</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.793Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/react-context-example</loc>
<image:image>
<image:loc>https://media.spasov.me/files/blog-post-react-cover-image.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.793Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/portainer-and-docker-engine-29</loc>
<image:image>
<image:loc>https://media.spasov.me/files/blog-linux-shell-cover-iage.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.793Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/combine-jpg-images-into-pdf-on-cli</loc>
<image:image>
<image:loc>https://media.spasov.me/files/conver-images-to-pdf-in-cli-blog-post-cover.jpeg</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.794Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/javascript-features-nice-to-use</loc>
<image:image>
<image:loc>https://media.spasov.me/files/javascript-blog-post-cover-image.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.794Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/branded-types-give-you-stronger-input-validation</loc>
<image:image>
<image:loc>https://media.spasov.me/files/typescript-blog-post-cover-image.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.794Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/complete-guide-integrating-fcitx5-input-method-indicator-with-waybar</loc>
<image:image>
<image:loc>https://media.spasov.me/files/omarchy-cover-01.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.794Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/onyoffce-on-omarchy</loc>
<image:image>
<image:loc>https://media.spasov.me/files/omarchy-cover-01.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.794Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/the-2026-ai-rotation-a-survival-guide</loc>
<image:image>
<image:loc>https://media.spasov.me/files/blog-cover-the-2026-ai-rotation_webp_webp_1280x720.avif</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/blog-cover-the-2026-ai-rotation_1920.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.795Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/postgres-can-replace-many-things</loc>
<image:image>
<image:loc>https://media.spasov.me/files/blog-post-cover-postgresql-vs-elasticsearch_1280x720.avif</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.795Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/the-4-ticker-economic-compounding-machine-a-forensic-portfolio-blueprint-for-2026</loc>
<image:image>
<image:loc>https://media.spasov.me/files/blog-portfolio-cover_1280x720.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/blog-portfolio-content-02_1280x634.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/blog-portfolio-content-01_1280x634.webp</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/szs-blog-portfolio-v.1.xlsx</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.795Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/how-to-fix-the-postgres-18-docker-volume-breaking-change</loc>
<image:image>
<image:loc>https://media.spasov.me/files/blog-postgresql-cover-image-alt.avif</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.795Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/the-set-it-and-forget-it-guide-to-multi-level-wildcards</loc>
<image:image>
<image:loc>https://media.spasov.me/files/blog-cover-set-and-forget-guide-to-multi-level-wildcards-small.avif</image:loc>
</image:image>
<image:image>
<image:loc>https://media.spasov.me/files/blog-cover-set-and-forget-guide-to-multi-level-wildcards.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.795Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.spasov.me/blog/mcp-setup-notes</loc>
<image:image>
<image:loc>https://media.spasov.me/files/blog-post-cover-mcp-server-720x405.webp</image:loc>
</image:image>
<lastmod>2026-03-29T14:16:39.795Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
</urlset>
