<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>ReClaim</title>
    <link>https://write.dadadock.com/</link>
    <description></description>
    <pubDate>Wed, 06 May 2026 11:26:35 +0000</pubDate>
    <item>
      <title>Elevation profiles are misleading</title>
      <link>https://write.dadadock.com/elevation-profiles-are-misleading</link>
      <description>&lt;![CDATA[  TL;DR  &#xA;Average grade over long routes hides nasty short climbs. I wrote a script that calculates gradient every 50m and color-codes the elevation profile, so you can actually see the painful bits.&#xA;&#xA;---&#xA;&#xA;I’m training for the Camino de Santiago on a bike. I live in Barcelona and only have a single-gear bike, which means steep hills = death for my knees. So I’ve been looking for good route-planning tools that don’t lock everything behind paywalls.&#xA;!--more--&#xA;&#xA;This is where my research on tools and apps to plan routes began. I want to avoid the usual suspects with paywalls and have been looking for self-hosted, open-source alternatives. I found this amazing tool Wanderer, installed it on my home server, and started creating routes. This was my first attempt:&#xA;&#xA;small&#xA;&#xA;There’s a hill at the beginning, but it seemed doable — a maximum grade of 7.2%. Reality check: the hill in general was OK, tough but doable, but at the very end the climb gets insane. After doing the route, there were several things I wasn’t pleased with; for instance, one bit of the route seemed too dangerous. But for now the most worrying part was being able to plan longer routes without trusting the route profile.  &#xA;&#xA;Looking more closely at the hill, the last bit shows a 12.4% grade — not cool for a gear-less bike nor for my knees.&#xA;&#xA;small&#xA;&#xA;I started wondering: how can I prevent this? I dug into tools, blogs, and all kinds of information about bike climbs. After a lot of research, I couldn’t find a reliable way to know in advance whether I’d suffer or have to step off my bike and walk those bits — which, for me, defeats the purpose.  &#xA;&#xA;Even official routes weren’t enough. For example, EuroVelo gives official routes and categorizes them by how developed they are. That’s an awesome starting point, but still doesn’t tell me whether I could handle a long trip. I exported the GPX from the EuroVelo Catalonian Cross and plugged it into Wanderer.&#xA;&#xA;small&#xA;&#xA;The route looked fine, but the bit at the end (Spain/French border) seemed to have quite a climb. Looking at the elevation, it’s only 400 meters, and hovering the mouse showed a max grade of 4.9%. Sounds perfect. But now, having learned my lesson, I know that average grades over long distances are misleading.  &#xA;&#xA;I decided to take a closer look. The only problem: having to cut the route profile and extract the section of interest. So I wrote a Python script to give me all the details I needed without jumping between tools.  &#xA;&#xA;small&#xA;&#xA;The script calculates the gradient every 50 meters and colors the area below depending on grade level. That way, I can now see that part of the route has several painful climbs — nothing like the misleadingly smooth 4.9% shown in Wanderer. There are even multiple red-zone chunks before the massive climb.&#xA;&#xA;small&#xA;&#xA;Zooming into the massive climb at km 255, I can see that for about 1 km the average is   10%. Definitely not doable on a gear-less bike, and probably even with the right bike my legs aren’t ready yet.  &#xA;&#xA;Now I know I can ride most of the Catalonian Cross except for this chunk. I also noticed that from km 80–120 there’s a nice hilly area that could be a good starting point for training before tackling tougher climbs.&#xA;&#xA;small&#xA;&#xA;By plotting positive and negative climbs, I can see what seems easier, and going backwards looks like the best option. Now I only need to get there. Using Wanderer, I found that the closest train station to km 120 is Caldes de Malavella. The whole route has train stations relatively close (in case 120 km is too much for me).  &#xA;&#xA;So far I’ve done 60 km in a day without problems, so doubling that could be ambitious but possible. Looking forward to seeing how the ride goes!&#xA;&#xA;If you’re interested in the code, you can find it here.  &#xA;&#xA;If you found this useful, please follow me on the Fediverse: @luis@write.dadadock.com for more posts like this.&#xA;]]&gt;</description>
      <content:encoded><![CDATA[<blockquote><p><strong>TL;DR</strong><br>
<em>Average grade over long routes hides nasty short climbs. I wrote a script that calculates gradient every 50m and color-codes the elevation profile, so you can actually see the painful bits.</em></p></blockquote>

<hr>

<p>I’m training for the Camino de Santiago on a bike. I live in Barcelona and only have a single-gear bike, which means steep hills = death for my knees. So I’ve been looking for good route-planning tools that don’t lock everything behind paywalls.
</p>

<p>This is where my research on tools and apps to plan routes began. I want to avoid the usual suspects with paywalls and have been looking for self-hosted, open-source alternatives. I found this amazing tool <a href="https://wanderer.to/">Wanderer</a>, installed it on my home server, and started creating routes. This was my first attempt:</p>

<p><img src="https://files.dadadock.com/images/misleading_hill.png" alt="#small"></p>

<p>There’s a hill at the beginning, but it seemed doable — a maximum grade of 7.2%. Reality check: the hill in general was OK, tough but doable, but at the very end the climb gets insane. After doing the route, there were several things I wasn’t pleased with; for instance, one bit of the route seemed too dangerous. But for now the most worrying part was being able to plan longer routes without trusting the route profile.</p>

<p>Looking more closely at the hill, the last bit shows a 12.4% grade — not cool for a gear-less bike nor for my knees.</p>

<p><img src="https://files.dadadock.com/images/closer_look.png" alt="#small"></p>

<p>I started wondering: <em>how can I prevent this?</em> I dug into tools, blogs, and all kinds of information about bike climbs. After a lot of research, I couldn’t find a reliable way to know in advance whether I’d suffer or have to step off my bike and walk those bits — which, for me, defeats the purpose.</p>

<p>Even official routes weren’t enough. For example, <a href="https://en.eurovelo.com/ev8/catalan-crossing">EuroVelo</a> gives official routes and categorizes them by how developed they are. That’s an awesome starting point, but still doesn’t tell me whether I could handle a long trip. I exported the GPX from the EuroVelo Catalonian Cross and plugged it into Wanderer.</p>

<p><img src="https://files.dadadock.com/images/cat_cross.png" alt="#small"></p>

<p>The route looked fine, but the bit at the end (Spain/French border) seemed to have quite a climb. Looking at the elevation, it’s only 400 meters, and hovering the mouse showed a max grade of 4.9%. Sounds perfect. But now, having learned my lesson, I know that average grades over long distances are misleading.</p>

<p>I decided to take a closer look. The only problem: having to cut the route profile and extract the section of interest. So I wrote a Python script to give me all the details I needed without jumping between tools.</p>

<p><img src="https://files.dadadock.com/images/elevation_gradient.png" alt="#small"></p>

<p>The script calculates the gradient every 50 meters and colors the area below depending on grade level. That way, I can now see that part of the route has several painful climbs — nothing like the misleadingly smooth 4.9% shown in Wanderer. There are even multiple red-zone chunks before the massive climb.</p>

<p><img src="https://files.dadadock.com/images/hard_climb.png" alt="#small"></p>

<p>Zooming into the massive climb at km 255, I can see that for about 1 km the average is &gt;10%. Definitely not doable on a gear-less bike, and probably even with the right bike my legs aren’t ready yet.</p>

<p>Now I know I can ride most of the Catalonian Cross except for this chunk. I also noticed that from km 80–120 there’s a nice hilly area that could be a good starting point for training before tackling tougher climbs.</p>

<p><img src="https://files.dadadock.com/images/nice_climbs.png" alt="#small"></p>

<p>By plotting positive and negative climbs, I can see what seems easier, and going backwards looks like the best option. Now I only need to get there. Using Wanderer, I found that the closest train station to km 120 is <em>Caldes de Malavella</em>. The whole route has train stations relatively close (in case 120 km is too much for me).</p>

<p>So far I’ve done 60 km in a day without problems, so doubling that could be ambitious but possible. Looking forward to seeing how the ride goes!</p>

<p>If you’re interested in the code, you can find it <a href="https://github.com/ldelriof/tiny-grade-calc/tree/main">here</a>.</p>

<p>If you found this useful, please follow me on the Fediverse: <a href="https://write.dadadock.com"><a href="https://write.dadadock.com/@/luis@write.dadadock.com" class="u-url mention">@<span>luis@write.dadadock.com</span></a></a> for more posts like this.</p>
]]></content:encoded>
      <guid>https://write.dadadock.com/elevation-profiles-are-misleading</guid>
      <pubDate>Wed, 27 Aug 2025 10:44:30 +0000</pubDate>
    </item>
    <item>
      <title>Is self-hosting worth the investment?</title>
      <link>https://write.dadadock.com/is-self-hosting-worth-the-investment</link>
      <description>&lt;![CDATA[  TL;DR  &#xA;Definitely worth it. Even with a solid (not AI-focused) setup spending around €300, the return on investment is under a year, and the freedom you gain is hard to beat.&#xA;&#xA;---&#xA;&#xA;The journey begins&#xA;&#xA;Sometime in mid-2022, I started playing around with the idea of reclaiming privacy and taking back ownership of my data and media. I began with a Raspberry Pi 4 and a 32GB microSD card. Now I’ve ended up with a mini PC, 16GB RAM, 2TB NVMe, and a solid home setup.&#xA;!--more--&#xA;&#xA;At some point recently, I wondered if I was putting too much money and time into all of this—so I decided to actually put numbers to it. Short answer: nope. Totally worth it.&#xA;&#xA;My first experiments started with the Pi. Pretty simple to set up a headless local server with SSH. What wasn’t so simple was making it accessible from anywhere. And that’s when I hit the first real wall.&#xA;&#xA;I didn’t know much about VPNs back then and didn’t want to pay for a solution. The idea from the beginning was to avoid managed services and go open-source where possible. I went down the rabbit hole—dynamic DNS, local tunnels, and even briefly considering a VPN provider—until I found Tailscale. Not open source, but their free tier was honestly too convenient to pass up. I could SSH into my Pi from my phone using Termius. That was huge.&#xA;&#xA;Later, I came across NetBird, which offers pretty much the same thing but is fully open source. That made me feel a bit more at ease with the whole setup.&#xA;&#xA;At this point, I had around 30GB of usable storage. Not groundbreaking—100GB from a cloud provider is like €2/month. But hey, I had full autonomy over those files. A Raspberry Pi 4 + 32GB SD costs ~€50, and electricity consumed by the Pi in Spain runs around €0.50/month, so I’d break even in under 3 years. Not amazing, but still fair.&#xA;&#xA;---&#xA;&#xA;Scaling up the setup&#xA;&#xA;Of course, 30GB and a Pi only get you so far. Eventually, I wanted more storage and to try hosting more types of services.&#xA;&#xA;After a bunch of trial and error (and some frustrating dead ends), I ended up getting a mini PC with 16GB RAM, an Alder Lake CPU, and 512GB M.2 SSD for about €170. Later I added a 2TB NVMe SSD for another €130. All in, it’s somewhere north of €300. and I got a 512GB external drive.&#xA;&#xA;Turning it into a proper headless server wasn’t trivial. It came with Windows, which I briefly tested (WSL looked interesting), but eventually I shrunk the Windows partition and installed Debian as the main OS. Getting it to avoid sleep, auto-reboot after power loss, and behave like a proper server took some digging, but once done, things opened up fast.&#xA;&#xA;---&#xA;&#xA;Adding a small VPS&#xA;&#xA;Eventually, I also got a small VPS (I’ve used both Scaleway and DigitalOcean—both have good budget options). Mainly to set up a href=&#34;https://www.wireguard.com/&#34; target=&#34;blank&#34;WireGuard/a, host a small proxy with a href=&#34;https://caddyserver.com/&#34; target=&#34;blank&#34;Caddy/a, and expose a few things publicly, like this blog (which is running on a href=&#34;https://writefreely.org/&#34; target=&#34;blank&#34;WriteFreely/a).&#xA;&#xA;Even though NetBird was working fine, I liked the idea of being fully detached—and having the option to tinker with a bit more robust infrastructure. (currently using free credits on GCP… but VM same size of DigitalOcean&#39;s budget droplet)&#xA;&#xA;---&#xA;&#xA;Current setup and services&#xA;&#xA;Right now, this is what I’ve got running at home. It covers most of my entertainment and productivity needs, and I’m slowly dipping into Fediverse territory.&#xA;&#xA;Services I’m self-hosting so far:&#xA;&#xA;a href=&#34;https://immich.app&#34; target=&#34;blank&#34;Immich/a – photo management and phone backups  &#xA;a href=&#34;https://navidrome.org&#34; target=&#34;blank&#34;Navidrome/a – music streaming from my local library  &#xA;a href=&#34;https://plex.tv&#34; target=&#34;blank&#34;Plex/a – for video content  &#xA;a href=&#34;https://affine.pro&#34; target=&#34;blank&#34;Affine/a – for notes and planning  &#xA;a href=&#34;https://www.rocket.chat/&#34; target=&#34;blank&#34;Rocket.Chat/a – team/friends messaging  &#xA;a href=&#34;https://filebrowser.org&#34; target=&#34;blank&#34;Filebrowser/a – for quickly sharing files  &#xA;a href=&#34;https://ntfy.sh&#34; target=&#34;blank&#34;ntfy/a – instant notifications from scripts&#xA;&#xA;This blog was the first step toward exploring federated social networks, and I’ll likely look into more soon.&#xA;&#xA;---&#xA;&#xA;The reality check&#xA;&#xA;There are tradeoffs. No five-nines uptime. No real redundancy. If the internet goes out, some services are unavailable. But for personal use—and a few friends—I’m okay with that.&#xA;&#xA;The upside is clear: full control, privacy, no ads, and no monthly subscriptions.&#xA;&#xA;Just looking at the services above, the equivalent cloud services would easily run me over €600/year. Music, video, storage, productivity tools, chat, VPN—it adds up fast.&#xA;&#xA;With my current setup (around €300 for hardware + around €5/month in electricity and VPS), I’m already saving money after 10–12 months.&#xA;&#xA;Also, I can finally justify buying physical media again—vinyls, DVDs, all that good stuff I hadn’t touched in years.&#xA;&#xA;---&#xA;&#xA;What’s next?&#xA;&#xA;If you made it this far—thanks! I’ll be posting more detailed write-ups for each service I’m running, plus other bits from this self-hosting rabbit hole.&#xA;&#xA;Expect posts about:&#xA;how I set things up technically&#xA;other open-source tools I’m trying&#xA;some woodworking or random DIY projects&#xA;and probably more Fediverse experiments&#xA;&#xA;Appreciate you reading — and if you&#39;re into this kind of stuff, feel free to follow a href=&#34;https://write.dadadock.com&#34; target=&#34;_blank&#34;@luis@write.dadadock.com/a for updates.&#xA;&#xA;]]&gt;</description>
      <content:encoded><![CDATA[<blockquote><p><strong>TL;DR</strong><br>
<em>Definitely worth it. Even with a solid (not AI-focused) setup spending around €300, the return on investment is under a year, and the freedom you gain is hard to beat.</em></p></blockquote>

<hr>

<h2 id="the-journey-begins" id="the-journey-begins">The journey begins</h2>

<p>Sometime in mid-2022, I started playing around with the idea of reclaiming privacy and taking back ownership of my data and media. I began with a Raspberry Pi 4 and a 32GB microSD card. Now I’ve ended up with a mini PC, 16GB RAM, 2TB NVMe, and a solid home setup.
</p>

<p>At some point recently, I wondered if I was putting too much money and time into all of this—so I decided to actually put numbers to it. Short answer: nope. Totally worth it.</p>

<p>My first experiments started with the Pi. Pretty simple to set up a headless local server with SSH. What wasn’t so simple was making it accessible from <em>anywhere</em>. And that’s when I hit the first real wall.</p>

<p>I didn’t know much about VPNs back then and didn’t want to pay for a solution. The idea from the beginning was to avoid managed services and go open-source where possible. I went down the rabbit hole—dynamic DNS, local tunnels, and even briefly considering a VPN provider—until I found Tailscale. Not open source, but their free tier was honestly too convenient to pass up. I could SSH into my Pi from my phone using Termius. That was huge.</p>

<p>Later, I came across NetBird, which offers pretty much the same thing but is fully open source. That made me feel a bit more at ease with the whole setup.</p>

<p>At this point, I had around 30GB of usable storage. Not groundbreaking—100GB from a cloud provider is like €2/month. But hey, I had full autonomy over those files. A Raspberry Pi 4 + 32GB SD costs ~€50, and electricity consumed by the Pi in Spain runs around €0.50/month, so I’d break even in under 3 years. Not amazing, but still fair.</p>

<hr>

<h2 id="scaling-up-the-setup" id="scaling-up-the-setup">Scaling up the setup</h2>

<p>Of course, 30GB and a Pi only get you so far. Eventually, I wanted more storage and to try hosting more types of services.</p>

<p>After a bunch of trial and error (and some frustrating dead ends), I ended up getting a mini PC with 16GB RAM, an Alder Lake CPU, and 512GB M.2 SSD for about €170. Later I added a 2TB NVMe SSD for another €130. <strong>All in, it’s somewhere north of €300.</strong> and I got a 512GB external drive.</p>

<p>Turning it into a proper headless server wasn’t trivial. It came with Windows, which I briefly tested (WSL looked interesting), but eventually I shrunk the Windows partition and installed Debian as the main OS. Getting it to avoid sleep, auto-reboot after power loss, and behave like a proper server took some digging, but once done, things opened up fast.</p>

<hr>

<h2 id="adding-a-small-vps" id="adding-a-small-vps">Adding a small VPS</h2>

<p>Eventually, I also got a small VPS (I’ve used both Scaleway and DigitalOcean—both have good budget options). Mainly to set up <strong><a href="https://www.wireguard.com/" target="_blank">WireGuard</a></strong>, host a small <strong>proxy with <a href="https://caddyserver.com/" target="_blank">Caddy</a></strong>, and expose a few things publicly, like this blog (which is running on <strong><a href="https://writefreely.org/" target="_blank">WriteFreely</a></strong>).</p>

<p>Even though NetBird was working fine, I liked the idea of being fully detached—and having the option to tinker with a bit more robust infrastructure. (currently using free credits on GCP… but VM same size of DigitalOcean&#39;s budget droplet)</p>

<hr>

<h2 id="current-setup-and-services" id="current-setup-and-services">Current setup and services</h2>

<p>Right now, this is what I’ve got running at home. It covers most of my entertainment and productivity needs, and I’m slowly dipping into Fediverse territory.</p>

<p>Services I’m self-hosting so far:</p>
<ul><li><strong><a href="https://immich.app" target="_blank">Immich</a></strong> – photo management and phone backups<br></li>
<li><strong><a href="https://navidrome.org" target="_blank">Navidrome</a></strong> – music streaming from my local library<br></li>
<li><strong><a href="https://plex.tv" target="_blank">Plex</a></strong> – for video content<br></li>
<li><strong><a href="https://affine.pro" target="_blank">Affine</a></strong> – for notes and planning<br></li>
<li><strong><a href="https://www.rocket.chat/" target="_blank">Rocket.Chat</a></strong> – team/friends messaging<br></li>
<li><strong><a href="https://filebrowser.org" target="_blank">Filebrowser</a></strong> – for quickly sharing files<br></li>
<li><strong><a href="https://ntfy.sh" target="_blank">ntfy</a></strong> – instant notifications from scripts</li></ul>

<p>This blog was the first step toward exploring federated social networks, and I’ll likely look into more soon.</p>

<hr>

<h2 id="the-reality-check" id="the-reality-check">The reality check</h2>

<p>There are tradeoffs. No five-nines uptime. No real redundancy. If the internet goes out, some services are unavailable. But for personal use—and a few friends—I’m okay with that.</p>

<p>The upside is clear: full control, privacy, no ads, and no monthly subscriptions.</p>

<p>Just looking at the services above, the equivalent cloud services would easily run me over €600/year. Music, video, storage, productivity tools, chat, VPN—it adds up fast.</p>

<p>With my current setup (around €300 for hardware + around €5/month in electricity and VPS), I’m already saving money after 10–12 months.</p>

<p>Also, I can finally justify buying physical media again—vinyls, DVDs, all that good stuff I hadn’t touched in years.</p>

<hr>

<h2 id="what-s-next" id="what-s-next">What’s next?</h2>

<p>If you made it this far—thanks! I’ll be posting more detailed write-ups for each service I’m running, plus other bits from this self-hosting rabbit hole.</p>

<p>Expect posts about:
– how I set things up technically
– other open-source tools I’m trying
– some woodworking or random DIY projects
– and probably more Fediverse experiments</p>

<p>Appreciate you reading — and if you&#39;re into this kind of stuff, feel free to follow <a href="https://write.dadadock.com" target="_blank"><a href="https://write.dadadock.com/@/luis@write.dadadock.com" class="u-url mention">@<span>luis@write.dadadock.com</span></a></a> for updates.</p>
]]></content:encoded>
      <guid>https://write.dadadock.com/is-self-hosting-worth-the-investment</guid>
      <pubDate>Mon, 14 Jul 2025 22:14:03 +0000</pubDate>
    </item>
  </channel>
</rss>