<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/feeds/stylesheet.xslt" type="text/xsl"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Oli Warner&apos;s Blog</title><description>Latest posts from Oli Warner</description><link>https://thepcspy.com/</link><css>/static/combined.DLsSxJDA.css</css><item><title>11ty wasn’t right for me</title><link>https://thepcspy.com/read/11ty-wasnt-right-for-me/</link><guid isPermaLink="true">https://thepcspy.com/read/11ty-wasnt-right-for-me/</guid><description>&lt;p&gt;In 2022 &lt;a href=&quot;https://thepcspy.com/read/turning-it-up-to-11ty/&quot;&gt;I migrated to &lt;strong&gt;11ty&lt;/strong&gt;&lt;/a&gt;, a flexible static site generator.  I thought it perfect but &lt;strong&gt;I was wrong&lt;/strong&gt; and it took &lt;em&gt;four years&lt;/em&gt; to recover  😪&lt;/p&gt;
</description><pubDate>Wed, 29 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In 2022 &lt;a href=&quot;https://thepcspy.com/read/turning-it-up-to-11ty/&quot;&gt;I migrated to &lt;strong&gt;11ty&lt;/strong&gt;&lt;/a&gt;, a flexible static site generator.  I thought it perfect but &lt;strong&gt;I was wrong&lt;/strong&gt; and it took &lt;em&gt;four years&lt;/em&gt; to recover  😪&lt;/p&gt;
 &lt;figure style=&quot;float:right;margin: 0 0 10px 10px;max-width: 30%&quot;&gt;&lt;img src=&quot;https://thepcspy.com/read/11ty-wasnt-right-for-me/sad-11ty.svg&quot;&gt;&lt;/figure&gt;
&lt;p&gt;Let’s be clear, my last post on this was true: &lt;strong&gt;I loved deploying 11ty.&lt;/strong&gt; It was 100% right to move to a &lt;abbr title=&quot;Static Site Generator&quot;&gt;SSG&lt;/abbr&gt;, exfiltrate the content from a claggy database into markdown files, twisting the excellent &lt;a href=&quot;https://github.com/markdown-it/markdown-it&quot;&gt;&lt;code&gt;markdown-it&lt;/code&gt;&lt;/a&gt; library to handle a decade of custom tags and weird oddities, and 11ty Just Kinda Sorta Worked™. A quantum leap from the rigid Django system I’d been using &lt;a href=&quot;https://thepcspy.com/read/everything-is-new-again/&quot;&gt;since 2010&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;My elation masked &lt;a href=&quot;https://thepcspy.com/read/turning-it-up-to-11ty/#whats-not-so-good&quot;&gt;the ugly bits&lt;/a&gt;, until they got in the way.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Collections&lt;/strong&gt; (posts) are very light and accessible on the surface and filtering and paging are both possible. I never managed to do both at once. I tried to unpick the code, understand what Zach was doing, but it was beyond me, the documentation and the support available at the time.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Asset/design management&lt;/strong&gt; was explicitly your job. There’s no Vite or Webpack. You can manually pass your output files through processors, but nothing was there to pick up after you. I thought it was cool but quickly realised I much prefer having access to sourcemaps and not having to recompile design files manually. &lt;strong&gt;Edit&lt;/strong&gt; &lt;a href=&quot;https://www.11ty.dev/docs/server-vite/&quot;&gt;You can now use Vite&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://mozilla.github.io/nunjucks/&quot;&gt;&lt;strong&gt;Nunjucks&lt;/strong&gt;&lt;/a&gt; is the core templating language, similar to Django’s, it was quick for me to pick up but every its dissimilarity and quirk felt like a limitation.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Trying to fix these things was painful. &lt;strong&gt;Zach is only one guy&lt;/strong&gt;, there are still only ~110 other contributors. It’s a really tight team with a cult following and that made getting enough support impossible.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;The v2 upgrade broke &lt;u&gt;&lt;em&gt;me&lt;/em&gt;&lt;/u&gt;.&lt;/strong&gt; I tried –&lt;em&gt;I really tried&lt;/em&gt;– but I couldn’t make my site work on v2. I reached out but nobody could untangle my problem and so I did the only thing I could: I gave up.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The shame of being stuck on a platform I’d just eulogised for contributed to my &lt;a href=&quot;https://thepcspy.com/read/losing-your-voice/&quot;&gt;stopping writing altogether&lt;/a&gt;. Not a sole cause, by any means, but every time I opened the site to write, all I could see was stuff I needed to fix.&lt;/p&gt;
&lt;h2 id=&quot;the-lesson-of-the-story-isnt-astro&quot;&gt;The lesson of the story isn’t Astro&lt;img src=&quot;https://thepcspy.com/read/11ty-wasnt-right-for-me/astro.svg&quot;&gt;&lt;/h2&gt;
&lt;p&gt;Wait, this incomplete pile of complaints is a lesson? Didn’t I move to Astro? Well, yeah, but &lt;strong&gt;it’s okay that 11ty didn’t work for me&lt;/strong&gt;. I’m not angry at Zach &amp;amp; co. — they helped me as much as they could with a system that I’m sure does what they need. They owe me nothing.&lt;/p&gt;
&lt;p&gt;I failed but I didn’t &lt;em&gt;&lt;strong&gt;Fail Fast&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;I knew four years ago that 11ty wasn’t working for me. Rather than shop around, I convinced myself that I’d fix it one day. It was a perennial &lt;em&gt;project for another day&lt;/em&gt;. In putting it off, I nearly ruined one of my favourite hobbies. I missed every cue to correct these oversights, and lied to myself that I’d come back to it.&lt;/p&gt;
&lt;p&gt;As a three time platinum-selling parent, a key skill is being honest about mistakes, learning from them. If you don’t accomplish this cycle, you get stuck in ruts. The longer it goes on, the more peripheral damage.&lt;/p&gt;
&lt;p&gt;This site &lt;em&gt;does&lt;/em&gt; run Astro now. It took a heck of a lot of work to port my Markdown code over, and indeed was only just made possible this year inside Astro. Maybe I’ll write about it one day.&lt;/p&gt;
</content:encoded></item><item><title>Tell your kids to be plumbers</title><link>https://thepcspy.com/read/tell-kids-to-be-plumbers/</link><guid isPermaLink="true">https://thepcspy.com/read/tell-kids-to-be-plumbers/</guid><description>&lt;p&gt;A few years ago I’d have been happy if my children wanted to
follow me into a career of programming, but the longer I spend
with LLMs, the less future I see in it for any of us.
How should we advise our children for their futures?&lt;/p&gt;
</description><pubDate>Mon, 27 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A few years ago I’d have been happy if my children wanted to
follow me into a career of programming, but the longer I spend
with LLMs, the less future I see in it for any of us.
How should we advise our children for their futures?&lt;/p&gt;
 &lt;figure style=&quot;float:right;margin: 0 0 10px 10px;max-width: 30%&quot;&gt;&lt;img src=&quot;https://thepcspy.com/read/tell-kids-to-be-plumbers/plumber-education.avif&quot;&gt;&lt;figcaption&gt;Thanks ChatGPT&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;If you can afford tokens, programming became an &lt;strong&gt;outcome-oriented task&lt;/strong&gt;. Tell your &lt;abbr title=&quot;Large Language Model&quot;&gt;LLM&lt;/abbr&gt; what you want and wait. Ideas to &lt;abbr title=&quot;Minimum Viable Product&quot;&gt;MVP&lt;/abbr&gt; in an hour, little programming required. Senior developers’ last bastion is debugging and performance, but it’s only a matter of time. Engineering teams &lt;em&gt;will&lt;/em&gt; mutate into LLM shepherds until even seniors have no place. And my industry isn’t alone.&lt;/p&gt;
&lt;p&gt;Anything where computers became central is feeling heat: data entry, customer service, translation, technical writing, marketing, copywriting, paralegal, secretarial, accountancy and tax code, and every creative job that doesn’t rely on physical media. Junior tasks are already being done by LLMs, senior roles will follow.&lt;/p&gt;
&lt;p&gt;So what do you want your kids to be when they grow up?&lt;br&gt;
Will that still be a thing in ten years?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Let’s remember: it’s their life to live. As parent’s we sometimes like to think we’re steering but we’re not even passengers. We can advise, we can enable, but we can’t make our kids do anything and would be foolish to try.&lt;/p&gt;
&lt;h2 id=&quot;raise-barbarians-rogues-and-rangers-not-wizards&quot;&gt;Raise barbarians, rogues and rangers, not wizards&lt;/h2&gt;
&lt;p&gt;My parents, grandparents and school pushed hard towards further education and “professional” jobs. It was the only path for a bright kid. The “trades” were for kids who &lt;em&gt;failed&lt;/em&gt; at school. If you didn’t need an A-level –let alone a degree– what was the point?&lt;/p&gt;
&lt;p&gt;This feels like bad advice today. Intelligence-based jobs will still exist but not in today’s volume, and with ever increasing numbers of people (and AIs) vying for them, throwing our kids into that fray doesn’t seem like giving them opportunity, it sounds like a fight.&lt;/p&gt;
&lt;p&gt;But &lt;u&gt;&lt;strong&gt;everybody will always need plumbing&lt;/strong&gt;&lt;/u&gt;. All the tokens in the world won’t solder pipework, dig pipe trenches, stick tiles on the wall, smell gas leaks, and and they won’t carry a bath up the stairs. Robots are decades away from replacing cheap meatbags so plumbing is safe from automation, while still being diverse, entrepreneurial and often creative enough to engage an active mind.&lt;/p&gt;
&lt;p&gt;The important thing is raising kids with the awareness of what jobs are actually available. They can’t all be doctors and influencers. There are lots of STR and DEX builds available. Don’t be afraid to dual class.&lt;/p&gt;
&lt;h2 id=&quot;education-still-adds-value-and-opportunity&quot;&gt;Education still adds value and opportunity&lt;/h2&gt;
&lt;p&gt;What do &lt;em&gt;I&lt;/em&gt; want my kids to be? &lt;strong&gt;Happy&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Forcing them out of school into an apprenticeship is unlikely to achieve that, and as much as I worry about the future of employment, will more education ever be bad? Further education isn’t a checkbox qualification. It coaches people how to think, research, learn and grow.&lt;/p&gt;
&lt;p&gt;Higher education needs to catch up with the world. £100k for a 5y medical degree, 40 year career &lt;em&gt;might&lt;/em&gt; make sense, but what about the degrees without an attached career? Rather than get tribal about what should be allowed at university, I think we need to be more flexible with learning. Is there anything wrong with learning about the Italian Renaissance &lt;em&gt;while&lt;/em&gt; training as a plumber? Similarly, we should help adults go back to education, learn more. More night schools, more vocational courses.&lt;/p&gt;
&lt;p&gt;I &lt;em&gt;do&lt;/em&gt; worry about the future, but that’s always been a parent’s job.&lt;/p&gt;
</content:encoded></item><item><title>Microbit: easier with extensions</title><link>https://thepcspy.com/read/microbit-easier-with-extensions/</link><guid isPermaLink="true">https://thepcspy.com/read/microbit-easier-with-extensions/</guid><description>&lt;p&gt;The &lt;a href=&quot;https://microbit.org/get-started/what-is-the-microbit/&quot;&gt;BBC Microbit&lt;/a&gt; is a wonderful introduction to both programming and electronics, but &lt;a href=&quot;https://makecode.microbit.org/blocks&quot;&gt;MakeCode’s Blocks&lt;/a&gt; make some ideas quite hard to express.&lt;/p&gt;
</description><pubDate>Thu, 23 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The &lt;a href=&quot;https://microbit.org/get-started/what-is-the-microbit/&quot;&gt;BBC Microbit&lt;/a&gt; is a wonderful introduction to both programming and electronics, but &lt;a href=&quot;https://makecode.microbit.org/blocks&quot;&gt;MakeCode’s Blocks&lt;/a&gt; make some ideas quite hard to express.&lt;/p&gt;
 &lt;figure style=&quot;float:right;margin: 0 0 10px 10px;max-width: 30%&quot;&gt;&lt;img src=&quot;https://thepcspy.com/read/microbit-easier-with-extensions/microbit-drawing-2-yellow.avif&quot;&gt;&lt;/figure&gt;
&lt;p&gt;Introducing my 6yo to robotics, I’m conscious how important it is to keep things interesting, to keep difficulties abstracted, hidden. Buzzers, LEDs, motor controllers and servos are pretty much plug-and-play these days but &lt;em&gt;control&lt;/em&gt; is harder. You want speed, direction, some buttons for features and ideally some method of feedback.&lt;/p&gt;
&lt;p&gt;The builtin BLE allows &lt;a href=&quot;https://www.youtube.com/watch?v=QxVwzhAZq3Y&quot;&gt;phone apps&lt;/a&gt;, but I try to keep my kids off phones. There isn’t a proper BT stack available to the Microbit, so real controllers are out. IR is super cheap but the experience is short range and very directional. Similarly a corded remote  works &lt;em&gt;with caveats&lt;/em&gt;. But none are ideal.&lt;/p&gt;
&lt;h2 id=&quot;use-another-microbit&quot;&gt;Use another Microbit.&lt;/h2&gt;
&lt;p&gt;The radio module in the Microbit is awesome. Its Nordic nRF5xxxx SoC has a proprietary low-latency communication protocol called &lt;a href=&quot;https://nrfconnectdocs.nordicsemi.com/ncs/3.2.2/nrf/protocols/esb/index.html&quot;&gt;Enhanced ShockBurst&lt;/a&gt;. Microbit software builds on top of this for a super-simple message exchange format. Pick a channel and just send and receive 32byte messages.&lt;/p&gt;
&lt;p&gt;A Microbit on its own does have enough sensors to act as a HCI device: accelerometer for directions, two or three buttons depending on your version, but you still have to add batteries, and tilting isn’t the best interface. In a pinch, sure, but better options exist. I have –and would recommmend– a &lt;a href=&quot;https://wiki.elecfreaks.com/en/microbit/expansion-board/joystick-bit-v2/&quot;&gt;Joystick v2 Plus&lt;/a&gt;. ~£15 buys you a x-y axes, four buttons, buzzer, vibration feedback, battery case and the plus version has handles (which you could 3d print).&lt;/p&gt;
&lt;h2 id=&quot;if-its-so-good-why-use-extensions&quot;&gt;If it’s so good, why use extensions?&lt;/h2&gt;
&lt;p&gt;We have our hardware but how do we take that input and send it to our robot? &lt;a href=&quot;https://www.elecfreaks.com/learn-en/microbitKit/smart_cutebot/cutebot_case13.html&quot;&gt;Elecfreaks’ example&lt;/a&gt; would have your controller send named events for both axes, every button. 🤮&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;https://thepcspy.com/read/microbit-easier-with-extensions/elecfreaks.avif&quot;&gt;&lt;/figure&gt;
&lt;p&gt;You have to unpick each message separately. These messages are processed in a queue with the main forever loop, it’s possible –likely, even– you’re going to have forever loops where you’re dealing with old data. What about key combinations?&lt;/p&gt;
&lt;p&gt;In a &lt;em&gt;real&lt;/em&gt; programming language, you’d pack all your data into one packet and send it off and decode it all at once. 8 bits each for &lt;code&gt;x&lt;/code&gt; and &lt;code&gt;y&lt;/code&gt;. 1 bit per button. In a real language you can use bitwise operators to pack the bits together into a single number, and break them apart just as easily.&lt;/p&gt;
&lt;pre data-language=&quot;plaintext&quot;&gt;&lt;code&gt;    x    |     y    |  c  |  d  |  e  |  f  
00000000 | 00000000 |  0  |  0  |  0  |  0 &lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;But Blocks lacks the tools for encoding this stuff into a single message … without extensions. So I wrote a &lt;a href=&quot;https://github.com/oliwarner/joystickbitRadio/&quot;&gt;&lt;strong&gt;joystickbit-radio&lt;/strong&gt; extension&lt;/a&gt; extension to do exactly that. I turns the joypad state into a single number you just transmit over the normal radio block. For the user it’s as simple as dragging a few blocks:&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;https://thepcspy.com/read/microbit-easier-with-extensions/joystickbit-radio-sender.avif&quot;&gt;&lt;/figure&gt;
&lt;aside&gt;&lt;details&gt;&lt;summary&gt;See what it&apos;s doing behind the scenes...&lt;/summary&gt;&lt;p&gt;It’s pretty simple to pack a binary format up with bitwise operators.&lt;/p&gt;&lt;pre data-language=&quot;ts&quot;&gt;&lt;code&gt;&lt;span&gt;let&lt;/span&gt; value&lt;span&gt;:&lt;/span&gt;&lt;span&gt;number&lt;/span&gt; &lt;span&gt;=&lt;/span&gt; &lt;span&gt;0&lt;/span&gt;

value &lt;span&gt;|=&lt;/span&gt; Math&lt;span&gt;.&lt;/span&gt;&lt;span&gt;idiv&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;joystickbit&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getRockerValue&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;joystickbit&lt;span&gt;.&lt;/span&gt;rockerType&lt;span&gt;.&lt;/span&gt;&lt;span&gt;X&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;,&lt;/span&gt; &lt;span&gt;4&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;
value &lt;span&gt;|=&lt;/span&gt; Math&lt;span&gt;.&lt;/span&gt;&lt;span&gt;idiv&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;joystickbit&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getRockerValue&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;joystickbit&lt;span&gt;.&lt;/span&gt;rockerType&lt;span&gt;.&lt;/span&gt;&lt;span&gt;Y&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;,&lt;/span&gt; &lt;span&gt;4&lt;/span&gt;&lt;span&gt;)&lt;/span&gt; &lt;span&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span&gt;8&lt;/span&gt;

&lt;span&gt;if&lt;/span&gt; &lt;span&gt;(&lt;/span&gt;joystickbit&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getButton&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;joystickbit&lt;span&gt;.&lt;/span&gt;JoystickBitPin&lt;span&gt;.&lt;/span&gt;&lt;span&gt;P12&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;
    value &lt;span&gt;|=&lt;/span&gt; &lt;span&gt;1&lt;/span&gt; &lt;span&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span&gt;16&lt;/span&gt;

&lt;span&gt;if&lt;/span&gt; &lt;span&gt;(&lt;/span&gt;joystickbit&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getButton&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;joystickbit&lt;span&gt;.&lt;/span&gt;JoystickBitPin&lt;span&gt;.&lt;/span&gt;&lt;span&gt;P13&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;
    value &lt;span&gt;|=&lt;/span&gt; &lt;span&gt;1&lt;/span&gt; &lt;span&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span&gt;17&lt;/span&gt;

&lt;span&gt;if&lt;/span&gt; &lt;span&gt;(&lt;/span&gt;joystickbit&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getButton&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;joystickbit&lt;span&gt;.&lt;/span&gt;JoystickBitPin&lt;span&gt;.&lt;/span&gt;&lt;span&gt;P14&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;
    value &lt;span&gt;|=&lt;/span&gt; &lt;span&gt;1&lt;/span&gt; &lt;span&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span&gt;18&lt;/span&gt;

&lt;span&gt;if&lt;/span&gt; &lt;span&gt;(&lt;/span&gt;joystickbit&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getButton&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;joystickbit&lt;span&gt;.&lt;/span&gt;JoystickBitPin&lt;span&gt;.&lt;/span&gt;&lt;span&gt;P15&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;
    value &lt;span&gt;|=&lt;/span&gt; &lt;span&gt;1&lt;/span&gt; &lt;span&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span&gt;19&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;You can’t do &lt;em&gt;that&lt;/em&gt; with Blocks.&lt;/p&gt;&lt;/details&gt;&lt;/aside&gt;
&lt;p&gt;And at the other end, I’ve added some sugar. Not only does it decode, it adds events for button handling, utilities for mapping to different scales, or even tank tracking. &lt;a href=&quot;https://makecode.microbit.org/_LKz9J6U42DCR&quot;&gt;It makes the whole endeavour for users much, much easier&lt;/a&gt;.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;https://thepcspy.com/read/microbit-easier-with-extensions/joystickbit-radio.avif&quot;&gt;&lt;/figure&gt;
&lt;p&gt;Extensions allow you to create Blocks that &lt;strong&gt;do stuff&lt;/strong&gt; like this. I’m not saying you should use my extension –you can– rather &lt;em&gt;&lt;strong&gt;you can write your own!&lt;/strong&gt;&lt;/em&gt; It’s pretty simple and helping your learners before they get stuck will allow them to stay immersed, far longer. Nothing breaks a learning experience like debugging a system you don’t understand, or a impromptu maths lesson on how to unpick a right-to-left axis, or have to learn javascript before they could start.&lt;/p&gt;
&lt;p&gt;Blocks is great for discovering the Microbit API, it pays dividends to make it Good Enough™ rather than push people to harder environments.&lt;/p&gt;
&lt;p&gt;Things I used:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://makecode.com/extensions/getting-started&quot;&gt;https://makecode.com/extensions/getting-started&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://makecode.com/defining-blocks&quot;&gt;https://makecode.com/defining-blocks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://makecode.com/playground&quot;&gt;https://makecode.com/playground&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Lead image from &lt;a href=&quot;https://thepcspy.com/read/microbit-easier-with-extensions/microbit.org&quot;&gt;micro Educational Foundation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>What’s happened?</title><link>https://thepcspy.com/read/whats-happened/</link><guid isPermaLink="true">https://thepcspy.com/read/whats-happened/</guid><description>&lt;p&gt;Foreign money is interfering in UK elections again, but I can’t remember it ever being &lt;em&gt;this&lt;/em&gt; obvious.&lt;/p&gt;
</description><pubDate>Fri, 12 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Foreign money is interfering in UK elections again, but I can’t remember it ever being &lt;em&gt;this&lt;/em&gt; obvious.&lt;/p&gt;
 &lt;figure&gt;&lt;img src=&quot;https://thepcspy.com/read/whats-happened/tall/Screenshot_20260612-072919.avif&quot;&gt;&lt;/figure&gt;
&lt;p&gt;If you’re in the UK and you’ve been on &lt;em&gt;The Site Previously Known as Twitter&lt;/em&gt; in the last few days, you’ve probably seen an advertisement featuring an AI depiction of Nigel Farage beating, strangling, mugging, shooting, and having his shoes licked by the Bank of England’s governor, Andrew Bailey. These all link through to a fake BBC News page that reports Farage is a big mean tough guy demanding the Bank does what he says.&lt;/p&gt;
&lt;p&gt;I wouldn’t for a second suggest that Nigel or Reform are paying to make their weasel look tough, &lt;em&gt;&lt;strong&gt;but someone is&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;This morning, scrolling through my “Following” tab, I saw around 20 ads on this theme. These were all from foreign-held (India, Saudi, South African, Russian, Uganda, Viet Nam, etc) premium accounts that proclaim themselves “social media influencers”. They all post a couple of nature pictures, and then post these political adverts.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://thepcspy.com/read/whats-happened/tall/Screenshot_20260612-072530.avif&quot;&gt;
&lt;img src=&quot;https://thepcspy.com/read/whats-happened/tall/Screenshot_20260612-072910.avif&quot;&gt;
&lt;img src=&quot;https://thepcspy.com/read/whats-happened/tall/Screenshot_20260612-072744.avif&quot;&gt;
&lt;img src=&quot;https://thepcspy.com/read/whats-happened/tall/Screenshot_20260612-072602.avif&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://thepcspy.com/read/whats-happened/tall/Screenshot_20260612-072513.avif&quot;&gt;
&lt;img src=&quot;https://thepcspy.com/read/whats-happened/tall/Screenshot_20260612-072623.avif&quot;&gt;
&lt;img src=&quot;https://thepcspy.com/read/whats-happened/tall/Screenshot_20260612-072542.avif&quot;&gt;
&lt;img src=&quot;https://thepcspy.com/read/whats-happened/tall/Screenshot_20260612-072505.avif&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://thepcspy.com/read/whats-happened/short/Screenshot_20260612-072615.avif&quot;&gt;
&lt;img src=&quot;https://thepcspy.com/read/whats-happened/short/Screenshot_20260612-072729.avif&quot;&gt;
&lt;img src=&quot;https://thepcspy.com/read/whats-happened/short/Screenshot_20260612-072802.avif&quot;&gt;
&lt;img src=&quot;https://thepcspy.com/read/whats-happened/short/Screenshot_20260612-072738.avif&quot;&gt;&lt;/p&gt;
&lt;p&gt;And this has been going on for nearly week.&lt;/p&gt;
&lt;p&gt;If you’ve ever wondered what the dangers of a [practically] unmoderated platform in the hands of a billionaire “free-speech absolutist” could possibly be for your day-to-day life, here it is. Elon doesn’t appear to care who says what. Ads don’t appear to be vetted. As long as your bots pay their dues, and pay the ad fare, you can shove your dirty little opinions into the eyeballs of whomever you like.&lt;/p&gt;
&lt;p&gt;Just as an echo chamber, X was dangerous, but it’s becoming clearer and clearer that it’s now just toxic to any democratic process. With so many bots on the platform, and so many real political campaigners pretending to be somewhere they’re not, the time when you can have an honest discussion has gone.&lt;/p&gt;
</content:encoded></item><item><title>FreeCAD got good</title><link>https://thepcspy.com/read/freecad-got-good/</link><guid isPermaLink="true">https://thepcspy.com/read/freecad-got-good/</guid><description>&lt;p&gt;A testament to Open Source tenacity, is this &lt;em&gt;Free&lt;/em&gt; &lt;abbr title=&quot;Computer Aided Design&quot;&gt;CAD&lt;/abbr&gt; software Good Enough™ to compete with the big boys?&lt;/p&gt;
</description><pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A testament to Open Source tenacity, is this &lt;em&gt;Free&lt;/em&gt; &lt;abbr title=&quot;Computer Aided Design&quot;&gt;CAD&lt;/abbr&gt; software Good Enough™ to compete with the big boys?&lt;/p&gt;
 &lt;style&gt;
    h1:before {
        content:&quot;&quot;;
        display:block;
        float:right;
        width:150px;
        aspect-ratio:5/6;
        margin:-1rem 0 0 1rem;
        background: url(freecad-logo.svg) no-repeat;
        background-size: contain;
    }
&lt;/style&gt;
&lt;figure&gt;&lt;img src=&quot;https://thepcspy.com/read/freecad-got-good/overview.avif&quot;&gt;&lt;/figure&gt;
&lt;p&gt;If you have a 3D printer, you know you can only go so far printing others’ designs. Eventually you need something that isn’t out there for you. Custom-fit containers. Replacement parts. Shims accurate to 0.2mm. Problems you solve with a little bit of plastic in the right shape. And for that you need &lt;abbr title=&quot;Computer Aided Design&quot;&gt;CAD&lt;/abbr&gt;, able to design anything from a building to a circuit board.&lt;/p&gt;
&lt;p&gt;You might be familiar with YouTubers peddling Fusion and OnShape, and there are lots more options but precious few for Linux.&lt;/p&gt;
&lt;p&gt;I first tried &lt;a href=&quot;https://www.freecad.org/&quot;&gt;FreeCAD&lt;/a&gt; about a decade ago. It wasn’t a smooth experience. A stubbornly blue interface, a quagmire of obtuse icons and panels. It was overbearing, unpretty, and crashed so frequently I just gave up. I haven’t been following its development until very recently, since I started needing design software, but the last few years of FreeCAD’s 23 year history has seen some incredible leaps in usability and stability.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://thepcspy.com/read/freecad-got-good/oled-mount.avif&quot;&gt;
&lt;img src=&quot;https://thepcspy.com/read/freecad-got-good/torch-button.avif&quot;&gt;
&lt;img src=&quot;https://thepcspy.com/read/freecad-got-good/tumbler-gear.avif&quot;&gt;&lt;/p&gt;
&lt;p&gt;Since picking it up, I’ve made a flurry of things. From low-tolerance electronics mounts to quick-and-dirty parts for a torch. I’ve even replicated household items like drawer knobs and curtain rail holders that have broken and aren’t easily replaceable. The freedom to identify a problem, measure everything out with your Verniers and have a solution printing out within the hour is the most futuristic thing available.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://thepcspy.com/read/freecad-got-good/lamp-stand.avif&quot;&gt;
&lt;img src=&quot;https://thepcspy.com/read/freecad-got-good/drawer-knob.avif&quot;&gt;
&lt;img src=&quot;https://thepcspy.com/read/freecad-got-good/curtain-rail.avif&quot;&gt;&lt;/p&gt;
&lt;p&gt;I won’t pretend it’s all easy, &lt;strong&gt;you &lt;em&gt;still&lt;/em&gt; have to learn how to use it&lt;/strong&gt;, but that’s true of all CAD packages. Thankfully there is a large and helpful community around FreeCAD that can get you up to speed pretty quickly:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.youtube.com/@deltahedra3D?cbrd=1&amp;amp;ucbcb=1&quot;&gt;Deltahedra&lt;/a&gt; got me &lt;em&gt;interested&lt;/em&gt; in FreeCAD through lots and lots of shorter-format feature videos. There are lots of feature-updates as FreeCAD gets improvements, and there’s nothing like a “quick hacks” video for improving your own workflow.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.youtube.com/@MangoJellySolutions?cbrd=1&amp;amp;ucbcb=1&quot;&gt;MangoJelly Solutions&lt;/a&gt; does everything Deltahedra does, but also does &lt;em&gt;excellent&lt;/em&gt; long-format project videos.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.tootalltoby.com/&quot;&gt;Too Tall Toby&lt;/a&gt; has a superb collection of spec drawings for you to recreate in a timed environment. FreeCAD isn’t the only tool you can use for these, but I’ve found that it hasn’t stopped me beating the average times. Many TTT challenges also have tutorial videos for FreeCAD.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.craftsmanspace.com/freecad-tutorials&quot;&gt;Craftmanspace&lt;/a&gt; maintains a collection of tutorial videos from various sources. It’s a good resource for targeting specific workbenches.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Once you have some familiarity with the Part Design and Sketcher workbenches, you can start making stuff and sending it to your printer (or a third party print service).&lt;/p&gt;
&lt;p&gt;I’m not nearly expert enough to actually talk you through even a tenth of what FreeCAD has to offer, but I can tell you it’s plenty Good Enough™ to make stuff now. I strongly suggest you give it a shot and &lt;a href=&quot;https://www.freecad.org/downloads.php&quot;&gt;download FreeCAD&lt;/a&gt;. If you need a hard pitch, here are 30 reasons from Deltahedra:&lt;/p&gt;
&lt;iframe style=&quot;width:100%;aspect-ratio:16/9&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot; src=&quot;https://www.youtube-nocookie.com/embed/3JweHyvE_m8&quot; id=&quot;3JweHyvE_m8&quot;&gt;&lt;/iframe&gt;
</content:encoded></item></channel></rss>