<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[try, except]]></title><description><![CDATA[Tech, sport and unsolicited opinions.]]></description><link>https://blog.mariobianchi.dev</link><image><url>https://substackcdn.com/image/fetch/$s_!vC4x!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ad89ad7-76ba-479d-90c8-e3edc9bc4c3c_1250x1250.png</url><title>try, except</title><link>https://blog.mariobianchi.dev</link></image><generator>Substack</generator><lastBuildDate>Wed, 06 May 2026 11:44:20 GMT</lastBuildDate><atom:link href="https://blog.mariobianchi.dev/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Mario Bianchi]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[bianchimario@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[bianchimario@substack.com]]></itunes:email><itunes:name><![CDATA[Mario Bianchi]]></itunes:name></itunes:owner><itunes:author><![CDATA[Mario Bianchi]]></itunes:author><googleplay:owner><![CDATA[bianchimario@substack.com]]></googleplay:owner><googleplay:email><![CDATA[bianchimario@substack.com]]></googleplay:email><googleplay:author><![CDATA[Mario Bianchi]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[F1's 2026 emergency fix, explained with data]]></title><description><![CDATA[What forced the FIA to rewrite the 2026 rules before the Miami GP]]></description><link>https://blog.mariobianchi.dev/p/f1s-2026-emergency-fix-explained</link><guid isPermaLink="false">https://blog.mariobianchi.dev/p/f1s-2026-emergency-fix-explained</guid><dc:creator><![CDATA[Mario Bianchi]]></dc:creator><pubDate>Sat, 25 Apr 2026 15:32:14 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!EWEf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a1685ff-595b-4989-a09d-31a5e79df255_1024x608.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EWEf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a1685ff-595b-4989-a09d-31a5e79df255_1024x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EWEf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a1685ff-595b-4989-a09d-31a5e79df255_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!EWEf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a1685ff-595b-4989-a09d-31a5e79df255_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!EWEf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a1685ff-595b-4989-a09d-31a5e79df255_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!EWEf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a1685ff-595b-4989-a09d-31a5e79df255_1024x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EWEf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a1685ff-595b-4989-a09d-31a5e79df255_1024x608.png" width="1024" height="608" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5a1685ff-595b-4989-a09d-31a5e79df255_1024x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:608,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!EWEf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a1685ff-595b-4989-a09d-31a5e79df255_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!EWEf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a1685ff-595b-4989-a09d-31a5e79df255_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!EWEf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a1685ff-595b-4989-a09d-31a5e79df255_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!EWEf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a1685ff-595b-4989-a09d-31a5e79df255_1024x608.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Formula 1 changes its rules on a regular basis. Sometimes the changes are small. Sometimes they rewrite almost everything. The 2026 regulations are the biggest overhaul since the hybrid era started in 2014.</p><p>The goals were clear. First, make the technology more relevant to road cars. Second, reduce the sport&#8217;s environmental impact. Third, make it easier for new manufacturers to join, by removing some of the most complex and expensive components from the power unit.</p><p>One of those components was the MGU-H, the motor that recovered energy from exhaust heat and fed it back into the system. It was brilliant engineering, but it had almost no equivalent in a normal car, it cost a fortune to develop and it was one of the main reasons new engine suppliers were reluctant to enter the sport. So it was cut.</p><p>In its place, the regulations put much more weight on the MGU-K, the electric motor connected to the drivetrain that recovers kinetic energy under braking and stores it in the battery. The internal combustion engine was dialled back, the electric side was boosted, and the fuel switched to biofuel. The target was a near 50/50 split between thermal and electric power.</p><p>The problem is that nobody (a part from Verstappen, apparently) fully anticipated was how a racing car would actually behave when its battery kept running out mid-straight, and how the system would respond when it needed to recharge.</p><p>By the third race of the season, it was clear that something needed to change. The FIA acted before the Miami GP, rewriting part of the rules between race weekends.</p><p>This post tries to explain what went wrong and what the fix actually does.</p><p></p><h2>A new power unit, a new set of rules</h2><p>The 2026 rules changed almost everything at once. Here is what actually changed.</p><h4><strong>The power unit</strong></h4><p>The 1.6-litre V6 turbocharged engine stays, but the balance of power shifts significantly. The Internal Combustion Engine (ICE) drops from around 600 kW to 400 kW. The MGU-K, that acts as both a motor under acceleration and a generator under braking, goes from 120 kW to 350 kW, nearly three times as much. The result is a near 50/50 split between thermal and electric power. </p><p>The MGU-H is gone. With it goes the ability to keep the turbo spinning on demand. Turbo lag is back. To compensate, drivers have to stay in lower gears through corners to keep engine revs high and the turbo ready. It also changes how race starts work: electric power is not available below 50 km/h, so teams use a pre-start sequence to spin the turbos up before the lights go out.</p><p>The battery holds 4 MJ. The system has to recharge constantly, not just under braking. When the battery is low, the power unit starts harvesting energy even while the driver has the throttle fully open. The car slows on the straight, not because the driver lifted, but because the system is recharging. This is called <strong>superclipping</strong>, and it turned out to be a bigger problem than anyone expected. More on that in the next section.</p><h4><strong>Active aerodynamics</strong></h4><p>DRS is gone. In its place, both the front and rear wings can be opened on straights. In Corner Mode (or Z-Mode), the wings generate maximum downforce. On straights, they switch to Straight Mode (or X-Mode), flattening out to reduce drag. This is available to every driver on every lap: without it, the drag at high speed would drain the battery even faster.</p><h4><strong>Overtake Mode</strong></h4><p>If a driver is within one second of the car ahead at a detection point, they gain access to Overtake Mode for the following lap. The difference from DRS is both what it does and how it works mechanically.</p><p>In normal running, electrical deployment starts to taper off above 290 km/h and reaches zero at 345 km/h. In Overtake Mode, the deployment curve remains flat for longer before dropping steeply to zero at 355 km/h. This means the attacking car can sustain full electrical power at speeds where the defending car is already losing it. The mode also allows the driver to harvest an extra 0.5 MJ per lap, raising the total recoverable energy. But there is a cost: that extra energy has to be recovered later in the lap, which can leave the driver exposed elsewhere on the circuit. Unlike DRS, which had no real downside, Overtake Mode forces a strategic trade-off.</p><h4><strong>New manufacturers</strong></h4><p>The simplified power unit attracted new names. Audi entered as a works team, Honda returned with Aston Martin, and Ford came back in partnership with Red Bull Powertrains. Cadillac also joined as the 11th team.</p><p></p><h2>Flat out, yet slowing down</h2><p>The clearest way to see what changed is to look at the data. Below are speed and gear traces from qualifying, comparing the same circuit in 2025 and 2026.</p><h4><strong>Speed trace</strong></h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fuEm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ba8151f-00a5-4fa0-83e1-182dde12166e_3232x1673.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fuEm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ba8151f-00a5-4fa0-83e1-182dde12166e_3232x1673.png 424w, https://substackcdn.com/image/fetch/$s_!fuEm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ba8151f-00a5-4fa0-83e1-182dde12166e_3232x1673.png 848w, https://substackcdn.com/image/fetch/$s_!fuEm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ba8151f-00a5-4fa0-83e1-182dde12166e_3232x1673.png 1272w, https://substackcdn.com/image/fetch/$s_!fuEm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ba8151f-00a5-4fa0-83e1-182dde12166e_3232x1673.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fuEm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ba8151f-00a5-4fa0-83e1-182dde12166e_3232x1673.png" width="1456" height="754" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0ba8151f-00a5-4fa0-83e1-182dde12166e_3232x1673.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:754,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:301131,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.mariobianchi.dev/i/195385421?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ba8151f-00a5-4fa0-83e1-182dde12166e_3232x1673.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!fuEm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ba8151f-00a5-4fa0-83e1-182dde12166e_3232x1673.png 424w, https://substackcdn.com/image/fetch/$s_!fuEm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ba8151f-00a5-4fa0-83e1-182dde12166e_3232x1673.png 848w, https://substackcdn.com/image/fetch/$s_!fuEm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ba8151f-00a5-4fa0-83e1-182dde12166e_3232x1673.png 1272w, https://substackcdn.com/image/fetch/$s_!fuEm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ba8151f-00a5-4fa0-83e1-182dde12166e_3232x1673.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Speed trace comparison, Australian GP qualifying. Lando Norris's 2025 pole lap vs George Russell's 2026 pole lap. Data extracted via FastF1.</figcaption></figure></div><p>In 2025, the pattern is simple: speed builds steadily to the braking point, then drops sharply. In 2026, there are one or more steps where the car slows by around 50 km/h well before the braking zone, then recovers, then brakes normally. These steps are not the driver lifting. They are the power unit pulling energy from the engine to recharge the battery while the throttle is still fully open. That is superclipping.</p><h4><strong>Gear trace</strong></h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RjO6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f121957-2122-44ce-810c-c4585d83d6b5_3296x1638.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RjO6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f121957-2122-44ce-810c-c4585d83d6b5_3296x1638.png 424w, https://substackcdn.com/image/fetch/$s_!RjO6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f121957-2122-44ce-810c-c4585d83d6b5_3296x1638.png 848w, https://substackcdn.com/image/fetch/$s_!RjO6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f121957-2122-44ce-810c-c4585d83d6b5_3296x1638.png 1272w, https://substackcdn.com/image/fetch/$s_!RjO6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f121957-2122-44ce-810c-c4585d83d6b5_3296x1638.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RjO6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f121957-2122-44ce-810c-c4585d83d6b5_3296x1638.png" width="1456" height="724" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0f121957-2122-44ce-810c-c4585d83d6b5_3296x1638.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:724,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:338163,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.mariobianchi.dev/i/195385421?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f121957-2122-44ce-810c-c4585d83d6b5_3296x1638.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RjO6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f121957-2122-44ce-810c-c4585d83d6b5_3296x1638.png 424w, https://substackcdn.com/image/fetch/$s_!RjO6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f121957-2122-44ce-810c-c4585d83d6b5_3296x1638.png 848w, https://substackcdn.com/image/fetch/$s_!RjO6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f121957-2122-44ce-810c-c4585d83d6b5_3296x1638.png 1272w, https://substackcdn.com/image/fetch/$s_!RjO6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f121957-2122-44ce-810c-c4585d83d6b5_3296x1638.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Gear trace comparison, Chinese GP qualifying. Oscar Piastri's 2025 pole lap vs Kimi Antonelli's 2026 pole lap. Data extracted via FastF1.</figcaption></figure></div><p>In 2025, drivers stay in relatively high gears through the corners. In 2026, they drop much lower. Without the MGU-H, the turbo loses speed every time the driver lifts off the throttle. Staying in lower gears keeps engine revs high, which keeps the turbo spinning and ready to deliver power on the way out of the corner. The driving style has changed completely, and so has the point at which drivers begin to brake and turn in.</p><h4><strong>What this looked like on track</strong></h4><p>The data tells one story. The first three races told another.</p><p>Formula 1 qualifying is supposed to be the purest expression of speed: one driver, one lap, nothing held back. In 2026, drivers were lifting, coasting and managing energy even on their flying laps, because the battery could not sustain full power for the entire lap. Fans were watching a time attack where the car was not always going as fast as it could.</p><p>Race starts brought a different problem. The absence of electric power below 50 km/h, combined with the complexity of the new pre-start sequences, made some cars accelerate off the line in unpredictable ways, creating hazards for the drivers directly behind them.</p><p>The most serious issue was speed differentials. Because different cars recharge and deploy at different moments, two cars approaching the same corner can be travelling at very different speeds, with no warning for either driver.</p><p>The clearest example came at Suzuka. Bearman was travelling at around 315 km/h when he had to swerve onto the grass to avoid Colapinto&#8217;s car, which was slowing to harvest energy. The speed difference between the two was around 50 km/h, not because one driver braked and the other did not, but because one car was deploying electrical power while the other was recharging. The impact registered 50G.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5YJp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d9b344d-d61e-4222-bd9a-30b06986c39f_2880x716.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5YJp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d9b344d-d61e-4222-bd9a-30b06986c39f_2880x716.png 424w, https://substackcdn.com/image/fetch/$s_!5YJp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d9b344d-d61e-4222-bd9a-30b06986c39f_2880x716.png 848w, https://substackcdn.com/image/fetch/$s_!5YJp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d9b344d-d61e-4222-bd9a-30b06986c39f_2880x716.png 1272w, https://substackcdn.com/image/fetch/$s_!5YJp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d9b344d-d61e-4222-bd9a-30b06986c39f_2880x716.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5YJp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d9b344d-d61e-4222-bd9a-30b06986c39f_2880x716.png" width="1456" height="362" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3d9b344d-d61e-4222-bd9a-30b06986c39f_2880x716.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:362,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2387085,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.mariobianchi.dev/i/195385421?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d9b344d-d61e-4222-bd9a-30b06986c39f_2880x716.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5YJp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d9b344d-d61e-4222-bd9a-30b06986c39f_2880x716.png 424w, https://substackcdn.com/image/fetch/$s_!5YJp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d9b344d-d61e-4222-bd9a-30b06986c39f_2880x716.png 848w, https://substackcdn.com/image/fetch/$s_!5YJp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d9b344d-d61e-4222-bd9a-30b06986c39f_2880x716.png 1272w, https://substackcdn.com/image/fetch/$s_!5YJp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d9b344d-d61e-4222-bd9a-30b06986c39f_2880x716.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Bearman approaches Colapinto at Spoon Corner, Suzuka 2026. Both drivers are at full throttle.</figcaption></figure></div><p>Finally, Overtake Mode created what drivers called yo-yo racing. Because one car can be at full electrical deployment while the car ahead is recharging, passes happen not through better driving but simply because the energy states of the two cars diverged at the right moment. A few seconds later, the positions can reverse for exactly the same reason.</p><p></p><h2>The Miami reset</h2><p>The FIA acted before the fourth race of the season, introducing a package of changes effective from the Miami GP.</p><h4><strong>Qualifying</strong></h4><p>The maximum energy that can be harvested per lap was reduced from 8 MJ to 7 MJ. Less energy to recover means less superclipping. The peak superclipping power was also raised from 250 kW to 350 kW, so when harvesting does happen, it is over faster. The FIA&#8217;s target is 2 to 4 seconds of superclipping per qualifying lap, down from what drivers were experiencing in the first three races. The number of races where alternative lower energy limits can apply was also increased from 8 to 12, giving the FIA more flexibility across the calendar.</p><h4><strong>Race</strong></h4><p>The same superclipping power increase (250 to 350 kW) applies in the race. To address the dangerous speed differentials seen at Suzuka, boost power is now capped at +150 kW, limiting the gap between a car at full deployment and one that is harvesting. MGU-K deployment is kept at 350 kW from corner exit to braking point, but limited to 250 kW elsewhere on the lap.</p><h4><strong>Race starts</strong></h4><p>A new low power start detection system was introduced: if a car shows abnormally low acceleration after the clutch is released, automatic MGU-K deployment is triggered. Cars affected display flashing rear and lateral lights to warn the drivers behind.</p><h4><strong>Wet conditions</strong></h4><p>Tyre blanket temperatures for intermediate tyres were increased to improve initial grip. Maximum ERS deployment in wet conditions was reduced to improve car control.</p><div><hr></div><blockquote><p><em>&#8220;To me it looks pretty terrible. If you go flat out on the straight in Monza and 400 metres before the end of the straight you have to downshift, flat out, because that&#8217;s faster&#8230; I think that&#8217;s not the way forward. [...] It looks like it&#8217;s going to be an ICE competition, so whoever has the strongest engine will have a big benefit.&#8221;</em></p><p><em><strong>Max Verstappen, in 2023, talking about the 2026 regulations at the Austrian GP press conference</strong></em></p></blockquote>]]></content:encoded></item><item><title><![CDATA[What the hell is an Expected Goal?]]></title><description><![CDATA[xG, Field Tilt and the numbers reshaping football]]></description><link>https://blog.mariobianchi.dev/p/what-the-hell-is-an-expected-goal</link><guid isPermaLink="false">https://blog.mariobianchi.dev/p/what-the-hell-is-an-expected-goal</guid><dc:creator><![CDATA[Mario Bianchi]]></dc:creator><pubDate>Mon, 30 Mar 2026 23:46:22 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!gObY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F920f2be4-6a1a-45b6-acd6-772509d434a9_1024x608.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In every sport worth following, the strongest team doesn&#8217;t always win. And in some sports, with football being a prime example, not only does the strongest team not always win, but neither does the team that played better. But what does &#8220;playing better&#8221; even mean, though? Some people have tried to answer that question, developing metrics that put numbers to what, until recently, were just gut feelings and intuitions.</p><p>What follows is a cheat sheet for sounding football-smart at the pub, in the locker room or at the office.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gObY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F920f2be4-6a1a-45b6-acd6-772509d434a9_1024x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gObY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F920f2be4-6a1a-45b6-acd6-772509d434a9_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!gObY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F920f2be4-6a1a-45b6-acd6-772509d434a9_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!gObY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F920f2be4-6a1a-45b6-acd6-772509d434a9_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!gObY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F920f2be4-6a1a-45b6-acd6-772509d434a9_1024x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gObY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F920f2be4-6a1a-45b6-acd6-772509d434a9_1024x608.png" width="1024" height="608" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/920f2be4-6a1a-45b6-acd6-772509d434a9_1024x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:608,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!gObY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F920f2be4-6a1a-45b6-acd6-772509d434a9_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!gObY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F920f2be4-6a1a-45b6-acd6-772509d434a9_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!gObY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F920f2be4-6a1a-45b6-acd6-772509d434a9_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!gObY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F920f2be4-6a1a-45b6-acd6-772509d434a9_1024x608.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h2>Expected Goals (xG)</h2><p>The idea behind xG is fairly simple, and can be summed up with one question: given the conditions under which this shot was taken, how likely is it to end up in the net?</p><p>Every data provider in football has its own model for calculating xG, but all of them train on a common set of variables: distance from goal, angle, body part used, the type of pass that preceded the shot and the number of defenders between the shooter and the goal.</p><p>The simpler models use binary logistic regression on these variables, while more sophisticated ones, like StatsBomb&#8217;s, use gradient boosted tree algorithms such as XGBoost or LightGBM. Either way, the output is a value between 0 and 1.</p><p>For reference: penalties are converted roughly 75% of the time, so the xG assigned to a penalty is 0.75.</p><p>The interpretation is straightforward: a team that scores fewer goals than the xG it accumulated in a match wasn&#8217;t clinical enough. Conversely, a team that scored more goals than its xG was either very sharp or very lucky.</p><h2>Expected Assists (xA)</h2><p>If a pass leads to a goal, it&#8217;s an assist. If it doesn&#8217;t, it isn&#8217;t. This creates distortions in how we evaluate players, because it ignores pass quality entirely. A player who plays 10 passes each worth 0.35 xG (good chances, none converted) ends up with 0 assists. Another who plays a 0.05 xG pass that somehow goes in off the goalkeeper gets credited with 1 assist. xA corrects this distortion by weighting each pass according to the quality of the opportunity it creates.</p><p>There are two interpretations of xA. The first, the shot-centric version, credits the passer with the xG of the resulting shot. The second, the pass-centric version, estimates the probability that a pass made under certain conditions will lead to a goal. This version requires training a model on a large historical dataset, much like the process used for xG.</p><h2>Passes per Defensive Action (PPDA)</h2><p>How do you measure the quality of a team&#8217;s pressing? Given that during the pressing phase the team doesn&#8217;t have the ball, one approach is to count how many passes the opposition manages to complete before losing possession. That&#8217;s PPDA: the average number of passes the opponent completes before being stopped by a tackle, interception, foul or mistake. A low PPDA means a team is pressing effectively; a high value means they&#8217;re giving the opposition too much room. As a benchmark, values below 10 are generally considered good.</p><p>Note: some implementations of PPDA only count passes in specific areas of the pitch, to exclude actions in zones that are less relevant.</p><h2>Field Tilt</h2><p>Field Tilt measures where on the pitch the game is actually being played. To calculate it, you look at the attacking third of the pitch and count the completed passes in that zone. You then divide that number by the total passes completed by both teams in the same area, giving you a measure of territorial dominance. The team with the higher Field Tilt is the one that spent more time in the opposition half.</p><p></p><div class="pullquote"><p>Everything beyond this point is unnecessary and might even ruin the game. </p></div><p></p><h2>Pitch Control</h2><p>If the ball were in a given area of the pitch, which team would get there first? Pitch Control answers that question. While a spectator could answer it intuitively, implementing it in a model is considerably more complex than it sounds. </p><p>The basic idea: at every moment in a match, the pitch is divided into a grid of zones, and for each zone the model calculates which team could reach it first, factoring in the current position and speed of every player on the pitch. The zone is assigned to whichever team gets there first, according to the model. Aggregating all zones gives you a percentage of pitch controlled by each team at any given moment. </p><p>Unlike Field Tilt, which is a cumulative measure across the full match, Pitch Control is dynamic and changes from second to second.</p><h2>Expected Threat (xT)</h2><p>Despite the name echoing the first two metrics, xT is conceptually closer to Pitch Control. To calculate it, the pitch is divided into a grid of zones, and each zone is assigned a base value representing the historical probability of scoring when in possession in that area. When a player moves the ball from one zone to another, either by passing or dribbling, the xT of that action is the difference in value between the two zones. The sum of all these differences over ninety minutes gives the team&#8217;s total xT for the match. The team with the higher xT is the one that created the most dangerous opportunities, regardless of the final score.</p>]]></content:encoded></item><item><title><![CDATA[Computer vision, player tracking and babysitting Claude Code]]></title><description><![CDATA[On sports analysis, 2D maps and letting go of the agent]]></description><link>https://blog.mariobianchi.dev/p/non-faro-piu-il-babysitter-di-claude</link><guid isPermaLink="false">https://blog.mariobianchi.dev/p/non-faro-piu-il-babysitter-di-claude</guid><dc:creator><![CDATA[Mario Bianchi]]></dc:creator><pubDate>Sun, 08 Mar 2026 15:32:47 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!iAWG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97c8e6ca-2b80-4c73-ad75-4c72b35c67b0_1661x683.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>There was a project that had been rattling around in my head for a while. The idea was to develop a model capable of taking amateur footage of futsal matches and producing a 2D representation of the game.</p><p>Amateur video is a hard case because it systematically violates every reasonable assumption you'd make about "clean" footage. The camera follows the play handheld, so the framing shifts constantly and a static field calibration doesn't cut it. The angle is low, which means players overlap each other and the field lines vanish in perspective. Artificial lighting creates glare and overexposed zones that make model calibration a nightmare. In low-quality video, a moving ball becomes an indistinguishable blob. And the frame inevitably catches people who shouldn't be there: touchline coaches, substitutes on the bench, spectators off the pitch.</p><p>The most mature models and datasets for sports tracking were built for 11-a-side football, shot from above in professional stadium setups. Futsal is essentially a data no-man's land.</p><p>A solid challenge, in other words. But what better opportunity to put the much-hyped Claude Code to the test?</p><p></p><h2>Take #1: Futsal</h2><p>The first step was using <strong>YOLOv8n</strong>, an object detection model &#8212; a system trained to recognise and localise objects in an image &#8212; pre-trained on COCO, a generic dataset covering dozens of common object categories. The model analyses the video frame by frame and returns the position of everything it recognises. For players it works: across 460 frames it produces around 4,370 detections. For the ball it's a disaster: 14 detections total. The reason is simple: a moving futsal ball is small, blurred, and a model trained on generic internet images is not equipped to find it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vcsh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01d8500e-a684-4514-a2ef-f19de11b2c83_2848x1581.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vcsh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01d8500e-a684-4514-a2ef-f19de11b2c83_2848x1581.png 424w, https://substackcdn.com/image/fetch/$s_!vcsh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01d8500e-a684-4514-a2ef-f19de11b2c83_2848x1581.png 848w, https://substackcdn.com/image/fetch/$s_!vcsh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01d8500e-a684-4514-a2ef-f19de11b2c83_2848x1581.png 1272w, https://substackcdn.com/image/fetch/$s_!vcsh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01d8500e-a684-4514-a2ef-f19de11b2c83_2848x1581.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vcsh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01d8500e-a684-4514-a2ef-f19de11b2c83_2848x1581.png" width="1456" height="808" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/01d8500e-a684-4514-a2ef-f19de11b2c83_2848x1581.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:808,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3562682,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.mariobianchi.dev/i/190285569?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01d8500e-a684-4514-a2ef-f19de11b2c83_2848x1581.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!vcsh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01d8500e-a684-4514-a2ef-f19de11b2c83_2848x1581.png 424w, https://substackcdn.com/image/fetch/$s_!vcsh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01d8500e-a684-4514-a2ef-f19de11b2c83_2848x1581.png 848w, https://substackcdn.com/image/fetch/$s_!vcsh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01d8500e-a684-4514-a2ef-f19de11b2c83_2848x1581.png 1272w, https://substackcdn.com/image/fetch/$s_!vcsh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01d8500e-a684-4514-a2ef-f19de11b2c83_2848x1581.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The next step was computing the <em>homography matrix</em>: a mathematical transformation that maps each pixel in the video to a real coordinate on the pitch. In practice, it's what lets you say "this pixel corresponds to that point on the field" and therefore project player positions onto the 2D map. The automatic approach, consisting in isolating the white field lines via colour filtering (<em>HSV masking</em>), finding the lines with a classic computer vision algorithm (<em>HoughLinesP</em>), and estimating the transformation with <em>RANSAC</em>, produced zero valid results across 83 sampled frames. Artificial lighting and the low quality of the available footage made the lines unreadable to the filter parameters. The fix was manual annotation: I built an interactive tool where you click the corresponding points between the 2D field template and a frame extracted from the video.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EJWI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2017eca4-e604-4089-be26-f6a7f8cd85b3_1655x564.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EJWI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2017eca4-e604-4089-be26-f6a7f8cd85b3_1655x564.png 424w, https://substackcdn.com/image/fetch/$s_!EJWI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2017eca4-e604-4089-be26-f6a7f8cd85b3_1655x564.png 848w, https://substackcdn.com/image/fetch/$s_!EJWI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2017eca4-e604-4089-be26-f6a7f8cd85b3_1655x564.png 1272w, https://substackcdn.com/image/fetch/$s_!EJWI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2017eca4-e604-4089-be26-f6a7f8cd85b3_1655x564.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EJWI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2017eca4-e604-4089-be26-f6a7f8cd85b3_1655x564.png" width="1456" height="496" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2017eca4-e604-4089-be26-f6a7f8cd85b3_1655x564.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:496,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1022466,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.mariobianchi.dev/i/190285569?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2017eca4-e604-4089-be26-f6a7f8cd85b3_1655x564.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!EJWI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2017eca4-e604-4089-be26-f6a7f8cd85b3_1655x564.png 424w, https://substackcdn.com/image/fetch/$s_!EJWI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2017eca4-e604-4089-be26-f6a7f8cd85b3_1655x564.png 848w, https://substackcdn.com/image/fetch/$s_!EJWI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2017eca4-e604-4089-be26-f6a7f8cd85b3_1655x564.png 1272w, https://substackcdn.com/image/fetch/$s_!EJWI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2017eca4-e604-4089-be26-f6a7f8cd85b3_1655x564.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I annotated 28 key frames, then propagated the calibration to the remaining frames by tracking visual features between consecutive frames (<em>ORB feature tracking</em>).</p><p>There was an additional problem: the camera moves constantly following the play, so a single static matrix isn't enough. In other words, the scattered dots had to be connected frame by frame into continuous trajectories: a player in motion needs to maintain the same identity over time, not become a new object with every frame. This is where a tracker comes in, in this case <strong>OC-SORT</strong>: an algorithm that combines the current position of detections with a movement prediction to keep IDs consistent over time. The result: 70 distinct IDs for roughly 10-12 real players. The tracker kept losing the thread due to occlusions and the rapid movements typical of futsal (at least when I'm not the one playing).</p><p>To collapse those 70 fragments into stable identities I used <strong>OSNet</strong>, a model specialised in <em>re-identification</em>, i.e. recognising the same person across different moments and angles based on visual appearance. The model produces for each track fragment a numerical vector (embedding) describing the player's appearance. These vectors are then compared to determine which fragments belong to the same person, using shirt colour as an additional grouping criterion. The result: from 54 valid fragments down to 3 identities. A 94% reduction that's too aggressive, since many real players end up merged into a single ID because the shirts look alike and the fragments are too short to distinguish them reliably.</p><p>The final minimap was supposed to run alongside the original clip, but producing it meant solving a whole series of problems: people outside the pitch being projected inside due to homography errors, a flickering ball from intermittent detections, and a hard dependency on manual annotation of key field points.</p><p>At some point I had to admit that the problem wasn't solvable in the short term with the tools I had, and that even with better footage the situation wouldn't have improved significantly. It would have required annotated data that doesn't exist, models nobody has trained on that domain, and above all the patience I lost years ago.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;f59d8045-f131-4f2e-9a51-af65856e6a66&quot;,&quot;duration&quot;:null}"></div><p></p><h2>Take #2: Tennis</h2><p>I decided to change direction and try tennis, a more controlled domain, with stable footage, where I could at least verify the rest of the pipeline.</p><p>For player detection I used YOLOv8n again, which delivered encouraging results: 20580 detections versus the 4370 from futsal.</p><p>For the ball I ditched YOLO entirely. A tennis ball has characteristics (yellow, small, always moving) that lend themselves to a more direct approach: compute the difference between consecutive frames to isolate moving pixels, filter by colour with an HSV mask on the yellow-green range, discard shapes that don't look like a ball (too large, too elongated, not round enough), and exclude candidates that fall inside the player silhouettes (did Alcaraz really have to wear lemon yellow shorts?). No neural network, and the ball detected in 819 frames out of 1341, versus 14 in futsal.</p><p>Field registration was the clearest confirmation that the previous problem was a domain problem, not a method problem. The court is fixed, the white lines are high-contrast, the lighting is stable. These conditions made annotation much faster and more precise. The method was the same as in futsal, consisting in manual selection of key field points, except this time it worked on the first try, with no camera pan to manage and no need to propagate calibration frame by frame.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!iAWG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97c8e6ca-2b80-4c73-ad75-4c72b35c67b0_1661x683.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iAWG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97c8e6ca-2b80-4c73-ad75-4c72b35c67b0_1661x683.png 424w, https://substackcdn.com/image/fetch/$s_!iAWG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97c8e6ca-2b80-4c73-ad75-4c72b35c67b0_1661x683.png 848w, https://substackcdn.com/image/fetch/$s_!iAWG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97c8e6ca-2b80-4c73-ad75-4c72b35c67b0_1661x683.png 1272w, https://substackcdn.com/image/fetch/$s_!iAWG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97c8e6ca-2b80-4c73-ad75-4c72b35c67b0_1661x683.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iAWG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97c8e6ca-2b80-4c73-ad75-4c72b35c67b0_1661x683.png" width="1456" height="599" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/97c8e6ca-2b80-4c73-ad75-4c72b35c67b0_1661x683.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:599,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:749993,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.mariobianchi.dev/i/190285569?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97c8e6ca-2b80-4c73-ad75-4c72b35c67b0_1661x683.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!iAWG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97c8e6ca-2b80-4c73-ad75-4c72b35c67b0_1661x683.png 424w, https://substackcdn.com/image/fetch/$s_!iAWG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97c8e6ca-2b80-4c73-ad75-4c72b35c67b0_1661x683.png 848w, https://substackcdn.com/image/fetch/$s_!iAWG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97c8e6ca-2b80-4c73-ad75-4c72b35c67b0_1661x683.png 1272w, https://substackcdn.com/image/fetch/$s_!iAWG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97c8e6ca-2b80-4c73-ad75-4c72b35c67b0_1661x683.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>OC-SORT tracking produced 54 IDs as in futsal, but collapsing them into stable identities was far simpler this time: with only 2 players on court, all it took was filtering out tracks that were too short or too static, then clustering by shirt colour with K-means and k=2, with no need for OSNet.</p><p>The ball kept appearing and disappearing between frames, making the trajectory unusable. Searching for a solution I came across the <em>Kalman filter</em>: an algorithm that combines observed detections with a predictive movement model to estimate position even in frames where the ball isn't detected, filling gaps of up to 15 consecutive frames and producing a continuous trajectory.</p><p>The final result, while clearly better than futsal, came with several issues. The ball flickers annoyingly every time it slows down or bounces, because without movement there's no signal and detection simply disappears. Player detection drops without warning in certain areas of the court, making trajectories patchy and unreliable. And the attempt to plot the ball trajectory in 2D turned out to be essentially pointless: a tennis ball travels in three dimensions, bounces, rises off the ground, so the homography, which by definition assumes everything lies on the same plane, produces distortions large enough to make the projection meaningless. A problem that never even arose in futsal, and that in tennis is absolutely central.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;4f00f3c4-8d36-49c4-be60-b352abd94247&quot;,&quot;duration&quot;:null}"></div><p></p><h2>Babysitting Claude Code</h2><p>The starting point was the paper <em><a href="https://arxiv.org/abs/2404.11335">SoccerNet Game State Reconstruction: End-to-End Athlete Tracking and Identification on a Minimap*</a></em><a href="https://arxiv.org/abs/2404.11335"> di Somers et al.</a>, a work that formalises exactly the problem I was trying to tackle, building a complete pipeline to reconstruct player positions and identities on a minimap from broadcast footage of 11-a-side football.</p><p>The project intimidated me, but it turned out to be the right opportunity to experiment with the much-discussed Agentic AI. My approach was to personally choose the architecture, the tools, and the clips to run the models on. I also described problems as they emerged (for example the cluttered minimap, the broken field homography, the ball disappearing and reappearing) and manually annotated the field keypoints in the video frames. I delegated the code writing, parameter choices and debugging to Claude Code.</p><p>The experience? Frustrating, as it always is when you deal with artificial intelligence for more than 5 minutes. Now it's called Agentic AI, because it can plan, "reason", and iteratively evaluate results, but underneath it's the same models as before. The same models that can't count how many letter "A"s are in a word, but to which we blindly entrust our lives (and sadly, it seems, the lives of others too). The same models as before, but chained together in sequence so as to relieve us of the burden of even evaluating the direction they're heading, making us even less aware of what's happening behind the scenes. When something goes wrong, you have to hope the agent can fix the problem on its own, because at that point you're already offside (to stay on theme): within seconds the codebase becomes a labyrinth stuffed with unsolicited garbage, impossible to understand or debug, and so you have no choice but to trust the model even more, until everything becomes incomprehensible and you have to start over.</p><p>But this is the direction the world has taken, and the individual can't resist, because you risk falling behind (and on top of that, being written off as a dinosaur, a bore, a pedant). You can't stop, because you always have to do more.</p><p> Tutto, malissimo e subito.</p>]]></content:encoded></item><item><title><![CDATA[Why I Moved My Blog to Substack]]></title><description><![CDATA[Picking my battles, Substack and the need for attention]]></description><link>https://blog.mariobianchi.dev/p/why-i-moved-my-blog-to-substack</link><guid isPermaLink="false">https://blog.mariobianchi.dev/p/why-i-moved-my-blog-to-substack</guid><dc:creator><![CDATA[Mario Bianchi]]></dc:creator><pubDate>Sun, 15 Feb 2026 23:45:57 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ERYw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1053a19c-fa46-485a-b088-6b8252bbd272_1024x608.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ERYw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1053a19c-fa46-485a-b088-6b8252bbd272_1024x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ERYw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1053a19c-fa46-485a-b088-6b8252bbd272_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!ERYw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1053a19c-fa46-485a-b088-6b8252bbd272_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!ERYw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1053a19c-fa46-485a-b088-6b8252bbd272_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!ERYw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1053a19c-fa46-485a-b088-6b8252bbd272_1024x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ERYw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1053a19c-fa46-485a-b088-6b8252bbd272_1024x608.png" width="1024" height="608" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1053a19c-fa46-485a-b088-6b8252bbd272_1024x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:608,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ERYw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1053a19c-fa46-485a-b088-6b8252bbd272_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!ERYw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1053a19c-fa46-485a-b088-6b8252bbd272_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!ERYw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1053a19c-fa46-485a-b088-6b8252bbd272_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!ERYw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1053a19c-fa46-485a-b088-6b8252bbd272_1024x608.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I&#8217;ll be honest: I&#8217;m being inconsistent.</p><p>In my previous posts, I talked a lot about &#8220;techno-feudalism,&#8221; the &#8220;indie web&#8221; and the importance of digital sovereignty. I wrote about the joy of DIY and how we&#8217;re losing the art of building our own spaces online. I used to say that the medium <em>is</em> the message.</p><p>From that perspective, moving to Substack feels like a contradiction of my own principles.</p><p>But there&#8217;s a side to this I hadn&#8217;t fully considered. I didn&#8217;t start a blog to reach thousands of people or turn it into a full-time career. I started it to motivate myself to create more, to share my projects and document my journey.</p><p>With that in mind, it makes sense to minimize the friction between my thoughts and the page.</p><p>Managing a self-hosted blog, dealing with code, deployments and maintenance is rewarding, but it&#8217;s also an extra layer of complexity. It&#8217;s one more barrier between having an idea and actually publishing it. Right now, that&#8217;s a complexity I&#8217;m just not interested in managing. I was forcing it. And let&#8217;s be real: there&#8217;s nothing wrong with changing your mind.</p><p>Actually, I don&#8217;t even think I&#8217;ve changed my mind. Everything I said before still holds true. It&#8217;s just that, sometimes, you have to pick your battles.</p><h2><strong>My Take on Substack</strong></h2><p>I think we&#8217;re all here for more or less the same reason: we&#8217;re looking for attention.</p><p>As I understand it, Substack was created as a meeting point for people who want more than just short-form content. It&#8217;s meant to be a place for deep dives, long-form articles, and thoughtful reading: a space where time still has value.</p><p>The reality, however, feels a bit different. I get the impression that we&#8217;re mostly here to be seen, rather than to see others. To write, rather than to read.</p>]]></content:encoded></item><item><title><![CDATA[Enshittification, AI fatigue and finding an escape]]></title><description><![CDATA[It hasn't always been this way.]]></description><link>https://blog.mariobianchi.dev/p/enshittification-ai-fatigue-finding-an-escape</link><guid isPermaLink="false">https://blog.mariobianchi.dev/p/enshittification-ai-fatigue-finding-an-escape</guid><dc:creator><![CDATA[Mario Bianchi]]></dc:creator><pubDate>Sun, 21 Dec 2025 00:00:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/tWYxrowovts" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>It hasn't always been this way. We're so surrounded by shitty products that we've gotten used to them. Products that were designed to last a lifetime now last a couple of years, they're impossible to repair, they frustrate us, they don't help us in life. The music we listen to is no longer made by musicians, since technology has allowed everyone to become an "artist". The result is that production quality has declined.</p><p>We're surrounded by ugliness. We no longer have any interest in beautifying our cities, we don't care anymore about building pleasant-looking buildings, attention to detail no longer exists. There's been a flattening of colours and shapes. Some blame minimalism, but minimalism is something else to me: it's doing few things and doing them well, not cutting corners. Every logo now is two-dimensional, black and white. They're all the same. Everything seems to have lost its soul.</p><div id="youtube2-tWYxrowovts" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;tWYxrowovts&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/tWYxrowovts?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Cars used to be masterpieces, they were built with care and attention to detail. Kids would hang posters of cars in their rooms and dream about them for years and years. Now a car is an appliance designed to last no more than five years, like all other appliances. Think about it: the only ones who can aspire to have a beautiful car are the rich, for the rest of us they're all ugly tools, useful only for getting us from A to B.</p><p>Playing a video game was an experience, it was beautiful, you immersed yourself in a parallel world, while now you open a video game and it looks like a marketplace. Buy this, spend here, shop there. By the way, playing a video game used to be easy. You bought the game, put it into the console and played. It's no longer like this: we've managed to ruin this experience too. You buy a game (part of it, because you have to buy the rest of the content through DLCs, skins, etc.) and you can't play it immediately because you have to download it. And if you've already downloaded it, you can be sure there's an update to do. The update, by the way, doesn't update anything, instead it fixes bugs that should have been fixed before the game's release.</p><p>Even the web was a more colourful place (I talk about this <a href="https://blog.mariobianchi.dev/title/why-a-blog ">here</a>). At the very least, content was created by people. Gen-AI has put the final nail in the coffin of Web 1.0, which was the only web that had a reason to exist, since everything that came after contributed to the decline of the content we consume. Now content is created by the usual three or four models, resulting in lazy, empty, sterile output. The experience of using LLMs itself is increasingly frustrating, and I'm convinced I'm not the only one to have had this feeling. There's evidence supporting the thesis that models aren't actually getting better, but are simply getting better at answering benchmark questions (<a href="https://arxiv.org/abs/2502.14425; target=">Cheng, Y., Chang, Y., &amp; Wu, Y. (2025). A survey on data contamination for large language models</a>). Yet that's enough to inflate the bubble.</p><p>Everyone already knows about the AI bubble, it's in front of everyone's eyes, there's no need to add more. The issue is simple: as things stand, Gen-AI is not profitable, and won't be until it completely changes paradigm. And at this point, the hope is to hear about it less and less, because computer science is not just AI, and what drew many of us to this world was the possibility of creating new things, not the desire to delegate to a machine. Let the AI bubble burst, and take the real estate bubble with it while we're at it.</p><div id="youtube2-fwD9EnCzujM" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;fwD9EnCzujM&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/fwD9EnCzujM?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>All of this has led to a rediscovery of certain things we would now consider "vintage." Vinyl records, radio, iPod Classics, retro-gaming consoles, diaries, handwriting, restoring old cars (often not old enough to be considered "classics").</p><p>But it's not just objects from a few years ago that have come back. More and more people are becoming aware of the grayness to which many of us have been doomed and are looking for an escape route, which consists of returning to a simpler life. There's a movement of people who have gone back to living like our grandparents lived, far from the frenzy of the so-called "rat race." Of course, moving away from conveniences and trying to be as self-sufficient as possible involves many sacrifices, but the impression is that the reward is a more enjoyable life, where there are no anxieties and fears related to imaginary threats constructed to keep us productive. Information overload, the stress of the attention economy, the anxiety caused by the unsustainable pace of our lives have brought back an alternative model, one that involves rejecting what stands between us and peace.</p><p>Creating instead of consuming, living in beauty rather than garbage, choosing which technologies are worth letting into our lives. A man can dream.</p>]]></content:encoded></item><item><title><![CDATA[Building a Pi NAS, owning your media and hosting your cloud]]></title><description><![CDATA["You will own nothing and be happy."]]></description><link>https://blog.mariobianchi.dev/p/building-a-pi-nas-owning-your-media-and-hosting-your-cloud-self-hosting</link><guid isPermaLink="false">https://blog.mariobianchi.dev/p/building-a-pi-nas-owning-your-media-and-hosting-your-cloud-self-hosting</guid><dc:creator><![CDATA[Mario Bianchi]]></dc:creator><pubDate>Sun, 07 Sep 2025 00:00:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ksWv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c96e6f4-bfc5-4ed2-8299-76a244b29349_1024x608.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ksWv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c96e6f4-bfc5-4ed2-8299-76a244b29349_1024x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ksWv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c96e6f4-bfc5-4ed2-8299-76a244b29349_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!ksWv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c96e6f4-bfc5-4ed2-8299-76a244b29349_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!ksWv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c96e6f4-bfc5-4ed2-8299-76a244b29349_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!ksWv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c96e6f4-bfc5-4ed2-8299-76a244b29349_1024x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ksWv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c96e6f4-bfc5-4ed2-8299-76a244b29349_1024x608.png" width="728" height="432.25" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7c96e6f4-bfc5-4ed2-8299-76a244b29349_1024x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:608,&quot;width&quot;:1024,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ksWv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c96e6f4-bfc5-4ed2-8299-76a244b29349_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!ksWv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c96e6f4-bfc5-4ed2-8299-76a244b29349_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!ksWv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c96e6f4-bfc5-4ed2-8299-76a244b29349_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!ksWv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c96e6f4-bfc5-4ed2-8299-76a244b29349_1024x608.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><blockquote><p>"You will own nothing and be happy."</p><p>World Economic Forum (?)</p></blockquote><p><br>On its own, there wouldn&#8217;t be anything inherently wrong with that. The problem, at least for me, is what they mean by &#8220;be happy.&#8221; If happiness equals the &#8220;subscription model,&#8221; then we clearly have different ideas of happiness. <br><br>At least when it comes to technology, there&#8217;s still a group of people who want to build things themselves, to create solutions tailored to their needs, and who don&#8217;t want to depend on others. <br>Some people simply don&#8217;t want to be customers. They prefer freedom over convenience. And then there are those who just want to dive into a brand-new, terribly expensive hobby. <br><br></p><h4>Homelabbing (or Self-Hosting): Why Do It, and How to Survive</h4><p> Some time ago I sold my Kindle and slowly started buying back the books I had originally purchased in digital format, hunting them down second-hand wherever I could. As much as I actually liked the Kindle as a product, I hated the idea of not truly owning my books. Will Amazon last forever? What stops them from removing certain titles from my library? What happens if, for any reason, they decide to close my account? <br><br>The same logic applies to other services like Spotify, Netflix, and the rest. What would you do if Amazon Prime removed your favorite series? Or if Apple Music suddenly raised its prices? I want to stay in control. <br><br>The truth is, for anyone who enjoys tinkering, you don&#8217;t really need an excuse to fall down the rabbit hole of self-hosting (or homelabbing, which is pretty much the same thing). I should warn you though: it&#8217;s easy to get carried away. There&#8217;s a whole world of things to learn, endless possible setups, and above all, tons of shiny new gear you&#8217;ll be tempted to buy. As with most things, it&#8217;s better to land on a good-enough solution than to do nothing while you wait for the perfect one. <br><br></p><h4>Pi NAS, CasaOS and Tailscale</h4><p> The first thing I needed was a NAS, so all the devices on my network could access the same file library. Since a NAS needs to run 24/7, I wanted something energy efficient. I went with a Raspberry Pi 5 with 8GB of RAM and an external SSD. The Raspberry installer lets you set up Raspberry Pi OS Lite for &#8220;headless&#8221; use, i.e. without a graphical interface, which is perfect if you plan to access it over SSH. <br><br>The very first step is to assign a static IP address to the device. I explain how to do that <a href="https://blog.mariobianchi.dev/title/ads-chrome-black-holes-and-instagram-stories">here</a>. <br><br><a href="https://casaos.zimaspace.com/">CasaOS</a> is the kind of solution that gives you everything you need to get started without going crazy. You install it from the terminal with a single command, and setup is a breeze. Right away, you get an organized file system with the option to share folders across all devices on your network, including external drives like SSDs or HDDs plugged into the NAS. CasaOS also makes it simple to manage apps (technically containers), which it offers through its own App Store. <br><br>Among these, I recommend Navidrome for managing your music library and Jellyfin, which provides a clean interface for streaming movies and TV shows. There are also several backup solutions available, though I personally went with a more raw, DIY approach that I&#8217;ll share some day. <br><br>And just like that, if you&#8217;re connected to your Wi-Fi, you&#8217;ve got your NAS and your personal cloud. But how do you access it when you&#8217;re outside your home network? The answer: <a href="https://tailscale.com/">Tailscale</a>, no ifs, ands, or buts. <br><br>When I first discovered it, it seemed too good to be true, but it&#8217;s real. Tailscale lets you set up a VPN without touching your router settings. It simply creates a secure tunnel between your devices. You can install it either as a container or as a native app, though in my experience the latter was easier: just sign in on Tailscale&#8217;s website and follow the instructions for your system. <br>You&#8217;ll then need to install Tailscale on each device you want to use to access your NAS, and from there it works like any standard VPN. It even works on mobile. There are also plenty of mobile apps for connecting to the services running on your server, each with its own purpose. For example, if you want a replacement for your music player, I recommend Amperfy. No subscriptions, no ads. Can you imagine?</p>]]></content:encoded></item><item><title><![CDATA[Leaving a trace]]></title><description><![CDATA[Time has passed very quickly since I finished my studies.]]></description><link>https://blog.mariobianchi.dev/p/leaving-a-trace-embarassment-and-perfectionism</link><guid isPermaLink="false">https://blog.mariobianchi.dev/p/leaving-a-trace-embarassment-and-perfectionism</guid><dc:creator><![CDATA[Mario Bianchi]]></dc:creator><pubDate>Sun, 22 Jun 2025 00:00:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!xYps!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F864d21a6-6dec-473f-82e0-9890aa753bf6_1024x608.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xYps!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F864d21a6-6dec-473f-82e0-9890aa753bf6_1024x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xYps!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F864d21a6-6dec-473f-82e0-9890aa753bf6_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!xYps!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F864d21a6-6dec-473f-82e0-9890aa753bf6_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!xYps!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F864d21a6-6dec-473f-82e0-9890aa753bf6_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!xYps!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F864d21a6-6dec-473f-82e0-9890aa753bf6_1024x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xYps!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F864d21a6-6dec-473f-82e0-9890aa753bf6_1024x608.png" width="728" height="432.25" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/864d21a6-6dec-473f-82e0-9890aa753bf6_1024x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:608,&quot;width&quot;:1024,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xYps!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F864d21a6-6dec-473f-82e0-9890aa753bf6_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!xYps!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F864d21a6-6dec-473f-82e0-9890aa753bf6_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!xYps!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F864d21a6-6dec-473f-82e0-9890aa753bf6_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!xYps!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F864d21a6-6dec-473f-82e0-9890aa753bf6_1024x608.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Time has passed very quickly since I finished my studies. Before, time seemed to stand still, and that actually reassured me. I used to have a clear direction, a series of goals to achieve within a certain timeframe. Finish school, graduate, find a job. Boring yes, but clear, orderly and comforting.</p><p>Paradoxically, problems start when you reach those goals. What do you do then? You need to find new ones.</p><p>At least for me, one of the things that could calm this type of anxiety is the idea of leaving a trace. By trace, I mean anything that could testify to our passage on earth. Creating a company, publishing works, having a child. Something that can outlive us, while giving us direction. But to do this, you have to fight against two enemies.</p><h4>Embarassment and Perfectionism</h4><p> Taking action exposes us to the judgment of others. The position of those who do nothing except judge others is the most comfortable of them all.</p><p>I don't think it's good to be completely deaf to judgment, but I'm certain that some judgments matter more than others. And the judgment of those who are afraid to act doesn't matter at all.</p><p>When we jump into something new, it's necessary to set perfectionism aside and accept that we'll suck for a while. The first hundred articles, the first hundred songs, the first hundred paintings will surely be worse than the next hundred, but only those who have the courage to go through the first hundred can see progress, and maybe even be satisfied with their work. Only those who have the courage to suck can eventually stop sucking.</p><p>If you're an overthinker, know that you're not special. There are so many of us like this. In fact, I think it's a characteristic that belongs to the majority people. But there's a time for planning and a time for action. The perfect plan isn't so perfect if it remains just a plan.</p>]]></content:encoded></item><item><title><![CDATA[Beyond the Walled Gardens: Tools for a Healthier, Decentralized Web]]></title><description><![CDATA[I&#8217;ve talked about the concept of technofeudalism and the risks of concentrating online platforms in the hands of a few.]]></description><link>https://blog.mariobianchi.dev/p/beyond-the-walled-gardens-healthier-decentralized-web-fediverse-rss-indieweb</link><guid isPermaLink="false">https://blog.mariobianchi.dev/p/beyond-the-walled-gardens-healthier-decentralized-web-fediverse-rss-indieweb</guid><dc:creator><![CDATA[Mario Bianchi]]></dc:creator><pubDate>Fri, 06 Jun 2025 00:00:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!JSH1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a070502-0abb-4b92-a310-8ca551aa247b_1024x608.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JSH1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a070502-0abb-4b92-a310-8ca551aa247b_1024x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JSH1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a070502-0abb-4b92-a310-8ca551aa247b_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!JSH1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a070502-0abb-4b92-a310-8ca551aa247b_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!JSH1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a070502-0abb-4b92-a310-8ca551aa247b_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!JSH1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a070502-0abb-4b92-a310-8ca551aa247b_1024x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JSH1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a070502-0abb-4b92-a310-8ca551aa247b_1024x608.png" width="718" height="426.3125" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9a070502-0abb-4b92-a310-8ca551aa247b_1024x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:608,&quot;width&quot;:1024,&quot;resizeWidth&quot;:718,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!JSH1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a070502-0abb-4b92-a310-8ca551aa247b_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!JSH1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a070502-0abb-4b92-a310-8ca551aa247b_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!JSH1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a070502-0abb-4b92-a310-8ca551aa247b_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!JSH1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a070502-0abb-4b92-a310-8ca551aa247b_1024x608.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I&#8217;ve talked about the concept of <a href="https://blog.mariobianchi.dev/tag/technofeudalism">technofeudalism</a> and the risks of concentrating online platforms in the hands of a few. By accepting the terms of these few, we give up some of our freedoms, and worse, we allow even essential services like access to information, self-expression or public debate to be driven entirely by profit. If all of this has moved online, then the internet becomes a place where our rights must be respected.</p><p>Relying on companies means delegating important aspects to our lives to the logic of profit. There&#8217;s nothing inherently wrong with that, as long as we&#8217;re aware that the most profitable solution is not always the best one for the users. A social network is interested in keeping you connected as long as possible, to show you as many ads as possible or to sell ad space at higher prices. A news website might not care about the quality of its reporting, as long as you keep clicking links. No tech giant is concerned with your well-being, and that&#8217;s exactly why we should be.</p><p>There are alternatives, and they&#8217;ve been around for a while.</p><h4>Fediverse</h4><p> When you send an email, it doesn&#8217;t matter which provider the recipient uses, as long as the address is valid. The structure of an email is standardized: sender, recipient(s), message body, optional attachments, etc. It works whether the other person uses Gmail, Outlook, Yahoo! or iCloud. You choose your favourite provider and you can communicate with anyone.</p><p>Now think about it: social media posts are also pretty standardized. There&#8217;s a handle, some text, maybe an image or video, likes, comments and a way to share. So why is every social network isolated? Why can&#8217;t you use your Facebook account to follow someone on Twitter/X? Well, you can, but only if those platforms are part of the Fediverse, a network of social platforms (and more) that follow the same open protocol: ActivityPub.</p><p><strong>Please note:</strong> None of the major tech companies are part of the Fediverse, with the exception of Meta&#8217;s Threads, which is currently testing integration with the Fediverse for users outside the EU.</p><h4>RSS Feeds</h4><p> Now imagine having a single place where you can read posts from all the people you follow, news from your favorite outlets, and articles from the blogs you follow. Good news: you already can, as long as those sites have an RSS feed (which, thankfully, is still quite common).</p><p>Just add your preferred sources to any RSS reader and you&#8217;ll have a curated, organized stream of content that&#8217;s entirely managed by you.</p><p><strong>Please note:</strong> Add me to your RSS feed :)</p><h4>Indie Web</h4><p> In my <a href="https://blog.mariobianchi.dev/title/why-a-blog">first article</a>, I wrote about how social networks have led to the standardization of content through the standardization of form.</p><p>But there&#8217;s still a small corner of the web that takes pride in doing things their own way. Mostly hobbyists, they were drawn to the internet back when it was full of blogs, forums, and quirky little websites, each one different from the next. These creators still believe in a free and creative web. And where can you find them? Well, that&#8217;s the thing, they&#8217;re not always indexed. Some promote their work on social media, others rely on backlinks or mentions from fellow sites, and some don&#8217;t promote at all.</p><p>Often, their goal isn&#8217;t to create something successful, but to create something personal.</p>]]></content:encoded></item><item><title><![CDATA[Slow is smooth and smooth is fast]]></title><description><![CDATA[One of the few upsides of living in a country made for old people is that we&#8217;re a bit slower to jump on trends and give up our traditions.]]></description><link>https://blog.mariobianchi.dev/p/slow-is-smooth-and-smooth-is-fast-vibe-coding</link><guid isPermaLink="false">https://blog.mariobianchi.dev/p/slow-is-smooth-and-smooth-is-fast-vibe-coding</guid><dc:creator><![CDATA[Mario Bianchi]]></dc:creator><pubDate>Sun, 25 May 2025 00:00:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ksJY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91b591b9-d607-4ff1-a1aa-f709e15c60bb_1024x608.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ksJY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91b591b9-d607-4ff1-a1aa-f709e15c60bb_1024x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ksJY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91b591b9-d607-4ff1-a1aa-f709e15c60bb_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!ksJY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91b591b9-d607-4ff1-a1aa-f709e15c60bb_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!ksJY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91b591b9-d607-4ff1-a1aa-f709e15c60bb_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!ksJY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91b591b9-d607-4ff1-a1aa-f709e15c60bb_1024x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ksJY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91b591b9-d607-4ff1-a1aa-f709e15c60bb_1024x608.png" width="1024" height="608" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/91b591b9-d607-4ff1-a1aa-f709e15c60bb_1024x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:608,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ksJY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91b591b9-d607-4ff1-a1aa-f709e15c60bb_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!ksJY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91b591b9-d607-4ff1-a1aa-f709e15c60bb_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!ksJY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91b591b9-d607-4ff1-a1aa-f709e15c60bb_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!ksJY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91b591b9-d607-4ff1-a1aa-f709e15c60bb_1024x608.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>One of the few upsides of living in a country made for old people is that we&#8217;re a bit slower to jump on trends and give up our traditions. In a way, we could say that our average level of neuroplasticity is so low that it prevents certain toxic tendencies, born from the pursuit of peak productivity, from influencing our culture. It&#8217;s like the ideal of &#8220;slow living&#8221; has shielded us from things like &#8220;meal prepping&#8221;, &#8220;speed reading&#8221; and &#8220;coffee to go&#8221;.<br><br>But the trend is clear, and we&#8217;re inevitably heading in that direction. We&#8217;ve lost the pleasure of doing things with care, and on the other side, we no longer expect care from others. What matters now is having everything, immediately, and as cheaply as possible. There&#8217;s no time left to cook ourselves a proper meal.<br><br></p><h4>Vibe coding</h4><blockquote><p>"There&#8217;s a new kind of coding I call &#8216;vibe coding&#8217;, where you fully give in to the vibes, embrace exponentials, and forget that the code even exists. [&#8230;] I just see stuff, say stuff, run stuff, and copy paste stuff, and it mostly works."</p><p>Andrej Karpathy</p></blockquote><p> We&#8217;ve all fallen into this trap. After all, we&#8217;re hardwired to seek the easiest path to get what we want. So why spend entire days solving a problem that our beloved LLMs can fix in a few seconds? Sure, maybe it doesn&#8217;t work perfectly on the first try, and maybe the code it gives us is inefficient or unreadable, but we can always study it later and try to fix it, right?<br>Except&#8230; it works, so why bother? And so it goes, time after time, until the final result is a pile of garbage, completely incomprehensible and impossible to debug, because it&#8217;s not ours. We don&#8217;t own it, we don&#8217;t master it, we don&#8217;t know how to fix it. Sure, LLMs allowed us to finally complete that project we&#8217;d been delaying for months, and in record time. But because we outsourced so much of the process, we&#8217;re stuck with the outcome as it is. The AI worked for us, not with us. And now we depend on it.<br><br></p><h4>It&#8217;s not just coding</h4><p> Blaming it on the vague concept of &#8220;consumerism&#8221; would be too easy. The truth is, we&#8217;ve fully surrendered to the comfort of paying to get everything we want. At some point, we stopped caring about the products we use and started outsourcing. For every product that breaks, has a defect, or simply doesn&#8217;t suit our needs, we take the easy way out. If possible, we throw it away and replace it. If that&#8217;s too expensive, we hire someone else to fix it. As long as everything is fast and convenient.<br><br>Simply put, we don&#8217;t know how to do anything anymore. What would past generations think of us?<br>We don&#8217;t know how to sew, we can&#8217;t fix things in our own homes, we can&#8217;t grow a plant, we can&#8217;t repair our cars. Even daily tasks like cooking a basic meal from scratch have become a challenge for many.<br><br>We&#8217;ve lost our manual skills and our ability to figure things out on our own, relying instead on services and devices that make our lives easier but strip us of practical knowledge. Step by step, we become increasingly dependent on systems we don&#8217;t understand. If they disappeared, we&#8217;d be completely lost.<br><br>Sure, it might seem like we know how to use computers and tech. But do we really? Do we actually know how our computers are built? Do we understand the software we rely on every day? I think there&#8217;s a simple test: could we fix them? Could we adapt them to our needs?</p>]]></content:encoded></item><item><title><![CDATA[Ads, Chrome, black holes and Instagram Stories]]></title><description><![CDATA[Fahrenheit 451 is a dystopian novel written by Ray Bradbury.]]></description><link>https://blog.mariobianchi.dev/p/ads-chrome-black-holes-and-instagram-stories</link><guid isPermaLink="false">https://blog.mariobianchi.dev/p/ads-chrome-black-holes-and-instagram-stories</guid><dc:creator><![CDATA[Mario Bianchi]]></dc:creator><pubDate>Fri, 02 May 2025 00:00:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!zAJt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44e44280-1bc5-4b7c-aa65-31a21b86832f_1024x608.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zAJt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44e44280-1bc5-4b7c-aa65-31a21b86832f_1024x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zAJt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44e44280-1bc5-4b7c-aa65-31a21b86832f_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!zAJt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44e44280-1bc5-4b7c-aa65-31a21b86832f_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!zAJt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44e44280-1bc5-4b7c-aa65-31a21b86832f_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!zAJt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44e44280-1bc5-4b7c-aa65-31a21b86832f_1024x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zAJt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44e44280-1bc5-4b7c-aa65-31a21b86832f_1024x608.png" width="1024" height="608" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/44e44280-1bc5-4b7c-aa65-31a21b86832f_1024x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:608,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zAJt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44e44280-1bc5-4b7c-aa65-31a21b86832f_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!zAJt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44e44280-1bc5-4b7c-aa65-31a21b86832f_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!zAJt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44e44280-1bc5-4b7c-aa65-31a21b86832f_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!zAJt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44e44280-1bc5-4b7c-aa65-31a21b86832f_1024x608.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Fahrenheit 451 is a dystopian novel written by Ray Bradbury. I read it a long time ago, so I don't remember much, but I remember two details: the first is that it describes a society where books are banned and therefore burned, the second is the constant bombardment of advertising that the population has to endure.</p><p>Regarding books, we got rid of them without even needing to burn them. Most of us have our brains fried by "short-form content", including myself, and for the few who do read, statistics suggest that many are unable to effectively understand the content of a text. And then, read what? Of the few who have the audacity to write, most have nothing to say, including myself again. And this isn't false modesty &#8211; my click-through rate of 0% speaks for itself.</p><p>Regarding advertising, however, I would say there are many parallels.</p><h4>The institutionalisation of Instagram</h4><p> Facebook used to be a place to share mostly fun stuff with your friends. It was just another way of hanging out with your mates, just online. Over time, it became more and more serious to the point that younger generations started moving away from it. They landed on Instagram, again to share frivolous stuff with their friends, while they kept their Facebook account for more "serious" stuff. Then Instagram suffered the same fate. The younger generations are moving elsewhere (I am guessing TikTok, too old to know) while Instagram has been "institutionalised".</p><p>What I mean by this is that accounts are no longer being used to express yourself, to post spontaneous photos with your friends or to share fun stuff, they are being used to convey an unrealistic image of yourself. In other words, they became LinkedIn profiles.</p><p>I have a theory about why this phenomenon occurs, and it involves money, of course.</p><p>Real users, for a variety of reasons, begin to use a platform and it becomes popular. Companies, public figures, influencers and wannabe influencers notice this and begin to use the platform to profit, either directly or indirectly. Over time, the platform fills up with advertisements, salespeople, gurus, fake news, alarmist headlines and consequently toxic discussions. This changes the tone of the content, and with it the aim of the platform. What were once conversations with your friends are now public speeches. Your not at your friend's place anymore, you are at the marketplace.</p><p>Now, I'm not saying that social media should only be used to post nonsense. What I'm saying is that spontaneity has been lost, and all the beauty that comes with it. Look at Instagram Stories. They were created to give back the ability to post something spontaneous, since posts had long been institutionalised. Now there isn't a story that doesn't involve a meticulous study of every detail, that isn't perfect in short. Everything is too filtered. Let's take the risk of showing something of ourselves, even if it's not "aesthetic."</p><p>What does this have to do with advertising? Oh yes: let's not turn the internet into a giant billboard.</p><h4>Long live the ad-blocker</h4><p> It was only a matter of time before Google noticed the problem. After all, if you own the most widely used browser in the world, and at the same time earn money from advertising, why would you allow users to block ads on your browser?</p><p>With the introduction of Manifest V3, a new format for Chrome extensions, Google is clearly aiming at ending the use of the most effective ad-blockers. Obviously, the official excuse isn't this, but I refuse to serve it to you.</p><p>I, quite simply, don't want to passively endure advertising. It's not even a matter of privacy; it's that they're unpleasant. From here came days of struggling to find the right alternative to Chrome that would have the same performance, be open source and allow me to use a proper ad-blocker. The choice fell on Brave, which, among other things, integrates a sort of ad-blocker on its own. On the positive side, it's chromium-based, open source and still supports Chrome extensions based on Manifest V2. On the negative side, it's full of useless and unrequested functions, but they can be easily disabled.</p><h4>What about the other devices?</h4><p> To be completely honest, I was just waiting for an excuse to test a Raspberry Pi. The pretext was the aversion to ads , and it led me to buy a Raspberry Pi Zero 2W to install Pi-Hole on it, a Linux software defined by its developers as "a black hole for internet advertisement".</p><p>Installing Pi-Hole is the simplest part. Following the official guides, you can easily set up everything. The complicated part is setting a static IP for the Raspberry Pi, in order to use this IP address as the DNS server for your router, and to make sure that all devices connected to the network "pass through" the Pi-Hole.</p><p>Pi-Hole, ad-blocker... all's well that ends well then, right? If you're browsing with a PC, yes, otherwise not really. If you're browsing from your phone, you might still see ads on Instagram or YouTube, for example. In fact, when ads are served by third parties, a Pi-Hole can easily block them. For example, if you're visiting a news website, you probably won't see ads. If instead you are using an app owned by an advertising company, like Meta or Google, the ads will come from the same domain of the website/app, hence they won't be blocked unless you decide to block the entire website. Again, none of this applies if you are browsing from a PC with an ad-blocker installed.</p><h4>How to set a static IP to your Raspberry Pi</h4><p> If by your misfortune you were looking for how to set a static IP for your Raspberry Pi and stumbled upon this site, I'm sorry for you. However, I'll try to help you out. After many failed attempts, I managed to do it as follows:</p><p>0. Get your router's IP by executing the command <strong>ip route</strong> in the terminal. Take the first IP, the one after "default via". Your static IP must be on the same subnet as this IP (for example, if the router's IP is 192.168.0.254, the static IP must be set as 192.168.0.XXX).</p><p>1. In the terminal, execute the command <strong>nmtui</strong> to open the connection management interface.</p><p>2. Click on Edit a connection and select your connection (in my case the Wi-Fi connection is called "preconfigured"), then select <strong>Edit</strong>.</p><p>3. On <strong>IPV4 Configuration</strong> set <strong>Manual</strong> and modify the following fields:</p><p>- <strong>Addresses</strong>: enter here the static IP chosen for the Raspberry Pi.</p><p>- <strong>Gateway</strong>: enter here the router's IP.</p><p>- <strong>DNS servers</strong>: I recommend public DNS like Cloudflare's 1.1.1.1 or Google's 8.8.8.8 .</p><p>4. Click <strong>Ok</strong>, exit and reboot the device.</p><p>5. Enter your router's configuration panel and set your static IP as the router's primary DNS server. If possible, also enter a secondary DNS server to avoid blockages in case of problems with Pi-Hole.</p>]]></content:encoded></item><item><title><![CDATA[The advent of stupid tech]]></title><description><![CDATA[Aristotle described &#964;&#941;&#967;&#957;&#951; (t&#233;chne) as a "productive behaviour governed by knowledge".]]></description><link>https://blog.mariobianchi.dev/p/the-advent-of-stupid-tech</link><guid isPermaLink="false">https://blog.mariobianchi.dev/p/the-advent-of-stupid-tech</guid><dc:creator><![CDATA[Mario Bianchi]]></dc:creator><pubDate>Sun, 13 Apr 2025 00:00:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!VXSj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84819be3-4441-4cce-8936-9f7c1521ff43_6048x4024.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Aristotle described &#964;&#941;&#967;&#957;&#951; (t&#233;chne) as a "productive behaviour governed by knowledge". The term is often translated as "art&#8221;, but not as a generic form of creative expression, rather as mastery of a certain domain, or as the ability to make something. We could simplify the meaning t&#233;chne as the art of making things.</p><p>If technology implies the concept of t&#233;chne, we would expect those who develop the latest technological innovations to do so by virtue of this art.</p><p>How did we end up with a washing machine that asks me to download an app?</p><h4>Reinventing the wheel</h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VXSj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84819be3-4441-4cce-8936-9f7c1521ff43_6048x4024.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VXSj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84819be3-4441-4cce-8936-9f7c1521ff43_6048x4024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!VXSj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84819be3-4441-4cce-8936-9f7c1521ff43_6048x4024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!VXSj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84819be3-4441-4cce-8936-9f7c1521ff43_6048x4024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!VXSj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84819be3-4441-4cce-8936-9f7c1521ff43_6048x4024.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VXSj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84819be3-4441-4cce-8936-9f7c1521ff43_6048x4024.jpeg" width="1456" height="969" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/84819be3-4441-4cce-8936-9f7c1521ff43_6048x4024.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:969,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:14156909,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.mariobianchi.dev/i/185521678?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84819be3-4441-4cce-8936-9f7c1521ff43_6048x4024.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!VXSj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84819be3-4441-4cce-8936-9f7c1521ff43_6048x4024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!VXSj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84819be3-4441-4cce-8936-9f7c1521ff43_6048x4024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!VXSj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84819be3-4441-4cce-8936-9f7c1521ff43_6048x4024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!VXSj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84819be3-4441-4cce-8936-9f7c1521ff43_6048x4024.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The use of infotainment systems in modern cars is one of the most glaring examples of how the industry is more concerned with following trends rather than trying to make life easier for its customers. While until a few years ago no one would have dreamed of removing physical buttons for basic functions like controlling the air conditioning, the radio, or even selecting gears (see Tesla), now there&#8217;s a race to create the most uncomfortable and risky solution to this non-existing problems.</p><p>Muscle memory allows to reach a manual control without taking your eyes off the road, and it also provides tactile feedback that confirms you've performed the action. Today, to do the same operation, you need to take your eyes off the road, scroll through the slow screens of a touchscreen (which not only came out of the factory already outdated, but has also been baking in the sun every day of its life), touch the right "button&#8221;, and continue to stare at the screen to verify you've completed the action.</p><p>It seemed like a necessary evil though, because now the general public expects to be able to view maps, play music or make phone calls. If only there were an object that already allowed us to do all these things...</p><p>You've finally left the house. You're at a pub/restaurant/caf&#233; with your friends. Everything is fine, you just want to spend quality time together. Then you see it, the QR code. You scan it, but your phone doesn't connect. No problem though, because there's Wi-Fi. So you connect to the extremely slow Wi-Fi, and after opening various sections of the menu, each of which required loading time, you manage to find what you wanted (which is the same thing you've been ordering for 10 years). Watch out though, there's a long list of off-menu items. They're off-menu not because they're special, but because updating the menu now means updating a website, whereas before it was enough to add a line on a sheet of paper or a blackboard. Anyways, I'll have the usual, thanks.</p><p>One could give many examples of times when the tech-industry convinced itself it needed to respond to needs that no one ever expressed, or to technologies never requested. 3D televisions, curved screens, foldable smartphones, smart homes. Throughout all this, printing a document has remained the same frustrating experience as always.</p><h4>Occam's electric razor</h4><p> There are technologies that make us more free, more capable, more independent, or that simply make our lives easier. If something gives autonomy, if it allows you to do things you wouldn&#8217;t have done, if it empowers you, than it is useful tech. Everything else should be avoided, because in the best case it's pure consumerism, in the worst case it's the surrender of another piece of independence to the usual feudal lords.</p><p>According to Occam's Razor principle, the simplest solution to solve a problem is the one to prefer. What would Occam say if he saw you asking Alexa to adjust the thermostat?</p>]]></content:encoded></item><item><title><![CDATA[Not all points are created equal: the true value of tennis points]]></title><description><![CDATA[One of the most fascinating aspects of tennis is that a player can win a match by winning fewer points and/or fewer games than their opponent.]]></description><link>https://blog.mariobianchi.dev/p/not-all-points-are-created-equal-the-true-value-of-tennis-points</link><guid isPermaLink="false">https://blog.mariobianchi.dev/p/not-all-points-are-created-equal-the-true-value-of-tennis-points</guid><dc:creator><![CDATA[Mario Bianchi]]></dc:creator><pubDate>Thu, 10 Apr 2025 00:00:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!AKoZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F055f7a09-87d3-40a8-ae12-bfbbfc5c05e8_1024x608.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AKoZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F055f7a09-87d3-40a8-ae12-bfbbfc5c05e8_1024x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AKoZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F055f7a09-87d3-40a8-ae12-bfbbfc5c05e8_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!AKoZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F055f7a09-87d3-40a8-ae12-bfbbfc5c05e8_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!AKoZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F055f7a09-87d3-40a8-ae12-bfbbfc5c05e8_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!AKoZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F055f7a09-87d3-40a8-ae12-bfbbfc5c05e8_1024x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AKoZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F055f7a09-87d3-40a8-ae12-bfbbfc5c05e8_1024x608.png" width="1024" height="608" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/055f7a09-87d3-40a8-ae12-bfbbfc5c05e8_1024x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:608,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!AKoZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F055f7a09-87d3-40a8-ae12-bfbbfc5c05e8_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!AKoZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F055f7a09-87d3-40a8-ae12-bfbbfc5c05e8_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!AKoZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F055f7a09-87d3-40a8-ae12-bfbbfc5c05e8_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!AKoZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F055f7a09-87d3-40a8-ae12-bfbbfc5c05e8_1024x608.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>One of the most fascinating aspects of tennis is that a player can win a match by winning fewer points and/or fewer games than their opponent. Consider, for example, a match between A and B that ended 6-4 0-6 6-4: player A won the match by winning 12 games, while B lost despite winning 14 games. The same concept applies to the total number of points.<br><br>This concept is also valid for other sports, such as volleyball, padel, table tennis and similar sports, but it&#8217;s my blog and I like tennis more.<br><br>A trait of a good tennis player is the ability to treat every point in the match as if it were the most important one, and then manage to forget about it before the next point begins.<br><br></p><blockquote><p>"In the 1,526 singles matches I played in my career, I won almost 80%. What percentage of points do you think I won in those matches? Only 54% ... When you lose every second point, on average, you learn not to dwell on every shot."</p><p>Roger Federer</p></blockquote><p><br>While thinking that all points have the same value helps maintain high concentration, this is intuitively false. Consider two very different scenarios: 15-15 and 40-40. Even intuitively, it's clear that a point at 40-40 has a greater influence on the outcome of the match. The same concept can be applied to games (think of 5-4 versus 2-1), and even to sets. The closer you get to the end of a game, the more the points weigh; the closer you get to the end of a set, the more the games weigh; and finally, the closer you get to the end of the match, the more the sets weigh.<br><br>By the way, this reminds me of a famous quiz that is supposedly asked in job interviews. A match is played by two players, A and B. You have a sequence like "AABABAAB...", which represents the sequence of points won by one player and the other. How can you quickly determine who won the match?<br><br></p><h4>A clumsy model</h4><p> One might wonder if there's a way to effectively estimate the value of a point considering the score situation. I don't think there is one, so I'll try to create one myself.<br><br>Three elements influence the value of a point:<br>- the score situation in the game;<br>- the number of games won in the set by both players;<br>- the number of sets won by both players.<br><br>Since the closer we get to the end of the game/set/match, the more relevant the point becomes, we could take for each of these three elements the minimum distance to win the game/set/match for each of the two players, and then sum their inverses.<br><br>For example, at 30-15, the minimum number of points to win the game is two for player A, while it's three for player B. If the score in a set is 3-2, the minimum number of games to win to take the set is 3 for player A and 4 for player B. If the score is 1 set all, the minimum number of sets to win the match is 1 for both (assuming a best of three sets match). The inverse of these minimum distances would be:<br>- 30-15: 1/2 + 1/3;<br>- 3-2: 1/3 + 1/4;<br>- 1 set all: 1/2 + 1/2.<br><br>Trying to formalize, we would have a formula like this:<br><br>Point_Value = (1/Dist_game_A + 1/Dist_game_B) &#215; (1/Dist_set_A + 1/Dist_set_B) &#215; (1/Dist_match_A + 1/Dist_match_B)<br><br>This way we would have results like:<br>- 1 set all, 5-3, 30-15 -&gt; (1/2 + 1/2) x (1 + 1/3) x (1/2 + 1/3) &#8206; = 1.111<br>- 1 set to 0, 2-2, 40-40 -&gt; (1 + 1/2) x (1/4 + 1/4) x (1/2 + 1/2) &#8206; = 0.75<br>- first point of the match -&gt; (1/2 + 1/2) x (1/6 + 1/6) x (1/4 + 1/4)&#8206; = 0.833<br>- 1 set all, 4-4, 30-40 -&gt; (1/2 + 1/2) x (1/2 + 1/2) x (1/2 + 1)&#8206; = 2.5<br><br>One of the many limitations of this model is that it treats points, games, and sets in the same way, when in reality this is not the case. But the purpose of this model is not to represent realit, rather it is to convey a concept.<br><br></p><blockquote><p>"The analysis is severely limited by my lack of understanding of what I am doing."</p><p>Unknown student</p></blockquote><p><br>If it's true that in football the team that scores the most goals always wins, it's also true that some goals count more than others. A goal at 0-0 influences the match more than a goal at 4-0, just as a goal in stoppage time weighs more than a goal in the opening minutes (simply because there's less time to recover). In general, we could say that there are moments more relevant than others to the outcome of the match.<br><br>I'll spare you the philosophical conclusion along the lines of "this doesn&#8217;t apply to sports only&#8221;, even though it's true and I would have liked to say it.</p>]]></content:encoded></item><item><title><![CDATA[The veil of Maya: black-boxes and Explainable AI]]></title><description><![CDATA[Imagine traveling back in time and finding yourself in a world that has never known electricity, appliances, telephones, computers, or the internet.]]></description><link>https://blog.mariobianchi.dev/p/the-veil-of-maya-black-boxes-and-explainable-ai</link><guid isPermaLink="false">https://blog.mariobianchi.dev/p/the-veil-of-maya-black-boxes-and-explainable-ai</guid><dc:creator><![CDATA[Mario Bianchi]]></dc:creator><pubDate>Sun, 06 Apr 2025 00:00:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!JDIj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb68a9dd9-02d5-4ad4-849a-9fa38fd4be17_1024x608.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JDIj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb68a9dd9-02d5-4ad4-849a-9fa38fd4be17_1024x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JDIj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb68a9dd9-02d5-4ad4-849a-9fa38fd4be17_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!JDIj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb68a9dd9-02d5-4ad4-849a-9fa38fd4be17_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!JDIj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb68a9dd9-02d5-4ad4-849a-9fa38fd4be17_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!JDIj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb68a9dd9-02d5-4ad4-849a-9fa38fd4be17_1024x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JDIj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb68a9dd9-02d5-4ad4-849a-9fa38fd4be17_1024x608.png" width="1024" height="608" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b68a9dd9-02d5-4ad4-849a-9fa38fd4be17_1024x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:608,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!JDIj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb68a9dd9-02d5-4ad4-849a-9fa38fd4be17_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!JDIj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb68a9dd9-02d5-4ad4-849a-9fa38fd4be17_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!JDIj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb68a9dd9-02d5-4ad4-849a-9fa38fd4be17_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!JDIj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb68a9dd9-02d5-4ad4-849a-9fa38fd4be17_1024x608.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Imagine traveling back in time and finding yourself in a world that has never known electricity, appliances, telephones, computers, or the internet. Would you be able to explain how all these things work? With a few rare exceptions, probably not.</p><p>Industrial society is the first society in human history where most individuals don't understand the tools and mechanisms on which it is founded. However, what reassures us is the fact that there is always someone who thoroughly understands how any technology surrounding us functions, and because of this, we trust it. Even if we don't know how the internet works, for example, we would be able to understand it if we decided to ruin our lives by learning about it.</p><p>However, a new revolution is underway and even this certainty might fade away.</p><p>One of the intrinsic problems of AI and Machine Learning is that some models (often the best-performing ones) aren't truly comprehensible to anyone. While those who implement a machine learning model always know the mechanisms that will lead the "machine" to learn information, they may not always understand what the machine has actually learned, and consequently how it takes decisions. These type of models are called "black boxes."</p><h4>Black boxes</h4><p> In high school we were taught that a function from a set X to a set Y assigns to each element of X exactly one element of Y. In simpler terms, a function allows us to consistently transform an input X into an output Y.</p><p>But what happens if we have a series of X's and their corresponding Y's, but don't know the function that trasforms inputs into outputs? If we wanted to calculate the output Y for a new value of X, what should we do? We would need to find a way to obtain the function, or at least approximate it. Machine learning is nothing more than this: a technique for approximating a function.</p><p>Take, for example, the case of a bank that needs to decide which clients to grant mortgages to. The bank typically requests information from potential clients, including age, salary, marital status and property value, among others. Over time, the bank has accumulated a history of this information, including the "output&#8221;, which in this case is whether the client repaid their debt or not. The bank might decide to implement a machine learning model to determine whether to grant a mortgage to a client after they have provided the "input" &#8212; in this case, information regarding age, salary, etc.</p><p>As long as this tool simply facilitates calculations, it isn't dangerous, provided there is always someone overseeing how decisions are made. The problem arises when machine learning models evolve to the point where humans are unable to understand how decisions are being made.</p><p>These types of models are called "black boxes" because it is possible to see what goes into the box and what comes out, but not what happens inside. Neural networks and LLMs fall into this category.</p><h4>Unethical AI</h4><p> While it is possible to cite various examples regarding the importance of ethical and understandable AI usage, the most frequently cited example is the case of bias in the COMPAS algorithm (<a href="https://www.propublica.org/article/machine-bias-risk-assessments-in-criminal-sentencing">https://www.propublica.org/article/machine-bias-risk-assessments-in-criminal-sentencing</a>). The COMPAS software has been used in many US jurisdictions as a support for judges in order to assess the potential risk of recidivism. Since the algorithm uses proprietary software, it is impossible to understand exactly its functioning. However, it has been demonstrated that COMPAS decisions may be biased, since black people were significantly more likely to be labeled as high risk than white people. The research highlights that biased data leads to an equally biased outcome. As extreme as this example may be, it is useful to highlight two aspects: firstly, it highlights the dangers arising from the unaware use of artificial intelligence, which, among other things, can lead to decision-making through unacceptable biases according to the ethics of our time; subsequently, it emphasizes the need to develop tools capable of mitigating these dangers.</p><p>A tool for addressing these situations is legislative intervention, such as the General Data Protection Regulation or the AI Act adopted in the European Union.</p><p>A second valuable tool in mitigating AI risks is the development of methods aimed at understanding AI itself. In this sense, the diffusion of the so-called black box classification models paved the way for the development of what is known as Explainable Artificial Intelligence (XAI), which consists of a series of methods aimed at making AI processes and outcomes human-understandable. These methods allow for transparent collaboration between humans and algorithms, which is necessary for the conscious development of the latter.</p><p>While it would be better to prefer explainable design methods when possible, given their simplicity, interpretability and lower resource consumption, there are no such methods capable of providing results comparable to those offered by modern LLMs. It is in these cases that it becomes essential to invest in research on methods capable of explaining what machines learn and how decisions are made.</p><p>Entrusting control to AI means sacrificing our ethical and moral principles in favor of the principle of optimization. If we want to remain in control, it is essential that human intervention always be decisive, and for this to happen, it is necessary to understand what happens inside the box.</p>]]></content:encoded></item><item><title><![CDATA[Don’t hand over your keys: the case for Open Source Software]]></title><description><![CDATA[While supporting open source might have once been dismissed as a choice for digital-age hippies, today not only it has become a political decision, but a matter of responsibility.]]></description><link>https://blog.mariobianchi.dev/p/dont-hand-over-your-keys-the-case-for-open-source-software</link><guid isPermaLink="false">https://blog.mariobianchi.dev/p/dont-hand-over-your-keys-the-case-for-open-source-software</guid><dc:creator><![CDATA[Mario Bianchi]]></dc:creator><pubDate>Fri, 28 Mar 2025 00:00:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!cIyc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2263b6fd-4741-46ce-b733-d7a34ded1454_1024x608.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cIyc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2263b6fd-4741-46ce-b733-d7a34ded1454_1024x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cIyc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2263b6fd-4741-46ce-b733-d7a34ded1454_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!cIyc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2263b6fd-4741-46ce-b733-d7a34ded1454_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!cIyc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2263b6fd-4741-46ce-b733-d7a34ded1454_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!cIyc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2263b6fd-4741-46ce-b733-d7a34ded1454_1024x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cIyc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2263b6fd-4741-46ce-b733-d7a34ded1454_1024x608.png" width="1024" height="608" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2263b6fd-4741-46ce-b733-d7a34ded1454_1024x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:608,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cIyc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2263b6fd-4741-46ce-b733-d7a34ded1454_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!cIyc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2263b6fd-4741-46ce-b733-d7a34ded1454_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!cIyc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2263b6fd-4741-46ce-b733-d7a34ded1454_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!cIyc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2263b6fd-4741-46ce-b733-d7a34ded1454_1024x608.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>While supporting open source might have once been dismissed as a choice for digital-age hippies, today not only it has become a political decision, but a matter of responsibility.</p><p>Imagine your country has purchased military fighter jets from an allied nation. Now imagine that for some reason this ally suddenly becomes hostile. Would you be happy to discover that the aircraft have a "kill-switch" that can render them unusable? Several European countries that have purchased American F-35s find themselves in exactly this situation (to be honest, they can't even determine with certainty whether this kill-switch exists or not).</p><p>There are two ways to interpret this story. The first is that we cannot hand over important aspects of our lives to proprietary software (or rather, software that is not our property), and the second is that Europe can no longer afford to depend on others, not even from a technological standpoint.</p><p>Let me give another example. During the first Trump administration, American companies were ordered to cut all ties with Chinese company Huawei. Without support from Microsoft and Google, Huawei was forced to replace the operating system of their devices with their own "Harmony OS" (they were able to do this precisely because of the availability of open source software).</p><p>Try to imagine what would happen if something like this were to happen to a country, instead of a company. Imagine what would happen to public administration, businesses, and students if one day they could no longer use Windows. The consequences would be catastrophic. This is the risk when you hand over your house keys to strangers.</p><p>Since it's not possible for everyone to develop their own software from scratch, decentralization is the second best solution to this problem. Even though it's impossible to keep track of everything that happens behind the scenes when we use software, relying on open source software at least ensures that someone has checked it for us.</p><p>Open source is a collective effort, a gift from the community to the rest of humanity.</p><p>As a European citizen, it would be essential that at this historical moment public administration makes an effort to adopt open software, even at the cost of taking a small (temporary) step back in terms of efficiency. For example, the proposal for an "EU OS" (<a href="https://eu-os.gitlab.io/">https://eu-os.gitlab.io/</a>) deserves to be explored.</p><p>At the same time, we must realize that the spark must come from all of us. On <a href="https://github.com/geraldohomero/best-foss-alternatives">https://github.com/geraldohomero/best-foss-alternatives</a> you can find a list of open-source software with which you could replace what you currently use.</p><p>If there is no alternative to technology now, then it's best that this technology be as transparent as possible.</p><p>If you believe in a secure and free internet, it's time to make an effort, even if this might mean giving up some convenience.</p><h4>Please note: open source &#8800; free</h4><p> Open source doesn't necessarily mean free, although it often is. Additionally, open source isn't just about software. For example, the European Processor Initiative (<a href="https://www.european-processor-initiative.eu/">https://www.european-processor-initiative.eu/</a>) is a project that aims to use RISC-V, an open source instruction set, with the goal of designing and creating the first entirely European CPUs.</p>]]></content:encoded></item><item><title><![CDATA[Use AI to write emails, not to write poetry]]></title><description><![CDATA[We had two possibilities: use artificial intelligence to work less while maintaining the same level of productivity, or work the same number of hours while increasing productivity.]]></description><link>https://blog.mariobianchi.dev/p/use-ai-to-write-emails-not-to-write-poetry</link><guid isPermaLink="false">https://blog.mariobianchi.dev/p/use-ai-to-write-emails-not-to-write-poetry</guid><dc:creator><![CDATA[Mario Bianchi]]></dc:creator><pubDate>Wed, 19 Mar 2025 00:00:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/wjZofJX0v4M" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We had two possibilities: use artificial intelligence to work less while maintaining the same level of productivity, or work the same number of hours while increasing productivity. Obviously, we "chose" the second option. "Chose" because in a system based on competition, it wouldn't have been possible otherwise. If you produce more, I must produce more; if you produce less, it still benefits me to produce more.<br><br>But that's how things are, and AI is here to stay. To be clear, I too am convinced that we are in the middle of the so-called "AI bubble." Among all the things that make me think this, these are the most relevant two: the imminent end of Moore's Law and the limited data we have available to train new models. In general, everything seems to suggest that we are reaching a plateau in technological development, at least until there is a paradigm shift.<br><br>However, even if we are far from the much-feared Artificial General Intelligence, I have no doubt that AI will accompany us for the rest of our days.<br><br>Our generation is experiencing a small revolution, somewhat reminiscent of the one our parents experienced. At some point in their lives, a tool appeared that was suddenly able to revolutionize the way we work, dramatically increasing the productivity of many at the expense of a few who were replaced by the new tool. There was no point in fighting it or refusing to use computers. Anyone who did ended up paying the price.<br><br>The same will be true for us. It's useless to cry asking to "regulate AI" (limits should be placed on companies, not on research, and above all, how do you regulate matrix multiplication?). We can no longer erase what we have discovered. As happened with the advent of computers, some jobs will disappear, others will be created, and all will change.<br><br>And this isn't even the biggest danger. Neither are fake news, deepfakes, and the various types of fakes that can be generated with AI. I have no doubt that the greatest danger is the temptation to entrust crucial decisions or operations to artificial intelligence, which is a system we don't fully understand, since all state-of-the-art models are "black boxes". We can observe the input and output, but we cannot see from the outside what is happening inside the box (there is a branch called Explainable AI, or XAI, which aims to study what happens inside the box). If we don't know what happens inside the box, we don't know how decisions are made, which could be flawed by errors in the data, biases, or "reasoning" that we would find unacceptable according to our ethics. For these reasons, human supervision will always be necessary.<br><br></p><blockquote><p>"A good human plus a machine is the best combination."</p><p>Garry Kasparov</p></blockquote><p><br>Artificial intelligence certainly allows us to do things that we would have previously postponed or set aside due to lack of time, or even things we wouldn't have been able to do (see this ugly website). We can delegate paperwork, boring tasks, and mechanical operations for free, so we can focus on more interesting things. But be careful that the opposite doesn't happen. Don't delegate the creative process, artistic expression, or the pleasure of performing a difficult task to AI. In an increasingly automated world, these things - art, words, philosophy - will be what make us human. Use AI to write emails, not to write poetry.<br><br></p><h4>Please note: AI &#8800; LLM</h4><p> At the time of writing this article much of the attention is focused on Large Language Models (LLMs). In fact, LLMs are often referred to by the term "AI."<br>If you want to get an idea of how LLMs work, this is the best video I've ever seen on the subject:</p><div id="youtube2-wjZofJX0v4M" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;wjZofJX0v4M&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/wjZofJX0v4M?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div>]]></content:encoded></item><item><title><![CDATA[Building a CMS for Flask with Streamlit]]></title><description><![CDATA[The beauty of Flask lies in its simplicity, but the cost of this simplicity is the absence of tools that are present out-of-the-box in other more complete (and complex) frameworks.]]></description><link>https://blog.mariobianchi.dev/p/building-a-cms-for-flask-with-streamlit</link><guid isPermaLink="false">https://blog.mariobianchi.dev/p/building-a-cms-for-flask-with-streamlit</guid><dc:creator><![CDATA[Mario Bianchi]]></dc:creator><pubDate>Wed, 12 Mar 2025 00:00:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!vC4x!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ad89ad7-76ba-479d-90c8-e3edc9bc4c3c_1250x1250.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The beauty of Flask lies in its simplicity, but the cost of this simplicity is the absence of tools that are present out-of-the-box in other more complete (and complex) frameworks. One of these is an admin panel for content management.</p><p>If you want to create a Content Management System (CMS) for your site similar to what WordPress offers, you can take several approaches. The first, which we reject outright due to its overly restrictive nature, is to use a pre-packaged solution. If you want to develop a solution tailored to your specific needs, you have two options: create a content management panel directly on the website (with related user and access management), or create a tool to run locally. The latter is the perfect solution to avoid complicating your life.</p><p>Streamlit is a Python library that allows you to easily create dashboards and web apps. The idea in this case is to create a portal to run locally, capable of connecting to the database containing your articles and allowing you to create or modify new content using a UI instead of relying on insert queries to the database.</p><p>The advantage of such a solution is the ability to model the web app exactly for your purposes. In my case, I needed a portal that would facilitate writing (or modifying) content in the dedicated articles table of the site, which has the following structure:</p><p>* id</p><p>* title</p><p>* slug</p><p>* date</p><p>* content</p><p>* tags</p><p>In my case, it made sense for the slug to be generated automatically, as well as the date. Currently I manage the content as regular HTML code, but for the future it might be useful to switch to markdown.</p><p>This approach combines the flexibility of Flask with the rapid development capabilities of Streamlit, giving you full control over your content without unnecessary complexity. The solution is lightweight, runs locally, and can be modified to suit your evolving needs as your blog grows.</p><p>Repository link: <a href="https://github.com/bianchimario/streamlitCMS">https://github.com/bianchimario/streamlitCMS</a></p>]]></content:encoded></item><item><title><![CDATA[How and Why You Should Create a Blog with Flask]]></title><description><![CDATA[Have you ever tried using WordPress to create a website?]]></description><link>https://blog.mariobianchi.dev/p/how-and-why-you-should-create-a-blog-with-flask</link><guid isPermaLink="false">https://blog.mariobianchi.dev/p/how-and-why-you-should-create-a-blog-with-flask</guid><dc:creator><![CDATA[Mario Bianchi]]></dc:creator><pubDate>Sun, 02 Mar 2025 00:00:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!vC4x!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ad89ad7-76ba-479d-90c8-e3edc9bc4c3c_1250x1250.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Have you ever tried using WordPress to create a website? Limiting, not very intuitive, at times frustrating. It felt like trying to build something with your hands tied. I&#8217;m sure that for people with no programming experience, solutions like WordPress, SquareSpace, Wix, and similar platforms make sense. But for everyone else, why pay to limit your possibilities? If you can express what you want to ChatGPT, you can create a website from scratch and make it whatever you want. Plus, we've already established that no one will see it except for a few friends or some bots, so might as well learn something, right?</p><h4>Why Flask?</h4><p>First of all, because I don't feel like learning JavaScript. I know Python; it&#8217;s simple, versatile, and works pretty well for my interests.</p><p>The choice of framework for managing the back-end of the website depends on many factors: primarily the programming language you want to use, then what kind of website you want to build. If you want to build a simple website with Python, my recommendation is Flask, because the learning curve is less steep than Django, the main alternative. Flask is a Swiss army knife, Django is the whole toolbox; choose based on what you need to build.</p><h4>Please Note</h4><p>This article is not a step-by-step guide for building a website. Would I complain so much about flexibility and the need for freedom, only to give you a recipe to follow? Rather, this is the story of my experience, hoping that it can help someone find a few tips here and there, or even just motivate them to create something. I don&#8217;t consider myself an expert programmer, let alone a web developer.</p><h4>How</h4><p>Flask has two main components: one or more Python files used to define data models, manage HTTP requests, and run the application, along with one or more HTML files that make up the website&#8217;s pages. Additionally, static files are usually added to change the website&#8217;s appearance with CSS or to integrate JavaScript functions.</p><p>If your website needs a database, there are two options: use SQLite, which is integrated into Python and allows you to generate a .db file, or use a real database. The second option is more serious and scalable, and even though it requires a bit more effort, it&#8217;s the one I&#8217;d recommend. I suggest Supabase: it has a free tier that&#8217;s more than enough for small projects, an intuitive interface, and also offers the ability to store files.</p><p>As for hosting, I have no doubts: Vercel comes highly recommended. Once again, the free tier is more than sufficient for this type of website. If you own a domain, it&#8217;s easy to use, and if you&#8217;re using GitHub to save your developments, deploying on Vercel is a breeze. The only thing you need to pay attention to is choosing the server location for deployment, which should be specified in the vercel.json file added to your project&#8217;s main directory. To reduce call times, the recommendation is to select the location closest to where your database is hosted.</p><h4>Negatives</h4><p>There are clearly several downsides, the main one being that such a simple solution doesn&#8217;t offer a Content Management System (CMS) like WordPress does, which, among other things, allows you to easily write an article and publish it on your site. A practical solution is to create a Python notebook that writes to your database. The best solution would be to develop your own CMS: sounds like a nice project for the future, doesn&#8217;t it?</p>]]></content:encoded></item><item><title><![CDATA[Why a Blog]]></title><description><![CDATA[Does a blog still make sense in 2025?]]></description><link>https://blog.mariobianchi.dev/p/why-a-blog</link><guid isPermaLink="false">https://blog.mariobianchi.dev/p/why-a-blog</guid><dc:creator><![CDATA[Mario Bianchi]]></dc:creator><pubDate>Sat, 22 Feb 2025 00:00:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!vC4x!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ad89ad7-76ba-479d-90c8-e3edc9bc4c3c_1250x1250.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Does a blog still make sense in 2025? Are blogs making a comeback? Can I make money with my blog? Let&#8217;s make it clear: absolutely not. But what if that&#8217;s not the point?</p><p>Maybe it&#8217;s just the nostalgia talking, but I can&#8217;t be the only one who&#8217;s noticed how dull and gray the once vibrant, colorful, and lively internet has become (let&#8217;s stick to the internet for now). Do you remember the internet of blogs and forums? It feels like the rise of social media has standardized content, forcing it into a format, a character limit, or a maximum duration. And form has influenced substance: content is now created to please and be shared, not to express.</p><p>If your goal is to reach as many people as possible with minimal effort, then you should undoubtedly rely on established platforms and choose the right one based on the type of content you want to create. Articles or guides? Medium. Mid-length videos? YouTube. Short, provocative takes? Twitter (fine, X). Brain rot material? Instagram or TikTok.</p><p>But you should ask yourself: is it worth giving up ownership of your creations for that visibility? Do you want to be bound by the content format imposed by the platform you choose? And most importantly, do you want to contribute to the growth of a platform that isn&#8217;t yours, one that won&#8217;t hesitate to discard you at the first sign of controversy?</p><p>They call it techno-feudalism because a few &#8220;feudal lords&#8221; control the spaces, the content, and the interactions. In the age of techno-feudalism, having your own space for freedom is an act of rebellion.</p><p>Alright, rebellion aside, how do we actually make this blog? We&#8217;ll get to that soon.</p>]]></content:encoded></item></channel></rss>