<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/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" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9">
    <url>
    <loc>https://needleplayer.com</loc>
    <changefreq>daily</changefreq>
    <priority>1.0</priority>
            </url>
    <url>
    <loc>https://needleplayer.com/journal</loc>
    <lastmod>2026-06-19T10:19:05+00:00</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.8</priority>
            </url>
    <url>
    <loc>https://needleplayer.com/cookies</loc>
    <lastmod>2026-06-19T10:11:15+00:00</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.8</priority>
            </url>
    <url>
    <loc>https://needleplayer.com/from-music-player-to-personal-infrastructure/series-overview</loc>
    <lastmod>2026-06-17T12:51:14+00:00</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
            </url>
    <url>
    <loc>https://needleplayer.com/from-music-player-to-personal-infrastructure/part-1-i-just-wanted-a-better-music-player</loc>
    <lastmod>2026-06-19T03:19:49+00:00</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
            </url>
    <url>
    <loc>https://needleplayer.com/from-music-player-to-personal-infrastructure/part-2-the-moment-a-desktop-app-needed-a-backend</loc>
    <lastmod>2026-06-17T12:51:14+00:00</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
            </url>
    <url>
    <loc>https://needleplayer.com/from-music-player-to-personal-infrastructure/part-3-docker-homeservers-and-the-slow-descent-into-infrastructure</loc>
    <lastmod>2026-06-19T03:43:46+00:00</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
            </url>
    <url>
    <loc>https://needleplayer.com/from-music-player-to-personal-infrastructure/part-4-the-battle-against-cgnat</loc>
    <lastmod>2026-06-17T12:51:14+00:00</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
            </url>
    <url>
    <loc>https://needleplayer.com/from-music-player-to-personal-infrastructure/part-5-the-day-nginx-refused-to-move</loc>
    <lastmod>2026-06-19T03:11:11+00:00</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
            </url>
    <url>
    <loc>https://needleplayer.com/from-music-player-to-personal-infrastructure/part-6-nextcloud-trusted-domains-and-the-joy-of-canonical-urls</loc>
    <lastmod>2026-06-19T02:30:05+00:00</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
            </url>
    <url>
    <loc>https://needleplayer.com/from-music-player-to-personal-infrastructure/part-7-the-slippery-slope-from-raspberry-pi-to-distributed-infrastructure</loc>
    <lastmod>2026-06-19T02:50:07+00:00</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
            </url>
    <url>
    <loc>https://needleplayer.com/from-music-player-to-personal-infrastructure/part-8-building-an-android-needle-player</loc>
    <lastmod>2026-06-17T12:51:12+00:00</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
            </url>
    <url>
    <loc>https://needleplayer.com/from-music-player-to-personal-infrastructure/part-9-how-i-dug-myself-into-a-home-dns-hole</loc>
    <lastmod>2026-06-17T12:51:12+00:00</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
            </url>
    <url>
    <loc>https://needleplayer.com/from-music-player-to-personal-infrastructure/part-10-so-close-i-can-taste-the-victory-but-i-aint-celebrating-my-body-wont-let-me</loc>
    <lastmod>2026-06-17T12:51:12+00:00</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
            </url>
    <url>
    <loc>https://needleplayer.com/from-music-player-to-personal-infrastructure/part-11-how-ios-demanded-things-be-done-properly</loc>
    <lastmod>2026-06-17T12:51:12+00:00</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
            </url>
    <url>
    <loc>https://needleplayer.com/from-music-player-to-personal-infrastructure/part-12-oh-i-won-ios-did-not-stand-a-chance</loc>
    <lastmod>2026-06-17T14:07:31+00:00</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
            </url>
    <url>
    <loc>https://needleplayer.com/from-music-player-to-personal-infrastructure/part-13-how-a-readme-became-a-dear-me</loc>
    <lastmod>2026-06-18T02:58:05+00:00</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
            </url>
    <url>
    <loc>https://needleplayer.com/from-music-player-to-personal-infrastructure/part-14-the-archive-awakens</loc>
    <lastmod>2026-06-17T17:30:39+00:00</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
            </url>
    <url>
    <loc>https://needleplayer.com/from-music-player-to-personal-infrastructure/part-15-when-madonna-crashed-the-iphone-app</loc>
    <lastmod>2026-06-19T10:11:13+00:00</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
            </url>
    <url>
    <loc>https://needleplayer.com/from-music-player-to-personal-infrastructure/part-16-the-day-a-4k-nozzle-camera-joined-the-audio-lab</loc>
    <lastmod>2026-06-19T10:11:16+00:00</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
            </url>
    <url>
    <loc>https://needleplayer.com/from-music-player-to-personal-infrastructure/part-17-when-apple-charged-me-eur99-to-confirm-i-was-still-alive</loc>
    <lastmod>2026-06-19T10:13:57+00:00</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
            </url>
    <url>
    <loc>https://needleplayer.com/category/from-music-player-to-personal-infrastructure</loc>
    <lastmod>2026-05-14T17:01:18+00:00</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.5</priority>
            </url>
</urlset>
