<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Alessandro Pogliaghi's Blog</title><image><url>https://apogliaghi.com/img/favicon/favicon.png</url><title>Posts on Alessandro Pogliaghi</title><link>https://apogliaghi.com/posts/</link></image><link>https://apogliaghi.com/posts/</link><description>Recent content in Posts on Alessandro Pogliaghi</description><generator>Hugo -- gohugo.io</generator><language>en</language><managingEditor>apogliaghi@gmail.com (Alessandro Pogliaghi)</managingEditor><webMaster>apogliaghi@gmail.com (Alessandro Pogliaghi)</webMaster><copyright>Alessandro Pogliaghi ~ 2026 | Made with ❤️ in<span class='emoji'>🇪🇺</span></copyright><lastBuildDate>Sat, 08 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://apogliaghi.com/posts/index.xml" rel="self" type="application/rss+xml"/><atom:link href="https://apogliaghi.com/" rel="alternate" type="text/html"/><item><title>LLMs are amazing, the circus is optional ~ just build</title><link>https://apogliaghi.com/2026/08/llms-are-amazing-the-circus-is-optional-~-just-build/</link><pubDate>Sat, 08 Aug 2026 00:00:00 +0000</pubDate><author>apogliaghi@gmail.com (Alessandro Pogliaghi)</author><guid>https://apogliaghi.com/2026/08/llms-are-amazing-the-circus-is-optional-~-just-build/</guid><description>
&lt;p>The problem is not the models. The problem is the circus that comes bundled with them.&lt;/p>
&lt;figure class="center" >
&lt;img src="https://apogliaghi.com/img/_llms/build_it.png"
alt="JUST BUILD IT"
width="600px"
/>
&lt;/figure>
&lt;h2 id="scratching-the-itches">
Scratching the itch(es)
&lt;a href="#scratching-the-itches" class="h-anchor" aria-hidden="true">#&lt;/a>
&lt;/h2>
&lt;p>In &lt;a href="https://apogliaghi.com/2026/01/forking-metube-~-you-can-just-do-stuff/">my MeTube fork&lt;/a>, I have a gh action (oof) that periodically checks upstream releases, generates a diff and sends it to an LLM for analysis.&lt;/p>
&lt;p>The model then creates an issue explaining whether I should care about the changes.&lt;/p>
&lt;p>This is not AGI. It is artificial “please read this diff because I ain’t got time for that”.&lt;/p>
&lt;p>Perfect.&lt;/p>
&lt;p>On iOS, I use Safari to visit YouTube (&lt;em>cough&lt;/em> ads &lt;em>cough&lt;/em>) and I started getting annoyed by shorts and creator posts in the feed. I just wanted to watch some videos, crazy stuff.&lt;/p>
&lt;p>I didn&amp;rsquo;t even thought about starting my usual research into existing tools and solutions, I just built a small extension that would scratch my itch.&lt;/p>
&lt;p>That&amp;rsquo;s &lt;strong>&lt;a href="https://shortless.app">Shortless&lt;/a>&lt;/strong>, and it is &lt;a href="https://apps.apple.com/us/app/id6790830293">on the App Store&lt;/a>.&lt;/p>
&lt;p>On macOS, I started using some app that would display the upcoming meeting in my menubar.
This is not rocket science, but it started conflicting with my menubar management app.
I got frustrated, it annoyed me.&lt;/p>
&lt;p>So I whipped up &lt;strong>&lt;a href="https://perchbird.app">Perch&lt;/a>&lt;/strong>.&lt;/p>
&lt;p>Do you really needed any of these two? Probably not. And that&amp;rsquo;s fine.&lt;/p>
&lt;h2 id="i-hope-it-becomes-boring">
I hope it becomes boring
&lt;a href="#i-hope-it-becomes-boring" class="h-anchor" aria-hidden="true">#&lt;/a>
&lt;/h2>
&lt;p>The outcome I want is not a small collection of companies owning a magic oracle.&lt;/p>
&lt;p>I want models to become cheap and replaceable infrastructure: multiple providers, good OPEN models, local options, predictable APIs and enough compatibility to remain sane.&lt;/p>
&lt;p>Becoming boring is what useful technology eventually does, boring is good.&lt;/p>
&lt;p>I am so genuinely excited about where this is going, so much to do. So many people wanting to build things.&lt;/p>
&lt;p>The circus is optional.&lt;/p></description></item><item><title>Forking MeTube ~ You can just do stuff</title><link>https://apogliaghi.com/2026/01/forking-metube-~-you-can-just-do-stuff/</link><pubDate>Sun, 04 Jan 2026 00:00:00 +0000</pubDate><author>apogliaghi@gmail.com (Alessandro Pogliaghi)</author><guid>https://apogliaghi.com/2026/01/forking-metube-~-you-can-just-do-stuff/</guid><description>
&lt;h2 id="the-itch">
The Itch
&lt;a href="#the-itch" class="h-anchor" aria-hidden="true">#&lt;/a>
&lt;/h2>
&lt;p>&lt;a href="https://github.com/alexta69/metube">MeTube&lt;/a> is a neat self-hosted YouTube downloader with a clean web UI. Paste a link, pick your format, hit download. Simple.&lt;/p>
&lt;p>Except YouTube decided that simple things shouldn&amp;rsquo;t stay simple.&lt;/p>
&lt;p>At some point, downloads started failing with the lovely &amp;ldquo;Sign in to confirm you&amp;rsquo;re not a bot&amp;rdquo; message. Classic. YouTube&amp;rsquo;s bot detection had gotten stricter, the web is not fun anymore.&lt;/p>
&lt;p>On top of that, I wanted my downloaded videos to actually show up properly in Jellyfin instead of appearing as mysterious &amp;ldquo;Unknown&amp;rdquo; entries with no metadata. Two itches, one fork.&lt;/p>
&lt;figure class="center" >
&lt;img src="https://apogliaghi.com/img/_metube-pot/metube_homepage.png"
/>
&lt;figcaption class="center" >MeTube POT interface&lt;/figcaption>
&lt;/figure>
&lt;h2 id="pot-proof-of-origin-support">
POT (Proof-of-Origin) Support
&lt;a href="#pot-proof-of-origin-support" class="h-anchor" aria-hidden="true">#&lt;/a>
&lt;/h2>
&lt;p>YouTube&amp;rsquo;s anti-bot measures work by requiring a &amp;ldquo;Proof-of-Origin&amp;rdquo; token, basically proving that the request comes from a legitimate browser session rather than some script hammering their servers.&lt;/p>
&lt;p>The fix? &lt;a href="https://github.com/Brainicism/bgutil-ytdlp-pot-provider">bgutil-ytdlp-pot-provider&lt;/a>. It&amp;rsquo;s a yt-dlp plugin that generates these POT tokens, making YouTube believe the requests are coming from an actual browser.&lt;/p>
&lt;h2 id="jellyfin-integration">
Jellyfin Integration
&lt;a href="#jellyfin-integration" class="h-anchor" aria-hidden="true">#&lt;/a>
&lt;/h2>
&lt;figure class="center" >
&lt;img src="https://apogliaghi.com/img/_metube-pot/jellyfin_homepage.png"
/>
&lt;figcaption class="center" >Video properly displayed in Jellyfin with full metadata&lt;/figcaption>
&lt;/figure>
&lt;p>Here&amp;rsquo;s the thing about downloading YouTube videos: yt-dlp can grab a ton of metadata and save it as a &lt;code>.info.json&lt;/code> file alongside the video. Title, description, upload date, channel name, tags, duration, everything.&lt;/p>
&lt;p>Jellyfin, however, doesn&amp;rsquo;t speak &lt;code>.info.json&lt;/code>. It wants &lt;code>.nfo&lt;/code> files, an XML format that media servers have used since the Kodi days.&lt;/p>
&lt;p>So I wrote a post-processor hook that runs after each download completes.&lt;/p>
&lt;p>It reads the &lt;code>.info.json&lt;/code>, extracts the relevant fields, and generates a Jellyfin-compatible &lt;code>.nfo&lt;/code> file. The metadata mapping looks like this:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Title&lt;/strong> and &lt;strong>Original Title&lt;/strong> from the video title&lt;/li>
&lt;li>&lt;strong>Plot&lt;/strong> from the description&lt;/li>
&lt;li>&lt;strong>Year&lt;/strong> and &lt;strong>Premiered&lt;/strong> from the upload date&lt;/li>
&lt;li>&lt;strong>Studio&lt;/strong> and &lt;strong>Director&lt;/strong> mapped to the uploader/channel&lt;/li>
&lt;li>&lt;strong>Tags&lt;/strong> from the video tags (capped at 20 to keep things sane)&lt;/li>
&lt;li>&lt;strong>Runtime&lt;/strong> converted from seconds to minutes&lt;/li>
&lt;li>&lt;strong>Unique ID&lt;/strong> storing the YouTube video ID&lt;/li>
&lt;/ul>
&lt;p>After generating the &lt;code>.nfo&lt;/code>, the hook cleans up by deleting the original &lt;code>.info.json&lt;/code>. No leftover clutter.&lt;/p>
&lt;h2 id="keeping-up-with-upstream">
Keeping Up with Upstream
&lt;a href="#keeping-up-with-upstream" class="h-anchor" aria-hidden="true">#&lt;/a>
&lt;/h2>
&lt;figure class="center" >
&lt;img src="https://apogliaghi.com/img/_metube-pot/aint_nobody.png"
width="600px"
/>
&lt;figcaption class="center" >Creating a meme without Nano Banana 🍌? Ain&amp;rsquo;t nobody got time for that!&lt;/figcaption>
&lt;/figure>
&lt;p>Forking is easy. Maintaining a fork? Not so fun.&lt;/p>
&lt;p>The upstream MeTube repo keeps getting updates: bug fixes, new features, dependency bumps.&lt;/p>
&lt;p>I automated this with a GitHub Action (lame, I know) that runs weekly. Here&amp;rsquo;s what it does:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Fetches the latest upstream release&lt;/strong> from the original MeTube repo&lt;/li>
&lt;li>&lt;strong>Checks if it&amp;rsquo;s already been analyzed&lt;/strong> (no point in creating duplicate reports)&lt;/li>
&lt;li>&lt;strong>Generates a diff&lt;/strong> between the fork and the new release&lt;/li>
&lt;li>&lt;strong>Sends the diff to an LLM&lt;/strong> for analysis because, I ain&amp;rsquo;t got time for that&lt;/li>
&lt;li>&lt;strong>Creates a GH issue&lt;/strong> with the analysis report&lt;/li>
&lt;/ol>
&lt;p>The result? A nicely formatted issue telling me whether I should bother merging upstream changes or if I can safely ignore them. The boring parts of fork maintenance, automated.&lt;/p>
&lt;h2 id="use-it-yourself">
Use it yourself
&lt;a href="#use-it-yourself" class="h-anchor" aria-hidden="true">#&lt;/a>
&lt;/h2>
&lt;p>The fork lives at &lt;a href="https://github.com/tatoalo/metube_pot">tatoalo/metube_pot&lt;/a>. If you&amp;rsquo;re running MeTube and hitting YouTube&amp;rsquo;s bot detection, or you want your downloads to play nice with Jellyfin, give it a spin:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>docker pull ghcr.io/tatoalo/metube_pot
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Sometimes you just see something that&amp;rsquo;s 90% of what you need, and the remaining 10% is an afternoon of hacking. Fork stuff, scratch your own itches, automate the tedious parts.&lt;/p>
&lt;p>&lt;strong>Note&lt;/strong>: I don&amp;rsquo;t condone piracy. Use this tool responsibly and ethically. Also, respect YouTube&amp;rsquo;s terms of service and copyright laws. 🤷‍♂️&lt;/p>
&lt;p>&lt;strong>Note&lt;/strong>: This has been done for fun and for research purposes. 🤷‍♂️🤷‍♂️&lt;/p></description></item><item><title>Crypto Miner in hotio/qbittorrent</title><link>https://apogliaghi.com/2025/09/crypto-miner-in-hotio/qbittorrent/</link><pubDate>Tue, 23 Sep 2025 00:00:00 +0000</pubDate><author>apogliaghi@gmail.com (Alessandro Pogliaghi)</author><guid>https://apogliaghi.com/2025/09/crypto-miner-in-hotio/qbittorrent/</guid><description>
&lt;div style="background: linear-gradient(135deg, #ff6b35, #f7931e); padding: 20px; border-radius: 10px; margin: 30px 0; text-align: center; box-shadow: 0 4px 15px rgba(0,0,0,0.1);">
&lt;h3 style="margin: 0 0 15px 0; color: white; font-size: 1.3em;">🗣️ Join the Discussion 🗣️&lt;/h3>
&lt;div style="display: flex; justify-content: center; gap: 20px; flex-wrap: wrap; margin-bottom: 15px;">
&lt;a href="https://news.ycombinator.com/item?id=45345233" style="display: inline-flex; align-items: center; padding: 10px 20px; background: rgba(255,255,255,0.2); border-radius: 25px; text-decoration: none; color: white; font-weight: bold; transition: all 0.3s ease; backdrop-filter: blur(10px);" onmouseover="this.style.background='rgba(255,255,255,0.3)'; this.style.transform='translateY(-2px)'" onmouseout="this.style.background='rgba(255,255,255,0.2)'; this.style.transform='translateY(0)'">
&lt;img src="https://news.ycombinator.com/favicon.ico" alt="HN" style="width: 16px; height: 16px; margin-right: 8px;">
Hacker News
&lt;/a>
&lt;a href="https://lobste.rs/s/6wzpji/crypto_miner_hotio_qbittorrent" style="display: inline-flex; align-items: center; padding: 10px 20px; background: rgba(255,255,255,0.2); border-radius: 25px; text-decoration: none; color: white; font-weight: bold; transition: all 0.3s ease; backdrop-filter: blur(10px);" onmouseover="this.style.background='rgba(255,255,255,0.3)'; this.style.transform='translateY(-2px)'" onmouseout="this.style.background='rgba(255,255,255,0.2)'; this.style.transform='translateY(0)'">
&lt;span style="font-size: 1.2em; margin-right: 8px;">🦞&lt;/span>
Lobste.rs
&lt;/a>
&lt;/div>
&lt;/div>
&lt;hr>
&lt;h3 id="infected-container-image">
Infected Container Image
&lt;a href="#infected-container-image" class="h-anchor" aria-hidden="true">#&lt;/a>
&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Registry:&lt;/strong> &lt;code>ghcr.io/hotio/qbittorrent&lt;/code>&lt;/li>
&lt;li>&lt;strong>Tag:&lt;/strong> &lt;code>release&lt;/code>&lt;/li>
&lt;li>&lt;strong>Digest:&lt;/strong> &lt;code>sha256:3779f89712dbaa8b25fc22897d0b471ee&lt;/code>
&lt;code>29049b2b0f8d3c192df83b098c84fc5&lt;/code>&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>Recently, while migrating to a new server, I discovered a suspicious process running inside a &lt;a href="https://hotio.dev/containers/qbittorrent/">hotio/qbittorrent&lt;/a> Docker container.&lt;/p>
&lt;p>I mainly use this to download Linux ISOs, as anybody else, right?&lt;/p>
&lt;p>I just want to get that sweet sweet &lt;a href="https://omarchy.org/">Omarchy&lt;/a> ISO.&lt;/p>
&lt;h2 id="the-problem">
The Problem
&lt;a href="#the-problem" class="h-anchor" aria-hidden="true">#&lt;/a>
&lt;/h2>
&lt;p>While monitoring system resources, I noticed a process consuming unusually high CPU:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>$ ps -ef | grep netservlet
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">1000&lt;/span> &lt;span style="color:#ae81ff">758679&lt;/span> &lt;span style="color:#ae81ff">756435&lt;/span> &lt;span style="color:#ae81ff">99&lt;/span> 09:39 ? 00:13:43 ./netservlet
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;figure class="center" >
&lt;img src="https://apogliaghi.com/img/_qbittorrent-cryptominer/cpu_spike.png"
/>
&lt;/figure>
&lt;p>The binary &lt;code>netservlet&lt;/code> was unfamiliar, and attempts to inspect it via &lt;code>/proc&lt;/code> failed:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>$ docker exec qbittorrent cat /proc/758679/exe &amp;gt; /tmp/netservlet
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Output: No such file or directory&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This indicates the binary was likely &lt;strong>unlinked from the filesystem&lt;/strong>, pretty much as expected.&lt;/p>
&lt;h2 id="investigation">
Investigation
&lt;a href="#investigation" class="h-anchor" aria-hidden="true">#&lt;/a>
&lt;/h2>
&lt;p>Since direct access to the executable was blocked, I generated a core dump:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>$ gcore -o /tmp/netservlet_core &lt;span style="color:#ae81ff">758679&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>I could now simply use &lt;code>strings&lt;/code> to further have a look:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>$ strings /tmp/netservlet.elf | egrep -i &lt;span style="color:#e6db74">&amp;#39;stratum|pool|wallet|http|crypto|mining|eth|btc|pool&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Highlights included:&lt;/p>
&lt;ul>
&lt;li>References to cryptocurrency mining: &lt;code>cryptonight&lt;/code>, &lt;code>ethash_calculate_dag_item&lt;/code>, &lt;code>mining.submit&lt;/code>, &lt;code>mining.authorize&lt;/code>.&lt;/li>
&lt;li>Mining pool addresses: &lt;code>auto.c3pool.org:19999&lt;/code>.&lt;/li>
&lt;li>Miner configuration options: &lt;code>--cpu-memory-pool&lt;/code>, &lt;code>--opencl&lt;/code>, &lt;code>--cuda&lt;/code>, &lt;code>--rig-id&lt;/code>, &lt;code>http-access-token&lt;/code>.&lt;/li>
&lt;/ul>
&lt;p>This confirmed that &lt;code>netservlet&lt;/code> was &lt;strong>a stealth crypto miner&lt;/strong>, likely XMRig or a variant.
I thought we were over crypto bros and all over to AI-bros, I was mistaken 😂.&lt;/p>
&lt;figure class="center" >
&lt;img src="https://apogliaghi.com/img/_qbittorrent-cryptominer/wat.png"
/>
&lt;/figure>
&lt;p>Just for fun, I also ran &lt;code>binwalk&lt;/code> against the dump, which ended up with a &lt;code>1.3GB&lt;/code> &lt;code>gzip&lt;/code> archive.
We couldn&amp;rsquo;t just unzip it, though, due to obfuscation.&lt;/p>
&lt;p>I will analyze it via &lt;code>ghidra&lt;/code> later, today I should be OOO lol.&lt;/p>
&lt;h2 id="conclusion">
Conclusion
&lt;a href="#conclusion" class="h-anchor" aria-hidden="true">#&lt;/a>
&lt;/h2>
&lt;p>Remember:&lt;/p>
&lt;ul>
&lt;li>Never trust random Docker images—your containers aren’t magic elves.&lt;/li>
&lt;li>Keep an eye on system resources—they have feelings too.&lt;/li>
&lt;li>Audit your host and containers often—because surprises are only fun at parties.&lt;/li>
&lt;/ul></description></item><item><title>Final Space and the (sweet) path to the Torrent</title><link>https://apogliaghi.com/2022/09/final-space-and-the-sweet-path-to-the-torrent/</link><pubDate>Thu, 29 Sep 2022 00:00:00 +0000</pubDate><author>apogliaghi@gmail.com (Alessandro Pogliaghi)</author><guid>https://apogliaghi.com/2022/09/final-space-and-the-sweet-path-to-the-torrent/</guid><description>
&lt;p>This is the tweet (&lt;a href="https://web.archive.org/web/20220928192647/https://twitter.com/PixelatedWah/status/1574924613456343041#expand">waybackmachine&lt;/a>) that has gone viral in the last 24 hours.&lt;/p>
&lt;!-- **Update (July, 2025)**: Tweet has been removed since. -->
&lt;figure class="center" >
&lt;img src="https://apogliaghi.com/img/_final-space/final_space_tweet.png"
width="400px"
height="auto"
/>
&lt;/figure>
&lt;p>Basically WB pulled the plug on the show &lt;a href="https://en.wikipedia.org/wiki/Final_Space">Final Space&lt;/a> by treating it as a tax write-off.&lt;/p>
&lt;h2 id="the-good-old-times-and-nflx">
The Good Old Times and $NFLX
&lt;a href="#the-good-old-times-and-nflx" class="h-anchor" aria-hidden="true">#&lt;/a>
&lt;/h2>
&lt;p>I remember that I never really had any issues torrenting stuff when I was a little boy already diving into the net for &lt;del>movies/tv-series/games&lt;/del> legal Linux distros 👀.&lt;/p>
&lt;p>At some point, Netflix became available in most of Europe and suddenly a very nice UX with a growing catalogue of contents was available on major platforms for an affordable monthly price. I noticed that a lot of my friends back then, stopped downloading or streaming movies and started using Netflix.&lt;/p>
&lt;p>Did Netflix reduced content pirating? I don&amp;rsquo;t have data to support this, but I can imagine that who did before Netflix came along, probably kept on doing it afterwards as well. Perhaps the numbers would be in favour of Netflix in terms of traffic share, just because of the sheer low barrier to entry for platform adoption, especially with respect to mobile traffic.&lt;/p>
&lt;p>The thing that kept me using Netflix, is the UX of the mobile application. There&amp;rsquo;s no other service, to which I can legally obtain access, that remotely comes close in terms of user experience, in my opinion. Amazon Prime is aberrant, the app sucks, the search functionality is, God&amp;rsquo;s knows why, still broken and has items that can only be bought with a separate transaction.
Haven&amp;rsquo;t used Disney+ too much, it seemed ok but the library content wasn&amp;rsquo;t enough for me to justify the subscription.
AppleTV+ has had amazing shows lately and the experience is good, if you&amp;rsquo;re already into the 🍎 ecosystem.&lt;/p>
&lt;p>Already the fact that we have all these applications (in the US the phenomena is even more striking) is basically calling for the end users to pirate stuff, most of the times you don&amp;rsquo;t even know where to watch something, you just want to watch it.&lt;/p>
&lt;h2 id="final-space">
Final Space
&lt;a href="#final-space" class="h-anchor" aria-hidden="true">#&lt;/a>
&lt;/h2>
&lt;p>Final Space has been removed from the face of the earth and has kind woke some people up regarding digital ownership of items, this is not something new, of course. Think about your Spotify library, if at some point Spotify kills your account, you&amp;rsquo;d loose everything in a heartbeat. Same with Netflix and all of the other services.&lt;/p>
&lt;blockquote>
&lt;p>Five years of my life.s
Three seasons.
Blood, sweat, and tears&amp;hellip;
&amp;hellip;.became a tax write-off for the network that owns Final Space.
Yup. That&amp;rsquo;s it. That&amp;rsquo;s why it&amp;rsquo;s disappeared everywhere in the USA. Five years of work vanished.&lt;br>
When the license is up internationally, Netflix will take it down, and then it will be gone forever. There are no more physical copies of S1 and S2, and no physical copies of Season 3 were ever made. Your memory of Final Space will be the only proof it ever existed&lt;/p>&lt;/blockquote>
&lt;h2 id="so">
So?
&lt;a href="#so" class="h-anchor" aria-hidden="true">#&lt;/a>
&lt;/h2>
&lt;p>I remember the following hilarious short video shown at the beginning of movies:&lt;/p>
&lt;video controls width="100%" style="max-width: 640px;">
&lt;source src="https://apogliaghi.com/img/_final-space/u_wouldnt_steal_a_car.webm" type="video/webm">
Your browser does not support the video tag.
&lt;/video>
&lt;blockquote>
&lt;p>You wouldn&amp;rsquo;t steal a car&lt;/p>&lt;/blockquote>
&lt;p>But what if you bought a car and then, at some point, the car maker or the car salesman took it from you (moreover, without a refund)? I know, I&amp;rsquo;m exaggerating here but you get the gist.&lt;/p>
&lt;p>On Prime the button clearly states &amp;ldquo;&lt;strong>Buy Item&lt;/strong>&amp;rdquo; but then in the ToS in some obscure point, it reads&lt;/p>
&lt;blockquote>
&lt;p>[..] revocable licensing [..]&lt;/p>&lt;/blockquote>
&lt;p>our society is driven by legalese bs 🙈.&lt;/p>
&lt;p>I don&amp;rsquo;t have a solution, but things like this certainly don&amp;rsquo;t help stopping people from using other ways to consume mediums.&lt;/p>
&lt;p>The company Sandvine published a &lt;code>2022&lt;/code> report and it&amp;rsquo;s interesting to notice the global traffic share per medium/service, FYI.&lt;/p>
&lt;figure class="center" >
&lt;img src="https://apogliaghi.com/img/_final-space/global_traffic_share.png"
/>
&lt;/figure></description></item><item><title>Software Midlife Crisis</title><link>https://apogliaghi.com/2022/09/software-midlife-crisis/</link><pubDate>Wed, 28 Sep 2022 00:00:00 +0000</pubDate><author>apogliaghi@gmail.com (Alessandro Pogliaghi)</author><guid>https://apogliaghi.com/2022/09/software-midlife-crisis/</guid><description>
&lt;p>It seems that, for us Software peeps, hosting a blog is like the sports car midlife crisis phase.
It&amp;rsquo;s bound to happen, sooner or later, for almost all of us 😁&lt;/p>
&lt;p>This is no different, I guess, I will use this blog to sometime express my thoughts on world events&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>, software-related stuff and some personal projects that I would be working on.&lt;/p>
&lt;h2 id="the-software-situation">
The software situation
&lt;a href="#the-software-situation" class="h-anchor" aria-hidden="true">#&lt;/a>
&lt;/h2>
&lt;p>I have recently stumbled upon this fantastic talk by &lt;a href="https://en.wikipedia.org/wiki/Jonathan_Blow">Jonathan Blow&lt;/a>, entitled &amp;ldquo;&lt;em>Preventing the Collapse of Civilization&lt;/em>&amp;rdquo; and, while I think some points are exaggerated, I really found it insightful.&lt;/p>
&lt;p>I believe that the core, would be something along the lines of&lt;/p>
&lt;blockquote>
&lt;p>Software is getting so complex that the knowledge for how to do the intricate or demanding things isn&amp;rsquo;t held by many people, which makes it brittle. Adding layers of complexity on top of each other has created a tower of abstraction that people usually only know a part of, which makes the entire stack brittle if not enough people know every part of it and something breaks.&lt;/p>&lt;/blockquote>
&lt;p>There are cases in which this doesn&amp;rsquo;t hold true, of course. This blog, for example, is built with hugo, hosted on the &amp;ldquo;new Heroku&amp;rdquo;, &lt;a href="https://fly.io">fly.io&lt;/a>, and I completely adore the DX there. Extremely simple setup, all you need is really just a Docker image to push.
One could argue that having a docker image already implicates having too much complexity, I mean, this are just static files after all&amp;hellip;&lt;/p>
&lt;p>And that may be the problem that Blow is trying to underline, he suggest that &lt;strong>simplifying&lt;/strong> the development processes and tools could help to &lt;strong>reduce complexity&lt;/strong> and non-necessary dependencies.&lt;/p>
&lt;p>Again, I completely agree with that statement. Another important concept is having deeper understanding of the technologies and the tools used at a lower level.
This is hard, and takes time. A lot of companies, I imagine, don&amp;rsquo;t really care about this. The really sad part is that, I believe, the cost of issues down the road is so much more than the upfront one related to giving the possibility to the technical peeps of learning the intrinsic knowledge of things, and not to (usually) leave this task to 1 &amp;ldquo;senior&amp;rdquo; person on the team.&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/pW-SOdj4Kkk?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
&lt;/div>
&lt;p>Personally, I really dislike the whole Electron-mania and javascript everywhere that slows down every piece of software it touches, everything is basically a small chromium instance running and eating RAM like crazy, it should not be like that, nor we need it to be like that.
I am optimistic about the future, one has to be during these times with all that is happening, let&amp;rsquo;s see what will come next.&lt;/p>
&lt;figure class="center" >
&lt;img src="https://apogliaghi.com/img/_software-midlife-crisis/big_decisions.png"
alt="Yep"
/>
&lt;/figure>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>Who doesn&amp;rsquo;t like politics, amiright?!&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item></channel></rss>