<?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-19T12:51:15+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-19T12:24:39+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-19T12:24:53+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-19T12:21:29+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-19T12:23:38+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-19T12:22:04+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-19T12:19:40+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-19T11:30:00+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-19T11:35:26+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-19T11:32:42+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-19T11:36:18+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-19T19:21:04+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-19T19:07:16+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-19T18:49:37+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-19T18:36:26+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-19T18:28:09+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-19T15:22:49+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-19T18:11:54+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>
