<?xml version='1.0' encoding='UTF-8'?>
<rss version='2.0'>
  <channel>
    <title>Blog | Ben Weston</title>
    <link>https://bweston.uk</link>
    <description>The 'anti-content' website.</description>
    <language>en-gb</language>
    <docs>https://www.rssboard.org/rss-specification</docs>
    <webMaster>me@bweston.uk (Ben Weston)</webMaster>

        <item>
      <title>The Linked List (9)</title>
      <link>https://bweston.uk/post/2026-02-20-tll-9</link>
      <description><![CDATA[<p>This week in my little collection of news and articles from the internet we have some classic creative methodology from John Cleese, an incredible new category of click-jacking exploit using SVG filters, and much more!</p>
<dl>
<dt>John Cleese on Creativity (Transcript)</dt>
<dd><a href="https://timotijhof.net/posts/2026/john-cleese-on-creativity-transcript/">https://timotijhof.net/posts/2026/john-cleese-on-creativity-transcript/</a></dd>
<dt>SVG clickjacking</dt>
<dd><a href="https://lyra.horse/blog/2025/12/svg-clickjacking/">https://lyra.horse/blog/2025/12/svg-clickjacking/</a></dd>
<dd>Some great demos come alongside this write-up of a new type of click-jacking exploit using SVG filters.</dd>
<dt>The Enshittifinancial Crisis</dt>
<dd><a href="https://www.wheresyoured.at/the-enshittifinancial-crisis/">https://www.wheresyoured.at/the-enshittifinancial-crisis/</a></dd>
<dt>The first this I did last year was run</dt>
<dd><a href="https://henry.codes/writing/the-first-thing-i-did-last-year-was-run/">https://henry.codes/writing/the-first-thing-i-did-last-year-was-run/</a></dd>
<dd>Henry Desroches takes you for a new year drive with this microsite.</dd>
<dt>Button elements offer attributes to change form behavior</dt>
<dd><a href="https://www.stefanjudis.com/today-i-learned/button-elements-offer-attributes-to-change-form-behavior/">https://www.stefanjudis.com/today-i-learned/button-elements-offer-attributes-to-change-form-behavior/</a></dd>
</dl>
<h3>The Next Token</h3>
<p>Find the latest fuel for my cynical evaluation of &quot;AI&quot; in this <em>new</em> section of The Linked List.</p>
<dl>
<dt>AI tribalism</dt>
<dd><a href="https://nolanlawson.com/2026/01/24/ai-tribalism/">https://nolanlawson.com/2026/01/24/ai-tribalism/</a></dd>
<dt>14 ways to supercharge your workflow with AI</dt>
<dd><a href="https://bell.bz/14-ways-to-supercharge-your-workflow-with-ai/">https://bell.bz/14-ways-to-supercharge-your-workflow-with-ai/</a></dd>
<dt>Spurious Correlations</dt>
<dd><a href="https://tylervigen.com/spurious/correlation/9632_ice-cream-consumption_correlates-with_violent-crime-rates">https://tylervigen.com/spurious/correlation/9632_ice-cream-consumption_correlates-with_violent-crime-rates</a></dd>
<dd>Tyler Vigen reboots his Spurious Correlations project, now with AI hypotheses.</dd>
</dl>
<p>It looks like a monthly list hits a pretty good cadence for me so check back here in March for some more reading from across the web.</p>
]]></description>
			<author>Ben Weston</author>
			<guid>2026-02-20-tll-9</guid>
			<pubDate>Fri, 20 Feb 26 16:20:00 +0000</pubDate>
    </item>
		    <item>
      <title>The Linked List (8)</title>
      <link>https://bweston.uk/post/2026-01-23-tll-8</link>
      <description><![CDATA[<p>Welcome back to the second list of links this year!</p>
<dl>
<dt>The Ian Knot (Ian's Shoelace Site)</dt>
<dd><a href="https://www.fieggen.com/shoelace/ianknot.htm">https://www.fieggen.com/shoelace/ianknot.htm</a></dd>
<dd>I don't usually think much about tying my shoes but I found this great site after it featured in this article:</dd>
<dd><a href="https://aftermath.site/ians-shoelace-site-is-still-the-best-destination-for-tying-your-shoes/">https://aftermath.site/ians-shoelace-site-is-still-the-best-destination-for-tying-your-shoes/</a></dd>
<dt>How Browsers Work</dt>
<dd><a href="https://howbrowserswork.com/">https://howbrowserswork.com/</a></dd>
<dt>Lies, damn lies and metrics</dt>
<dd><a href="https://reach.crownandreach.com/posts/lies-damn-lies-and-metrics">https://reach.crownandreach.com/posts/lies-damn-lies-and-metrics</a></dd>
<dd>When a metric matters, it will be gamed.</dd>
<dt>Rethinking &quot;Pixel Perfect&quot; Web Design</dt>
<dd><a href="https://www.smashingmagazine.com/2026/01/rethinking-pixel-perfect-web-design/">https://www.smashingmagazine.com/2026/01/rethinking-pixel-perfect-web-design/</a></dd>
<dt>Proton Spam and the AI Consent Problem</dt>
<dd><a href="https://dbushell.com/2026/01/22/proton-spam/">https://dbushell.com/2026/01/22/proton-spam/</a></dd>
<dd>Please choose the reason for unsubscribing: I don't remember signing up...</dd>
<dt>The Incredible Overcomplexity of the Shadcn Radio Button</dt>
<dd><a href="https://paulmakeswebsites.com/writing/shadcn-radio-button/">https://paulmakeswebsites.com/writing/shadcn-radio-button/</a></dd>
<dd>&quot;Keep It Simple, Stupid&quot;</dd>
<dt>Prediction: Microsoft Is Going To Do The Funniest Thing Imaginable</dt>
<dd><a href="https://gamesbymason.com/blog/2026/microsoft/">https://gamesbymason.com/blog/2026/microsoft/</a></dd>
<dd>With Azure Linux already a thing I can easily see this coming true.</dd>
<dt>Stack Overflow in freefall: 78 percent drop in number of questions</dt>
<dd><a href="https://www.techzine.eu/news/devops/137686/stack-overflow-in-freefall-78-percent-drop-in-number-of-questions/">https://www.techzine.eu/news/devops/137686/stack-overflow-in-freefall-78-percent-drop-in-number-of-questions/</a></dd>
</dl>
]]></description>
			<author>Ben Weston</author>
			<guid>2026-01-23-tll-8</guid>
			<pubDate>Fri, 23 Jan 26 16:20:00 +0000</pubDate>
    </item>
		    <item>
      <title>The Linked List (7)</title>
      <link>https://bweston.uk/post/2026-01-16-tll-7</link>
      <description><![CDATA[<p>The first Linked List of 2026! The links haven't let up either so there's lots of interesting tidbits to look through.</p>
<dl>
<dt>BOIOIOING!</dt>
<dd><a href="https://boing.greg.technology/">https://boing.greg.technology/</a></dd>
<dt>Fix Your robots.txt or Your Site Disappears from Google</dt>
<dd><a href="https://www.alanwsmith.com/en/37/wa/jz/s1/">https://www.alanwsmith.com/en/37/wa/jz/s1/</a></dd>
<dd>TL;DR: if a site doesn't have a <code>robots.txt</code> it will no longer be indexed by Google.</dd>
<dt>Free Software Scares Normal People</dt>
<dd><a href="https://danieldelaney.net/normal/">https://danieldelaney.net/normal/</a></dd>
<dt>Junior</dt>
<dd><a href="https://www.junior.cards/">https://www.junior.cards/</a></dd>
<dd>This is a card and game company from Louie Mantia. The cards and dice look great but the real treasure is in the <a href="https://www.junior.cards/games/">games section</a> that has great instructions for games to play with family and friends.</dd>
<dt>Memory is slow, Disk is fast</dt>
<dd><a href="https://www.bitflux.ai/blog/memory-is-slow-part1/">https://www.bitflux.ai/blog/memory-is-slow-part1/</a></dd>
<dd><a href="https://www.bitflux.ai/blog/memory-is-slow-part2/">https://www.bitflux.ai/blog/memory-is-slow-part2/</a></dd>
<dt>It's rude to show AI output to people</dt>
<dd><a href="https://distantprovince.by/posts/its-rude-to-show-ai-output-to-people/">https://distantprovince.by/posts/its-rude-to-show-ai-output-to-people/</a></dd>
<dt>Drinking The Largest Beer At The Airport Makes Everything Better</dt>
<dd><a href="https://airportbeer.selfhelpartpublishingempire.com/">https://airportbeer.selfhelpartpublishingempire.com/</a></dd>
<dt>Were classical statues painted horribly?</dt>
<dd><a href="https://worksinprogress.co/issue/were-classical-statues-painted-horribly/">https://worksinprogress.co/issue/were-classical-statues-painted-horribly/</a></dd>
<dt>Uh Oh! The Infantilization of Failure</dt>
<dd><a href="https://www.joanwestenberg.com/uh-oh-the-infantilization-of-failure/">https://www.joanwestenberg.com/uh-oh-the-infantilization-of-failure/</a></dd>
<dd>The title phrase of this article has been going around in my head for months now. Its something we see everywhere, especially from larger companies, and it gets on my nerves.</dd>
<dt>What's in my HomeLab: 2026</dt>
<dd><a href="https://romanzipp.com/blog/whats-in-my-homelab-2026">https://romanzipp.com/blog/whats-in-my-homelab-2026</a></dd>
<dd>Loads of useful services in here. I'm definitely going to try out <a href="https://github.com/owntracks/owntracks">Owntracks</a> so I can keep track of where I was without giving my location to Google.</dd>
<dt>My Postcode Lookup Library now Supports Partial Postcodes</dt>
<dd><a href="https://computingthedetails.org/blog/my-postcode-lookup-library-now-supports-partial-postcodes/">https://computingthedetails.org/blog/my-postcode-lookup-library-now-supports-partial-postcodes/</a></dd>
<dd>Also on YouTube: <a href="https://www.youtube.com/watch?v=WkT7JeEV8X0">https://www.youtube.com/watch?v=WkT7JeEV8X0</a></dd>
<dd>I'd definitely read/watch the first part if you haven't already. Although it's nice to get location from a postcode locally, I still think that most sites that implement this will just send that location to a 3rd party map API, yet again leaking your location.</dd>
<dt>Backing up Spotify</dt>
<dd><a href="https://annas-archive.li/blog/backing-up-spotify.html">https://annas-archive.li/blog/backing-up-spotify.html</a></dd>
<dd>Anna's blog is now back up after being down for a few weeks after the Spotify archive was released. The data in this is really well presented and I find it crazy how much AI generated music people have submitted to Spotify over the last couple years.</dd>
</dl>
]]></description>
			<author>Ben Weston</author>
			<guid>2026-01-16-tll-7</guid>
			<pubDate>Fri, 16 Jan 26 10:41:00 +0000</pubDate>
    </item>
		    <item>
      <title>Review of Token2 Security Keys</title>
      <link>https://bweston.uk/post/2026-01-07-token2-review</link>
      <description><![CDATA[<p>I've been using Token2 PIN+ security keys for a little over a year and a half now. They're a FIDO2 certified key that can hold Passkeys and generate OTP codes, often cited as a cheaper alternative to their main competition: Yubikeys. Unfortunately, I've had very poor luck with their durability.</p>
<p>If you want the short version of this review, I suggest you suck up the higher price and go for a Yubikey instead. Although Token2 keys function great, the durability of the PIN+ Type C series just isn't good enough and it can't stand life on a key chain.</p>
<h3>The First Victim</h3>
<p>The main reason for getting one of these keys was so that my one time passcodes and security keys were contained in a physical and distinct device. The whole purpose of OTPs is to prove that <em>you</em> know something and they often comprise the <a href="https://csrc.nist.gov/glossary/term/multi_factor_authentication">possession factor</a> (something you have) of a security measure. The physical analogue of this are keys you keep on your keyring, so for me it makes most sense to put my digital keys there too. However, this is the location where my first Token2 security key fell victim.</p>
<p>The first key I bought from Token2 was a <a href="https://www.token2.uk/shop/product/token2-t2f2-pin-release2-type-c-fido2-u2f-and-totp-security-key-with-pin-complexity-feature">PIN+ Release 2</a> but I only had it on my keyring for 4 months before the hole on the top cracked, presumably from pressure against my keyring.</p>
<p><img src="/assets/pin+r2.jpg" alt="A small USB-C security key. There is are two cracks originating from the hole at the end, used for attaching it to a keyring, causing the plastic casing to fall apart." loading="lazy" style="aspect-ratio: 1024 / 771" /></p>
<p>Fearing that further damage might occur to the electronics inside I bought a second one and transferred my secrets to it.</p>
<h3>The Second Victim</h3>
<p>That leads us to today where, once again, I've got a broken Token2 security key. For the second key I brought a <a href="https://www.token2.uk/shop/product/t2f2-pin-release3-typec">PIN+ Release 3</a> which is almost identical the first one apart from the bigger number in the name. I thought I'd take greater care over this next key so I 3D printed a case so that I didn't have to directly attach the key to my keyring. That way, hopefully I'd avoid the immense crushing power of my pocket breaking the plastic casing again.</p>
<p><img src="/assets/pin+r3.jpg" alt="A red 3D printed case completely encloses the security key leaving only the USB-C port exposed." loading="lazy" style="aspect-ratio: 1024 / 771" /></p>
<p>The 3D print included a pause so that I could insert the key into the case before the printer permanently cinched the key into it's new plastic home. The fit is very good so <a href="mailto:me@bweston.uk">do give me a shout</a> if you already have a Token2 key you'd like to protect and would like the files.</p>
<p>Although this new key didn't get crushed, after a year the USB-C port stopped working which made it useless for devices without NFC. A real shame because both of these keys worked so well when they were new. This leaves me only able to recommend the PIN+ Type C series if you're the sort of person who likes to keep their keys in an anti-static bag, away from hench pockets. Hopefully, their other mechanical designs are more robust but I've been stung twice too many and I won't be made a fool for a third time.</p>
<h3>The Solution?</h3>
<p>So what's going to be replacing my malfunctioning key? After two failed attempts, I've decided to take the &quot;buy once, cry once&quot; approach and get an expensive Yubikey after all. More specifically a <a href="https://www.yubico.com/gb/product/yubikey-5-series/yubikey-5c-nfc/">YubiKey 5C NFC</a>.</p>
<p><img src="/assets/5c-nfc.webp" alt="YubiKey 5C NFC security key" loading="lazy" style="aspect-ratio: 1000 / 1000" class="width-50" /></p>
<p>Hopefully, this works out a bit better.</p>
]]></description>
			<author>Ben Weston</author>
			<guid>2026-01-07-token2-review</guid>
			<pubDate>Wed, 07 Jan 26 09:28:00 +0000</pubDate>
    </item>
		    <item>
      <title>The Linked List (6)</title>
      <link>https://bweston.uk/post/2025-11-28-tll-6</link>
      <description><![CDATA[<p>Welcome back! This week I'm going to carry on the tactic of splitting all these juicy links into categories.</p>
<h2>Career Insights</h2>
<p>Even if I'm rather happy with my job, complaining about it is still pretty fun. I suppose these people think so too:</p>
<dl>
<dt>The hidden cost of shipping too fast</dt>
<dd><a href="https://www.antonsten.com/articles/the-hidden-cost-of-shipping-too-fast/">https://www.antonsten.com/articles/the-hidden-cost-of-shipping-too-fast/</a></dd>
<dt>I Work For an Evil Company, but Outside Work, I’m Actually a Really Good Person</dt>
<dd><a href="https://www.mcsweeneys.net/articles/i-work-for-an-evil-company-but-outside-work-im-actually-a-really-good-person">https://www.mcsweeneys.net/articles/i-work-for-an-evil-company-but-outside-work-im-actually-a-really-good-person</a></dd>
<dt>Always Be Ready to Leave (Even If You Never Do)</dt>
<dd><a href="https://andreacanton.dev/posts/2025-11-08-always-ready-to-leave/">https://andreacanton.dev/posts/2025-11-08-always-ready-to-leave/</a></dd>
<dt>&quot;Good engineering management&quot; is a fad</dt>
<dd><a href="https://lethain.com/good-eng-mgmt-is-a-fad/">https://lethain.com/good-eng-mgmt-is-a-fad/</a></dd>
</dl>
<h2>From the Web</h2>
<dl>
<dt>Understanding Unicode (from Longhorn PHP 2025)</dt>
<dd><a href="https://evanhahn.com/longhornphp2025/">https://evanhahn.com/longhornphp2025/</a></dd>
<dd>Lots of cool built-in functions here from PHP. This is good knowledge to have for accommodating UTF-8 throughout our applications.</dd>
<dt>The EU made Apple adopt new Wi-Fi standards, and now Android can support AirDrop</dt>
<dd><a href="https://arstechnica.com/gadgets/2025/11/the-eu-made-apple-adopt-new-wi-fi-standards-and-now-android-can-support-airdrop/">https://arstechnica.com/gadgets/2025/11/the-eu-made-apple-adopt-new-wi-fi-standards-and-now-android-can-support-airdrop/</a></dd>
<dt>The Performance Inequality Gap, 2026</dt>
<dd><a href="https://infrequently.org/2025/11/performance-inequality-gap-2026/">https://infrequently.org/2025/11/performance-inequality-gap-2026/</a></dd>
<dd>It's still especially important to save those bytes as the globe doubles down on mobile browsing. These reports are great for seeing what device and network conditions you should optimise for.</dd>
<dt>TinCan</dt>
<dd><a href="https://tincan.kids/">https://tincan.kids/</a></dd>
<dd>Shipping to the US only for the moment but it's crazy that this exists.</dd>
<dt>2002: Last.fm and Audioscrobbler Herald the Social Web</dt>
<dd><a href="https://cybercultural.com/p/lastfm-audioscrobbler-2002/">https://cybercultural.com/p/lastfm-audioscrobbler-2002/</a></dd>
<dd>As an avid scrobbler, its great to read up on the history of the platform.</dd>
<dt>How Google Is Shifting AI From the Cloud to Your Browser</dt>
<dd><a href="https://thenewstack.io/how-google-is-shifting-ai-from-the-cloud-to-your-browser/">https://thenewstack.io/how-google-is-shifting-ai-from-the-cloud-to-your-browser/</a></dd>
<dd>Get ready for your device batteries to get slammed from all the on-device AI models in the near-future.</dd>
</dl>
]]></description>
			<author>Ben Weston</author>
			<guid>2025-11-28-tll-6</guid>
			<pubDate>Fri, 28 Nov 25 14:10:00 +0000</pubDate>
    </item>
		    <item>
      <title>The Linked List (5)</title>
      <link>https://bweston.uk/post/2025-11-21-tll-5</link>
      <description><![CDATA[<p>(Fixed the link for &quot;Signing Git commits and tags with SSH&quot;)</p>
<h3>Cloudflare Outage Memes &amp; Commentary</h3>
<p>Lucky for me nothing I depended on went down the other day, not even this website! However, it is worrying how a large proportion of a distributed system like &quot;The Internet&quot; can be brought down by a single company.</p>
<dl>
<dt>Relevant XKCD</dt>
<dd><a href="https://xkcd.com/3170/">https://xkcd.com/3170/</a></dd>
<dt>A Teletext alternate reality</dt>
<dd><a href="https://bsky.app/profile/jamienemeth.bsky.social/post/3m5y2d4cdns2e">https://bsky.app/profile/jamienemeth.bsky.social/post/3m5y2d4cdns2e</a></dd>
<dt>The Fragile Web We Build</dt>
<dd><a href="https://afranca.com.br/the-fragile-web-we-built">https://afranca.com.br/the-fragile-web-we-built</a></dd>
</dl>
<h3>The Links</h3>
<dl>
<dt>Open Source Power</dt>
<dd><a href="https://blog.muni.town/open-source-power/">https://blog.muni.town/open-source-power/</a></dd>
<dd>A great read with loads of great links to get lost in.</dd>
<dt>Busy Simulator</dt>
<dd><a href="https://busysimulator.com/">https://busysimulator.com/</a></dd>
<dt>Why Your Best Engineers Are Interviewing Elsewhere</dt>
<dd><a href="https://codegood.co/writing/why-your-best-engineers-are-interviewing-elsewhere">https://codegood.co/writing/why-your-best-engineers-are-interviewing-elsewhere</a></dd>
<dt>Let's talk about AI art...</dt>
<dd><a href="https://theoatmeal.com/comics/ai_art">https://theoatmeal.com/comics/ai_art</a></dd>
<dt>Signing Git commits and tags with SSH</dt>
<dd><a href="https://carlosbecker.com/posts/git-ssh-signing/">https://carlosbecker.com/posts/git-ssh-signing/</a></dd>
<dd>I currently sign my commits with a separate GPG key but this is far easier.</dd>
</dl>
]]></description>
			<author>Ben Weston</author>
			<guid>2025-11-21-tll-5</guid>
			<pubDate>Fri, 21 Nov 25 13:26:00 +0000</pubDate>
    </item>
		    <item>
      <title>The Linked List (4)</title>
      <link>https://bweston.uk/post/2025-11-14-tll-4</link>
      <description><![CDATA[<ul>
<li>AI is not a source - <a href="https://stopcitingai.com/">https://stopcitingai.com/</a></li>
<li>How I influence tech company politics as a staff software engineer - <a href="https://www.seangoedecke.com/how-to-influence-politics/">https://www.seangoedecke.com/how-to-influence-politics/</a></li>
<li>How to stand out when anyone can build anything <a href="https://www.antonsten.com/articles/how-to-stand-out-when-anyone-can-build-anything/">https://www.antonsten.com/articles/how-to-stand-out-when-anyone-can-build-anything/</a></li>
<li>Pretend you're the PO in this terrifyingly realistic game - <a href="https://scope-creep.xyz/play">https://scope-creep.xyz/play</a></li>
<li>Running 1:1s for Engineers - <a href="https://justoffbyone.com/posts/how-to-run-11s/">https://justoffbyone.com/posts/how-to-run-11s/</a></li>
<li>The Majority AI View - <a href="https://www.anildash.com/2025/10/17/the-majority-ai-view">https://www.anildash.com/2025/10/17/the-majority-ai-view</a></li>
<li>The Pilcrow - <a href="https://shadycharacters.co.uk/2011/02/the-pilcrow-part-1/">https://shadycharacters.co.uk/2011/02/the-pilcrow-part-1/</a>
<ul>
<li>A brief history of typography centred around this guy: ¶. I recommend all three parts.</li>
</ul>
</li>
<li>You were asleep but swear you weren’t: what is paradoxical insomnia? - <a href="https://www.theguardian.com/wellness/2025/oct/27/paradoxical-insomnia-sleep">https://www.theguardian.com/wellness/2025/oct/27/paradoxical-insomnia-sleep</a></li>
<li>Your URL Is Your State - <a href="https://alfy.blog/2025/10/31/your-url-is-your-state.html">https://alfy.blog/2025/10/31/your-url-is-your-state.html</a></li>
</ul>
]]></description>
			<author>Ben Weston</author>
			<guid>2025-11-14-tll-4</guid>
			<pubDate>Fri, 14 Nov 25 16:46:00 +0000</pubDate>
    </item>
		    <item>
      <title>The Linked List 🎃 (3)</title>
      <link>https://bweston.uk/post/2025-10-31-tll-3</link>
      <description><![CDATA[<ul>
<li>Henry Ford's horse problem wasn't about imagination - <a href="https://www.antonsten.com/articles/henry-ford-horse-problem">https://www.antonsten.com/articles/henry-ford-horse-problem</a>
<ul>
<li>How we can build right by listening to stakeholders problems rather than asking for solutions?</li>
</ul>
</li>
<li>Scripts I wrote that I use all the time - <a href="https://evanhahn.com/scripts-i-wrote-that-i-use-all-the-time">https://evanhahn.com/scripts-i-wrote-that-i-use-all-the-time</a></li>
<li>How to Increase Your Luck Surface Area - <a href="https://www.codusoperandi.com/posts/increasing-your-luck-surface-area">https://www.codusoperandi.com/posts/increasing-your-luck-surface-area</a>
<ul>
<li>A bit of an older one that's making the rounds again.</li>
</ul>
</li>
<li>Build Your Own Database - <a href="https://www.nan.fyi/database">https://www.nan.fyi/database</a>
<ul>
<li>A really impressive page. I can see this being Alex's next Bash project.</li>
</ul>
</li>
<li>How to split JavaScript strings into sentences, words or graphemes with &quot;Intl.Segmenter&quot; - <a href="https://www.stefanjudis.com/today-i-learned/how-to-split-javascript-strings-with-intl-segmenter">https://www.stefanjudis.com/today-i-learned/how-to-split-javascript-strings-with-intl-segmenter</a></li>
<li>Advertising Platforms, and the War for My Attention - <a href="https://farrant.me/posts/advertising-platforms-and-the-war-for-my-attention">https://farrant.me/posts/advertising-platforms-and-the-war-for-my-attention</a>
<ul>
<li>I relate far too much to the first half of this post. YouTube shorts are seriously addictive.</li>
</ul>
</li>
</ul>
]]></description>
			<author>Ben Weston</author>
			<guid>2025-10-31-tll-3</guid>
			<pubDate>Fri, 31 Oct 25 12:54:00 +0000</pubDate>
    </item>
		    <item>
      <title>The Linked List (2)</title>
      <link>https://bweston.uk/post/2025-10-10-tll-2</link>
      <description><![CDATA[<p>A bit of a slower one this week in the link rings. Hopefully there'll be a bumper crop next week!</p>
<ul>
<li>&quot;Workslop&quot; was the logical outcome of productivity maxxing - <a href="https://productpicnic.beehiiv.com/p/workslop-was-the-logical-outcome-of-productivity-maxxing">https://productpicnic.beehiiv.com/p/workslop-was-the-logical-outcome-of-productivity-maxxing</a>
<ul>
<li>I like to look at this one through the lens of re-evaluating all tools that you're currently using and seeing if they're really worth the headache they cause along the way.</li>
</ul>
</li>
<li>The &quot;broligarchs&quot; don't speak for me - <a href="https://ratfactor.com/tech-nope">https://ratfactor.com/tech-nope</a></li>
<li>Cookie banners are going away but what will replace them? - <a href="https://www.politico.eu/article/europe-cookie-law-messed-up-the-internet-brussels-sets-out-to-fix-it/">https://www.politico.eu/article/europe-cookie-law-messed-up-the-internet-brussels-sets-out-to-fix-it/</a></li>
</ul>
]]></description>
			<author>Ben Weston</author>
			<guid>2025-10-10-tll-2</guid>
			<pubDate>Fri, 10 Oct 25 15:19:00 +0100</pubDate>
    </item>
		    <item>
      <title>The Linked List (1)</title>
      <link>https://bweston.uk/post/2025-09-26-tll-1</link>
      <description><![CDATA[<ul>
<li>Hosting a site on a disposable vape: <a href="https://bogdanthegeek.github.io/blog/projects/vapeserver/">https://bogdanthegeek.github.io/blog/projects/vapeserver/</a>
<ul>
<li>Read it from the vape: <a href="http://ewaste.fka.wtf/">http://ewaste.fka.wtf/</a></li>
</ul>
</li>
<li>The annual Tom7 video dropped! <a href="https://www.youtube.com/watch?v=QH4MviUE0_s">https://www.youtube.com/watch?v=QH4MviUE0_s</a></li>
<li>Against the protection of stocking frames: <a href="https://ethanmarcotte.com/wrote/against-stocking-frames/">https://ethanmarcotte.com/wrote/against-stocking-frames/</a>. Is AI a failed technology?</li>
<li>Building DOOM in Pure SQL: <a href="https://cedardb.com/blog/doomql/">https://cedardb.com/blog/doomql/</a></li>
<li>Heather loves post and thought this was cool: <a href="https://www.postcrossing.com/">https://www.postcrossing.com/</a>. Get a pen-pal without the hassle of writing more than a postcard.</li>
</ul>
]]></description>
			<author>Ben Weston</author>
			<guid>2025-09-26-tll-1</guid>
			<pubDate>Fri, 26 Sep 25 13:50:00 +0100</pubDate>
    </item>
		    <item>
      <title>Ben's Reading Club</title>
      <link>https://bweston.uk/post/2025-09-19-bens-reading-club</link>
      <description><![CDATA[<ul>
<li>A super short thought about what AI is good for:
<ul>
<li><a href="https://simonwillison.net/2025/Aug/29/lossy-encyclopedia/">https://simonwillison.net/2025/Aug/29/lossy-encyclopedia/</a></li>
</ul>
</li>
<li><code>\r\n</code> or <code>\n</code>? Is Windows really the best when it comes to line endings:
<ul>
<li><a href="https://aresluna.org/the-day-return-became-enter/">https://aresluna.org/the-day-return-became-enter/</a></li>
</ul>
</li>
<li>Josh’s articles are always fun to play with. This one is about writing SVG:
<ul>
<li><a href="https://www.joshwcomeau.com/svg/interactive-guide-to-paths/">https://www.joshwcomeau.com/svg/interactive-guide-to-paths/</a></li>
</ul>
</li>
<li>An interesting way to think about solving problems:</li>
<li><a href="https://www.smashingmagazine.com/2025/07/core-model-start-from-answer-not-solution/">https://www.smashingmagazine.com/2025/07/core-model-start-from-answer-not-solution/</a></li>
<li>Vibe code is legacy code:
<ul>
<li><a href="https://blog.val.town/vibe-code">https://blog.val.town/vibe-code</a></li>
</ul>
</li>
</ul>
]]></description>
			<author>Ben Weston</author>
			<guid>2025-09-19-bens-reading-club</guid>
			<pubDate>Fri, 19 Sep 25 16:24:00 +0100</pubDate>
    </item>
		    <item>
      <title>Home Assistant Automated Blinds Build Log</title>
      <link>https://bweston.uk/post/2025-06-03-blinds-build-log</link>
      <description><![CDATA[<p>Living in a flat in the middle of a city has its perks but having neighbours within throwing distance of all your windows is not one of them. For better or worse, opening and closing blinds is an essential part of my day but one which can be automated!</p>
<p>The goals of this project are as follows:</p>
<ul>
<li>Integrate with my existing Home Assistant instance for easy remote control and scheduling.</li>
<li>Make use of the stepper motor drivers that have been sitting in my parts drawer for too long.</li>
<li>Have as many parts 3D printable as possible.</li>
</ul>
<h3>The Mock-up</h3>
<h4>Electronics</h4>
<p><img src="/assets/breadboard.jpg" alt="Breadboard with a barrel jack connected to the power rails on flying leads. From left to right there's a Raspberry Pi Pico W, A4988 stepper motor driver and L78 series linear regulator." loading="lazy" style="aspect-ratio: 1024 / 502" /></p>
<p>To get things started I laid out some components on a breadboard so I could get the stepper motor moving. The brains of the project is a Raspberry Pi Pico W running <a href="https://esphome.io/components/rp2040.html">ESPHome</a>. This is connected up to a cheap A4988 stepper motor driver powered by a 24v supply.</p>
<p><img src="/assets/nema-17.jpg" alt="Nema 17 stepper motor" loading="lazy" style="aspect-ratio: 1000 / 1000" class="width-50" /></p>
<p>To step down the 24v to 5v, for the Pico, I used a simple L78 linear regulator. This method of stepping down voltage is terribly inefficient as the difference between the supply and output voltage is bled off as heat.</p>
<math display="block">
  <mrow>
    <msub>
      <mi>P</mi>
      <mtext>waste</mtext>
    </msub>
    <mo>=</mo>
    <mo form="prefix" stretchy="false">(</mo>
    <msub>
      <mi>V</mi>
      <mtext>in</mtext>
    </msub>
    <mo>−</mo>
    <msub>
      <mi>V</mi>
      <mtext>out</mtext>
    </msub>
    <mo form="postfix" stretchy="false">)</mo>
    <mo>⋅</mo>
    <msub>
      <mi>I</mi>
      <mtext>out</mtext>
    </msub>
  </mrow>
</math>
<p>This means that given a peak power draw of maybe 100mA for the Pico and A4988 combined, the little regulator would be dissipating 1.9 Watts. The regulator has protections to ensure that is doesn't overheat but it would definitely require a heat sink for the final build.</p>
<h4>Software</h4>
<p>Next is configuration to enable ESPHome and Home Assistant to interact with the motor. ESPHome provides a <a href="https://hub.docker.com/r/esphome/esphome">Docker container</a> that can generate firmware for your microcontroller based on yaml files for configuration. After some hacking I had something like this:</p>
<p><img src="/assets/esphome.jpg" alt="ESPhome online configuration editor showing the start of the blinds configuration." loading="lazy" style="aspect-ratio: 1024 / 560" /></p>
<p>The <a href="https://esphome.io/components/stepper/">stepper component</a> makes it super easy to use stepper motors with ESPHome by only defining a couple of GPIO pins. However, Home Assistant can't directly control stepper motors so we need to expose it as a <a href="https://www.home-assistant.io/integrations/cover/">cover</a>:</p>
<pre><code class="language-yml">cover:
  - platform: template
    id: blinds_cover
    name: &quot;Roller Blind&quot;
    device_class: shade
    ...
    position_action: 
      then:
        - stepper.set_target:
            id: blinds_stepper
            target: !lambda 'return (int)((1 - pos) * id(max_steps));'
    ...
</code></pre>
<p>Here I'm using a <a href="https://esphome.io/automations/templates.html">template</a> to expose a function that Home Assistant can run on the microcontroller. More specifically I'm using the <a href="https://esphome.io/components/cover/template.html">cover template</a>. This allows Home Assistant to show a nice interface to allow precise control of the blind, including buttons to open, close and stop the thing too.</p>
<div style="display: flex; flex-wrap: wrap; gap: 1rem;">
<p><img src="/assets/home-assistant-slider.jpg" alt="Exact positioning slider from the Home Assistant web interface." loading="lazy" style="aspect-ratio: 822 / 1120" class="width-50" /></p>
<p><img src="/assets/home-assistant-buttons.jpg" alt="Up, down, and stop buttons for blinds in the Home Assistant web interface." loading="lazy" style="aspect-ratio: 822 / 1120" class="width-50" /></p>
</div>
<h4>Gearing</h4>
<p>My blinds are huge and heavy, even with the maximum current the A4988 can provide they won't budge under just the power of the stepper motor. To get an output with enough torque to move them I'm using this <a href="https://www.printables.com/model/44974-nema-17-stepper-51-planetary-gearbox-with-5mm-shaf">5:1 planetary gearbox</a> that a co-worker recommended when he got earshot of my issues.</p>
<p><img src="/assets/gearbox-side.jpg" alt="Printed gearbox attached to the NEMA 17 stepper motor." loading="lazy" style="aspect-ratio: 1024 / 773" /></p>
<p><img src="/assets/gearbox-top.jpg" alt="View from the top showing the gear meshing with the blind's bead chain." loading="lazy" style="aspect-ratio: 1024 / 771" /></p>
<p>It wasn't a long print and after assembling using the parts list in the description, the operation is smooth and quiet. With the new gearbox mounted the blinds are moving just fine and it's not such a strong reduction that it can't be back driven.</p>
<h3>The Installation</h3>
<p>To attach the assembly to the wall I remixed this <a href="https://www.thingiverse.com/thing:5965826">mount designed to motorise bead blinds</a> to fit where the plastic loop holding the blind beads was screwed to the wall. However, once again my very heavy blinds strike back! The beads don't have enough grip against the gear from the model, so I further modified the design to fit a gear that completely surrounds each bead to grip it. With that the mechanical interface to the blinds is complete, but a breadboard isn't permanent enough for something I want to leave plugged in 24hrs a day.</p>
<p>This is the schematic for the final circuit which I built up onto some strip board I had lying around:</p>
<p><img src="/assets/blinds-schematic.svg" alt="Circuit board schematic." loading="lazy" /></p>
<p>I did contemplate having a PCB made up, but for a one-off prototype I prefer the convenience of having it made in an evening. It certainly brought back some school memories of using a drill bit to break the strips.</p>
<p><img src="/assets/strip-board-front.jpg" alt="The front of the strip board" loading="lazy" style="aspect-ratio: 1024 / 771" /></p>
<p><img src="/assets/strip-board-back.jpg" alt="The back of the strip board" loading="lazy" style="aspect-ratio: 1024 / 771" /></p>
<p>I measured up the board and designed a small box that can hide everything out the way. It's all well and good being able to automate your blinds or control them through your phone but that isn't so intuitive if we have people round. To that end I configured a <a href="https://www.ikea.com/gb/en/p/rodret-wireless-dimmer-power-switch-smart-white-80559796/">SOMRIG Zigbee button</a> and printed off a custom face place to give some hints for what it is for. A few people have made some excellent resources and I used <a href="https://www.printables.com/model/939679-ikea-rodret-somrig-replacement-faceplate">an existing faceplate model</a> in combination with <a href="https://github.com/Aasikki/IKEA-Button-Icon-Templates/blob/2f62384b2467562950fe503f9526b531f2ab9581/IKEA%20Rodret%20and%20Somrig%20Template.pdf">Aasikki's button template</a> to create a reasonable design using Autodesk Fusion.</p>
<p><img src="/assets/rodret.jpg" alt="A render of the custom button faceplate with options for opening blinds at the top, closing on the bottom left and stopping on the bottom right." loading="lazy" style="aspect-ratio: 1024 / 576" /></p>
<p>With that I'm rather pleased with how the whole installation came out. The only remaining issue is that the whole system operates by dead-reckoning. Occasionally the stepper motor slips or there's some delay in ESPHome which causes the position of the blind's open and closed states to drift out of sync with reality. I've made a number input, in Home Assistant, that allows me to trim the blinds back into position if it becomes an issue but after several months I haven't had to use it often enough to be a problem. The only real problem now is that I've got a project shaped hole in my evenings that will inevitably be filled with Clarkson's Farm and Taskmaster. I'll just have to wait until another idea crosses my mind.</p>
<h3>Models &amp; Configuration</h3>
<p>You can access the configuration required to make this project work on <a href="https://github.com/bweston6">my GitHub</a>. I haven't posted the 3D models yet but if you want them before they're up, give me a nudge on <a href="mailto:blinds@bweston.uk">blinds@bweston.uk</a>.</p>
]]></description>
			<author>Ben Weston</author>
			<guid>2025-06-03-blinds-build-log</guid>
			<pubDate>Tue, 03 Jun 25 14:57:00 +0100</pubDate>
    </item>
		  </channel>
</rss>
