﻿<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title>Dave Henry Blog</title>
		<link>https://davehenry.blog/</link>
		<description>The home of an ageing goth</description>
		<language>en-GB</language>
		<copyright>Copyright 2026</copyright>
		<managingEditor>dave@mort8088.com</managingEditor>
		<lastBuildDate>Sun, 09 Aug 2026 12:46:06 +0100</lastBuildDate>
		<generator>myPOSSE v0.0.2.0</generator>
		<image>
			<url>https://davehenry.blog/images/Me.webp</url>
			<title>Dave Henry Blog</title>
			<link>https://davehenry.blog/</link>
		</image>
		<item xml:base="https://davehenry.blog/">
			<guid isPermaLink="true">https://davehenry.blog/2026/08/2026-blaugust-02-fixing-problems-with-my-html/</guid>
			<link>https://davehenry.blog/2026/08/2026-blaugust-02-fixing-problems-with-my-html/</link>
			<category>blaugust</category>
			<category>blaugust2026</category>
			<title>2026 Blaugust 02 - Fixing problems with my HTML</title>
			<description>&lt;article&gt;
    &lt;header&gt;
        &lt;img src="images/covers/Blaugust2026.webp" alt="Cover Image" style="float: right; max-width: 320px;"&gt;
    &lt;/header&gt;    
    &lt;p&gt;Okay, so I'm not off to a great start with Blaugust this year, I've not been sleeping very well and I've spent most evenings trying and failing to work on my next project. 🙁&lt;/p&gt;
&lt;p&gt;To that ends, while I was doing some testing for my current CMS I realised that I haven't been including any &lt;code&gt;&amp;lt;link rel=&amp;quot;alternate&amp;quot;&amp;gt;&lt;/code&gt;'s in my HTML. Making the feed discovery a pain. Sorry about that but someone should have told me I was being rubbish.&lt;/p&gt;
&lt;p&gt;Anyway this prompted my to go fix it in myPOSSE-Builder, and wouldn't you know it I broke it.&lt;/p&gt;
&lt;p&gt;Here's a tip for you after you implement a feature, update some libraries, or just change the logic in some inconsequential way, test your freaking code still works, and then commit it.&lt;/p&gt;
&lt;p&gt;It took me all day yesterday to work out that what I needed to do was stop reusing the &lt;code&gt;TemplateContext&lt;/code&gt; for &lt;code&gt;Scriban&lt;/code&gt;. I had it as a global in my &lt;code&gt;HtmlRepository&lt;/code&gt; class and something had changed somewhere in the execution chain. If I was parsing a Page object as apposed to a Post object calling &lt;code&gt;_parser.Parse(&amp;quot;base&amp;quot;, templateContext);&lt;/code&gt; silently returned an empty string. 🤬&lt;/p&gt;
&lt;p&gt;On the upside I did spen a bit of time fixing a load of HTML issues that I didn't know were there.
Like&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;DOCTYPE should be uppercase&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Attribute &amp;quot;lang&amp;quot; using unquoted value&lt;/em&gt;
This one was due to the &lt;code&gt;MinifyHtml&lt;/code&gt; function I was using, it was stripping the &lt;code&gt;&amp;quot;&lt;/code&gt;'s from attributes all over the place.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Landmarks must have a non-empty and unique accessible name (aria-label or aria-labelledby)&lt;/em&gt;
I have multiple &lt;code&gt;&amp;lt;nav&amp;gt;&lt;/code&gt; tags in my page so I need to label them.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Expected omitted end tag &lt;code&gt;&amp;lt;hr&amp;gt;&lt;/code&gt; instead of self-closing element &lt;code&gt;&amp;lt;hr/&amp;gt;&lt;/code&gt;&lt;/em&gt;
This also applies to &lt;code&gt;&amp;lt;meta&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;br&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;link&amp;gt;&lt;/code&gt;,&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Element id &amp;quot;&amp;quot; must not be empty&lt;/em&gt;
Turns out that I have been missing the id from the &lt;code&gt;article&lt;/code&gt; nodes in the homepage and the archive pages. Mainly because I hadn't added a slug property to the &lt;code&gt;pageMeta&lt;/code&gt; object 🫤&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Inline style is not allowed on &lt;code&gt;a&lt;/code&gt;&lt;/em&gt;, &lt;code&gt;img&lt;/code&gt;, &lt;code&gt;footer&lt;/code&gt; &amp;amp; apparently &lt;code&gt;p&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt; is missing required &amp;quot;alt&amp;quot; attribute&lt;/em&gt;
Well, yes but I lazy… FINE! I'll fix the one I can find. 🙈&lt;/li&gt;
&lt;li&gt;I had one place where I got the tag order wrong &lt;code&gt;&amp;lt;strong&amp;gt;&amp;lt;em&amp;gt;bob&amp;lt;/strong&amp;gt;&amp;lt;/em&amp;gt;&lt;/code&gt; but that was just an oversight on my part.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In short make sure you have an HTML Linter in your editor, if you use VS &lt;del&gt;Code&lt;/del&gt;Codium try &lt;a href="https://open-vsx.org/extension/Gydunhn/html-essentials/changes"&gt;HTML-Essentials&lt;/a&gt;
All this so that I can make the site feeds more discoverable. Now if your feed reader supports discovery of feeds from an HTML page my site should work now.😉😇🤓&lt;/p&gt;
&lt;h2 id="song-for-the-post"&gt;Song for the Post&lt;/h2&gt;
&lt;p&gt;I couldn't think of a song to fit with this post, so here's one that I get stuck in my head every now and then.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Toto - Africa (metal cover)&lt;/strong&gt; • &lt;em&gt;Leo Moracchioli feat. Rabea &amp;amp; Hannah&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://open.spotify.com/track/51oRbjy61jOZ6QHWQnvLHm" title="Africa (Metal Cover) - song and lyrics by Leo, Hannah Boulton, Rabea Massaad | Spotify"&gt;Spotify&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=MH9FyLsfDzw" title="Toto - Africa (metal cover by Leo Moracchioli feat. Rabea &amp;amp; Hannah) - YouTube"&gt;YouTube&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Leo Moracchioli&lt;/strong&gt; (born 10 October 1978 in &lt;a href="https://en.wikipedia.org/wiki/%C3%85lg%C3%A5rd" title="Ålgård"&gt;Ålgård&lt;/a&gt;) is a Norwegian musician. He is known for his metal &lt;a href="https://en.wikipedia.org/wiki/Cover_version" title="Cover version"&gt;covers&lt;/a&gt; of popular songs, which have gained him over 4.5 million followers on YouTube as &lt;strong&gt;&lt;a href="https://ap-frogleap.myshopify.com/"&gt;Frog Leap Studios&lt;/a&gt;&lt;/strong&gt;.
The Frog Leap band members are Leo Moracchioli (vocals and guitar), Hannah Boulton (female vocals), Erik Torp (bass), Rabea Massaad (guitar), &lt;a href="https://en.wikipedia.org/wiki/Circus_Maximus_(Norwegian_band)" title="Circus Maximus (Norwegian band)"&gt;Truls Haugen&lt;/a&gt; (vocals and drums).&lt;/p&gt;
&lt;/blockquote&gt;

    &lt;footer&gt;
        &lt;p&gt;Thanks for keeping RSS feeds alive.&lt;/p&gt;
        &lt;p&gt;&lt;a href="mailto:fromfeed@mort8088.com?subject=RE%3A%202026%20Blaugust%2002%20-%20Fixing%20problems%20with%20my%20HTML"&gt;Reply by email&lt;/a&gt;&lt;/p&gt;
        &lt;p&gt;Leave a comment by replying to 
            &lt;a href="https://toot.wales/@mort8088/117065369779257312" target="_blank" title="Syndicated post on Mastodon"&gt;this post&lt;/a&gt;
            on Mastodon.&lt;/p&gt;
        
    &lt;/footer&gt;
&lt;/article&gt;
</description>
			<pubDate>Sun, 09 Aug 2026 01:00:00 +0100</pubDate>
		</item>
		<item xml:base="https://davehenry.blog/">
			<guid isPermaLink="true">https://davehenry.blog/2026/08/2026-blaugust-01-here-we-go-again/</guid>
			<link>https://davehenry.blog/2026/08/2026-blaugust-01-here-we-go-again/</link>
			<category>blaugust</category>
			<category>blaugust2026</category>
			<title>2026 Blaugust 01 - Here We Go Again</title>
			<description>&lt;article&gt;
    &lt;header&gt;
        &lt;img src="images/covers/Blaugust2026.webp" alt="Cover Image" style="float: right; max-width: 320px;"&gt;
    &lt;/header&gt;    
    &lt;h2 id="what-who-why"&gt;What, Who &amp;amp; Why?&lt;/h2&gt;
&lt;p&gt;The original challenge was to post 31 times during the month of August. This can be posting every day or doubling up on some days to make the schedule a bit easier. The idea is to spark creativity and get folks to create more content, not grinding them into burnout for some lofty goal.&lt;/p&gt;
&lt;p&gt;Blaugust is the brainchild of Mark Temple, more commonly known as &lt;strong&gt;Belghast&lt;/strong&gt;, author of &lt;strong&gt;&lt;a href="https://aggronaut.com/"&gt;Tales of the Aggronaut&lt;/a&gt;&lt;/strong&gt;. We lost Belghast on July 2, 2026. The Blaugust Discord mentors have decided to move forward with hosting the event this year, as they believe he would want to see it continue.&lt;/p&gt;
&lt;p&gt;I haven't been excellent at keeping up with my posts this year, for one reason or another. So I thought I'd try and bump start the habit with another stab at this 31 post challenge.&lt;/p&gt;
&lt;h2 id="plans-for-the-month"&gt;Plans for the Month&lt;/h2&gt;
&lt;p&gt;One of the reasons why I've not been posting lately is because I've been working on the next iteration of myPOSSE. I'm not sure I'm going to keep the name as this next version is a lot more complicated. I'll keep the details for another post, but I'll probably try and use the month to flesh out my ideas for it maybe even start building it. It worked last year as it forced me to get my head down an actually build myPOSSE-builder and start using it.&lt;/p&gt;
&lt;h2 id="song-for-the-post"&gt;Song for the Post&lt;/h2&gt;
&lt;p&gt;Last year I tried to tie a song to each post and added an embed for it from YouTube, it was a pain to get the embed to work with myPOSSE-builder. So this year I'll just have a link to a song I like or that I'm listening to at the moment and try and make the title work with the post😉.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Here We Go Again&lt;/strong&gt; • &lt;em&gt;Oliver Tree &amp;amp; David Guetta&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://open.spotify.com/track/1QmN94MDrG6VIfYCb5BQf6" title="Here We Go Again - song and lyrics by Oliver Tree, David Guetta | Spotify"&gt;Spotify&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=xKeDjiC-Sg0" title="Oliver Tree &amp;amp; David Guetta - Here We Go Again [Official Audio] - YouTube"&gt;YouTube&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://soundcloud.com/olivertree/here-we-go-again" title="Stream Oliver Tree &amp;amp; David Guetta - Here We Go Again by Oliver Tree | Listen online for free on SoundCloud"&gt;SoundCloud&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;On May 30, 2026, &lt;a href="https://en.wikipedia.org/wiki/Oliver_Tree"&gt;Oliver Tree&lt;/a&gt; began his first world tour to promote &lt;em&gt;Love You Madly Hate You Badly&lt;/em&gt;. The tour abruptly ended after Tree was killed in &lt;a href="https://en.wikipedia.org/wiki/2026_Rio_de_Janeiro_mid-air_collision" title="2026 Rio de Janeiro mid-air collision"&gt;a helicopter collision&lt;/a&gt; over &lt;a href="https://en.wikipedia.org/wiki/Rio_de_Janeiro" title="Rio de Janeiro"&gt;Rio de Janeiro&lt;/a&gt;, Brazil, on June 14. Tree and five others, &lt;a href="https://en.wikipedia.org/wiki/Gaspi" title="Gaspi"&gt;Gaspi&lt;/a&gt;, &lt;a href="https://en.wikipedia.org/wiki/Lucas_A._Vignale" title="Lucas A. Vignale"&gt;Lucas A. Vignale&lt;/a&gt;, &lt;a href="https://en.wikipedia.org/wiki/Lucas_Frota" title="Lucas Frota"&gt;Lucas Frota&lt;/a&gt; and the two helicopter pilots, were all confirmed to be victims of the crash by Rio de Janeiro police.&lt;/p&gt;
&lt;/blockquote&gt;

    &lt;footer&gt;
        &lt;p&gt;Thanks for keeping RSS feeds alive.&lt;/p&gt;
        &lt;p&gt;&lt;a href="mailto:fromfeed@mort8088.com?subject=RE%3A%202026%20Blaugust%2001%20-%20Here%20We%20Go%20Again"&gt;Reply by email&lt;/a&gt;&lt;/p&gt;
        &lt;p&gt;Leave a comment by replying to 
            &lt;a href="https://toot.wales/@mort8088/117019990579395141" target="_blank" title="Syndicated post on Mastodon"&gt;this post&lt;/a&gt;
            on Mastodon.&lt;/p&gt;
        
    &lt;/footer&gt;
&lt;/article&gt;
</description>
			<pubDate>Sat, 01 Aug 2026 01:00:00 +0100</pubDate>
		</item>
		<item xml:base="https://davehenry.blog/">
			<guid isPermaLink="true">https://davehenry.blog/2026/07/back-ups-in-linux/</guid>
			<link>https://davehenry.blog/2026/07/back-ups-in-linux/</link>
			<category>linux</category>
			<category>bash</category>
			<title>Back-ups in Linux</title>
			<description>&lt;article&gt;
    &lt;header&gt;
        
    &lt;/header&gt;    
    &lt;p&gt;I've been using computers since the time when you powered up and it just ran. The OS(&lt;a href="https://en.wikipedia.org/wiki/Operating_system"&gt;Operating System&lt;/a&gt;) was baked into the hardware, so you didn't have to worry about making back-ups.&lt;/p&gt;
&lt;p&gt;When I got my Amiga I made a copy of my workbench disks and kept the original in the top draw of my desk. I didn't need any other back-ups.&lt;/p&gt;
&lt;p&gt;Then there was the PC era, and I messed up my DOS/Windoze installs so regularly that I just got good at reinstalling the OS. So much so that I got my Windoze 95 install time down to 15 minutes with a 3.5&amp;quot; boot-disk and a copy of the ISO on a ZIP disk and that included installing all the drivers. And the expectation of catastrophic OS disaster has followed me, something goes wrong with the OS for whatever reason, just &amp;quot;&lt;a href="https://en.wiktionary.org/wiki/nuke_and_pave"&gt;Nuke and Pave&lt;/a&gt;&amp;quot;.&lt;/p&gt;
&lt;p&gt;This means that I have always tested my recovery solutions as I've gone along. A few times I've lost stuff, but for the most part, I've been ok.&lt;/p&gt;
&lt;p&gt;Shortly after I started using Linux as my full time/only OS. I found a good set-up was to have the &lt;code&gt;/home&lt;/code&gt; folder on a second drive. During the reinstall, select other when you asked what you want to do with the current OS, so you can set up the drives and partitions with the OS on the Primary and &lt;code&gt;/home&lt;/code&gt; as the whole of the Secondary. Create the same user each time and you're done. Then you just need some way of backing up your home drive.&lt;/p&gt;
&lt;p&gt;Enter &lt;code&gt;bu&lt;/code&gt; by &lt;a href="https://www.youtube.com/@EzeeLinux/search?query=bu"&gt;Joe Collins&lt;/a&gt; described as:-&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A simple tool to create reliable backups of /etc/ and /home from multiple Debian/Ubuntu Linux systems.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I've used it on the regular since v1(before that i was using his XBT script). I &amp;quot;fixed&amp;quot; an issue I had where &lt;code&gt;rsync&lt;/code&gt; would just crash with no error code and I'd need to restart, but then it'd finish fine.&lt;/p&gt;
&lt;p&gt;I always thought there was more I could be backing up for a good recovery. So I rewrote it a little and I present to you my interpretation of &lt;code&gt;bu&lt;/code&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;h1 id="bu-usb-backup-tool"&gt;&lt;a href="https://codeberg.org/mort8088/bu"&gt;BU - USB Backup Tool&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;Version 2.0&lt;/strong&gt; - A robust backup solution for Debian/Ubuntu systems, designed to protect your data and system configuration against disk failure.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html"&gt;&lt;img src="https://img.shields.io/badge/License-GPL%20v2-blue.svg" alt="License: GPL v2" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="disclaimer"&gt;⚠️ Disclaimer&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;USE THIS SCRIPT AT YOUR OWN RISK.&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The script is provided &lt;strong&gt;“AS IS”&lt;/strong&gt;, without warranty of any kind, either expressed or implied.&lt;/li&gt;
&lt;li&gt;The author assumes &lt;strong&gt;no responsibility&lt;/strong&gt; for data loss, system corruption, hardware damage, or any other issues that may arise from using this tool.&lt;/li&gt;
&lt;li&gt;You are solely responsible for ensuring that your backups are complete and restorable.&lt;/li&gt;
&lt;li&gt;It is &lt;strong&gt;strongly recommended&lt;/strong&gt; to test the backup and restore process on a non‑critical system before relying on it for disaster recovery.&lt;/li&gt;
&lt;li&gt;Always verify that your USB drive is correctly labelled and has sufficient space before starting.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2 id="description"&gt;Description&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;BU&lt;/strong&gt; (USB Backup) creates a &lt;strong&gt;mirror backup&lt;/strong&gt; of your Debian/Ubuntu system onto a dedicated USB drive labelled &lt;code&gt;BU_Drive&lt;/code&gt;.&lt;br /&gt;
The backup includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/etc&lt;/code&gt; - system-wide configuration&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/home&lt;/code&gt; - all user data and settings&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;System blueprint&lt;/strong&gt; - package lists, crontabs, &lt;code&gt;/root&lt;/code&gt;, &lt;code&gt;/usr/local&lt;/code&gt;, &lt;code&gt;/opt&lt;/code&gt;, and custom GPG keyrings&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This blueprint allows you to &lt;strong&gt;rebuild a fully functional system in ~1 hour&lt;/strong&gt; after a catastrophic disk failure, saving you days of manual reconfiguration.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id="features"&gt;Features&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Delta-based space check&lt;/strong&gt; - only checks for the net increase in data, not the total source size&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automatic dependency installation&lt;/strong&gt; - installs &lt;code&gt;rsync&lt;/code&gt; and &lt;code&gt;less&lt;/code&gt; if missing (via &lt;code&gt;apt&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Coloured output&lt;/strong&gt; for clear progress and error reporting&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Shutdown mode&lt;/strong&gt; - backup then cleanly shut down the system&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Restore mode&lt;/strong&gt; - safely restore &lt;code&gt;/home&lt;/code&gt; from the backup&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Exclusions&lt;/strong&gt; - automatically excludes caches, thumbnails, and trash&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Detailed logging&lt;/strong&gt; - backup log saved on the USB drive&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Trap signals&lt;/strong&gt; - clean exit on Ctrl+C&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2 id="requirements"&gt;Requirements&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;A USB drive (or external disk) with a &lt;strong&gt;Linux-native filesystem&lt;/strong&gt; (e.g., &lt;code&gt;ext4&lt;/code&gt;, &lt;code&gt;XFS&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;The partition &lt;strong&gt;must be labelled&lt;/strong&gt; &lt;code&gt;BU_Drive&lt;/code&gt; (case-sensitive)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;rsync&lt;/code&gt; and &lt;code&gt;less&lt;/code&gt; (the script will try to install them automatically via &lt;code&gt;apt&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sudo&lt;/code&gt; privileges for backup and restore operations&lt;/li&gt;
&lt;li&gt;Debian or Ubuntu (or any derivative with &lt;code&gt;apt&lt;/code&gt; and &lt;code&gt;dpkg&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2 id="installation"&gt;Installation&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Download the script&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;wget https://codeberg.org/mort8088/bu/raw/branch/main/bu.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Make it executable&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;chmod +x bu.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;(Optional) Install system-wide&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;sudo cp bu.sh /usr/local/bin/bu
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Now you can run it simply as &lt;code&gt;bu&lt;/code&gt; from anywhere.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id="usb-drive-setup"&gt;USB Drive Setup&lt;/h2&gt;
&lt;p&gt;Before using BU, prepare your USB drive:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Partition and format&lt;/strong&gt; with a Linux filesystem (e.g., &lt;code&gt;ext4&lt;/code&gt;).&lt;br /&gt;
Using &lt;code&gt;gparted&lt;/code&gt; or command line:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;sudo mkfs.ext4 /dev/sdX1   # replace with your device
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Label the partition&lt;/strong&gt; as &lt;code&gt;BU_Drive&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;sudo e2label /dev/sdX1 BU_Drive
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Plug it in&lt;/strong&gt; - the system should auto-mount it. If not, mount it manually:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;sudo mount /dev/sdX1 /media/bu
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Now your drive is ready.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;
&lt;p&gt;Run the script from the terminal. &lt;em&gt;Don't run it with &lt;code&gt;sudo&lt;/code&gt; from the command line&lt;/em&gt;, all commands use &lt;code&gt;sudo&lt;/code&gt; internally - you will be prompted when needed.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;./bu.sh [OPTION]
&lt;/code&gt;&lt;/pre&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Option&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;(no option)&lt;/td&gt;
&lt;td&gt;Perform a full backup (interactive).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--shutdown&lt;/code&gt; or &lt;code&gt;-s&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Backup then shut down the system if successful.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--restore&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Restore &lt;code&gt;/home&lt;/code&gt; from the backup (destructive - see warning below).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--help&lt;/code&gt; or &lt;code&gt;-h&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Show detailed help.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="examples"&gt;Examples&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Normal backup&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;./bu.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Backup and shutdown&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;./bu.sh --shutdown
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Restore &lt;code&gt;/home&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;./bu.sh --restore
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2 id="how-it-works"&gt;How It Works&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Checks for dependencies&lt;/strong&gt; - installs &lt;code&gt;rsync&lt;/code&gt; and &lt;code&gt;less&lt;/code&gt; if missing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Finds the USB drive&lt;/strong&gt; - looks for a mounted partition labelled &lt;code&gt;BU_Drive&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Calculates required space&lt;/strong&gt; - uses a delta approach (explained below).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Saves the system blueprint&lt;/strong&gt; - package selections, crontabs, and critical system directories.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Performs the mirror backup&lt;/strong&gt; with &lt;code&gt;rsync&lt;/code&gt; - copies &lt;code&gt;/etc&lt;/code&gt; and &lt;code&gt;/home&lt;/code&gt; while excluding caches and trash.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Logs the operation&lt;/strong&gt; - the backup log is stored on the USB drive.
&lt;em&gt;This can get rather large delete it when done.&lt;/em&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;h2 id="restore-procedure-disaster-recovery"&gt;Restore Procedure (Disaster Recovery)&lt;/h2&gt;
&lt;p&gt;If your main hard drive fails, follow these steps to restore your system:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Install a base Debian/Ubuntu&lt;/strong&gt; on a new hard drive.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plug in your BU_Drive&lt;/strong&gt; and ensure it is mounted.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Install BU&lt;/strong&gt; on the new system (or just run the script from the USB).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Restore &lt;code&gt;/etc&lt;/code&gt; and &lt;code&gt;/home&lt;/code&gt;&lt;/strong&gt; manually (or use the script's &lt;code&gt;--restore&lt;/code&gt; for &lt;code&gt;/home&lt;/code&gt;):
&lt;ul&gt;
&lt;li&gt;Copy &lt;code&gt;/etc&lt;/code&gt; from the backup:
&lt;pre&gt;&lt;code class="language-bash"&gt;sudo rsync -a /media/bu/BU_Backups/$(hostname)/etc/ /etc/
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Restore &lt;code&gt;/home&lt;/code&gt; using the script:
&lt;pre&gt;&lt;code class="language-bash"&gt;./bu.sh --restore
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reinstall all packages&lt;/strong&gt; from the saved list:
&lt;pre&gt;&lt;code class="language-bash"&gt;sudo cp -a /media/bu/BU_Backups/$(hostname)/keyrings-backup/* /usr/share/keyrings/
sudo dpkg --set-selections &amp;lt; /media/bu/BU_Backups/$(hostname)/sysinfo/dpkg-selections.txt
sudo apt-get dselect-upgrade
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Copy back custom system folders&lt;/strong&gt; (&lt;code&gt;/root&lt;/code&gt;, &lt;code&gt;/usr/local&lt;/code&gt;, &lt;code&gt;/opt&lt;/code&gt;) from the backup.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;After a reboot, your system will be fully restored.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id="space-check-delta-mode"&gt;Space Check - Delta Mode&lt;/h2&gt;
&lt;p&gt;BU uses a &lt;strong&gt;delta space check&lt;/strong&gt; to avoid false alarms. Instead of requiring free space equal to the entire source, it only verifies that you have enough space for the &lt;strong&gt;net increase&lt;/strong&gt; in data plus a 1 GiB safety buffer.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If the backup is larger than the source (because files were deleted locally), no extra space is required.&lt;/li&gt;
&lt;li&gt;This is especially useful when your drive is nearly full but you're only adding a few small files.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2 id="troubleshooting"&gt;Troubleshooting&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Issue&lt;/th&gt;
&lt;th&gt;Solution&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&amp;quot;No drive with label 'BU_Drive' found&amp;quot;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Ensure the USB is plugged in, mounted, and correctly labelled.&lt;br&gt;Check with &lt;code&gt;lsblk -o LABEL,MOUNTPOINT&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&amp;quot;Insufficient free space&amp;quot;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The delta check indicates not enough room for the new/changed data. Free up space on the drive or use a larger one.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Rsync errors during backup&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Check the log file on the drive (&lt;code&gt;BU_Backups/$(hostname)/backup.log&lt;/code&gt;) for details. Try rerunning the backup.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Restore fails&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Make sure the drive is mounted and the backup directory exists. If needed, remount and retry.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Script asks for password repeatedly&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo&lt;/code&gt; caches credentials for a short time; if you step away, you may need to re-enter.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h2 id="credits"&gt;Credits&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Based on the &lt;strong&gt;USB Backup Tool (Version 1.1)&lt;/strong&gt; by &lt;a href="https://www.ezeelinux.com"&gt;Joe Collins&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Enhanced with delta space checks, blueprint saving, and improved error handling.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2 id="license"&gt;License&lt;/h2&gt;
&lt;p&gt;This program is free software; you can redistribute it and/or modify it under the terms of the &lt;strong&gt;GNU General Public License version 2&lt;/strong&gt; as published by the Free Software Foundation.&lt;/p&gt;
&lt;p&gt;See the &lt;a href="https://codeberg.org/mort8088/bu/src/branch/main/LICENSE"&gt;LICENSE&lt;/a&gt; file for full details.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;strong&gt;Happy backing up!&lt;/strong&gt; 🛡️&lt;/p&gt;

    &lt;footer&gt;
        &lt;p&gt;Thanks for keeping RSS feeds alive.&lt;/p&gt;
        &lt;p&gt;&lt;a href="mailto:fromfeed@mort8088.com?subject=RE%3A%20Back-ups%20in%20Linux"&gt;Reply by email&lt;/a&gt;&lt;/p&gt;
        &lt;p&gt;Leave a comment by replying to 
            &lt;a href="https://toot.wales/@mort8088/116919970507493785" target="_blank" title="Syndicated post on Mastodon"&gt;this post&lt;/a&gt;
            on Mastodon.&lt;/p&gt;
        
    &lt;/footer&gt;
&lt;/article&gt;
</description>
			<pubDate>Tue, 14 Jul 2026 01:00:00 +0100</pubDate>
		</item>
		<item xml:base="https://davehenry.blog/">
			<guid isPermaLink="true">https://davehenry.blog/2026/06/aimless-ramble/</guid>
			<link>https://davehenry.blog/2026/06/aimless-ramble/</link>
			<category>irl</category>
			<category>blogging</category>
			<title>Aimless Ramble</title>
			<description>&lt;article&gt;
    &lt;header&gt;
        
    &lt;/header&gt;    
    &lt;p&gt;I'm still feeling a bit directionless after the move. I haven't been able to settle into any sort of routine, so this post is just whatever sprang to mind from what I've been poking at this week.&lt;/p&gt;
&lt;h2 id="looking-at-logs"&gt;Looking at logs&lt;/h2&gt;
&lt;p&gt;As I always do for a while after posting to this blog, I spent a bit of time looking at the logs. I like to see where people are coming from and just how much of my traffic is script kiddies or bots. One of the nice things I spotted was just how many people are getting here from what I think of as the right side of the internet since the beginning of the year.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Hits&lt;/th&gt;
&lt;th&gt;Referrer&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;172&lt;/td&gt;
&lt;td&gt;&lt;a href="https://kagi.com/"&gt;https://kagi.com/&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;td&gt;&lt;a href="https://kagi.com/smallweb/"&gt;https://kagi.com/smallweb/&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.blogrolly.com/"&gt;https://www.blogrolly.com/&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;&lt;a href="https://toot.wales/"&gt;https://toot.wales/&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;&lt;a href="https://stream.indieweb.org"&gt;https://stream.indieweb.org&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;&lt;a href="https://searchmysite.net/"&gt;https://searchmysite.net/&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;I'm a search result in Kagi !😁 I'm so happy. There was also one from &lt;a href="https://bubbles.town/"&gt;bubbles.town&lt;/a&gt; which is also cool.&lt;/p&gt;
&lt;p&gt;Feed requests are evenly split over &lt;a href="https://davehenry.blog/rss.xml"&gt;rss.xml&lt;/a&gt; &amp;amp; &lt;a href="https://davehenry.blog/atom.xml"&gt;atom.xml&lt;/a&gt; and there is one person who is picking up index.xml 👋hello to you sir/madam.&lt;/p&gt;
&lt;h2 id="servers-with-personality"&gt;Servers with personality&lt;/h2&gt;
&lt;p&gt;While catching up on my feeds I was reading the back-issues of &lt;a href="https://shellsharks.com/"&gt;shellsharks Scrolls&lt;/a&gt; - &lt;a href="https://shellsharks.com/scrolls/scroll/2026-05-01"&gt;Scroll ūndēquadrāgintā&lt;/a&gt;. Where I ran across some posts about running websites form old hardware it's quite cool and speaks to the Hacker in me that you really don't need that much power to run a website.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://kaimac.org/w/websites-old-hw"&gt;Websites on old hardware&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caolan.uk/links/servers/"&gt;Servers with Personality&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="myposse-development"&gt;myPOSSE development&lt;/h2&gt;
&lt;p&gt;I've almost stalled on my rewrite of myPOSSE. I want to do so much with it that it's been hard to focus and get any one thing done. I've got a road map in my head and I need to stop everything and write that up first.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;L8rs ppl, :-)&lt;/p&gt;

    &lt;footer&gt;
        &lt;p&gt;Thanks for keeping RSS feeds alive.&lt;/p&gt;
        &lt;p&gt;&lt;a href="mailto:fromfeed@mort8088.com?subject=RE%3A%20Aimless%20Ramble"&gt;Reply by email&lt;/a&gt;&lt;/p&gt;
        &lt;p&gt;Leave a comment by replying to 
            &lt;a href="https://toot.wales/@mort8088/116755652888787010" target="_blank" title="Syndicated post on Mastodon"&gt;this post&lt;/a&gt;
            on Mastodon.&lt;/p&gt;
        
    &lt;/footer&gt;
&lt;/article&gt;
</description>
			<pubDate>Mon, 15 Jun 2026 01:00:00 +0100</pubDate>
		</item>
		<item xml:base="https://davehenry.blog/">
			<guid isPermaLink="true">https://davehenry.blog/2026/06/the-house-move-is-done/</guid>
			<link>https://davehenry.blog/2026/06/the-house-move-is-done/</link>
			<category>irl</category>
			<title>The house move is done.</title>
			<description>&lt;article&gt;
    &lt;header&gt;
        
    &lt;/header&gt;    
    &lt;h2 id="notes"&gt;📓 Notes&lt;/h2&gt;
&lt;p&gt;So the move is done, and I've finally got my systems back up. There was the small issue for my DNS crapping out so I had to replace the SD card. And then I spent a few weeks catching up on all my RSS feeds.&lt;/p&gt;
&lt;p&gt;I've started working on my next version myPOSSE, I'll have to do a /Page for it to keep track of its development, it's going to be a big project if I do all the things I want for it.&lt;/p&gt;
&lt;h2 id="reading"&gt;📚 Reading&lt;/h2&gt;
&lt;p&gt;I finally finished &lt;em&gt;Hairy Plopper and the sippy cup of vindaloo&lt;/em&gt; by she who must not be named, and started &lt;em&gt;Hairy Plopper and the secret society of the roast chicken&lt;/em&gt;, but I'm only reading them when I don't have something better to read.&lt;/p&gt;
&lt;p&gt;Which brings me to...&lt;/p&gt;
&lt;p&gt;&lt;aside style="width: 450px; height: 268px; display:inline-block;"&gt;    &lt;script src="https://uk.bookshop.org/widgets.js" data-type="book" data-affiliate-id="12196" data-sku="9781804953693"&gt;&lt;/script&gt;&lt;/aside&gt;&lt;/p&gt;
&lt;p&gt;Finished in just under a week. I enjoyed it even after I spoke to a friend of mine who is himself a sci-fi writer who said that the science isn't at all accurate. To which I say &amp;quot;So what, it's not why I'm reading it 😛&amp;quot; and after that I picked...&lt;/p&gt;
&lt;p&gt;&lt;aside style="width: 450px; height: 268px; display:inline-block;"&gt;    &lt;script src="https://uk.bookshop.org/widgets.js" data-type="book" data-affiliate-id="12196" data-sku="9781785030253"&gt;&lt;/script&gt;&lt;/aside&gt;&lt;/p&gt;
&lt;p&gt;Page 5 (2%)&lt;/p&gt;
&lt;p&gt;It's set on the moon, and that's as far as I've got.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Just a quick post to get back into things.&lt;/p&gt;

    &lt;footer&gt;
        &lt;p&gt;Thanks for keeping RSS feeds alive.&lt;/p&gt;
        &lt;p&gt;&lt;a href="mailto:fromfeed@mort8088.com?subject=RE%3A%20The%20house%20move%20is%20done."&gt;Reply by email&lt;/a&gt;&lt;/p&gt;
        &lt;p&gt;Leave a comment by replying to 
            &lt;a href="https://toot.wales/@mort8088/116719005218524716" target="_blank" title="Syndicated post on Mastodon"&gt;this post&lt;/a&gt;
            on Mastodon.&lt;/p&gt;
        
    &lt;/footer&gt;
&lt;/article&gt;
</description>
			<pubDate>Tue, 09 Jun 2026 01:00:00 +0100</pubDate>
		</item>
		<item xml:base="https://davehenry.blog/">
			<guid isPermaLink="true">https://davehenry.blog/2026/03/moving-experiments-in-a-homelab/</guid>
			<link>https://davehenry.blog/2026/03/moving-experiments-in-a-homelab/</link>
			<category>irl</category>
			<category>indieWeb</category>
			<category>homeDev</category>
			<title>Moving &amp;amp; Experiments in a homelab</title>
			<description>&lt;article&gt;
    &lt;header&gt;
        
    &lt;/header&gt;    
    &lt;p&gt;Just to catch you up. We've been told by our landlords that they intend to sell the property at auction, so we have to move out as soon as possible. We don't &amp;quot;&lt;em&gt;have to&lt;/em&gt;&amp;quot; but whenever this sort of thing happens we tend to move because we don't want to have to deal with whoever the new landlord is. It also means that while they try and find a buyer they aren't making any money off us.&lt;/p&gt;
&lt;p&gt;We've found a place to move to but it's a good deal smaller than our current place, so we're going to need to downsize and put a fair bit into storage for a while.&lt;/p&gt;
&lt;p&gt;Mum and Dads place is finally going on the market. My sister has done a great job of doing the place up so we get the best price for it. That'll be the last part of the estate done and then we can start looking to buy a place of our own.&lt;/p&gt;
&lt;p&gt;I've been working on a Content Management System(&lt;a href="https://en.wikipedia.org/wiki/Content_management_system"&gt;CMS&lt;/a&gt;) for my home lab. The idea is that it's like WordPress if you ran WordPress on a computer in your home and it published your stuff to an external server.&lt;/p&gt;
&lt;p&gt;I have a dislike of all CMS systems where the admin system is out in the open for scrip kiddies to hammer on. In my workflow the public server is a static site. Any APIs on that server should be read only, and if you do need to receive data from outside then it should not process it in any way just save it as is.&lt;/p&gt;
&lt;p&gt;The CMS inside your network shouldn't need an &lt;a href="https://en.wikipedia.org/wiki/Transport_Layer_Security#SSL_1.0,_2.0,_and_3.0"&gt;SSL&lt;/a&gt; certificate or &lt;a href="https://en.wikipedia.org/wiki/Cross-origin_resource_sharing"&gt;CORS&lt;/a&gt; protection because it's on your network. If someone is doing a man in the middle attack they're inside the house already and you have bigger problems.&lt;/p&gt;
&lt;p&gt;Anyway for the most part I've been playing with making a the frontend for a basic markdown editor and an &lt;a href="https://en.wikipedia.org/wiki/RSS"&gt;RSS&lt;/a&gt; reader. I've been trying to make them using semantic HTML and jQuery rather than using a big box JavaScript framework. I used to use jQuery a lot back in the day. I might keep it or I might try and do them as more a web component style thing.&lt;/p&gt;
&lt;p&gt;Did you know, your not supposed to use frame sets in HTML any more, you have to use an iframe tag. 🙁&lt;/p&gt;
&lt;p&gt;Anyway I've still got some packing to do.&lt;/p&gt;

    &lt;footer&gt;
        &lt;p&gt;Thanks for keeping RSS feeds alive.&lt;/p&gt;
        &lt;p&gt;&lt;a href="mailto:fromfeed@mort8088.com?subject=RE%3A%20Moving%20%26amp%3B%20Experiments%20in%20a%20homelab"&gt;Reply by email&lt;/a&gt;&lt;/p&gt;
        &lt;p&gt;Leave a comment by replying to 
            &lt;a href="https://toot.wales/@mort8088/116277928052342440" target="_blank" title="Syndicated post on Mastodon"&gt;this post&lt;/a&gt;
            on Mastodon.&lt;/p&gt;
        
    &lt;/footer&gt;
&lt;/article&gt;
</description>
			<pubDate>Mon, 23 Mar 2026 00:00:00 Z</pubDate>
		</item>
		<item xml:base="https://davehenry.blog/">
			<guid isPermaLink="true">https://davehenry.blog/2026/02/a-weekend-of-game-development/</guid>
			<link>https://davehenry.blog/2026/02/a-weekend-of-game-development/</link>
			<category>gameDev</category>
			<category>monoGame</category>
			<category>cSharp</category>
			<title>A Weekend of Game Development</title>
			<description>&lt;article&gt;
    &lt;header&gt;
        
    &lt;/header&gt;    
    &lt;p&gt;It's been a while since I'd even looked at SystemX and I was starting to think I was over doing things, so as a small project over the weekend I thought I'd just play a little.&lt;/p&gt;
&lt;p&gt;First I opened a blank MonoGame project and added some code for a &lt;code&gt;SpriteSheetLibrary&lt;/code&gt;. Then a quick and dirty &lt;code&gt;FontManager&lt;/code&gt;. Next up a &lt;code&gt;SpriteBatchExtender&lt;/code&gt;. Just the sort of things to make it easy to put sprites and strings on the screen.&lt;/p&gt;
&lt;p&gt;&lt;img src="images/GameDev/20260222_monogame/f9591f1b-b7a4-4f50-8d7b-feaa79e690f3.webp" alt="f9591f1b-b7a4-4f50-8d7b-feaa79e690f3.webp" /&gt;&lt;/p&gt;
&lt;p&gt;Next thing I know I poking around in the MonoGame tutorials and I found a really nice &lt;code&gt;DrawLine&lt;/code&gt; function so I thought I'd see how fast it was.&lt;/p&gt;
&lt;p&gt;I ended up with a 1920x1080 Window drawing 3386 Sprites. Over the top of that I had 150,000 points that were all moving at a random velocities each with collision detection with the sides of the screen. So I paired them up to make 75,000 lines. Which was keeping a steady 60 Fps with Vsync.&lt;/p&gt;
&lt;p&gt;&lt;img src="images/GameDev/20260222_monogame/Screenshotfrom2026-02-2210-00-34.webp" alt="Screenshot from 2026-02-22 10-00-34.webp" /&gt;&lt;/p&gt;
&lt;p&gt;Now what...&lt;/p&gt;
&lt;p&gt;Well I can draw lines and boxes, I seem to remember an explanation of the A* algorithm that &lt;a href="https://www.youtube.com/watch?v=icZj67PTFhc"&gt;javidx9 did on his YouTube channel &lt;/a&gt; a few years back...&lt;/p&gt;
&lt;p&gt;It took a few hours to convert the C++ to C# and make it look tidy. But then I got board of clicking the grid to make obstacles.&lt;/p&gt;
&lt;p&gt;&lt;img src="images/GameDev/20260222_monogame/Screenshotfrom2026-02-2214-29-04.webp" alt="Screenshotfrom2026-02-2214-29-04.webp" /&gt;&lt;/p&gt;
&lt;p&gt;What I need is a maze for it to solve, back to &lt;a href="https://www.youtube.com/watch?v=Y37-gB83HKE"&gt;javidx9 for his programming Mazes&lt;/a&gt; video. Luckily I'd already converted this code when I was working on &lt;a href="https://mort8088.itch.io/maze-fodder"&gt;Maze Fodder&lt;/a&gt; so after some fettling to get the two bits of code to work together, and &lt;em&gt;voilà&lt;/em&gt; a working random maze solver.&lt;/p&gt;
&lt;p&gt;&lt;img src="images/GameDev/20260222_monogame/Screenshotfrom2026-02-2217-19-16.webp" alt="Screenshotfrom2026-02-2217-19-16.webp" /&gt;&lt;/p&gt;
&lt;p&gt;Well here are a few code snip-its that came out of this little playtime that I quite liked:-&lt;/p&gt;
&lt;h2 id="nextvector2"&gt;NextVector2&lt;/h2&gt;
&lt;p&gt;An extension to the &lt;code&gt;Random&lt;/code&gt; class gives you a &lt;code&gt;Vector2&lt;/code&gt; in the given x &amp;amp; y ranges with another extension for &lt;code&gt;NextFloat&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;public static Vector2 NextVector2(this Random rand, float minX, float maxX,float minY, float maxY)  
{  
    return new Vector2(rand.NextFloat(minX, maxX), rand.NextFloat(minY, maxY));  
}  
  
public static float NextFloat(this Random rand, float minValue, float maxValue)  
{  
    return (float)rand.NextDouble() * (maxValue - minValue) + minValue;  
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="getrandomcolor"&gt;GetRandomColor&lt;/h2&gt;
&lt;p&gt;Get a random predefined colour from the MonoGame &lt;code&gt;Color&lt;/code&gt; class properties.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;public static Color GetRandomColor()  
{  
    // Get all static properties of the Color class that return Color  
    var colorProperties = typeof(Color)  
        .GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static)  
        .Where(p =&amp;gt; p.PropertyType == typeof(Color))  
        .ToArray();  
  
    var randomIndex = Random.Shared.Next(colorProperties.Length);  
    return (Color)colorProperties[randomIndex].GetValue(null)!;  
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="drawline"&gt;DrawLine&lt;/h2&gt;
&lt;p&gt;This one came from the &lt;a href="https://github.com/MonoGame/MonoGame.Samples/blob/3.8.4/NeonShooter/NeonShooter.Core/Game/Extensions.cs#L14"&gt;MonoGame.Samples NeoShooter&lt;/a&gt;. I added it to my &lt;code&gt;SpriteBatchExtended&lt;/code&gt; which I inherit from &lt;code&gt;SpriteBatch&lt;/code&gt; so &lt;code&gt;Draw&lt;/code&gt; is a local method call.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;public void DrawLine(Vector2 start, Vector2 end, Color color, float thickness = 2f)  
{
    var delta = end - start;  
    Draw(  
        _blankTexture,   
        start,
        null,   
        color,   
        delta.ToAngle(),
        new Vector2(0, 0.5f),
        new Vector2(delta.Length(), thickness),
        SpriteEffects.None,
        0f);  
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You will need a &lt;code&gt;_blankTexture&lt;/code&gt; which you can make by:-&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-cSharp"&gt;// class private
private Texture2D _blankTexture;

public void Initialize()  
{  
    // ...
  
    _blankTexture = new Texture2D(game.GraphicsDevice, 1, 1);  
    _blankTexture.SetData([Color.White]);  
    
    // ...
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="drawbox"&gt;DrawBox&lt;/h2&gt;
&lt;p&gt;Once you have the &lt;code&gt;_blankTexture&lt;/code&gt; you might as well have a Draw Box method&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-cSharp"&gt;public void DrawBox(Rectangle destinationRectangle, Color color)  
{  
    Draw(_blankTexture, destinationRectangle, color);  
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="drawable-game-component-fps"&gt;Drawable Game Component (FPS)&lt;/h2&gt;
&lt;p&gt;And something everybody needs 😁&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-cSharp"&gt;using System;  
using Microsoft.Xna.Framework;  
using Microsoft.Xna.Framework.Graphics;  
  
namespace game001.DrawableGameComponents;  
  
public class Fps(Game game, SpriteFont spriteFont, Vector2 position ) : DrawableGameComponent(game)  
{  
    private readonly SpriteBatch _sb = new(game.GraphicsDevice);  
  
    private int _frameRate;  
    private int _frameCounter;  
    private TimeSpan _elapsedTime = TimeSpan.Zero;  
  
    public override void Update(GameTime gameTime)  
    {
        _elapsedTime += gameTime.ElapsedGameTime;  
  
        if (_elapsedTime &amp;lt;= TimeSpan.FromSeconds(1))
            return;
            
        _elapsedTime -= TimeSpan.FromSeconds(1);  
        _frameRate = _frameCounter;  
        _frameCounter = 0;  
    }  
  
    public override void Draw(GameTime gameTime)  
    {
        _frameCounter++;  
  
        _sb.Begin();  
        _sb.DrawString(spriteFont, $&amp;quot;FPS: {_frameRate}&amp;quot;, position, Color.Black);  
        _sb.End();  
    }  
}
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;p&gt;Well that's it for my productive Game Development weekend. 🤓&lt;/p&gt;

    &lt;footer&gt;
        &lt;p&gt;Thanks for keeping RSS feeds alive.&lt;/p&gt;
        &lt;p&gt;&lt;a href="mailto:fromfeed@mort8088.com?subject=RE%3A%20A%20Weekend%20of%20Game%20Development"&gt;Reply by email&lt;/a&gt;&lt;/p&gt;
        &lt;p&gt;Leave a comment by replying to 
            &lt;a href="https://toot.wales/@mort8088/116116278192659749" target="_blank" title="Syndicated post on Mastodon"&gt;this post&lt;/a&gt;
            on Mastodon.&lt;/p&gt;
        
    &lt;/footer&gt;
&lt;/article&gt;
</description>
			<pubDate>Sun, 22 Feb 2026 00:00:00 Z</pubDate>
		</item>
		<item xml:base="https://davehenry.blog/">
			<guid isPermaLink="true">https://davehenry.blog/2026/02/rambling-catch-up/</guid>
			<link>https://davehenry.blog/2026/02/rambling-catch-up/</link>
			<title>Rambling catch-up</title>
			<description>&lt;article&gt;
    &lt;header&gt;
        
    &lt;/header&gt;    
    &lt;h2 id="notes"&gt;📓 Notes&lt;/h2&gt;
&lt;p&gt;Well hello there, nice to see you're still checking in, it's been a while since I have so thank you. Don't worry I haven't been sat in a dark corner of my on sad, I've just been busy with a few things and generally not thinking about being on-line.🏖️&lt;/p&gt;
&lt;h2 id="reading"&gt;📚 Reading&lt;/h2&gt;
&lt;p&gt;I'm back reading &lt;em&gt;Hairy Plopper and the sippy cup of vindaloo&lt;/em&gt; by she who must not be named - 37% done. It took a backseat over December and January while I read the far superior Murderbot Diaries, but I really need to finish the series just to get it out of the way. Though I expect I'll be back to Murderbot when the new book &lt;code&gt;Platform Decay&lt;/code&gt; comes out in May. 🥰&lt;/p&gt;
&lt;h2 id="dev-log"&gt;🖥️ Dev Log&lt;/h2&gt;
&lt;p&gt;I've been playing around with making stat reports from the log cutter I built last year. It's been a fun distraction from working on SystemX, but I'll probably get back to that soon.📊&lt;/p&gt;
&lt;h2 id="work"&gt;👷 Work&lt;/h2&gt;
&lt;p&gt;It's been a strange time at work, they seem to be running headlong into using AI and don't seem to be thinking of the problems it's going cause.&lt;/p&gt;
&lt;p&gt;Take last week for example. I had a piece of work to do and I was getting on with it but then the API I needed to call was found to be &amp;quot;Not fit for purpose&amp;quot;. Yes, they did use AI to make it, how did you guess? So I was told to stop what I was doing and they'll let me know what I should do next.&lt;/p&gt;
&lt;p&gt;Well next was they wanted me to rewrite my working system in GO because C# was the problem. In the meeting I said &amp;quot;That will put the project plan at risk because I know nothing about GO&amp;quot; and the response I got was &amp;quot;It's not a risk, just get AI to write the code for you&amp;quot;. 🤦‍♂️&lt;/p&gt;
&lt;p&gt;Luckily that wasn't &lt;em&gt;my&lt;/em&gt; team lead, what he told me was:-&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;quot;Take a few days to learn GO while a senior developer uses AI to convert the project. That way at least someone will know how to maintain it&amp;quot;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It took me 4 days to get to the point where I could give a reasoned argument as to why GO was a terrible language, and another day to prove that I had already done the work in C#. So everyone could &amp;quot;&lt;em&gt;Go Do One&lt;/em&gt;&amp;quot;.&lt;/p&gt;
&lt;p&gt;All in all a positive result:-&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Learned a new language well enough to hate it. Even if I did find one thing I like about it, it's not enough to make me want to use it.&lt;/li&gt;
&lt;li&gt;Found out one of our senior developers is hard of thinking, unless he can write an AI prompt to find out what it is he needs to think.&lt;/li&gt;
&lt;li&gt;Have shown that all the delays on this project were unnecessarily caused by another department, we're talking months wasted on things that will never be used.&lt;/li&gt;
&lt;li&gt;My code is awesome and worked fine in the first place. 🤓&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Doesn't mean I wasn't stressed AF, regularly, this last few weeks. But it's all worked out well in the end.🤡&lt;/p&gt;
&lt;h2 id="world"&gt;🗺️ World&lt;/h2&gt;
&lt;p&gt;With America televising public executions and rounding up undesirables into concentration camps, I'm doing my level best to avoid news from the tinpot republic. I've stopped watching the nice news channels I used to follow on YouTube because even they're starting to feel like something out of the DC universe.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.pinimg.com/originals/54/6d/8d/546d8decbb6799b4372b18e0520c645a.gif" alt="...So dark. You sure you're not from the DC universe?" /&gt;&lt;/p&gt;
&lt;p&gt;There are more than enough personnel blogs around to keep me amused and they're not all by Americans screaming into the literal void. There are quite a few Europeans doing it as well.🇪🇺&lt;/p&gt;
&lt;p&gt;Don't be mistaken I'm not burying my head in the sand, I have opinions and I'll share them with you if you ask the wrong question or make a stupid assertion.&lt;/p&gt;
&lt;p&gt;That doesn't mean I have to fill my daily information feed with the same &lt;em&gt;oh, look how bad things are&lt;/em&gt; &amp;quot;news&amp;quot;, I'd rather be playing with puppies.🐕&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Anyway, I'm off to continue my binge watching run of all Pixar films, I'm currently on &lt;a href="https://en.wikipedia.org/wiki/Onward_(film)"&gt;&lt;em&gt;Onward&lt;/em&gt;&lt;/a&gt;. 🧙‍♂️&lt;/p&gt;

    &lt;footer&gt;
        &lt;p&gt;Thanks for keeping RSS feeds alive.&lt;/p&gt;
        &lt;p&gt;&lt;a href="mailto:fromfeed@mort8088.com?subject=RE%3A%20Rambling%20catch-up"&gt;Reply by email&lt;/a&gt;&lt;/p&gt;
        &lt;p&gt;Leave a comment by replying to 
            &lt;a href="https://toot.wales/@mort8088/116065444011463697" target="_blank" title="Syndicated post on Mastodon"&gt;this post&lt;/a&gt;
            on Mastodon.&lt;/p&gt;
        
    &lt;/footer&gt;
&lt;/article&gt;
</description>
			<pubDate>Sat, 14 Feb 2026 00:00:00 Z</pubDate>
		</item>
		<item xml:base="https://davehenry.blog/">
			<guid isPermaLink="true">https://davehenry.blog/2026/01/week-notes-2026-01/</guid>
			<link>https://davehenry.blog/2026/01/week-notes-2026-01/</link>
			<category>weeknotes</category>
			<title>Week Notes 2026-01</title>
			<description>&lt;article&gt;
    &lt;header&gt;
        
    &lt;/header&gt;    
    &lt;h2 id="notes"&gt;📓 Notes&lt;/h2&gt;
&lt;p&gt;I started back at work today, and It didn't go as badly as I expected. I almost know what I'm doing, it's good to get back into a routine.&lt;/p&gt;
&lt;p&gt;I'm going to have to try and make these weekly posts a little less boring, but no promises.&lt;/p&gt;
&lt;h2 id="dev-log"&gt;🖥️ Dev Log&lt;/h2&gt;
&lt;p&gt;I've updated the &lt;a href="/about/"&gt;About Me&lt;/a&gt; page. I never liked the old one, so I pulled the &amp;quot;&lt;em&gt;Who am I&lt;/em&gt;&amp;quot; bit from my first Blaugust post last year.&lt;/p&gt;
&lt;h2 id="links"&gt;🕸️ Links&lt;/h2&gt;
&lt;h3 id="blog-posts"&gt;📰 Blog posts&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.joanwestenberg.com/the-case-for-blogging-in-the-ruins/"&gt;The Case for Blogging in the Ruins&lt;/a&gt;&lt;br /&gt;
Again with the you should start a blog... well if we keep reminding people maybe they'll start listening.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nation.cymru/feature/how-a-welsh-scientists-idiot-brain-became-a-global-bestseller-and-changed-how-millions-think/"&gt;How a Welsh scientist’s ‘Idiot Brain’ became a global bestseller and changed how millions think&lt;/a&gt;&lt;br /&gt;
I have already added it to my &lt;a href="https://uk.bookshop.org/wishlists/c2217f5a8be87ab4fe50dc193049b4676c770fcf"&gt;Bookshop.org Wishlist&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://takes.jamesomalley.co.uk/p/this-might-be-oversharing" title="How I rebooted my social life - by James O'Malley"&gt;How I rebooted my social life - by James O'Malley&lt;/a&gt;&lt;br /&gt;
I could have written this, right up to the point where he does something about it...&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tracydurnell.com/2025/01/09/sanding-off-friction-from-indie-web-connection/"&gt;Sanding off friction from indie web connection – Tracy Durnell's Mind Garden&lt;/a&gt;&lt;br /&gt;
An interesting read if you're at all interested in the indie web.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="reading"&gt;📚 Reading&lt;/h2&gt;
&lt;p&gt;&lt;aside style="width: 450px; height: 268px; display:inline-block;"&gt;    &lt;script src="https://uk.bookshop.org/widgets.js" data-type="book" data-affiliate-id="12196" data-sku="9781250389848"&gt;&lt;/script&gt;&lt;/aside&gt;&lt;/p&gt;
&lt;p&gt;I finished Volume 3, It was hard getting into &lt;em&gt;&lt;strong&gt;System Collapse&lt;/strong&gt;&lt;/em&gt; because I knew I was missing a story, But I got &lt;em&gt;&lt;strong&gt;Network Effect&lt;/strong&gt;&lt;/em&gt; today so I can start that now. I may have to reread them all once I'm done with this read through.&lt;/p&gt;
&lt;p&gt;For some reason &lt;a href="https://uk.bookshop.org/"&gt;bookshop.org&lt;/a&gt; doesn't have a listing for &lt;em&gt;&lt;strong&gt;Network Effect&lt;/strong&gt;&lt;/em&gt; so I can't give you a link, and I am ashamed to say I had to get it from amazon but I'm sure as sh!t not going to link to them.&lt;/p&gt;
&lt;h2 id="films"&gt;🎞️ Films&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.justwatch.com/uk/movie/arcadian"&gt;Arcadian (2024)&lt;/a&gt;&lt;br /&gt;
Interesting, they should have died a lot seeing as how they kept leaving doors open everywhere.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;I still don't know how I'm going to sign off these things this year...🤔&lt;/p&gt;

    &lt;footer&gt;
        &lt;p&gt;Thanks for keeping RSS feeds alive.&lt;/p&gt;
        &lt;p&gt;&lt;a href="mailto:fromfeed@mort8088.com?subject=RE%3A%20Week%20Notes%202026-01"&gt;Reply by email&lt;/a&gt;&lt;/p&gt;
        &lt;p&gt;Leave a comment by replying to 
            &lt;a href="https://toot.wales/@mort8088/115844603661965835" target="_blank" title="Syndicated post on Mastodon"&gt;this post&lt;/a&gt;
            on Mastodon.&lt;/p&gt;
        
    &lt;/footer&gt;
&lt;/article&gt;
</description>
			<pubDate>Mon, 05 Jan 2026 00:00:00 Z</pubDate>
		</item>
		<item xml:base="https://davehenry.blog/">
			<guid isPermaLink="true">https://davehenry.blog/2025/12/death-to-2025/</guid>
			<link>https://davehenry.blog/2025/12/death-to-2025/</link>
			<category>2025</category>
			<category>blogging</category>
			<title>Death to 2025</title>
			<description>&lt;article&gt;
    &lt;header&gt;
        
    &lt;/header&gt;    
    &lt;h2 id="notes"&gt;📓 Notes&lt;/h2&gt;
&lt;p&gt;This year has had, like all good manic depressives, its ups and its downs. We lost my mum, and I've had a few bouts of depression and I've let the &lt;a href="https://en.wikipedia.org/wiki/Seasonal_affective_disorder"&gt;SAD&lt;/a&gt; get to me a little this winter. But on the up side I got a new computer, I finished the first version of myPOSSE, I got back into writing games, and working on my game engine with Monogame.&lt;/p&gt;
&lt;p&gt;Our plan for next year is that once my parents estate gets sorted out and we know what I've been left with. We're going to buy a house and start putting things in place for me to retire. Conservatively I think we might be getting close to being ready in about 15 years.&lt;/p&gt;
&lt;p&gt;For now I'm just taking things one day at a time.&lt;/p&gt;
&lt;h2 id="blog-posts-53"&gt;📰 Blog posts - 53&lt;/h2&gt;
&lt;p&gt;This year I posted more than I have ever done before. Mostly because of the weekly notes which started to feel a bit stale by the end of the year. I might keep them up but I might also change up the format, we'll have to see. But all in all I am mostly happy with the way the site has gone.&lt;/p&gt;
&lt;p&gt;The vast majority of new people reading this sorry excuse for a blog, I picked up during Blaugust. So a heartfelt Hello, welcome, and thank you to all of you that stuck around to the end of the year.&lt;/p&gt;
&lt;p&gt;I'm going to keep posting, and as always, most delays are because I had a new idea, that I either made work or gave up on. Trying something new is always fun.&lt;/p&gt;
&lt;h2 id="web-development"&gt;🕸️ Web Development&lt;/h2&gt;
&lt;p&gt;I moved my server to a new host this year and wrote a new &lt;a href="https://en.wikipedia.org/wiki/Static_site_generator"&gt;SSG&lt;/a&gt;, I've been working on an API for a few Indie-Web features. And as always I've had more than a few ideas for things I want to write.&lt;/p&gt;
&lt;h2 id="game-development"&gt;🕹️ Game Development&lt;/h2&gt;
&lt;p&gt;SystemX is coming along slowly but surely, and my goodness it's fun. Still nothing to show for it yet though, but I'm having a blast when I can get myself to open the editor.&lt;/p&gt;
&lt;h2 id="reading-9"&gt;📚 Reading - 9&lt;/h2&gt;
&lt;p&gt;Probably the closest thing I had to a resolution this year was read more, I don't think I did too badly&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Harry Potter and the Philosopher's Stone&lt;/li&gt;
&lt;li&gt;Harry Potter and the Chamber of Secrets&lt;/li&gt;
&lt;li&gt;Harry Potter and the Prisoner of Azkaban&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;Harry Potter and the goblet of fire (&lt;em&gt;In Progress&lt;/em&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I needed something simple and easy to read so I could get back into the habit of reading again and as per my &lt;a href="/books/#Disclaimer"&gt;Disclaimer&lt;/a&gt; I got mine from a local charity shop. The only problem now is I feel I need to finish the series. I'm currently on book 4.&lt;/p&gt;
&lt;p&gt;&lt;aside style="width: 450px; height: 268px; display:inline-block;"&gt;    &lt;script src="https://uk.bookshop.org/widgets.js" data-type="book" data-affiliate-id="12196" data-sku="9781804990292"&gt;&lt;/script&gt;&lt;/aside&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Unseen Academicals (Discworld Novel 37)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I had tried to start reading this back last year but for one reason or another I just stopped. This time though it was the third book for the year and I was in a better place to give it the attention it deserved. Yet another fantastic chapter in the Discworld series.&lt;/p&gt;
&lt;p&gt;&lt;aside style="width: 450px; height: 268px; display:inline-block;"&gt;    &lt;script src="https://uk.bookshop.org/widgets.js" data-type="book" data-affiliate-id="12196" data-sku="9781250389848"&gt;&lt;/script&gt;&lt;/aside&gt;&lt;/p&gt;
&lt;ol start="5"&gt;
&lt;li&gt;The Murderbot Diaries: All Systems Red&lt;/li&gt;
&lt;li&gt;The Murderbot Diaries: Artificial Condition&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;aside style="width: 450px; height: 268px; display:inline-block;"&gt;    &lt;script src="https://uk.bookshop.org/widgets.js" data-type="book" data-affiliate-id="12196" data-sku="9781250389831"&gt;&lt;/script&gt;&lt;/aside&gt;&lt;/p&gt;
&lt;ol start="7"&gt;
&lt;li&gt;The Murderbot Diaries: Rogue Protocol&lt;/li&gt;
&lt;li&gt;The Murderbot Diaries: Exit Strategy&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;aside style="width: 450px; height: 268px; display:inline-block;"&gt;    &lt;script src="https://uk.bookshop.org/widgets.js" data-type="book" data-affiliate-id="12196" data-sku="9781250389848"&gt;&lt;/script&gt;&lt;/aside&gt;&lt;/p&gt;
&lt;ol start="9"&gt;
&lt;li&gt;The Murderbot Diaries: Fugitive Telemetry&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;The Murderbot Diaries: System Collapse(&lt;em&gt;In Progress&lt;/em&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It was my 50th birthday this year and on the run up to my actual birthday my Wife decided to give me 50 gifts over 50 days and one of them was The Murderbot Diaries Vol. 1. To be honest I wanted to get it in the new year anyway, but I was a little worried because I've not really tried sci-fi books before so I wasn't sure I'd like it. I needn't have worried It was amazing I couldn't put it down and read both stories in 48 hours which is unheard of for me even if they are really short.&lt;/p&gt;
&lt;p&gt;After seeing how fast I got through the Volume 1 the Wife went and got Volume 2 &amp;amp; 3 as soon as she could and gave me volume 2 on my Birthday. I finished it in less than 24 hours. And volume 3 for Christmas Day. I Love Murderbot, but I'm having a slight problem finding a copy of &lt;em&gt;&lt;strong&gt;Network Effect&lt;/strong&gt;&lt;/em&gt; that's not from Amazon.&lt;/p&gt;
&lt;h2 id="films"&gt;🎞️ Films&lt;/h2&gt;
&lt;p&gt;Watched a lot of films this year mostly on streaming a few rented early.&lt;/p&gt;
&lt;h3 id="my-list-of-worth-watching"&gt;My list of worth watching&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://www.justwatch.com/uk/movie/thunderbolts"&gt;Thunderbolts* (2025)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.justwatch.com/uk/movie/boy-kills-world"&gt;Boy Kills World (2024)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.justwatch.com/uk/movie/the-wild-robot"&gt;The Wild Robot (2024)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.justwatch.com/uk/movie/novocaine-2025"&gt;Novocaine (2025)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.justwatch.com/uk/movie/the-electric-state"&gt;The Electric State (2025)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.justwatch.com/uk/movie/thelma-2024"&gt;Thelma (2024)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.justwatch.com/uk/movie/get-away"&gt;Get Away (2024)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.justwatch.com/uk/movie/the-fall-guy"&gt;The Fall Guy (2024)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.justwatch.com/uk/movie/in-the-shadow-of-the-moon-2019"&gt;In the Shadow of the Moon (2019)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.justwatch.com/uk/movie/superman-2025"&gt;Superman (2025)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.justwatch.com/uk/movie/the-fantastic-four"&gt;The Fantastic 4: First Steps (2025)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.justwatch.com/uk/movie/hellboy-the-crooked-man"&gt;Hellboy: The Crooked Man (2024)&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="tv"&gt;📺 TV&lt;/h2&gt;
&lt;p&gt;Not a bad year for TV, there were some disappointments but on the whole we got by.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;I'm going to have to come up with a new sign off for these posts but until next year, Stay Lucky.🤦‍♂️&lt;/p&gt;

    &lt;footer&gt;
        &lt;p&gt;Thanks for keeping RSS feeds alive.&lt;/p&gt;
        &lt;p&gt;&lt;a href="mailto:fromfeed@mort8088.com?subject=RE%3A%20Death%20to%202025"&gt;Reply by email&lt;/a&gt;&lt;/p&gt;
        &lt;p&gt;Leave a comment by replying to 
            &lt;a href="https://toot.wales/@mort8088/115810563621029551" target="_blank" title="Syndicated post on Mastodon"&gt;this post&lt;/a&gt;
            on Mastodon.&lt;/p&gt;
        
    &lt;/footer&gt;
&lt;/article&gt;
</description>
			<pubDate>Tue, 30 Dec 2025 00:00:00 Z</pubDate>
		</item>
		<item xml:base="https://davehenry.blog/">
			<guid isPermaLink="true">https://davehenry.blog/2025/11/week-notes-2025-45/</guid>
			<link>https://davehenry.blog/2025/11/week-notes-2025-45/</link>
			<category>weeknotes</category>
			<title>Week Notes 2025-45</title>
			<description>&lt;article&gt;
    &lt;header&gt;
        
    &lt;/header&gt;    
    &lt;h2 id="notes"&gt;📓 Notes&lt;/h2&gt;
&lt;p&gt;Yes I'm a day late. So, sue me.&lt;/p&gt;
&lt;p&gt;I spent 3 hours on Sunday talking to one of my oldest friends, because I found out the appointment for his heart surgery is today(Tuesday). As of writing this he is now out and everything seems to have gone really well, so I'm happy.&lt;/p&gt;
&lt;h2 id="dev-log"&gt;🖥️ Dev Log&lt;/h2&gt;
&lt;p&gt;Last week was a bit of a Game Development week, I managed to add in a few new new parts.&lt;/p&gt;
&lt;h3 id="input-manager"&gt;Input Manager&lt;/h3&gt;
&lt;p&gt;New Service/Game Component, updates in the background and exposes an interface with methods for checking the State of Keyboard/Mouse/Game-pad. Also has a few events that will trigger for Standard things like:-&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;F12&lt;/code&gt; - Trigger the Screenshot event&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Alt+Return&lt;/code&gt; - Toggle Full-screen/Windowed&lt;/li&gt;
&lt;li&gt;&lt;code&gt;¬&lt;/code&gt; what used to be &lt;code&gt;~&lt;/code&gt;. On the number row the key left of &lt;code&gt;1&lt;/code&gt; - Hook for a Command Line Interpreter.&lt;/li&gt;
&lt;li&gt;There are some methods for menu handling as well.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="display-manager"&gt;Display Manager&lt;/h3&gt;
&lt;p&gt;Not finished yet but this one handles everything to do with graphics, as well as holding the Extended SpriteBatch, Font Manager and Animation Manager. Chief of concerns is picking the right screen mode and if needed adding the black bars for &lt;a href="https://en.wikipedia.org/wiki/Letterboxing_(filming)"&gt;letter/pillar-boxing&lt;/a&gt; the game screen. Once I get further down the road it's probably going to be responsible for Anti-Aliasing.&lt;/p&gt;
&lt;h3 id="sprite-pack"&gt;Sprite Pack&lt;/h3&gt;
&lt;p&gt;So back in the day &lt;a href="https://ohthesetrees.com/"&gt;Kelly Gravelyn&lt;/a&gt; wrote a windows app called sprPack and open sourced it. I used it &lt;em&gt;a lot&lt;/em&gt;, and a few years ago I needed it again but for Linux. I dug out the old code and asked if I could carry on with it. Kelly wasn't interested in keeping it so off I went and made a command line version from the original.&lt;/p&gt;
&lt;p&gt;It was on Sh!tHub, but I'm not using that now. You can find the current version on &lt;a href="https://codeberg.org/mort8088/SpritePack"&gt;Codeberg&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I've had a few ideas how I can improve it that should make it more useful but I want to see what's going to happen to the content pipeline first.&lt;/p&gt;
&lt;h2 id="links"&gt;🕸️ Links&lt;/h2&gt;
&lt;h3 id="blog-posts"&gt;📰 Blog posts&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.baldurbjarnason.com/2025/strong-opinions-never-published/" title="For sale: strong opinions; never published"&gt;For sale: strong opinions; never published&lt;/a&gt;
&lt;blockquote&gt;
&lt;p&gt;But sometimes strong opinions don’t need to be published because we’re living with the reality that prompted the opinion every day.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.positech.co.uk/cliffsblog/2025/11/08/is-indie-game-dev-even-viable-as-a-business-in-2025/"&gt;Is indie game dev even viable as a business in 2025?&lt;/a&gt;&lt;br /&gt;
Another from Cliffski's Blog, if the reason you're doing it is to make money, no. If you're in it for the fun of it, maybe. I've given up on the thought of making money from making games. What I do now is just for fun.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="video-links"&gt;📺 Video Links&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=VdqhHKjepiE"&gt;RimWorld: Contrarian, Ridiculous, and Impossible Game Design Methods - YouTube&lt;/a&gt;&lt;br /&gt;
Interesting to hear how he sees it as story engine and not a game.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=Otx-8ON90cc"&gt;MonoGame University - 2D Tutorial Walkthrough - The beginning w/Simon - YouTube&lt;/a&gt;&lt;br /&gt;
If you were disappointed I didn't go a head with my tutorials try this one out, it's looking good.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="game-links"&gt;🕹️ Game Links&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;If you don't have a basic understanding of c# you could always start with the &lt;a href="https://www.robmiles.com/c-yellow-book/"&gt;C# Yellow Book by rob miles&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://rheyansgaming.substack.com/"&gt;Rheyan's GameDev&lt;/a&gt;&lt;br /&gt;
Not many posts but it does feed nicely into her YouTube Channel.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cs50.harvard.edu/games/" title="CS50's Introduction to Game Development"&gt;CS50's Introduction to Game Development&lt;/a&gt;&lt;br /&gt;
Rheyan's posts lead me to finding this course from Harvard, it uses Lua as it language but that just means you need to really understand the code to convert it to c# for your own work.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://textbooks.cs.ksu.edu/cis580/"&gt;CIS 580: Foundations of Game Programming :: K-State CIS 580 Textbook&lt;/a&gt;&lt;br /&gt;
Another one from Rheyan, this one is for MonoGame. Not sure which version but it should still be good.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://byte-arcane.github.io/sigil-of-kings-website/2025/11/07/limbo-death-and-beyond/"&gt;Limbo, Death and Beyond | Sigil of Kings&lt;/a&gt;&lt;br /&gt;
A devLog, about how he's thinking of handeling death in his cRPG/roguelike.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hypercombogamer.com/25-best-indie-platformer-games-on-steam/"&gt;The 25 Best Indie Platformer Games On Steam&lt;/a&gt;&lt;br /&gt;
Some I've seen some I haven't, a good mix of interesting indie Games.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="reading"&gt;📚 Reading&lt;/h2&gt;
&lt;p&gt;Harry Potter and the Prisoner of Azkaban - Page 206 of 317 (65%) &lt;a href="/books/#Disclaimer"&gt;Disclaimer&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="films"&gt;🎞️ Films&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.justwatch.com/uk/movie/the-fantastic-four"&gt;The Fantastic 4: First Steps (2025)&lt;/a&gt;&lt;br /&gt;
I liked the aesthetics, and that it wasn't trying to be part of the 616 universe, and the story was cool.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.justwatch.com/uk/movie/hellboy-the-crooked-man"&gt;Hellboy: The Crooked Man (2024)&lt;/a&gt;&lt;br /&gt;
Don't know how I missed this. I was sad it wasn't &lt;a href="https://en.wikipedia.org/wiki/Ron_Perlman"&gt;Ron Perlman&lt;/a&gt; but the new guy was still good. A way darker vision, it felt more like the way I've seen them in the comics and way more &lt;a href="https://en.wikipedia.org/wiki/Dark_Horse_Comics"&gt;Dark Horse&lt;/a&gt; and I loved it for that.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.justwatch.com/uk/movie/x-men-first-class"&gt;X-Men: First Class (2011)&lt;/a&gt;&lt;br /&gt;
A classic, I needed a pick-me-up.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="tv"&gt;📺 TV&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.justwatch.com/uk/tv-series/the-great-british-bake-off"&gt;Great British Bake off (2010)&lt;/a&gt; &lt;a href="https://www.justwatch.com/uk/tv-series/the-great-british-bake-off/season-16"&gt;Series 16&lt;/a&gt;&lt;br /&gt;
Well the final was no surprise, hope it's more interesting next year.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.justwatch.com/uk/tv-series/taskmaster"&gt;Taskmaster (2015)&lt;/a&gt; &lt;a href="https://www.justwatch.com/uk/tv-series/taskmaster/season-20"&gt;Series 20&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.imdb.com/title/tt0115286/"&gt;Never Mind the Buzzcocks&lt;/a&gt; &lt;a href="https://www.imdb.com/title/tt0115286/episodes/?season=33"&gt;Series 33&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.justwatch.com/uk/tv-series/qi"&gt;QI (2003)&lt;/a&gt; &lt;a href="https://www.justwatch.com/uk/tv-series/qi/season-23"&gt;Series W&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.justwatch.com/uk/tv-series/have-i-got-news-for-you"&gt;Have I Got News for You (UK) (1990)&lt;/a&gt; &lt;a href="https://www.justwatch.com/uk/tv-series/have-i-got-news-for-you/season-70"&gt;Series 70&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.justwatch.com/uk/tv-series/tron-uprising"&gt;TRON: Uprising(2012)&lt;/a&gt;&lt;br /&gt;
&lt;a href="https://joelchrono.xyz/blog/i-need-to-talk-about-tron-uprising/"&gt;Joel&lt;/a&gt; was right, it is the best in the franchise. If for no other reason than It expands on the world of the grid without making it about a human. It's the part of Tron I always wanted to see them do more with. For me the &lt;del&gt;meat bags&lt;/del&gt;people were a distraction from what I found interesting. If they had to have any interaction with the outside world. I would have wanted it to have been seriously time dilated, to emphasise that the grid runs at a faster rate than the world of the real. Anyway they only gave us one series so that's a moot point now, shame.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.justwatch.com/uk/tv-series/the-amazing-digital-circus"&gt;The Amazing Digital Circus (2023)&lt;/a&gt;&lt;br /&gt;
I thought this had finished a full season but I can only watch the first 4 episodes even though 6 have been released. Its good so I'll just have to wait for Netflix to pull its finger out and release the rest.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.justwatch.com/uk/tv-series/the-walking-dead-daryl-dixon"&gt;The Walking Dead: Daryl Dixon (2023)&lt;/a&gt; &lt;a href="https://www.justwatch.com/uk/tv-series/the-walking-dead-daryl-dixon/season-3"&gt;Season 3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;I enjoyed it again this season. It felt like they were going for a spaghetti western sort of vibe.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;Like my Friend, Stay Lucky.👨‍⚕️&lt;/p&gt;

    &lt;footer&gt;
        &lt;p&gt;Thanks for keeping RSS feeds alive.&lt;/p&gt;
        &lt;p&gt;&lt;a href="mailto:fromfeed@mort8088.com?subject=RE%3A%20Week%20Notes%202025-45"&gt;Reply by email&lt;/a&gt;&lt;/p&gt;
        &lt;p&gt;Leave a comment by replying to 
            &lt;a href="https://toot.wales/@mort8088/115533056458415199" target="_blank" title="Syndicated post on Mastodon"&gt;this post&lt;/a&gt;
            on Mastodon.&lt;/p&gt;
        
    &lt;/footer&gt;
&lt;/article&gt;
</description>
			<pubDate>Tue, 11 Nov 2025 00:00:00 Z</pubDate>
		</item>
		<item xml:base="https://davehenry.blog/">
			<guid isPermaLink="true">https://davehenry.blog/2025/11/week-notes-2025-44/</guid>
			<link>https://davehenry.blog/2025/11/week-notes-2025-44/</link>
			<category>weeknotes</category>
			<title>Week Notes 2025-44</title>
			<description>&lt;article&gt;
    &lt;header&gt;
        
    &lt;/header&gt;    
    &lt;h2 id="notes"&gt;📓 Notes&lt;/h2&gt;
&lt;p&gt;The site has moved. Hopefully you didn't notice. I've been working towards not using USA based companies. I've almost moved all my domains from 123-Reg and the latest thing was dropping Linode. At some point I'll move my email to someone else, any suggestions?&lt;/p&gt;
&lt;p&gt;On Saturday I bit the bullet and Signed up with a new &lt;a href="https://en.wikipedia.org/wiki/Virtual_private_server"&gt;VPS&lt;/a&gt; host based in the E.U. and built a new server. All the work I did for making it so that I could burn down the server and stand up a new one in short order was tested. With the exception that the new server provider sets up the server with only the root user, I had to setup my service account and disable root before I could install things and transfer the site. But with that aside everything seems to be back up and working. 🙌&lt;/p&gt;
&lt;h2 id="links"&gt;🕸️ Links&lt;/h2&gt;
&lt;p&gt;I didn't think I'd find as many links, as last week and I didn't but I did find some good ones.&lt;/p&gt;
&lt;h3 id="blog-posts"&gt;📰 Blog posts&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://christianheilmann.com/2025/10/30/ai-is-dunning-kruger-as-a-service/" title="AI is Dunning-Kruger as a service | Christian Heilmann"&gt;AI is Dunning-Kruger as a service | Christian Heilmann&lt;/a&gt;&lt;br /&gt;
This is what's wrong with AI. Everything finally make sense.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="video-links"&gt;📺 Video Links&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=7zy63bs8hEs" title="This is THE Tea Time Interview with Bruce Dickinson! - YouTube"&gt;This is THE Tea Time Interview with Bruce Dickinson! - YouTube&lt;/a&gt;&lt;br /&gt;
Let's face it I'm an old Metal head, and I do enjoy a bit of Maiden. I was at Donington in '92. So when I saw that The Charismatic Voice had done an interview with Bruce. I was all in. I found the link from &lt;a href="https://noisydeadlines.net/week-notes-oct-14-to-oct-27-2025"&gt;Noisy Deadlines Week Notes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=_rrH6MPrPGM" title="C++ Strategy Game Programming: Ridiculous Space Battles code video #2 - YouTube"&gt;C++ Strategy Game Programming: Ridiculous Space Battles code video #2 - YouTube&lt;/a&gt;&lt;br /&gt;
Yay! A part two to  Cliffski's series on making an engine. I don't work in C++ but that's not why I'm watching it. I'm watching to see how a he puts his project together. When you get good at programming you can understand the concepts that are being use it doesn't matter what the language is, that's just implementation.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=hzPZznSmbao" title="Game Design Documents - A Comprehensive Guide - YouTube"&gt;Game Design Documents - A Comprehensive Guide - YouTube&lt;/a&gt;&lt;br /&gt;
Interesting a solid introduction to Design Docs, they have a number of other videos on design Patterns as well that I'll have to have a look at later.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="game-links"&gt;🕹️ Game Links&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://barotraumagame.com/uncategorized/662/" title="Barotrauma Source Code - Barotrauma"&gt;Barotrauma Source Code - Barotrauma&lt;/a&gt;&lt;br /&gt;
Looks like Barotrauma was written with MonoGame and they published the Source Code,. Could be worth a look🤓&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="reading"&gt;📚 Reading&lt;/h2&gt;
&lt;p&gt;Harry Potter and the Prisoner of Azkaban - Page 160 of 317 (50.5%) &lt;a href="/books/#Disclaimer"&gt;Disclaimer&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="films"&gt;🎞️ Films&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.justwatch.com/uk/movie/jurassic-world-4"&gt;Jurassic World: Rebirth (2025)&lt;/a&gt;&lt;br /&gt;
I liked it, it felt like a good one off film with no pressure to have a follow-up sequel.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.justwatch.com/uk/movie/superman-2025"&gt;Superman (2025)&lt;/a&gt;&lt;br /&gt;
I really liked this, I seen Peacemaker season 2 recently, so I kept doing the point at screen and say &amp;quot;&lt;em&gt;That's where he came from!&lt;/em&gt;&amp;quot; And let's face it anything that has &lt;a href="https://en.wikipedia.org/wiki/Nathan_Fillion"&gt;Nathan Fillion&lt;/a&gt; in it I'm going to like.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.justwatch.com/uk/movie/28-years-later"&gt;28 Years Later (2025)&lt;/a&gt;&lt;br /&gt;
This one was different. I loved the first two films, and this is a worthy followup but it's a very different way of presenting the story, which makes it hard to see the connection to its legacy.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="tv"&gt;📺 TV&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.justwatch.com/uk/tv-series/the-great-british-bake-off"&gt;Great British Bake off (2010)&lt;/a&gt; &lt;a href="https://www.justwatch.com/uk/tv-series/the-great-british-bake-off/season-16"&gt;Series 16&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.justwatch.com/uk/tv-series/taskmaster"&gt;Taskmaster (2015)&lt;/a&gt; &lt;a href="https://www.justwatch.com/uk/tv-series/taskmaster/season-20"&gt;Series 20&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.imdb.com/title/tt0115286/"&gt;Never Mind the Buzzcocks&lt;/a&gt; &lt;a href="https://www.imdb.com/title/tt0115286/episodes/?season=33"&gt;Season 33&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.justwatch.com/uk/tv-series/qi"&gt;QI (2003)&lt;/a&gt; &lt;a href="https://www.justwatch.com/uk/tv-series/qi/season-23"&gt;Series W&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.justwatch.com/uk/tv-series/have-i-got-news-for-you"&gt;Have I Got News for You (UK) (1990)&lt;/a&gt; &lt;a href="https://www.justwatch.com/uk/tv-series/have-i-got-news-for-you/season-70"&gt;Series 70&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;Run to the Hills and, Stay Lucky 🎶&lt;/p&gt;

    &lt;footer&gt;
        &lt;p&gt;Thanks for keeping RSS feeds alive.&lt;/p&gt;
        &lt;p&gt;&lt;a href="mailto:fromfeed@mort8088.com?subject=RE%3A%20Week%20Notes%202025-44"&gt;Reply by email&lt;/a&gt;&lt;/p&gt;
        &lt;p&gt;Leave a comment by replying to 
            &lt;a href="https://toot.wales/@mort8088/115487817897788183" target="_blank" title="Syndicated post on Mastodon"&gt;this post&lt;/a&gt;
            on Mastodon.&lt;/p&gt;
        
    &lt;/footer&gt;
&lt;/article&gt;
</description>
			<pubDate>Mon, 03 Nov 2025 00:00:00 Z</pubDate>
		</item>
	</channel>
</rss>