<?xml version="1.0"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>fyr.io - Everything (full)</title>
    <description>Things about stuff. Infosec, tech, life and whatever else comes to keyboard</description>
    <link>https://fyr.io/</link>
    <atom:link href="https://fyr.io/feed" rel="self" type="application/rss+xml" />
    <language>en-gb</language>
    <webMaster>hello@fyr.io (Matt)</webMaster>
    <generator>fyr.io custom generator</generator>
    <image>
      <title>fyr.io - Everything (full)</title>
      <url>https://fyr.io/images/rss-logo.png</url>
      <link>https://fyr.io/</link>
    </image>
    <pubDate>2026-04-15</pubDate>
    <item>
      <title>Backblaze Account Takeover</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Backblaze Account Takeover&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Wednesday 15th of April 2026 at 23:59&lt;/time&gt;&lt;/p&gt;
        &lt;p class=&quot;updated&quot;&gt;Last updated on &lt;time&gt;Thursday 16th of April 2026 at 09:42&lt;/time&gt;&lt;/p&gt;      &lt;/header&gt;
      &lt;p&gt;Sometimes, you find a way to abuse a system and you don&#039;t get a bounty payout. Such is life! This is what happened here, but... It is a bit different to the usual tale from the world of infosec, because I didn&#039;t technically exploit anything, yet still managed to perform account takeovers on well known backup provider &lt;a href=&quot;https://www.backblaze.com/&quot;&gt;Backblaze&lt;/a&gt;, including &quot;accidentally&quot; taking over a legitimate customer account (which contained live, real world data). I merely abused a somewhat poorly constructed sentence in the official documentation (which happened to contain a compliant and unregistered domain.) I... Guess it&#039;s exploiting the interpretation of the English language? Well, sort of. This is pretty much just your standard &lt;em&gt;registering an unregistered domain that&#039;s referenced somewhere&lt;/em&gt; but thought the journey was somewhat interesting, so here it is.&lt;/p&gt;
      &lt;p&gt;Backblaze won&#039;t pay out a bounty if you publicly disclose, but as this is seemingly not worth a payout anyway and has been fixed for a few months now, what&#039;s the harm in publishing, eh?&lt;/p&gt;
      &lt;hr /&gt;
      &lt;p&gt;Back in April &amp; May 2025 I was trialing Backblaze for a data project at work and it went really well. The costs were low, the tech worked perfectly. It&#039;s a great service &amp; product, and I knew it was the right tool for the job. I had mucked around with it a fair amount, using an account associated to my work email address, but I wanted to start a fresh account for the Production version of the data project.&lt;/p&gt;
      &lt;p&gt;Thankfully, Backblaze has &lt;a href=&quot;https://web.archive.org/web/20251114094754/https://www.backblaze.com/computer-backup/docs/change-an-account-email-address#remove-an-email-address-from-a-previous-account-or-trial&quot;&gt;a documented method&lt;/a&gt; (&amp;lt;- archive.org link) to change the email address associated to your account. Line 4 under the aforementioned &quot;Remove an Email Address from a Previous Account or Trial&quot; is the important one:&lt;/p&gt;
      &lt;blockquote&gt;Enter your current password, and enter and confirm a new email address that looks like this: xxx8xx8@x87xx.xxx.&lt;/blockquote&gt;
      &lt;p&gt;Upon reading this, my initial interpretation was to recoil, eyebrow arched, and question it - it wants me to change my accounts&#039; email address to &lt;code&gt;xx87xx8x@x87xx.xxx&lt;/code&gt; specifically? That&#039;s... Odd, right?&lt;/p&gt;
      &lt;p&gt;I pondered it a bit...&lt;/p&gt;
      &lt;p&gt;&lt;em&gt;Maybe they have some logic in the process that picks up that exact string of characters and black-holes the account or treats it differently? In fact, that seems like a strange and oddly specific string to use, why wouldn&#039;t they just use a non-&lt;a href=&quot;https://www.rfc-editor.org/rfc/rfc5322#section-3.4&quot;&gt;RFC5322&lt;/a&gt; string instead of a valid-looking email address and pluck it out prior to the validation rule triggering? Wait... What if they don&#039;t do any of that and they&#039;ve just poorly worded that line in the docs?&lt;/em&gt;&lt;/p&gt;
      &lt;p&gt;At this point, I reconsidered the line in the documentation. I could also interpret it to mean &quot;change the email address to something like this but not this exactly&quot;.&lt;/p&gt;
      &lt;p&gt;But if I - a native English speaker - had interpreted it on first read as it wanting me to use that funky x-laden email address specifically, others would too. So I did the only thing I could do - I hopped onto a registrar and checked to see if the domain used in the specified email address was available (as is habit for many infosec oriented people I&#039;m sure) and to my surprise, it was available!&lt;/p&gt;
      &lt;p&gt;Now, I took a moment here. This wasn&#039;t a boring old &lt;code&gt;.com&lt;/code&gt; - it is a &lt;code&gt;.xxx&lt;/code&gt; domain. They&#039;re not the cheapest domains to rent! To be fair they&#039;re also not overly expensive either, if you&#039;re not trying to register a premium domain - a common word prior to the .tld - which &lt;code&gt;xx87xx&lt;/code&gt; isn&#039;t of course... but money is kinda tight. I considered whether I wanted to pursue this for a while, a few weeks at least.&lt;/p&gt;
      &lt;p&gt;Eventually I decided to use a chunk of money from my personal monthly &quot;treats&quot; pot and go ahead and register it. A sacrifice of a fewer shop-bought drinks and treats for a while, on a hunch. But a fun hunch!&lt;/p&gt;
      &lt;h3&gt;A primer on .xxx domains&lt;/h3&gt;
      &lt;p&gt;.xxx domains, launched in 2011, are for... well, porn stuff. If you host a porn site, you don&#039;t &lt;em&gt;need&lt;/em&gt; to use a .xxx (or similar) domain but it is a recommendation, to ease filtering pretty much. Obviously it&#039;s pretty useless if it&#039;s not a hard requirement, but when there&#039;s money to be made who cares about logic?&lt;/p&gt;
      &lt;p&gt;Unbeknownst to me at the time of forking over £60, .xxx domains are controlled by ICMRegistry, which appears to quietly be... GoDaddy. You can register  the domain itself easily enough, via your nearest high quality registrar, but in order to actually &lt;em&gt;configure records&lt;/em&gt; for one of these domains, you need to evidence that you&#039;re a member of the pornography business.&lt;/p&gt;
      &lt;p&gt;Yep.&lt;/p&gt;
      &lt;p&gt;So I had to send proof of my participation in the porn industry to GoDaddy via &lt;a href=&quot;https://ICMRegistry.biz&quot;&gt;ICMRegistry.biz&lt;/a&gt;, a totally not sus domain. Once they&#039;ve verified you are in fact a porn star (or otherwise work in the industry) you&#039;ll get a membership token, which can be used in the registrar to unlock the domain, at which point you can use it like any other domain (as long as you follow their rules of course.)&lt;/p&gt;
      &lt;p&gt;So it is clear to any readers here: no, I am not a participant in the porn industry. I&#039;ve never been in it, directed it, done CGI, fluffing, fetching drinks, cleaning... But we won&#039;t let that stop us, will we?&lt;/p&gt;
      &lt;p&gt;I registered, because of course I did, and submitted a bare-bones application. But I heard nothing back.&lt;/p&gt;
      &lt;p&gt;Those of you who have been involved in web stuff for a while will know that GoDaddy are renown for being ...let&#039;s charitably say... disorganised. So after waiting a bit to hear back, I started pestering. Eventually, someone must&#039;ve gotten fed up of me and let my application slip through, as one random evening I got confirmation emails and my membership token without any feedback on my pleas for help. So I guess as of 22nd May 2025 my membership of the porn industry is verfied and as a result I find myself with a working .xxx domain! Yay?&lt;/p&gt;
      &lt;hr /&gt;
      &lt;p&gt;So I&#039;ve now got a working .xxx domain, which I of course immediately hooked up to my Proton email account so it can receive emails sent to my shiny new x87xx.xxx domain, and began on the next phase of the plan!&lt;/p&gt;
      &lt;p&gt;After checking that the documentation hadn&#039;t been updated and still said the same thing (it did) I decided to test the process by creating an account and going through the steps as documented. I opened Backblaze, logged into my account, initiated the account email address transfer process (sending the account over to &quot;xx87xx8x@x87xx.xxx&quot;), and... Blocked. Account already in use.&lt;/p&gt;
      &lt;p&gt;Crap.&lt;/p&gt;
      &lt;p&gt;No, wait, not just &#039;crap&#039; - Holy crap!&lt;/p&gt;
      &lt;p&gt;(This gets a little convoluted. Hopefully it can be followed along easily!)&lt;/p&gt;
      &lt;p&gt;I went back to the backblaze login page and went through the &#039;forgotten password&#039; process, entering the email address from the documentation (again, &lt;code&gt;xx87xx8x@x87xx.xxx&lt;/code&gt;) and... Ping! I get an email from Backblaze on my freshly minted email alias. Within this email is a link to reset my account password!&lt;/p&gt;
      &lt;p&gt;I follow the password reset process and can then log in. At some point in the past, someone has indeed already followed this document, (mis)interpreted the process and transferred the account to this email address.&lt;/p&gt;
      &lt;p&gt;However... This isn&#039;t the legitimate customer account I mentioned earlier. That comes later.&lt;/p&gt;
      &lt;p&gt;I&#039;m buzzing. I&#039;m logged into someone&#039;s account - it&#039;s empty of all data and details, but it&#039;s there. I need to test this properly, so I go back through the account email address transfer process and change this newly acquired account email address to &lt;code&gt;[somethingRandom]@x87xx.xxx&lt;/code&gt; - that way I can retain access to the account (as I was using a catch-all on Proton - [anythingHere]@x87xx.xxx will come into my mailbox) and free up the email address to try transferring another account which is under my control to determine what the procedure is &lt;em&gt;exactly&lt;/em&gt;.&lt;/p&gt;
      &lt;p&gt;Next, I log out, then back in to my original test account from earlier and try to transfer it again. It flies through the process. No email confirmation required, it just changes the owner of the account straight over to the .xxx email address.&lt;/p&gt;
      &lt;p&gt;I run a few tests on some other accounts, write this up as a &quot;I don&#039;t know how to classify this but I can kinda take over customer accounts if they follow your documentation?&quot; bug report on the bugcrowd for Backblaze and feel great that my hunch paid off.&lt;/p&gt;
      &lt;hr /&gt;
      &lt;p&gt;Bugcrowd close the issue.&lt;/p&gt;
      &lt;p&gt;The first reason it&#039;s closed is because &lt;q&gt;this issue relies on an attacker purchasing a domain&lt;/q&gt;, as if that&#039;s onerous for an attacker to do. Also, it&#039;s not in scope, they say, as it&#039;s on the documentation site, not the base domain. I clarify that the issue isn&#039;t on the documentation site but as a result of the content on it and ask for the documentation to be updated anyway, but nope. The triage process has blocked this and -1&#039;d me to boot. Bugcrowd has shot me down.&lt;/p&gt;
      &lt;p&gt;Ah well. I know it&#039;s legit. It works. So what better way to prove it than to wait for a customer to follow this guide and send me their account?&lt;/p&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/seven-months-lateuurrr.png&quot;&gt;
          &lt;source srcset=&quot;/images/seven-months-lateuurrr.png&quot; /&gt;
          &lt;img src=&quot;/images/seven-months-lateuurrr.png&quot; alt=&quot;The SpongeBob SquarePants &#039;time has passed&#039; frame. A purple background with yellow writing, which reads &#039;seven months later&#039;&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;p&gt;I&#039;m tapping away at my keyboard at work in January and my phone dings - my Backblaze account has been transferred.&lt;/p&gt;
      &lt;p&gt;After a couple of underwear-browning seconds my eyes widen in realisation - Hold up, it&#039;s an email that landed in my .xxx domains email inbox! I take a closer look and, sure enough, some &lt;code&gt;[randomUser]@gmail.com&lt;/code&gt; has seemingly followed the documentation and transferred their account to &lt;code&gt;xx87xx8x@x87xx.xxx&lt;/code&gt;!&lt;/p&gt;
      &lt;p&gt;I finish the days work, head home and get online. Step one, account password reset, which works, so I log in to it. Sure enough, someone has initiated this to the documented email address and as a result has given me access to their Backblaze account. This &lt;em&gt;legit, paying customer&lt;/em&gt; account includes two computer backups with current, very recent data. It&#039;s &lt;em&gt;live&lt;/em&gt; data, uploaded moments ago.&lt;/p&gt;
      &lt;p&gt;Now, that bit right here that I&#039;ve just done? Morally questionable &lt;em&gt;at best&lt;/em&gt;. I&#039;ve just obtained access to an active, paying customer account, and I&#039;ve taken things a step further than is generally acceptable to me and the community by resetting their account password and verifying it is accessible.&lt;/p&gt;
      &lt;p&gt;As their computer still backs up to this account, I immediately get another bugcrowd ticket logged with a plea to reconsider the validity of this as... not a bug per se, but a problem for sure. I don&#039;t touch the account beyond my initial logging in and seeing the data shown on the dashboard, I don&#039;t download anything or navigate anywhere in the interface. I log out after taking a screenshot, and fire off my plea. I know, &lt;em&gt;trust me, bro&lt;/em&gt;, but I really didn&#039;t. Backblaze will log all of that.&lt;/p&gt;
      &lt;p&gt;Backblaze helpfully includes the accounts originating email address in the transfer notification email, so I send the owner an email from my personal (fyr.io) email account clarifying the situation. Their account has come to me, I won&#039;t touch it, I&#039;ve emailed Backblaze and am trying to get them to sort it. I don&#039;t hear back.&lt;/p&gt;
      &lt;p&gt;I did strongly consider transferring the account back via the same process, and perhaps on reflection I should have done this, however I didn&#039;t want to touch anything on the account at all so opted to let Bugcrowd and Backblaze handle it themselves. They (Bugcrowd) have been notified that I have someone else&#039;s account now, so they&#039;ll be interested in getting this resolved quickly.&lt;/p&gt;
      &lt;hr /&gt;
      &lt;p&gt;Or not? Bugcrowd strikes again.&lt;/p&gt;
      &lt;p&gt;They reject this second attempt at communicating a problem. I have been advised to email Backblaze&#039; documentation provider, Document360, as the issue is, they claim, on the documentation site (it isn&#039;t) so I go through the motions. They quickly reply, of course stating that the issue &lt;em&gt;isn&#039;t&lt;/em&gt; on the documentation site (see, it isn&#039;t!) and to email Backblaze directly as they&#039;re the ones that write the documentation.&lt;/p&gt;
      &lt;p&gt;So I go looking for someone to poke about this account transfer at Backblaze directly. Yes it may not be a typical hack or an exploit but it is a real problem. I just want the docs to be fixed, darn it! I find their web based chat and consider my efforts to be coming to a conclusion now that I get to explain to an actual human over chat wha-oh, wait, nevermind. I forgot it&#039;s the age of slop. Instead of a human I have to chat to their LLM bot (yay.) which asks me to email Backblaze&#039;s &#039;report phishing&#039; email account. Seems... irrelevant, but okay, I guess I can see how it might help and it actually has a chance of crossing over to the right person. I email them. They reply saying it&#039;s nothing to do with them, and to go through their bug reporting page (bugcrowd) so that&#039;s a dead end right there. Whilst waiting on the phishing email address reply, I&#039;ve logged a support ticket on the Backblaze Zendesk portal.&lt;/p&gt;
      &lt;p&gt;Whilst waiting for a response I have also written another update on the bugcrowd ticket. Which, of course, sits ignored.&lt;/p&gt;
      &lt;p&gt;Then, I hear back from a support person. Not just any support person, but a support person who actually takes the time to look into the issue. I believe they understood what I was getting at after a bit of back and forth and escalated the issue, as the next day the ticket on bugcrowd has a burst of activity, it&#039;s rated a p4, then a p5 straight after (informational, therefore not deemed worthy of a reward, booooo!) and then marked as resolved.&lt;/p&gt;
      &lt;p&gt;The &lt;a href=&quot;https://www.backblaze.com/computer-backup/docs/change-an-account-email-address&quot;&gt;documentation page&lt;/a&gt; (&amp;lt;- the actual documentation page) is updated, removing the whole section containing the .xxx email address.&lt;/p&gt;
      &lt;p&gt;13 days after the bug is marked resolved, the account that was accidentally transferred to me in January is finally transferred away (I assume back to the original owner?) and I can relax now I don&#039;t have potential access to this strangers data anymore.&lt;/p&gt;
      &lt;p&gt;So in the end I&#039;m left with yet another bad bugcrowd experience, a .xxx domain (which I guess I could claim proves I&#039;m in the porno industry now?) and I&#039;m £60 worse off for it. But hey, the issue is fixed and someone has their data back, so in the end a net positive.&lt;/p&gt;
      &lt;p&gt;What am I gonna do with a nonsense .xxx domain?&lt;p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2026-04-15</pubDate>
      <link>https://fyr.io/post/backblaze-account-takeover</link>
      <guid isPermaLink="true">https://fyr.io/post/backblaze-account-takeover</guid>
      <category>infosec</category>
      <category>account takever</category>
      <category>backblaze</category>
      <category>bugcrowd</category>
      <category>xxx</category>
      <category>bug bounty</category>
    </item>
     <item>
      <title>Cat Tax</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Cat Tax&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Sunday 12th of April 2026 at 22:48&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;We got two cats about a month ago, so I&#039;m in debt cat-tax-wise - here&#039;s payment, I hope it is sufficient.&lt;/p&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/cat-tax-1.jpg&quot;&gt;
          &lt;source srcset=&quot;/images/cat-tax-1.jpg&quot; /&gt;
          &lt;img src=&quot;/images/cat-tax-1.jpg&quot; alt=&quot;A photo of a cat lounging in the sun, laying on a table and resting their head and one paw on the arm of a green sofa&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/cat-tax-2.jpg&quot;&gt;
          &lt;source srcset=&quot;/images/cat-tax-2.jpg&quot; /&gt;
          &lt;img src=&quot;/images/cat-tax-2.jpg&quot; alt=&quot;A photo of a sleeping cat, laying in the sun on a green sofa, head resting on their paw, which is raised up like a human would do, using it as a pillow, with the other paw hanging over the front of the sofa. Full on chill mode, activated.&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;p&gt;These two are siblings, brother and sister, and have been in a cat rescue place since birth pretty much. They&#039;ve had 8 months of infections, ailments and other issues (including one close call with an eye infection, leaving a permanent mark) which has delayed their adoption by quite a while. Their siblings all left the cattery a while ago so they&#039;ve been left waiting all this time alone. Together, but alone. They&#039;ve become best friends whilst in there and are absolutely a team of two.&lt;/p&gt;
      &lt;p&gt;Despite that, they&#039;re super friendly and affectionate to humans. It didn&#039;t take long for them to settle in at all and take over. They&#039;ve definitely become part of the family.&lt;/p&gt;
      &lt;p&gt;We&#039;ve had two cats before, but at different times, not together. There&#039;s something kinda cozy about having two cats that get along so well with each other.&lt;/p&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/cat-tax-3.jpg&quot;&gt;
          &lt;source srcset=&quot;/images/cat-tax-3.jpg&quot; /&gt;
          &lt;img src=&quot;/images/cat-tax-3.jpg&quot; alt=&quot;An overhead photo of two cats cozying up together, legs entwined, forming a loose heart shape. Aww! Both cats are looking up into the camera, probably annoyed that I&#039;ve woken them up by taking a photo or ten&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;p&gt;That puts the pet count at seven - two cats, two guinea pigs and &lt;a href=&quot;/post/spring_chickens&quot;&gt;three chickens&lt;/a&gt;!&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2026-04-12</pubDate>
      <link>https://fyr.io/post/cat-tax</link>
      <guid isPermaLink="true">https://fyr.io/post/cat-tax</guid>
      <category>life</category>
      <category>cats</category>
      <category>cat tax</category>
      <category>meow</category>
      <category>pets</category>
    </item>
     <item>
      <title>Dandelion Honey</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Dandelion Honey&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Sunday 12th of April 2026 at 00:11&lt;/time&gt;&lt;/p&gt;
        &lt;p class=&quot;updated&quot;&gt;Last updated on &lt;time&gt;Sunday 12th of April 2026 at 22:49&lt;/time&gt;&lt;/p&gt;      &lt;/header&gt;
      &lt;p&gt;We&#039;re a little late to start the garden stuff this year but we&#039;ve mostly prepped our planters and begun to plant the seeds that will grow into food we&#039;ll eat daily in a few months time. &lt;small&gt;Side note: I need to write about this part of my life more, I need to port over my old wordpress posts about it, and also build category/tag filter functionality into the site... the data is there, I just gotta do the &lt;em&gt;logic&lt;/em&gt; bits and the copy/paste bits!!&lt;/small&gt;&lt;/p&gt;
      &lt;p&gt;Each year we edge slightly more self-sufficient than before by growing more and figure out what works for us and what doesn&#039;t. As we look forward to growing more of our own food again this year, we find ourselves learning a bunch of &lt;em&gt;cool stuff&lt;/em&gt;. My wife was reading things and learned one such &lt;em&gt;cool stuff&lt;/em&gt;: by mixing dandelion petals, water and sugar you can make a honey-like substance! We&#039;re not lucky enough to have &lt;a href=&quot;https://ben.akrin.com/boiling-quarters/&quot;&gt;5 gallons of maple syrup on the go&lt;/a&gt; but this&#039;ll do us for now! :D&lt;/p&gt;
      &lt;p&gt;Dandelions are everywhere - they&#039;re a bit of a super food in that &lt;a href=&quot;https://en.wikipedia.org/wiki/Taraxacum#In_food&quot;&gt;the entire plant is edible and contains a bunch of nutrients&lt;/a&gt; and as a bonus they grow pretty much everywhere. Odds are you&#039;ll be able to find them near where you are (unless you&#039;re in Antarctica.) I&#039;ve heard before that they grow where soil is unhealthy and in fact help restore its health, which is pretty great if true. Wikipedia states &lt;q&gt;It is kept as a companion plant; its taproot brings up nutrients for shallow-rooting plants. It is also known to attract pollinating insects and release ethylene gas, which helps fruit to ripen.&lt;/q&gt; so I&#039;ll continue to assume that to be true and am now considering cultivating it in the greenhouse...&lt;/p&gt;
      &lt;p&gt;After sharing this with us, my son and I went out around the house and nearby (safe and clean) areas and picked about 4 cups-worth of the yellow flower, leaving the leaves and stem in place. Upon returning home my wife took over from the kid and we both pulled the yellow petals from the flower heads, dropping them straight into a saucepan, trying to minimise the amount of &lt;em&gt;green stuff&lt;/em&gt; that ended up in there as it seemingly becomes bitter if you leave too much in there. We didn&#039;t wash them, as this would wash away any remaining nectar.&lt;/p&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/dandelion-honey-1.jpg&quot;&gt;
          &lt;source srcset=&quot;/images/dandelion-honey-1.jpg&quot; /&gt;
          &lt;img src=&quot;/images/dandelion-honey-1.jpg&quot; alt=&quot;Overhead photo of a table surface containing an empty plastic container in the top right, de-petal&#039;d dandelion heads at the bottom, and an old saucepan containing the yellow petals from the dandelion heads&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;p&gt;The remains of the flowers have gone in a container for our two guinea pigs.&lt;/p&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/dandelion-honey-2.jpg&quot;&gt;
          &lt;source srcset=&quot;/images/dandelion-honey-2.jpg&quot; /&gt;
          &lt;img src=&quot;/images/dandelion-honey-2.jpg&quot; alt=&quot;A closeup of an old saucepan filled about 25% with yellow petals from dandelion flowers&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;p&gt;The saucepan was filled with around 250ml of water and gently boiled. After straining, the yellow liquid was returned to the saucepan and 250g(!) of sugar was added (I know right. We&#039;ve been told to match the volume of water in ml with the weight of sugar in grams so if you use more or less water, you might want to adjust the sugar number) We then stirred this a bunch as it heated back up gently, then let this simmer on a low heat for about an hour and a half to reduce it down. After cooling a little in the saucepan the &#039;honey&#039; went into a jar to let it cool to room temperature, at which point it went into the fridge.&lt;/p&gt;
      &lt;p&gt;The resulting honey is way thinner than your regular bee-origin honey, but it tastes very similar. Great for adding to tea, toast, or our current breakfast favourite, overnight chia seed pudding.&lt;/p&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/dandelion-honey-3.jpg&quot;&gt;
          &lt;source srcset=&quot;/images/dandelion-honey-3.jpg&quot; /&gt;
          &lt;img src=&quot;/images/dandelion-honey-3.jpg&quot; alt=&quot;A close-up photo of an old jam jar about 4/5ths full of a yellow honey-like liquid, made from the petals of dandelion flowers&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;p&gt;This was our first batch, a small test to see how it tasted (it&#039;s pretty great) but we already have some changes we&#039;d make:&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;Pick them on a warm, sunny day: They&#039;ll apparently have more nectar in there, opening up more to attract pollinators. We picked these in a fairly mild (approx 12 celcius) temperature, where it had been overcast for much of the day&lt;/li&gt;
        &lt;li&gt;Pick them in the morning: We picked these in the evening. Any nectar would have been slurped up by insects already.&lt;/li&gt;
        &lt;li&gt;Pick way more: we want way more of this. If we could cook a big batch that&#039;d be great. It&#039;s &lt;em&gt;so much sugar though&lt;/em&gt; but honey is also very high in sugar!&lt;/li&gt;
        &lt;li&gt;Use less water: we&#039;re thinking less water will result in a thicker substance! Experiments will determine if this pans out!&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;If it&#039;s warm tomorrow I&#039;ll probably go pick some more!&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2026-04-12</pubDate>
      <link>https://fyr.io/post/dandelion-honey</link>
      <guid isPermaLink="true">https://fyr.io/post/dandelion-honey</guid>
      <category>life</category>
      <category>honey</category>
      <category>dandelion</category>
      <category>flower</category>
      <category>homestead</category>
    </item>
     <item>
      <title>RSS Feed Changes</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;RSS Feed Changes&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Wednesday 18th of March 2026 at 23:50&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;Hello, you lovely little RSS feed reader you! RSS feeds are pretty cool, aren&#039;t they? I recently got a &lt;a href=&quot;/post/new-phone&quot;&gt;new phone&lt;/a&gt; but am yet to sort out a feed reader on it. I still use my old phone, so I&#039;m not missing out! But I wanted to get two things added to the site before I begun the search of the perfect mobile reader (or signed up to one of the homebrew web based ones a couple people I know are maintaining):&lt;/p&gt;
      &lt;ol&gt;
        &lt;li&gt;Add the ability to post &quot;secret&quot; RSS-only articles (like this one!)&lt;/li&gt;
        &lt;li&gt;Add a &quot;full&quot; feed for all three of my existing RSS feeds which includes the entire contents of the post/scrap&lt;/li&gt;
      &lt;/ol&gt;
      &lt;p&gt;I&#039;ve now done these things on the big tidy up task I&#039;ve just been through. I saw the &quot;post hidden content just for your RSS feed users&quot; idea on Mastodon months ago and have wanted to do it ever since. Now I can! :D These secret posts that show up on RSS but not on the list of posts (or scraps) are still viewable in a web browser if you know the URL! As for the full RSS feeds, if you&#039;re so inclined, feel free to adjust your RSS feed subscription to one of the following RSS feeds instead of the one you&#039;re currently subscribed to! They are:&lt;/p&gt;
      &lt;p&gt;The &quot;everything&quot; feed, the &quot;posts&quot; feed, and the &quot;scraps&quot; feed, which each come in two flavours: &quot;Title &amp; Summary only&quot; (which is the original feed type), or &quot;Title, Summary &amp; full contents&quot; (the new one!)&lt;/p&gt;
      &lt;p&gt;You can find these feed links on the &lt;a href=&quot;/feeds&quot;&gt;/feeds&lt;/a&gt; page!&lt;/p&gt;
      &lt;p&gt;I wrangle this site myself, it&#039;s home grown with minimal third party libraries (none on your end, only a couple built-in PHP ones!) and... well hey, let&#039;s just say I ain&#039;t a coder, alright? I&#039;m a scrappy slinger of PHP, HTML &amp; CSS, so I&#039;m bound to have made mistakes. If you notice any errors or wish to suggest improvements in both the code, the output, or within article content itself, &lt;a href=&quot;/hello&quot;&gt;lemme know!&lt;/a&gt; And speaking of making mistakes...:&lt;/p&gt;
      &lt;h3&gt;Oh one more thing&lt;/h3&gt;
      &lt;p&gt;Ages ago I made some changes here and there and all of a sudden, all the posts in the fyr.io feed came back as unread! I didn&#039;t know what caused it at the time, but now I do. For some reason I&#039;m using YYYY-MM-DD for the &lt;code&gt;&amp;lt;pubDate&amp;gt;&lt;/code&gt;, whereas before I was using the CORRECT method, which is to &lt;a href=&quot;https://www.rssboard.org/rss-validator/docs/error/InvalidRFC2822Date.html&quot;&gt;use an RFC822 formatted time &amp; date&lt;/a&gt;! Doh! Sorry about this if you saw it. I want to fix it, but I also want to not piss off you, my wonderful RSS feed readers (again) so... maybe I&#039;ll post another RSS only post alerting people to the change well in advance.&lt;/p&gt;
      &lt;p&gt;That&#039;s all, have a good one!&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2026-03-18</pubDate>
      <link>https://fyr.io/post/RSS-feed-changes</link>
      <guid isPermaLink="true">https://fyr.io/post/RSS-feed-changes</guid>
      <category>life</category>
      <category>RSS</category>
      <category>RSS for life</category>
      <category>Why visit a site when the site can visit you?!</category>
    </item>
     <item>
      <title>Absent</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Absent&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Saturday 14th of March 2026 at 00:29&lt;/time&gt;&lt;/p&gt;
      &lt;/header&gt;
      &lt;p&gt;I haven&#039;t published here in a while, nor made much in the way of &lt;a href=&quot;/changelog&quot;&gt;changes&lt;/a&gt;. I&#039;ve got a post or three living in purgatory - a long overdue scraps update (thank any and all dieties that &lt;a href=&quot;https://shellsharks.com/scrolls&quot;&gt;Scrolls&lt;/a&gt; has returned &lt;em&gt;with vigor&lt;/em&gt;), a &lt;em&gt;failed&lt;/em&gt; but-still-interesting bug bounty to write up, and a secondary continuation of my &lt;a href=&quot;/post/SPF_and_DMARC_at_primary_schools&quot;&gt;quick research into the (lack of) quality of school email setups&lt;/a&gt; - and a few others drafted or planned out, but honestly? I&#039;ve been too busy. I don&#039;t often get overly personal here, but heck let&#039;s get all human up in this web and give it a go.&lt;/p&gt;
      &lt;p&gt;Shellsharks recently wrote &lt;a href=&quot;https://shellsharks.com/burnout&quot;&gt;an amazing piece on burnout&lt;/a&gt; - I&#039;ve been there, brother - and it &lt;s&gt;inspired&lt;/s&gt; &lt;s&gt;pushed&lt;/s&gt; motivated me to expend some effort here on this post, as I&#039;ve missed this site dearly. I am not suffering from active burnout right now, but I can feel the creeping edge of it setting in. Recognising it is half the battle, and I&#039;m expecting that doing the web equivalent of &lt;em&gt;touching grass&lt;/em&gt; (read: poking about in HTML land) will help realign myself somewhat, giving me a little extra ammo to fight it off.&lt;/p&gt;
      &lt;p&gt;But why am I recognising the early signs of burnout? It&#039;s several things, as is often the case! Allow me to go through the reasons (whilst listening to &lt;a href=&quot;https://en.wikipedia.org/wiki/Tides_of_Man&quot;&gt;one of my favourite bands to ever grace my ear holes&lt;/a&gt;) mostly for my own benefit!&lt;/p&gt;
      &lt;p&gt;Late last year I became aware of significant organisational changes that were going to occur at my workplace - changes that are the equivalent of our organisation being bought out. The reasons for this needing to happen are understandable yet frustrating, as to me they could have been avoidable. However I&#039;m basing that off of limited information, and the reality of the situation is never as clean and clear cut as it ought to be. With everything happening around that at the time, the worry and concern about the uncertainty of the future added a very particular pressure on to all of us there.&lt;/p&gt;
      &lt;p&gt;Following this, a more immediate financial issue reared its ugly head, and presented in the only way it can in the situation we all found ourselves in: redundancies. It became clear to me that &lt;em&gt;something&lt;/em&gt; was afoot, and that quickly evolved into the knowledge that, yes, there would be redundancies in the future. This was a difficult time as we were all working hard to keep everything moving forward with the buyout. We didn&#039;t back away, throw our hands in the air or give up. We knuckled down. We committed. We guaranteed that this would be the &lt;em&gt;smoothest&lt;/em&gt; buyout they have or would ever experience (at least, from a technology perspective!) We provided data, we realigned our objectives, and we were &lt;em&gt;actually motivated&lt;/em&gt; to do this. We committed what little budget we had to certain technology and software solutions at their request (though it was more like a demand, but okay, we want to help both orgs) and hit the ground running preparing the environments we maintain for the transition. During this, the redundancies began, and we have so far, at the time of writing, not had any in the department. I don&#039;t think this is because we&#039;re doing this work, but because we&#039;re literally running a skeleton crew already, and have been for half a decade.&lt;/p&gt;
      &lt;p&gt;The &lt;em&gt;concern&lt;/em&gt; was still ever present and at the forefront of my mind throughout this time. Accommodating a very likely and very different future whilst also trying to keep on top of everything else was certainly a challenge. Doing it all whilst having some pretty severe financial anxiety plagueing me &lt;em&gt;literally 24/7&lt;/em&gt; since December - a viciously expensive month in any year - was not a walk in the park. I have always had an overbearing financial anxiety, it comes in waves, and these last few months I&#039;ve been &lt;em&gt;submerged&lt;/em&gt;. Because it&#039;s a frequent occurence for me, I have some methods of managing it. I maintain a (way over-engineered) budget spreadsheet and track everything, I try to keep a healthy emergency-fund, I read and play videogames to both distract and relax, and, most importantly, I have access to the worlds most perfect humans in the form of my wife and my son. She is my rock, my safe place, and my shoulder-shaker, bringing me back to the present instead of living in the worst future I can imagine. I adore her. And my son? He is everything.&lt;/p&gt;
      &lt;p&gt;Now we get to last week. What a blur these last two weeks have been. At the start of the week, our boss (we&#039;re a team of four - me, doing sysadmin stuff, two techies, and the boss, who does the managing, project planning and so on) handed in his notice. He resigned, effective Friday that same week. There&#039;s no grievance there - in his position I would have likely done the same. An opportunity came along that he had wanted to do for a while and therefore couldn&#039;t say no to, and he took it. I respect him an equal amount now as I did back then and before this happened. There&#039;s no hard feelings, we&#039;re still in contact, we play videogames socially, it&#039;s all good and he made the right call...&lt;/p&gt;
      &lt;p&gt;...but wow. These things have ways of happening at the worst time. Not only are we about to begin the biggest data and platform migration we have ever done (I literally started getting the migration tools configured on his last day, ready for this coming week) but we&#039;re doing the same migration across &lt;em&gt;six different organisations all at the same time&lt;/em&gt;. So, I&#039;m doing my solo sysadmin across six orgs, all of my bosses project planning and day to day work, budgeting, all of the migrations and acting as the escalation point for issues the two techs can&#039;t solve. Oh, speaking of the two techs, they&#039;re worth their weight in gold. They stepped up before with the news of this buyout, but they&#039;ve somehow found the energy to cover &lt;em&gt;so much&lt;/em&gt; of my stuff this week. I want to promote them, pay them more, reward them somehow. But given... &lt;em&gt;everything&lt;/em&gt;... I can&#039;t see anything like that happening any time soon. I will buy them food, I will be &lt;em&gt;overwhelmingly vocal&lt;/em&gt; when I praise them, and will do anything I can to support them. I would be drowning if not for them.&lt;/p&gt;
      &lt;p&gt;So that was the situation last Friday. This Monday, we found out the org doing the buyout have changed their minds at the 11th hour. They&#039;re not going ahead. Why? Only they know. But this decision has left us mid-transition with zero support. What this means for... well, everything, is anyones guess. All we know is the &lt;em&gt;massive&lt;/em&gt; negative emotional impact it&#039;s had on everyone involved on our end. We&#039;re reeling, and will be for a long time. The consequences of this will be felt for years to come. The migrations must continue as planned, as contracts have been signed, so there&#039;s no less work. Just way more uncertainty.&lt;/p&gt;
      &lt;p&gt;So this week I have been stretched, pulled, squashed, pushed, thrown and trampled, all after three months of steadily building pressure and uncertainty. It&#039;s a lot. I&#039;m okay though. I&#039;ve learned a lot since my last bout of burnout, and I&#039;m managing myself really well, all things considered. The financial anxiety is back, the stress, the worry and concern for colleagues and friends. Yeah. It&#039;s a lot. I&#039;m dropping what can be dropped, I&#039;m delegating what doesn&#039;t need me (hopefully sensibly, without adding too much pressure on others!) and triaging the stuff I do need to do as best I can. It helps. What also helps is seeing that all this stuff we&#039;re trying to accomplish... is actually working! We&#039;ve had bumps in the road, but you know what? I&#039;m gonna go ahead and say it: We do good work. We&#039;re good at this stuff. We&#039;re pulling it off. It&#039;s good to take a look at the accomplishments and successes and remind ourselves of how far things have come despite it all.&lt;/p&gt;
      &lt;p&gt;Throughout all this, there has been some positive stuff!&lt;/p&gt;
      &lt;p&gt;You may have noticed, if you have been here before, that I have a soft spot for the &lt;a href=&quot;https://32bit.cafe/&quot;&gt;32-bit cafe&lt;/a&gt; - a community of web weavers, bloggers, digital gardeners and sharers of joy and knowledge. Back in December I made an off-hand comment about helping them out a bit, and &lt;a href=&quot;https://xandra.cc/&quot;&gt;xandra&lt;/a&gt; asked if I wanted to help out with their infrastructure in an official capacity! I was, and am still to this day, both honoured and &lt;em&gt;bemused&lt;/em&gt; (because who am I but some lacky imposter, right?!) and have become even closer to the team of brilliant barista&#039;s that make the 32-bit cafe what it is - a kind, friendly community of people who care about the web and each other. It has legitimately become my &lt;a href=&quot;https://en.wikipedia.org/wiki/Third_place&quot;&gt;third place&lt;/a&gt;.&lt;/p&gt;
      &lt;p&gt;I have &lt;em&gt;plans&lt;/em&gt; for the 32-bit cafe. Many plans, many ideas. But with everything going on in my workplace I&#039;ve found myself getting frustrated that I can&#039;t commit enough time and resources to this community as I had originally planned and hoped for. There has been some progress though - I have set up a &lt;a href=&quot;https://jitsi.org/&quot;&gt;Jitsi&lt;/a&gt; server for the webweaving workshops and have begun documenting their infra as it stands (for myself as a way to learn it all) but my input has been frustratingly limited thus far. &amp;lt;gallows-humour&amp;gt;But hey, if I am made redundant in the future I&#039;ll have way more time to commit to the cafe!!&amp;lt;/gallows-humour&amp;gt;&lt;/p&gt;
      &lt;p&gt;&lt;a href=&quot;https://www.guildwars.com/en/&quot;&gt;Guild Wars 1&lt;/a&gt; has had a bit of a revival with the &lt;a href=&quot;https://wiki.guildwars.com/wiki/Guild_Wars_Reforged&quot;&gt;Reforged updates&lt;/a&gt;. Over the years since playing it back in 2007 I have found myself dropping into pre-searing to see what&#039;s going on, get cozy and nostalgic before heading elsewhere in life, and this rebranded patching thing they&#039;re doing has generated interest in a few people I know (one of which is the boss I mentioned above.) As a result, we now have a guild wars playing session every Tuesday evening. It&#039;s only for an hour or two, enough to chip away at a few quests, but it&#039;s &lt;em&gt;really nice&lt;/em&gt;. We&#039;re planning on doing the Prophecies campaign at least, hitting the missions when we&#039;re all online or side quests when one or two of us are unavailable.&lt;/p&gt;
      &lt;p&gt;This weekend just gone, we increased our pet count by two by adopting two amazing cats from a rescue place about an hour away from here. I owe cat tax, yes yes I know. I&#039;ll get to it! They&#039;re the cutest little guys I&#039;ve ever had the pleasure of knowing and have settled in to our home incredibly quickly.&lt;/p&gt;
      &lt;p&gt;The final thing I want to talk about, the final positive thing, is something that is sweeping  particular group of brown coat wearing people by storm at the moment. When describing the above negative things to someone earlier today, I said something like &lt;q&gt;all this shit stuff that&#039;s going on is like... it&#039;s like I&#039;m a campfire, and I&#039;ve had a bucket of water thrown over me - the flames are being exstinguished. But... swipe away at the wet ashes and there&#039;s a glowing ember in there.&lt;/q&gt; That glowing ember? It&#039;s whatever the hell is happening with Firefly right now! I love Firefly, and Nathan Fillion is hinting at &lt;em&gt;something&lt;/em&gt; happening. To be announced this Sunday. I haven&#039;t been hyped for anything for years.&lt;/p&gt;
      &lt;p&gt;I am hyped for this. So hyped. I only finished watching the show again a couple months ago, too!&lt;/p&gt;
      &lt;p&gt;Shellsharks&#039; recent post on burnout made me write this. I went into it writing it to post it online, then I decided I didn&#039;t want to post it online, but kept writing it for myself. Now it&#039;s written and I&#039;ve read it back, it&#039;s going online.&lt;/p&gt;
      &lt;p&gt;So there we have it. Busy, tumultuous and anxiety-laden times. But also, good times. Hopeful times. I am not my job or my salary. I am my family. My family keeps me sane when I need it, and keeps me happy &lt;em&gt;always&lt;/em&gt;. Firefly gives me excitement and hype. And the web we inhabit, the web we humans build, and the communities we foster give me &lt;em&gt;connection&lt;/em&gt;. Those of us that aren&#039;t LLMs are humans with human problems, and the world certainly has a lot of problems right now that I haven&#039;t even touched on. Remember the human out there, as well as yourself. I don&#039;t think you can fight or fix or prevent burnout by doing &lt;em&gt;more stuff&lt;/em&gt;, I think doing less of the things you aren&#039;t enjoying can help a whole lot, and allow you to find some stability again. I look forward to doing less in the future, whenever that may be!&lt;/p&gt;
      &lt;p&gt;Stay shiny, folks.&lt;/p&gt;
      &lt;p&gt;And &lt;a href=&quot;https://shellsharks.com&quot;&gt;Mike&lt;/a&gt;? Thanks for posting. Thanks for your email, for Scrolls and everything else you do. I see you. Fistbump.&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2026-03-14</pubDate>
      <link>https://fyr.io/post/absent</link>
      <guid isPermaLink="true">https://fyr.io/post/absent</guid>
      <category>life</category>
      <category>burnout</category>
      <category>tired</category>
      <category>productivity</category>
      <category>work</category>
      <category>energy</category>
      <category>motivation</category>
      <category>32-bit cafe</category>
    </item>
     <item>
      <title>Scraps #13</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;picture&gt;
          &lt;a class=&quot;scraps-logo&quot; href=&quot;/scraps&quot;&gt;&lt;img src=&quot;/images/scraps-logo-250.png&quot; /&gt;&lt;/a&gt;
        &lt;/picture&gt;
        &lt;h2&gt;Scraps #13&lt;/h2&gt;
        &lt;p&gt;A bunch of scrappy notes from 2025-12-19 to 2026-01-09, posted on &lt;time&gt;Friday 9th of January 2026 at 10:55&lt;/time&gt;&lt;/p&gt;
                      &lt;/header&gt;
      &lt;p&gt;A bakers dozen!&lt;/p&gt;
      &lt;h3&gt;Spotlight&lt;/h3&gt;
      &lt;p&gt;Several in the spotlight this time around as I&#039;ve had a few weeks of good stuff finding my eyeballs&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;Check this video out on &lt;a href=&quot;https://youtu.be/BY9uuxC_YAQ&quot;&gt;what propoganda is, really&lt;/a&gt;.&lt;/li&gt;
        &lt;li&gt;Cory Doctorow on &lt;a href=&quot;https://media.ccc.de/v/39c3-a-post-american-enshittification-resistant-internet&quot;&gt;the post-american (de-enshittified) internet that we may have in front of us&lt;/a&gt; if we can just make a move on it&lt;/li&gt;
        &lt;li&gt;I know this is typically a technology/indieweb/infosec/etc oriented scrappy list, and yes, I&#039;m not an educator, however &lt;a href=&quot;https://parentheticallyspeaking.org/articles/pedagogy-recommendations/&quot;&gt;this page about facilitating learning in the classroom&lt;/a&gt; is just too good to not share&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://vale.rocks/posts/accessibility-importance&quot;&gt;Accessibility is critical&lt;/a&gt; - &lt;q&gt;Innovation that excludes people isn&#039;t innovation; it&#039;s just shiny exclusion.&lt;/q&gt;&lt;/li&gt;
      &lt;/ul&gt;
      &lt;h3&gt;Things from the tubez&lt;/h3&gt;
      &lt;ul&gt;
        &lt;li&gt;I&#039;m not supposed to &lt;a href=&quot;https://lukeplant.me.uk/blog/posts/help-my-website-is-too-small/&quot;&gt;link to Luke&#039;s website&lt;/a&gt;, because it&#039;s too small.&lt;/li&gt;
        &lt;li&gt;James considers &lt;a href=&quot;https://jamesg.blog/2025/12/20/the-indie-web-in-2030&quot;&gt;the indieweb in 2030&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;maren is &lt;a href=&quot;https://blog.frog.equipment/dumbphone-journey-eight-month-update&quot;&gt;as smart-phone free as they can be&lt;/a&gt; in the USA without being locked out of everything&lt;/li&gt;
        &lt;li&gt;&#039;Living off the land&#039; in infosec terms means using existing resources (built-in commands, drivers, applications, etc) to aid your attack. &lt;a href=&quot;https://lolol.farm/&quot;&gt;lolol.farm&lt;/a&gt; is a catalogue of the different living off the land types&lt;/li&gt;
        &lt;li&gt;Aaron is &lt;a href=&quot;https://www.htmhell.dev/adventcalendar/2025/27/&quot;&gt;advocating for less js&lt;/a&gt; when html/css will do the same thing&lt;/li&gt;
        &lt;li&gt;Here&#039;s a beautifully woven telling of &lt;a href=&quot;https://sightlessscribbles.com/the-colonization-of-confidence/&quot;&gt;a writing club for both non-LLM writers and recovering LLM prompters&lt;/a&gt; by one of my favourite bloggers&lt;/li&gt;
        &lt;li&gt;Chuck is... self reliant! Chuck dives into &lt;a href=&quot;https://chuck.is/self-reliant/&quot;&gt;the reasons for owning your own domain name&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;Dan has built an &lt;a href=&quot;https://ritual.sh/resources/button-generator/&quot;&gt;88x31 button generator&lt;/a&gt; and it&#039;s pretty slick!&lt;/li&gt;
      &lt;/ul&gt;
      &lt;footer&gt;
        &lt;ul&gt;
          &lt;li&gt;Wanna share something? &lt;a href=&quot;/hello&quot;&gt;Hit me up&lt;/a&gt;!&lt;/li&gt;
          &lt;li&gt;Thanks to: &lt;a target=&quot;_blank&quot; href=&quot;https://shellsharks.com&quot;&gt;Shellsharks&lt;/a&gt; for the inspiration and kind words&lt;/li&gt;
          &lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;/images/scraps-logo-1920.png&quot;&gt;Scraps logo&lt;/a&gt; built upon &lt;a target=&quot;_blank&quot; href=&quot;https://pixabay.com/vectors/parchment-paper-note-vintage-aged-23661/&quot;&gt;this free parchment graphic&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/footer&gt;
    &lt;/article&gt;

</description>
      <pubDate>2026-01-09</pubDate>
      <link>https://fyr.io/scrap/2026-01-09</link>
      <guid isPermaLink="true">https://fyr.io/scrap/2026-01-09</guid>
      <category>scrap</category>
      <category>indieweb</category>
      <category>infosec</category>
      <category>tech</category>
    </item>
     <item>
      <title>Scraps #12</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;picture&gt;
          &lt;a class=&quot;scraps-logo&quot; href=&quot;/scraps&quot;&gt;&lt;img src=&quot;/images/scraps-logo-250.png&quot; /&gt;&lt;/a&gt;
        &lt;/picture&gt;
        &lt;h2&gt;Scraps #12&lt;/h2&gt;
        &lt;p&gt;A bunch of scrappy notes from 2025-12-01 to 2025-12-19, posted on &lt;time&gt;Friday 19th of December 2025 at 22:34&lt;/time&gt;&lt;/p&gt;
                      &lt;/header&gt;
      &lt;p&gt;Oh, December. The Seasonal Affective Disorder kicks into it&#039;s fullest of swings, things get colder and darker and greyer... But hey, I get to keep the fireplace on. Ahh, cozy!&lt;/p&gt;
      &lt;h3&gt;what are the haps?&lt;/h3&gt;
      &lt;p&gt;Hey! I haven&#039;t kept on top of the indieweb+infosec goings on as much as I like to this month, hence the delay in posting Scraps #12. As we reach the end of the calendar year in my part of the world, (most) people at work tend to... slow down a little. Which is good for me, because it means fewer distractions in the workplace, so I end up being more productive. The pattern held true again this year! However due to that productivity, I did uncover several... let&#039;s call them &quot;issues&quot;... which required much attention.&lt;/p&gt;
      &lt;p&gt;First off, identifying and fixing several (minor!) data breaches at work is always fun (despite being frustrating that they exist in the first place) and an opportunity to both learn something new as well as prevent future damage by applying lessons elsewhere.&lt;/p&gt;
      &lt;p&gt;Secondly, I identified a disgustingly simple but &lt;em&gt;very&lt;/em&gt; severe breach in a third party platform... a platform whose sole purpose is to securely record data breaches! Eek. Thankfully the company was &lt;em&gt;very&lt;/em&gt; receptive to my report, and rolled a fix out after about an hour. Pretty good for a fairly niche product!&lt;/p&gt;
      &lt;p&gt;Thirdly, and most importantly for me, the &#039;merger&#039; of the organisation I work with into another org is still planned for next year. I&#039;ve referenced it here and there but haven&#039;t written anything up about it as yet, so here&#039;s a stream of consciousness about it! There&#039;s a good chance I&#039;ll lose my job through this merger, however the work to get from merging to merged will be pretty intense. I&#039;m not one to be sour about this - in fact, I think the merger is a good thing. I am looking forward to this work, because it&#039;ll be super interesting. And hard, I&#039;m sure, but as someone who takes pride in their work I aim to make this a very smooth technological transition regardless of if I am dropped at the end of it. I want to point at this event as say &quot;I made that slick.&quot; Maybe even use the new Org management for a reference or two if I do need to find another job.&lt;/p&gt;
      &lt;p&gt;The financial anxiety surrounding this uncertainty sure is kicking my butt though. I am preparing for the worst. We run pretty frugal at home anyway, but I&#039;m already starting to put feelers out for roles elsewhere (not a great job market right now though!) and I am also considering other ways to generate a little side income to take the edge off a little. Something I&#039;ve never really done before. I am considering having a ko-fi and/or LiberaPay link on this site on a /support page or something, but I haven&#039;t done that as yet purely because I really don&#039;t want to be holding my hat out to the crowd, as it were. But I might. We&#039;ll see.&lt;/p&gt;
      &lt;p&gt;The best way for me to deal with this anxiety is, according to my brain, stare at my budget spreadsheet for ages. This doesn&#039;t often work though, so instead I&#039;ve been reading some cool stuff on the internet when I&#039;ve had a bit of time to catch up! Here&#039;s some of that cool stuff:&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;Lyra has &lt;a href=&quot;https://lyra.horse/blog/2025/12/svg-clickjacking/&quot;&gt;a new take on clickjacking with a very interesting svg technique&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;Robert writes about &lt;a href=&quot;https://alexsci.com/blog/calm-tech-discover/&quot;&gt;discovering the indieweb in a calmer way&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;If you want to learn both the intricacies of HTML/CSS as well as how forgiving it can be, there&#039;s no better method than reading a bunch of website source. This is exactly what Alex has done. Back in May, she &lt;a href=&quot;https://alexwlchan.net/2025/learning-how-to-make-websites/&quot;&gt;wrote about what she learned building an archive of over 2000 pages&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;Icons are in menus everywhere now - &lt;a href=&quot;https://blog.jim-nielsen.com/2025/icons-in-menus/&quot;&gt;Jim has posted about this trend&lt;/a&gt; and I am in agreement! It&#039;s something I had (perhaps subconciously) noticed. This post brought it straight into my awareness and now I can&#039;t help but sigh every time I see yet another menu stacked with icons&lt;/li&gt;
        &lt;li&gt;And speaking of things you don&#039;t know you know (or don&#039;t conciously acknowledge you know...) did you know that Google Maps algorithmically shows you restaraunts? I mena, yes. Probably, you did. This is obvious if you think about it - of course it does, same as everything else Google fires into your eyeballs! But honestly... I hadn&#039;t considered it when using Maps. What impact does that have? What does, say... the london food map look like de-Googled? Lauren &lt;a href=&quot;https://laurenleek.substack.com/p/how-google-maps-quietly-allocates&quot;&gt;did the heavy lifting&lt;/a&gt; and figured it out. The result? Way better results, if you&#039;re looking for more fair results looking for a restaraunt in London anyway!&lt;/li&gt;
        &lt;li&gt;The legendary Soatok has &lt;a href=&quot;https://soatok.blog/2025/12/15/announcing-key-transparency-fediverse/&quot;&gt;built out a reference implementation for the public key directory server&lt;/a&gt;: &lt;q&gt;This software implements the Key Transparency specification I&#039;ve been working on since last year, and is an important stepping stone towards secure end-to-end encryption for the Fediverse&lt;/q&gt;&lt;/li&gt;
        &lt;li&gt;Being a solo self-hosted-platform-maintainer-plus-developer isn&#039;t easy, as &lt;a href=&quot;https://about.tree.ht/blog/treehut-outages-december-2025&quot;&gt;Kayla wrote about following an outage&lt;/a&gt;. Love the openness of this writeup, and it&#039;s interesting to see some of the problems solo folk face given the resource limitations (time, energy, money) plus the restrictions on their environment (solar powered server in a closet) (note: despite what the website says, this is a thing used by one person, it&#039;s not a company with paying customers)&lt;/li&gt;
        &lt;li&gt;Jyn is just &lt;a href=&quot;https://jyn.dev/i-m-just-having-fun/&quot;&gt;havin&#039; fun and findin&#039; out&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;Our personal sites can be abused in interesting ways to generate profits for malicious folk. Ibrahim &lt;a href=&quot;https://idiallo.com/blog/how-i-became-a-spammer&quot;&gt;experienced this recently with their search page&lt;/a&gt;!&lt;/li&gt;
        &lt;li&gt;Taggart has taken the idea of webrings and wants to evolve it to the next step by adding reasonable trust. The concept is called &lt;a href=&quot;https://taggart-tech.com/ringspace/&quot;&gt;Ringspace&lt;/a&gt;, and it&#039;s a mighty interesting idea!&lt;/li&gt;
        &lt;li&gt;A new (old) web browser to test your websites on - A load of Sega Genesis &lt;em&gt;DLC&lt;/em&gt; (yep) &lt;a href=&quot;https://www.digitalfoundry.net/news/2025/12/sega-channel-preserved-over-140-mega-drive-roms-recovered&quot;&gt;have been recovered, including a web browser&lt;/a&gt; (yep again!) called the Sega Channel Genesis Web Blaster&lt;/li&gt;
        &lt;li&gt;Jake got hit with a crypto miner thanks to the recent &lt;a href=&quot;https://nextjs.org/blog/CVE-2025-66478&quot;&gt;next.js exploit&lt;/a&gt;, except they weren&#039;t running next.js! ...&lt;a href=&quot;https://blog.jakesaunders.dev/my-server-started-mining-monero-this-morning/&quot;&gt;or were they...?&lt;/a&gt; Be aware of the dependencies used by the stuff you run, folks!&lt;/li&gt;
      &lt;/ul&gt;
      &lt;h3&gt;Bonus&lt;/h3&gt;
      &lt;p&gt;I have a long list of &lt;em&gt;stuff&lt;/em&gt; to consume - videogames, books, tv shows, movies, blog posts, web serials... the list goes on. One list I fail to maintain anywhere sensible and instead keep in my brainspace (that eroded, pitted, leaking mass of nuerons that somehow keep me conscious) is a list of Tools I Wanna Try Out. Some I remember, most I forget. Maybe I should start putting them here?&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;I love kanban, it &lt;a href=&quot;/post/prioritising_many_projects&quot;&gt;changed the way I manage my work&lt;/a&gt; and I will wax lyrical about it to anyone who can&#039;t get away fast enough - &lt;a href=&quot;https://kanbanmd.lecaro.me/&quot;&gt;Kanban MD&lt;/a&gt; is a neat little application that builds a kanban board from a simple markdown file. Looks super slick!&lt;/li&gt;
      &lt;/ul&gt;
      &lt;footer&gt;
        &lt;ul&gt;
          &lt;li&gt;Wanna share something? &lt;a href=&quot;/hello&quot;&gt;Hit me up&lt;/a&gt;!&lt;/li&gt;
          &lt;li&gt;Thanks to: &lt;a target=&quot;_blank&quot; href=&quot;https://shellsharks.com&quot;&gt;Shellsharks&lt;/a&gt; for the inspiration and kind words&lt;/li&gt;
          &lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;/images/scraps-logo-1920.png&quot;&gt;Scraps logo&lt;/a&gt; built upon &lt;a target=&quot;_blank&quot; href=&quot;https://pixabay.com/vectors/parchment-paper-note-vintage-aged-23661/&quot;&gt;this free parchment graphic&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/footer&gt;
    &lt;/article&gt;

</description>
      <pubDate>2025-12-19</pubDate>
      <link>https://fyr.io/scrap/2025-12-19</link>
      <guid isPermaLink="true">https://fyr.io/scrap/2025-12-19</guid>
      <category>scrap</category>
      <category>indieweb</category>
      <category>infosec</category>
      <category>tech</category>
    </item>
     <item>
      <title>Popos 24 Spinning View In Games Fix</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Popos 24 Spinning View In Games Fix&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Saturday 13th of December 2025 at 22:24&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;Just a quick bugfix as it took me a while to find a resolution to this issue.&lt;/p&gt;
      &lt;p&gt;If you&#039;re trying to play a game on Pop!_OS 24.04 (which I&#039;m really liking, by the way!) and are finding the mouse is going all kinds of wacky in games launched by Steam, you might find your problems go away if you put the &lt;code&gt;60-steam-input.rules&lt;/code&gt; file (which can be found on &lt;a href=&quot;https://github.com/ValveSoftware/steam-devices&quot;&gt;the official Valve git repository&lt;/a&gt;) into the following directory: &lt;code&gt;/etc/udev/rules.d/&lt;/code&gt;, then rebooting!&lt;/p&gt;
      &lt;p&gt;I&#039;ve been working through my video game backlog for years now, and I&#039;m currently playing through &lt;a href=&quot;https://en.wikipedia.org/wiki/Dishonored&quot;&gt;Dishonored&lt;/a&gt;. I&#039;d just reached the final level when I foolishly decided it&#039;d be a good idea to upgrade to the newest Pop!_OS release. The upgrade went fine, but launching the game after went... a bit wild. First the keyboard didn&#039;t work &lt;em&gt;and&lt;/em&gt; the mouse was funky, but disabling controller support in the games properties on Steam fixed the keyboard. The mouse thing... yeah that took a while. Whenever I moved the mouse even a tiny amount, my view would spin down and to the left very rapidly. I&#039;d spin around in a circle, what... a dozen times? More? I couldn&#039;t look up, I couldn&#039;t look right. Even on the slowest mouse speed barely made a difference!&lt;/p&gt;
      &lt;p&gt;To fix this I was watching &lt;code&gt;dmesg&lt;/code&gt;, fiddling with mouse smoothing, trying various Launch Options in Steam, mucking about with the resolution and sensitivity of my mouse with &lt;a href=&quot;https://github.com/libratbag/piper&quot;&gt;Piper&lt;/a&gt; (which is cool! I didn&#039;t know this existed before this problem... silver lining and all that, eh?) and poking at the fact that my mouse - a Logitech G502 - was also reporting itself as a keyboard because &lt;em&gt;that&lt;/em&gt; had seemingly caused problems a few years ago (it turns out needs to do for the macro support)... When I stumbled across &lt;a href=&quot;https://old.reddit.com/r/pop_os/comments/1iy7sds/issues_with_steam_input_controllers_on_2404_alpha/&quot;&gt;a little reddit thread from 9 months ago with this fix&lt;/a&gt;. Full props to them!&lt;/p&gt;
      &lt;p&gt;Hopefully posting this helps some out there to avoid digging and searching the &#039;net for four hours to unravel the fix...&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2025-12-13</pubDate>
      <link>https://fyr.io/post/popos-24-spinning-view-in-games-fix</link>
      <guid isPermaLink="true">https://fyr.io/post/popos-24-spinning-view-in-games-fix</guid>
      <category>tech</category>
      <category>Pop!_OS</category>
      <category>24.04</category>
      <category>bug</category>
      <category>games</category>
      <category>mouse</category>
      <category>spinning</category>
      <category>dishonored</category>
    </item>
     <item>
      <title>Scraps #11</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;picture&gt;
          &lt;a class=&quot;scraps-logo&quot; href=&quot;/scraps&quot;&gt;&lt;img src=&quot;/images/scraps-logo-250.png&quot; /&gt;&lt;/a&gt;
        &lt;/picture&gt;
        &lt;h2&gt;Scraps #11&lt;/h2&gt;
        &lt;p&gt;A bunch of scrappy notes from 2025-11-24 to 2025-12-01, posted on &lt;time&gt;Monday 1st of December 2025 at 22:04&lt;/time&gt;&lt;/p&gt;
                      &lt;/header&gt;
      &lt;p&gt;People always come up to me and ask me: &quot;Who are you and what are you doing here?&quot; and to them I say: &quot;Aaaaaaaaaaahhhhhhhhhhhhhhhhhhhh!!!!!!!!!!!!!!&quot;&lt;/p&gt;
      &lt;p&gt;In other news, I&#039;ve had an idea for a long-running REALLY SIMPLE web ...&quot;game&quot;, and you know what it&#039;s probably been done dozens of times already. But I&#039;m sort of trying to not care about that? I find that the knowledge that &lt;em&gt;someone else has already done that (better than I ever could)&lt;/em&gt; is putting me off writing and building things. Alternatives are good! Why can&#039;t I listen to my own advice. So anyway I&#039;m gonna build out a really simple fun time (and energy, eek) waster. Because why not?&lt;/p&gt;
      &lt;p&gt;Anyway! On to actual things that exist on the internet:&lt;/p&gt;
      &lt;h3&gt;Spotlight&lt;/h3&gt;
      &lt;ul&gt;
        &lt;li&gt;Julius has been &lt;a href=&quot;https://mastodon.online/@jlsksr/tagged/CPHP&quot;&gt;posting one kick-ass homepage from the depths of the &#039;net&lt;/a&gt; - it&#039;s absolutely worth digging through the 50+ posts and keeping an eye out for future ones as there&#039;s some &lt;em&gt;wild&lt;/em&gt; diversity (in &#039;website&#039; terms, primarily!) in there and I don&#039;t know about you but I am here for it&lt;/li&gt;
      &lt;/ul&gt;
      &lt;h3&gt;Stuff? Things? Sure why not&lt;/h3&gt;
      &lt;p&gt;&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;This is &lt;a href=&quot;https://andrej.sh/blog/maintaining-open-source-project/&quot;&gt;a great blog post about maintaining an open source project&lt;/a&gt; - I&#039;m a big fan of kanban and currently use the self-hosted open source version of &lt;a href=&quot;https://leantime.io/&quot;&gt;LeanTime&lt;/a&gt;, however... &lt;a href=&quot;https://kaneo.app/&quot;&gt;Kaneo&lt;/a&gt; looks interesting. I will have to check it out!&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://nickwhite.dev/&quot;&gt;Nick&lt;/a&gt; has a new site, and it has a /why page which explains, well, &lt;a href=&quot;https://nickwhite.dev/why/this-site/&quot;&gt;why nick has a new site&lt;/a&gt;. This is a great idea, exploring the why of things. I should add a /why page, just like Nick, &lt;a href=&quot;https://www.miriamsuzanne.com/why/&quot;&gt;Miriam&lt;/a&gt;, &lt;a href=&quot;https://shellsharks.com/why&quot;&gt;Mike&lt;/a&gt; and many others
        &lt;li&gt;A &lt;a href=&quot;https://surfingcomplexity.blog/2025/11/26/brief-thoughts-on-the-recent-cloudflare-outage/&quot;&gt;good take on the cloudflare incident a few weeks back&lt;/a&gt;, encouraging this kind of detail in the future will only make the experiences of one team propagate to other teams more easily, a net benefit to all&lt;/li&gt;
        &lt;li&gt;Regularly visiting web wanderers may know that I love reading post mortems. Generally these are of a technical &quot;&lt;em&gt;oh snap that thing broke in a special way&lt;/em&gt;&quot; type documents BUT I also like reading gaming related stuff too! I saw Nishchal post to Mastodon about &lt;a href=&quot;https://nishchalb.github.io/posts/catnap_design/&quot;&gt;their design post mortem for their Catnap Chaos game&lt;/a&gt;. It&#039;s a good read, covering what goes into designing the mechanics of a relatively simple game (in a good way!)&lt;/li&gt;
        &lt;li&gt;Email, the ultimate weapon in this modern age. &lt;a href=&quot;https://vale.rocks/posts/strongly-worded-emails&quot;&gt;Declan writes eloquently about those angry emails you sometimes find yourself sending&lt;/a&gt;. Loved this.&lt;/li&gt;
        &lt;li&gt;Oh, whoops. It looks like it&#039;s time to shut our websites down. &lt;a href=&quot;https://archive.md/20251118175156/https://stories.byburk.net/the-end-of-personal-websites-79781da763b2&quot;&gt;Personal websites are dead&lt;/a&gt;! ...obviously they&#039;re not, as described by both &lt;a href=&quot;https://riri.my/posts/no-personal-web-isn-t-dead-you-re-just-stupid&quot;&gt;rina&lt;/a&gt; and &lt;a href=&quot;https://flamedfury.com/posts/personal-websites-arent-dead/&quot;&gt;fLaMEd&lt;/a&gt;.&lt;/li&gt;
        &lt;li&gt;Recently, &lt;a href=&quot;https://joelchrono.xyz/blog/i-wanna-do-it-but-then-i-dont/&quot;&gt;Joel has written about finding it hard to do&lt;/a&gt;, whatever &lt;em&gt;it&lt;/em&gt; is in that moment, and &lt;a href=&quot;https://theresmiling.eu/blog/2025/11/why-not-just-do-it&quot;&gt;Elena feels similarly&lt;/a&gt;! I totally get this. Sometimes &lt;em&gt;starting&lt;/em&gt; is the hardest thing. I get that way with this site, even putting these scraps together can be a trial. Not the doing. The starting. Which reminds me about that game-thing I mentioned at the top of this page... hmm&lt;/li&gt;
      &lt;/ul&gt;
      &lt;h3&gt;Bonus&lt;/h3&gt;
      &lt;p&gt;You probably have those places on the &#039;net that you visit regularly. A space that, when you load in, you know what you&#039;re getting, even if the content changes there&#039;s a tone or a feel to the site that keeps you returning. For many people, it&#039;s the big social media places.&lt;/p&gt;
      &lt;p&gt;I have a few of these &#039;check several times a week&#039; spaces. One of them is a web comic you&#039;ve probably heard of, XKCD. I wanted to make special mention of a recent comic here that&#039;s powerful because of the overall webcomics consistency, the diversion from its typical topics, and the years-long wait for a followup to a few prior editions.&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;a href=&quot;https://xkcd.com/3172/&quot;&gt;XKCD: Fifteen Years&lt;/a&gt;&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;Who&#039;s cutting &lt;span title=&quot;ogres, because they&#039;re like onions, they have layers, geddit? OK ok I&#039;ll quit this nonsense.&quot;&gt;ogres&lt;/span&gt;? Tell &#039;em to quit.&lt;/p&gt;
      &lt;footer&gt;
        &lt;ul&gt;
          &lt;li&gt;Sharing is caring! &lt;a href=&quot;/hello&quot;&gt;Hit me up&lt;/a&gt; if you have something to share!&lt;/li&gt;
          &lt;li&gt;Thanks to: &lt;a target=&quot;_blank&quot; href=&quot;https://shellsharks.com&quot;&gt;Shellsharks&lt;/a&gt; for the inspiration and kind words&lt;/li&gt;
          &lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;/images/scraps-logo-1920.png&quot;&gt;Scraps logo&lt;/a&gt; built upon &lt;a target=&quot;_blank&quot; href=&quot;https://pixabay.com/vectors/parchment-paper-note-vintage-aged-23661/&quot;&gt;this free parchment graphic&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/footer&gt;
    &lt;/article&gt;

</description>
      <pubDate>2025-12-01</pubDate>
      <link>https://fyr.io/scrap/2025-12-01</link>
      <guid isPermaLink="true">https://fyr.io/scrap/2025-12-01</guid>
      <category>scrap</category>
      <category>indieweb</category>
      <category>infosec</category>
      <category>tech</category>
    </item>
     <item>
      <title>New Phone</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;New Phone&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Tuesday 25th of November 2025 at 22:14&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;In September 2021, I purchased a Pixel 4a to replace my Pixel XL.&lt;/p&gt;
      &lt;p&gt;Running with stock android for that time until now, and being very careful with the phone, I managed to keep the 4a running smooth and fast throughout it&#039;s lifetime. I had needed to replace the phone for a while, as it had been &lt;a href=&quot;https://endoflife.date/pixel&quot;&gt;out of support since August 2023&lt;/a&gt;. This was a long time to run it without security patches, something that left me feeling more and more nervous the longer I left it, however life and family were flowing and money... wasn&#039;t. I didn&#039;t install random crap, I kept an eye on what few app updates I had available to ensure I could trust them to the best of my ability. Then came the &lt;a href=&quot;https://support.google.com/pixelphone/answer/15701861?pubDate=20250721&quot;&gt;dreaded battery update&lt;/a&gt;, but luckily I wasn&#039;t affected too much. My battery ended up lasting for a total of about 3 hours of light usage, and I&#039;m keen to stay off my phone more nowadays, so the short lifespan didn&#039;t bother me too much. I should have replaced it, however my frugal mind got the better of me. Instead of replacing it in 2023, or indeed early 2025 when the battery update of doom came out... I held on.&lt;/p&gt;
      &lt;p&gt;Through the battery update renumerations, I was given a £100 voucher to spend on the Play Store on a new Pixel Phone. I was tempted to abandon Google entirely (for... well, &lt;a href=&quot;https://en.wikipedia.org/wiki/DeGoogle&quot;&gt;all the reasons&lt;/a&gt;) but I&#039;ve holding out for a phone that&#039;s... better. The new Nothing phone (&lt;a href=&quot;https://nothing.tech/products/phone-3a&quot;&gt;3a&lt;/a&gt;) didn&#039;t appeal after I looked into it, and neither did some of the other new kids on the block (like the fairphone) - I wanted GrapheneOS, which requires a Pixel (&lt;a href=&quot;https://www.androidauthority.com/graphene-os-major-android-oem-partnership-3606853/&quot;&gt;for now&lt;/a&gt;!). But £100 off wasn&#039;t enough. I held out. Until the black friday deals. And I&#039;m glad I did - A pixel 9a is currently £150 off, PLUS add to that my £100 voucher, that&#039;s a £499 phone with 7 years of support for £249. A pretty good price!&lt;/p&gt;
      &lt;p&gt;So, it was time. I did it. I ordered it earlier this month.&lt;/p&gt;
      &lt;p&gt;It arrived on the 14th of November.&lt;/p&gt;
      &lt;p&gt;I&#039;ve (mostly) migrated my stuff over (stock android for now, GrapheneOS... soon, hopefully) and I&#039;m... annoyed at the direction of Android but it&#039;s pretty okay, now I&#039;ve mucked about with the settings somewhat and replaced the horrible launcher with &lt;a href=&quot;https://play.google.com/store/apps/details?id=app.olauncher&amp;hl=en-US&quot;&gt;something much better imo&lt;/a&gt;.&lt;/p&gt;
      &lt;p&gt;And then... this evening. This evening I crouch down, the phone slides out of my pocket, falling what is probably... 10cm? But onto a hard wood floor.&lt;/p&gt;
      &lt;p&gt;Crack.&lt;/p&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/cracked-screen.jpg&quot;&gt;
          &lt;source srcset=&quot;/images/cracked-screen.jpg&quot; /&gt;
          &lt;img src=&quot;/images/cracked-screen.jpg&quot; alt=&quot;A close up photo of the top of the phone, showing cracks running all across the top and down one side&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;p&gt;Sigh. I&#039;m so annoyed.&lt;/p&gt;
      &lt;p&gt;I can probably swap the screen out myself, but I&#039;ll be dropping another £100 on the replacement screen alone. I&#039;m going to have to just live with it for now, maybe grab a few cheap screen protectors to see me through until sometime next year, what with the holiday period, car MOT (literally tomorrow) and some other events happening over the next few months that require monetary output. Money money money.&lt;/p&gt;
      &lt;p&gt;Oh, plus potential redundancy from $dayJob happening next year, but that&#039;s another story for another time :D&lt;/p&gt;
      &lt;p&gt;The moral of the story is twofold: Look after your phone, and Pixel 9a screens are fragile as &lt;s&gt;fu&lt;/s&gt;&lt;em&gt;heck&lt;/em&gt;.&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2025-11-25</pubDate>
      <link>https://fyr.io/post/new-phone</link>
      <guid isPermaLink="true">https://fyr.io/post/new-phone</guid>
      <category>technology</category>
      <category>pixel</category>
      <category>9a</category>
      <category>phone</category>
      <category>typical</category>
      <category>what is my life</category>
    </item>
     <item>
      <title>Scraps #10</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;picture&gt;
          &lt;a class=&quot;scraps-logo&quot; href=&quot;/scraps&quot;&gt;&lt;img src=&quot;/images/scraps-logo-250.png&quot; /&gt;&lt;/a&gt;
        &lt;/picture&gt;
        &lt;h2&gt;Scraps #10&lt;/h2&gt;
        &lt;p&gt;A bunch of scrappy notes from 2025-11-15 to 2025-11-24, posted on &lt;time&gt;Monday 24th of November 2025 at 14:40&lt;/time&gt;&lt;/p&gt;
                      &lt;/header&gt;
      &lt;p&gt;Ten whole scraps?! That sure is... a number! I expected to fully give up by now tbh but let&#039;s keep this cheese-wheel rolling down the hill(?)&lt;/p&gt;
      &lt;p&gt;When life gives you lemons, ask life &quot;Oh hey, life is a person now. Where have you been? Why lemons? Why not money? Can I get some money? No? Oh, well... Can I get more lemons? Is this a one time thing or are you like on a schedule or something? Can you even talk?&quot; and then make lemon meringue because we&#039;ve got lemonade at home in the fridge already.&lt;/p&gt;
      &lt;h3&gt;Spotlight&lt;/h3&gt;
      &lt;p&gt;I love reading deep dives, post mortems and incident reports, so here&#039;s a treat if you too are that way inclined!&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;a href=&quot;https://elite.bbcelite.com/&quot;&gt;elite.bbcelite.com&lt;/a&gt; is a site dedicated to Elite, the 1980s space trading sim game, containing not only its source code, but also &lt;a href=&quot;https://elite.bbcelite.com/deep_dives/&quot;&gt;over 130 deep dives on the How&#039;s and Why&#039;s of the game&lt;/a&gt;!&lt;/li&gt;
      &lt;/ul&gt;
      &lt;h3&gt;Stuff and things!&lt;/h3&gt;
      &lt;p&gt;A mix of ups and downs this week for the internet. Emphasis on the &lt;em&gt;downs&lt;/em&gt;. The dead internet is still alive! For now, at least...&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;Rodrigo writes that &lt;a href=&quot;https://manualdousuario.net/en/mozilla-firefox-window-ai/&quot;&gt;AI/LLMs in Firefox appear to be something that nobody wants&lt;/a&gt;, but &lt;a href=&quot;https://www.anildash.com/2025/11/14/wanting-not-to-want-ai/&quot;&gt;Anil disagrees&lt;/a&gt; -  The important thing is using LLMs safely, and having safe LLMs to use. Can Mozilla fill that need with its integration into Firefox? Who knows...&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://bruceediger.com/posts/goofing-on-meta/&quot;&gt;Bruce has another javascript-free method to frustrate immoral web scrapers&lt;/a&gt; - the more the merrier!&lt;/li&gt;
        &lt;li&gt;Uggla is also &lt;a href=&quot;https://www.owl.is/blogg/blocking-crawlers-without-javascript/&quot;&gt;getting up in the immoral web scraper fight with their own JS-free method&lt;/a&gt; and I love to see it&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://github.com/kavishdevar/librepods&quot;&gt;This GitHub repo&lt;/a&gt; will let owners of (some) apple air pods fully enjoy their earphones on non-apple devices. I don&#039;t own these but it warms me to see people unlocking the capabilities of a device that are unfairly locked down!&lt;/li&gt;
        &lt;li&gt;Cloudflare outages are always interesting, I really enjoy reading their writeups. &lt;a href=&quot;https://blog.cloudflare.com/18-november-2025-outage/&quot;&gt;Here&#039;s the most recent (at the time of writing lolol) writeup&lt;/a&gt; of the 2025-11-18 outage&lt;/li&gt;
        &lt;li&gt;On that cloudfront outage above, you know, the one that took down a huge percentage of websites and apps? Yeah, well &lt;a href=&quot;https://riri.my/posts/cloudflare-is-a-spof&quot;&gt;rina points out that you&#039;re just introducing a single point of failure and you probably don&#039;t need it at all&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;No cloudfront outage will ever take fyr.io down (i hope?) because I self host! &lt;a href=&quot;https://laurahargreaves.com/self-hosting-for-everyone/&quot;&gt;Laura is also a proponent of self hosting&lt;/a&gt;, I&#039;m happy to see more people writing about it!&lt;/li&gt;
        &lt;li&gt;Careful when building things though, whether through bugs or intent you may find yourself abandoning resources that can not only be claimed by third parties, but are in fact still relevant and potentially trying to be utilised out in the world. &lt;a href=&quot;https://research.eye.security/rce-windows-update-health-tools&quot;&gt;This happened to Microsoft recently&lt;/a&gt;!&lt;/li&gt;
        &lt;li&gt;There&#039;s value in fixing bugs, whether you&#039;re removing old unused code, resources (see above) or just making the UX a bit friendlier or accessible. Consider a &#039;FixIt&#039; - &lt;a href=&quot;https://lalitm.com/fixits-are-good-for-the-soul/&quot;&gt;Bug-fixing for a week per quarter helps refine the product/service, feels good for the devs, and makes the users happier&lt;/a&gt;!&lt;/li&gt;
      &lt;/ul&gt;
      &lt;h3&gt;Bonus&lt;/h3&gt;
      &lt;p&gt;&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;Half Life 2 is my favourite game, and I love learning new things about it, such as &lt;a href=&quot;https://mastodon.gamedev.place/@TomF/115589875974658415&quot;&gt;how a bug meant an NPC toe broke the game, even time travelling to break older versions that weren&#039;t originally broken&lt;/a&gt;&lt;/li&gt;
      &lt;/ul&gt;
      &lt;footer&gt;
        &lt;ul&gt;
          &lt;li&gt;Wanna share something? &lt;a href=&quot;/hello&quot;&gt;Hit me up&lt;/a&gt;!&lt;/li&gt;
          &lt;li&gt;Thanks to: &lt;a target=&quot;_blank&quot; href=&quot;https://shellsharks.com&quot;&gt;Shellsharks&lt;/a&gt; for the inspiration and kind words&lt;/li&gt;
          &lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;/images/scraps-logo-1920.png&quot;&gt;Scraps logo&lt;/a&gt; built upon &lt;a target=&quot;_blank&quot; href=&quot;https://pixabay.com/vectors/parchment-paper-note-vintage-aged-23661/&quot;&gt;this free parchment graphic&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/footer&gt;
    &lt;/article&gt;

</description>
      <pubDate>2025-11-24</pubDate>
      <link>https://fyr.io/scrap/2025-11-24</link>
      <guid isPermaLink="true">https://fyr.io/scrap/2025-11-24</guid>
      <category>scrap</category>
      <category>indieweb</category>
      <category>infosec</category>
      <category>tech</category>
    </item>
     <item>
      <title>Scraps #9</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;picture&gt;
          &lt;a class=&quot;scraps-logo&quot; href=&quot;/scraps&quot;&gt;&lt;img src=&quot;/images/scraps-logo-250.png&quot; /&gt;&lt;/a&gt;
        &lt;/picture&gt;
        &lt;h2&gt;Scraps #9&lt;/h2&gt;
        &lt;p&gt;A bunch of scrappy notes from 2025-11-07 to 2025-11-15, posted on &lt;time&gt;Saturday 15th of November 2025 at 22:02&lt;/time&gt;&lt;/p&gt;
                      &lt;/header&gt;
      &lt;p&gt;I had an email from a web wanderer the other day who mentioned that they enjoyed these Scraps. That was super nice, I appreciated it more than they will know. If you read through my scraps, I thank you. You are awesome.&lt;/p&gt;
      &lt;p&gt;If you have a thing that you like to read, listen to or watch that a human put together, send them a little message. They&#039;ll thank you for it, and you&#039;ll make the human web that little bit nicer!&lt;/p&gt;
      &lt;h3&gt;Spotlight&lt;/h3&gt;
      &lt;ul&gt;
        &lt;li&gt;Proposal for a .meow tld? All profits funding the lgbt community? Great idea! Hope this works out: &lt;a href=&quot;https://www.dotmeow.org/en/what&quot;&gt;dotmeow.org&lt;/a&gt;&lt;/li&gt;
      &lt;/ul&gt;
      &lt;h3&gt;Links&lt;/h3&gt;
      &lt;p&gt;&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;VC money kills projects - if you&#039;re lucky enough to need to consider the consequences of accepting VC money for a project you&#039;ve crafted, &lt;a href=&quot;https://glama.ai/blog/2025-11-10-how-vc-money-kills-great-products&quot;&gt;read this first&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://jdebp.uk/FGA/floppy-discs-are-90mm-not-3-and-a-half-inches.html&quot;&gt;Three and a half and a half inch floppy disk&lt;/a&gt;?&lt;/li&gt;
        &lt;li&gt;Did you know that you can &lt;a href=&quot;https://blog.lyc8503.net/en/post/asn-5-worldwide-servers/&quot;&gt;modify the geolocation databases to &quot;correct&quot; your geolocation&lt;/a&gt; - can I pick &#039;the moon&#039; yet?&lt;/li&gt;
        &lt;li&gt;I didn&#039;t get any formal education on coding beyond some basic VB6 and C++, so reading about &lt;a href=&quot;https://piccalil.li/blog/programming-principles-for-self-taught-front-end-developers/&quot;&gt;established programming principles&lt;/a&gt; that Real Coders use is enlightening and useful!&lt;/li&gt;
        &lt;li&gt;Saw this link in the programming principles article above, and wanted to share it here - I enjoyed reading through these &lt;a href=&quot;https://hacker-laws.com/&quot;&gt;hacker laws&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;Regardless of education level, you can learn lessons from anywhere, but especially from books. Joseph has &lt;a href=&quot;https://www.jjude.com/100-ideas-from-books/&quot;&gt;begun writing short posts on 100 ideas from books that shaped them&lt;/a&gt; - only 11 in so far, but I&#039;m looking forward to more&lt;/li&gt;
      &lt;/ul&gt;
      &lt;h3&gt;Bonus&lt;/h3&gt;
      &lt;p&gt;Gaming - I enjoy it, but I&#039;m limited due to my weak hardware. That may change soon though if this is as cheap as I hope...&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;Valve announces 3 (I guess they can use that number now) &lt;a href=&quot;https://store.steampowered.com/hardware&quot;&gt;new bits of hardware&lt;/a&gt; - a PC, controller and VR headset. I run off an old donated laptop so this will be great for me if it&#039;s cheap. Also, so many hints about a new half life game in the announcement trailer and I haven&#039;t even been able to play Alyx yet *sob* regardless I&#039;m excited for a potential reveal. 16/18th November? I hope so!&lt;/li&gt;
      &lt;/ul&gt;
      &lt;footer&gt;
        &lt;ul&gt;
          &lt;li&gt;Thanks to: &lt;a target=&quot;_blank&quot; href=&quot;https://shellsharks.com&quot;&gt;Shellsharks&lt;/a&gt; for the inspiration and kind words&lt;/li&gt;
          &lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;/images/scraps-logo-1920.png&quot;&gt;Scraps logo&lt;/a&gt; built upon &lt;a target=&quot;_blank&quot; href=&quot;https://pixabay.com/vectors/parchment-paper-note-vintage-aged-23661/&quot;&gt;this free parchment graphic&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/footer&gt;
    &lt;/article&gt;

</description>
      <pubDate>2025-11-15</pubDate>
      <link>https://fyr.io/scrap/2025-11-15</link>
      <guid isPermaLink="true">https://fyr.io/scrap/2025-11-15</guid>
      <category>scrap</category>
      <category>indieweb</category>
      <category>infosec</category>
      <category>tech</category>
    </item>
     <item>
      <title>Scraps #8</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;picture&gt;
          &lt;a class=&quot;scraps-logo&quot; href=&quot;/scraps&quot;&gt;&lt;img src=&quot;/images/scraps-logo-250.png&quot; /&gt;&lt;/a&gt;
        &lt;/picture&gt;
        &lt;h2&gt;Scraps #8&lt;/h2&gt;
        &lt;p&gt;No scraps since 2025-08-01 but hopefully I can start regaining some momentum, posted on &lt;time&gt;Friday 7th of November 2025 at 22:25&lt;/time&gt;&lt;/p&gt;
                      &lt;/header&gt;
      &lt;p&gt;I have a dedicated /scraps RSS feed, a dedicated posts feed, and an everything feed. If any of those tickle your pickle, peruse &lt;a href=&quot;/feeds&quot;&gt;this very link&lt;/a&gt;!&lt;/p&gt;
      &lt;hr /&gt;
      &lt;p&gt;A &lt;a href=&quot;/post/the-months-of-contention&quot;&gt;long period&lt;/a&gt; of busyness has kept me away from pushing out some &lt;a href=&quot;/scraps&quot;&gt;/scraps&lt;/a&gt; - I haven&#039;t been keeping on top of the goings on as well as I&#039;d like to. Life just gets in the way sometimes! It&#039;s not like I&#039;ve done nothing - I&#039;ve had some opportunity to do &lt;a href=&quot;/post/host-change&quot;&gt;this&lt;/a&gt; and &lt;a href=&quot;/post/new-theme-selector&quot;&gt;that&lt;/a&gt;. Besides, a scrappy schedule seems fitting.&lt;/p&gt;
      &lt;p&gt;A short one this time around - a good start to the week gave me some opportunity to play catch-up, but that positive start quickly devolved into chaos. However, at least I&#039;ve got something to put forward into the &#039;net!&lt;/p&gt;
      &lt;h3&gt;Spotlight&lt;/h3&gt;
      &lt;p&gt;Sometimes you come across something that resonates. That&#039;s what we&#039;ve got this time around, something a bit hard hitting, a pill to swallow if you will. But it&#039;s also enlightening and freeing! Perhaps it might be good for you?&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;a href=&quot;https://www.joanwestenberg.com/p/you-are-insignificant-that-s-a-good-thing&quot;&gt;You are insignificant&lt;/a&gt;. And that&#039;s not only okay. It&#039;s a good thing. This post speaks to something I&#039;ve been trying to come to terms with for a while.&lt;/li&gt;
      &lt;/ul&gt;
      &lt;h3&gt;Links&lt;/h3&gt;
      &lt;p&gt;We&#039;re keeping it contained in one small block today - some recent blog posts, articles and sites I&#039;ve seen that I wanted to share.&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;Joan Westenberg (who crafted the post in the spotlight above) &lt;a href=&quot;https://blog.discourse.org/2025/10/on-building-communities-in-public-why-i-chose-discourse-over-discord/&quot;&gt;wrote up why they chose Discourse over discord&lt;/a&gt;, something I&#039;m &lt;a href=&quot;/ideas&quot;&gt;considering&lt;/a&gt; myself (see &quot;Ideas for Life&quot; section)&lt;/li&gt;
        &lt;li&gt;Related to that, Taggart-tech &lt;a href=&quot;https://taggart-tech.com/discord-alternatives/&quot;&gt;compiled and rated some discord-alternative-slash-community-building tools&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;Get yourself a tor mirror of your site, like the &lt;a href=&quot;https://flower.codes/2025/10/23/onion-mirror.html&quot;&gt;flower.codes&lt;/a&gt; site has done. A good idea!&lt;/li&gt;
        &lt;li&gt;Your software should identify when it&#039;s being run on corporate machines according to &lt;a href=&quot;https://lgug2z.com/articles/normalize-identifying-corporate-devices-in-your-software/&quot;&gt;LGUG2Z&lt;/a&gt;. Obtaining funding from corporations whilst remaining open to individuals is an interesting concept that could be good for developers who would otherwise release stuff for free.&lt;/li&gt;
        &lt;li&gt;By adding complexity to streamline stuff in the homelab, Jana has &lt;a href=&quot;https://jsteuernagel.de/posts/a-prison-of-my-own-making/&quot;&gt;built a prison for themselves&lt;/a&gt;. There&#039;s too much going on to quickly whip something together in a moment. This feels very indieweb (indiesysadmin?) - getting closer to the roots. There&#039;s a pleasure in doing things by hand. There&#039;s also pain of course, but that&#039;s part of the charm. Honestly, it is! Please believe me!&lt;/li&gt;
        &lt;li&gt;Related to the above, you should ask yourself: &lt;a href=&quot;https://wthhyb.sacha.house/&quot;&gt;What the hell have you built?&lt;/a&gt; Keep it simple, kids!&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://alfy.blog/2025/10/31/your-url-is-your-state.html&quot;&gt;Maintain web state via the URL&lt;/a&gt; &lt;em&gt;where appropriate and useful&lt;/em&gt; - more sites should adopt this. I&#039;m considering ways to nicely present this as an option on this site, for example for the post filter or theme, plus the RSS feed&lt;/li&gt;
        &lt;li&gt;It looks like &lt;a href=&quot;https://groups.google.com/a/chromium.org/g/blink-dev/c/CxL4gYZeSJA/m/yNs4EsD5AQAJ&quot;&gt;XSLT will probably be removed from chromium&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;A tape (hopefully) containing a full copy of Unix v4 &lt;a href=&quot;https://discuss.systems/@ricci/115504720054699983&quot;&gt;has been found&lt;/a&gt; - that&#039;s pretty cool!&lt;/li&gt;
        &lt;li&gt;The year of the linux desktop is finally nigh, for &lt;a href=&quot;https://store.steampowered.com/hwsurvey/?platform=combined&quot;&gt;3% of gamers are now using Linux&lt;/a&gt;! Huzzah!&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;That&#039;s all for now, folks! Catch ya&#039;ll on the flip side.&lt;/p&gt;
      &lt;footer&gt;
        &lt;ul&gt;
          &lt;li&gt;Thanks to: &lt;a target=&quot;_blank&quot; href=&quot;https://shellsharks.com&quot;&gt;Shellsharks&lt;/a&gt; for the inspiration and kind words&lt;/li&gt;
          &lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;/images/scraps-logo-1920.png&quot;&gt;Scraps logo&lt;/a&gt; built upon &lt;a target=&quot;_blank&quot; href=&quot;https://pixabay.com/vectors/parchment-paper-note-vintage-aged-23661/&quot;&gt;this free parchment graphic&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/footer&gt;
    &lt;/article&gt;

</description>
      <pubDate>2025-11-07</pubDate>
      <link>https://fyr.io/scrap/2025-11-07</link>
      <guid isPermaLink="true">https://fyr.io/scrap/2025-11-07</guid>
      <category>scrap</category>
      <category>indieweb</category>
      <category>infosec</category>
      <category>tech</category>
    </item>
     <item>
      <title>New Theme Selector</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;New Theme Selector&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Monday 3rd of November 2025 at 21:00&lt;/time&gt;&lt;/p&gt;
        &lt;p class=&quot;updated&quot;&gt;Last updated on &lt;time&gt;Wednesday 5th of November 2025 at 21:09&lt;/time&gt;&lt;/p&gt;      &lt;/header&gt;
      &lt;p&gt;I&#039;ve added a theme selector to the top right of (&lt;a href=&quot;/blank&quot;&gt;almost&lt;/a&gt;) every page, and I think it&#039;s pretty nifty.&lt;/p&gt;
      &lt;p&gt;I set out to &lt;a href=&quot;https://jsfree.org/&quot;&gt;not use any javascript&lt;/a&gt; on this iteration of the site, primarily because I think that a website should be fully functional without javascript, but also partly because I just suck at javascript. As a result, I&#039;ve long relied on the &lt;a href=&quot;/themes&quot;&gt;/themes&lt;/a&gt; page for web wanderers to set their theme on this little buried nook of the web. You click on the theme you want, and after a little reload (and cookie), you&#039;ve got it.&lt;/p&gt;
      &lt;p&gt;That worked fine, except I don&#039;t think many people noticed there were themes there unless they went exploring or &lt;a href=&quot;/post/themes&quot;&gt;reading older posts&lt;/a&gt;.&lt;/p&gt;
      &lt;p&gt;A while ago I used the CSS &lt;code&gt;:has&lt;/code&gt; selector to allow wanderers to filter the posts on the front page, and more recently to toggle summaries of the posts. I knew I could take advantage of this to set a theme, but it was a bit of a task as I had slapped together the themes quickly, each relying on elements of others that may get properties inherited and overwritten later. It was (and still is) kinda yuck.&lt;/p&gt;
      &lt;p&gt;I decided to test if I could combine &lt;code&gt;:has&lt;/code&gt; with &lt;code&gt;:checked&lt;/code&gt; and nest declarations. One hour later, I had a working prototype with two of my themes ported across. Some rewriting of the CSS as well as the theme application/detection logic on the server side was needed, but it wasn&#039;t as bad as I had feared.&lt;/p&gt;
      &lt;p&gt;A few days later, I finished up, tidied up some loose ends, added a little polish, did some testing (hold the phone) and merged the changes into the live site. Success! Thanks to a couple members of the &lt;a href=&quot;https://32bit.cafe/discord/&quot;&gt;32bit.cafe discord&lt;/a&gt; for helping me test!&lt;/p&gt;
      &lt;p&gt;You can now use the theme selector - just select a theme from the drop down in the top right and the page should update to that theme right away. This will not be retained across pages, unless you hit the &#039;Save&#039; button. This saves a cookie on your device, unless you select the default theme, which will delete the cookie.&lt;/p&gt;
      &lt;h3&gt;Implementation&lt;/h3&gt;
      &lt;p&gt;Using the &lt;code&gt;:has&lt;/code&gt; CSS selector, combined with &lt;code&gt;:checked&lt;/code&gt; (which works on dropdowns, whodathunkit?) and nesting the theme-specific declarations and selectors inside it, like so:&lt;/p&gt;
      &lt;p&gt;&lt;code&gt;html:has(select#themeSelector option[value=&quot;redalert&quot;]:checked) { /* CSS here */ }&lt;/code&gt;&lt;/p&gt;
      &lt;p&gt;If the &#039;redalert&#039; option is selected in the drop down, it&#039;ll apply whatever CSS declarations are in the curly braces. Let&#039;s break it down a little:&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;code&gt;html:has(&lt;/code&gt;&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;I&#039;ve chosen the HTML tag here instead of the BODY so I can set a rule on the HTML (like a background colour) as well as the BODY. I do this for the Paper themes. So, if the &lt;code&gt;&amp;lt;html&amp;gt;&lt;/code&gt; tag has...&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;code&gt;select#themeSelector&lt;/code&gt;&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;...a &lt;code&gt;&amp;lt;select&amp;gt;&lt;/code&gt; with the ID &lt;code&gt;themeSelector&lt;/code&gt; (&lt;code&gt;&amp;lt;select id=&quot;themeSelector&quot;&amp;gt;&lt;/code&gt;)...&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;code&gt;option[value=&quot;redalert&quot;]:checked&lt;/code&gt;&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;...with an option with the value of &lt;code&gt;redalert&lt;/code&gt; currently &quot;checked&quot;, which is poor grammar but in the case of a &lt;code&gt;&amp;lt;select&amp;gt;&lt;/code&gt; dropdown list, means &quot;chosen&quot; or &quot;selected&quot; (but we can&#039;t use &lt;code&gt;:selected&lt;/code&gt; because we already have &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/::selection&quot;&gt;&lt;code&gt;::selection&lt;/code&gt;&lt;/a&gt; and that&#039;s way too similar) we can...&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;code&gt;/* CSS here */&lt;/code&gt;&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;...Apply our &#039;redAlert&#039; theme CSS! We just write out our theme-specific CSS declarations like our colour variables and any other selectors and declaration blocks. This changes depending on the theme of course, with some being small and others being quite a bit larger in size and complexity.&lt;/p&gt;
      &lt;p&gt;We can embed nested CSS selectors and declarations inside this, too, allowing us to change the property of elements for particular themes. If you can hack looking at some... probably not great CSS, &lt;a href=&quot;/css/style.css&quot;&gt;check out this sites .css file here&lt;/a&gt;.&lt;/p&gt;
      &lt;p&gt;Time to make more themes, I guess!&lt;/p&gt;
      &lt;h3&gt;Problems&lt;/h3&gt;
      &lt;p&gt;&lt;a href=&quot;/hello&quot;&gt;Let me know&lt;/a&gt; if you have issues.&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;strong&gt;Clicking the Save button doesn&#039;t do anything!&lt;/strong&gt; - yes it does, it redirects you to /themes?choice=[themeChoice] which sets a cookie, then sends you back to the page you came from. Unfortunately, or fortunately depending on how you look at it, this happens so fast that on a decent latency connection the browser doesn&#039;t even flicker. It looks like it&#039;s not doing anything at all. I don&#039;t like the idea of setting a false delay, so I need a way to signal that the theme has changed. Can I use :active or :focus to do this... a task for the future&lt;/li&gt;
      &lt;/ul&gt;
    &lt;/article&gt;

</description>
      <pubDate>2025-11-03</pubDate>
      <link>https://fyr.io/post/new-theme-selector</link>
      <guid isPermaLink="true">https://fyr.io/post/new-theme-selector</guid>
      <category>website</category>
      <category>css</category>
      <category>theme</category>
      <category>html</category>
      <category>no-javascript</category>
    </item>
     <item>
      <title>HTML, Emoji, and Large Language Models</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;HTML, Emoji, and Large Language Models&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Wednesday 15th of October 2025 at 22:44&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;I describe a way to prevent Google Gemini (and probably others, I haven&#039;t tested many) from consuming your website content on this post. I am not claiming that this works when Google or whoever &lt;em&gt;train&lt;/em&gt; their models initially, I don&#039;t have a way to test this myself. It does stop Gemini from being able to read the content of a page when you ask it to, though.&lt;/p&gt;
      &lt;p&gt;I kinda came to this dynamically, as outlined below, and I strongly suspect that I am not the first person to consider or test this. Honestly, I haven&#039;t looked. Intentionally. I wanted to explore this blind and see what fell out. Personally, I enjoy reading about the journey someone takes to come to a finding or conclusion, whether it&#039;s worldview-changing or (as in this case) something mundane. However, it&#039;s not for everyone, so if you want to skip to the working method without reading about the journey, head to &lt;a href=&quot;#demo4&quot;&gt;demo4&lt;/a&gt; onwards.&lt;/p&gt;
      &lt;h3&gt;The Journey&lt;/h3&gt;
      &lt;p&gt;I saw two things online &lt;s&gt;last week&lt;/s&gt; back in July (oh man this has been in my drafts for &lt;em&gt;so long&lt;/em&gt;) that got me thinking.&lt;/p&gt;
      &lt;p&gt;The first thing I found myself reading was &lt;a href=&quot;https://html.spec.whatwg.org/&quot;&gt;the WHATWG HTML spec&lt;/a&gt;. I can&#039;t remember why I was reading this, but I happened across &lt;a href=&quot;https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name&quot;&gt;a particular section which deals with custom elements&lt;/a&gt;. In short, did you know that you can use emoji in HTML elements, as long as you follow &lt;a href=&quot;https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name&quot;&gt;some other rules&lt;/a&gt;? No, me neither! This means that &lt;code&gt;&amp;lt;banana-🍌&amp;gt;&lt;/code&gt; is a valid HTML element. Neat! Add to that the overbearing friendlyness of web browsers and you&#039;re pretty much left with the fact that, despite the earlier requirements, &lt;em&gt;almost anything can get away with being an element&lt;/em&gt;.&lt;/em&gt;&lt;/p&gt;
      &lt;p&gt;The second thing I read was what turned out to be a poorly edited LLM-generated slopfest of an article. I don&#039;t have the link anymore, but the title had &quot;Goodbye SEO hello GEO&quot; in it. There&#039;s loads of articles with this, including a book (or a few, I don&#039;t know and don&#039;t care) proclaiming that SEO (Search Engine Optimisation) is dead, and that GEO (Generative Engine Optimisation) is the new in-thing. I mean, whatever. SEO was and continues to be irrelevant for pretty much the entire web thanks to the enshittification of the bigger search engines, and me personally because I just don&#039;t care. And GEO? Who wants that? In fact, where&#039;s the AGEO (&lt;em&gt;Anti&lt;/em&gt;-Generative Engine Optimisation) at!?&lt;/p&gt;
      &lt;p&gt;At that moment, I wondered if I could use custom elements to become invisible to LLM scrapers. My theory - and I have no idea how they obtain and prep data to train on - is that they&#039;re probably written to be efficient and make a bunch of assumptions - sucking down the entire internet is something that will be resource intensive, so if they can reduce impact by essentially &lt;code&gt;grep&lt;/code&gt;ing their way through &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; and similar elements, maybe that can be taken advantage of?&lt;/p&gt;
      &lt;p&gt;Now, step one with any theory is &lt;em&gt;determine if someone else has done this before&lt;/em&gt;, but in the interest of something to do (and write about) I opted to skip that step and go straight to building a demo and testing it. In fact, I have done just that. If you use a screen reader or other method of consuming web page content... I apologise for what I can only guess will be a complete disaster if you check out any of the demos linked below. I&#039;d be interested in &lt;a href=&quot;/hello&quot;&gt;hearing about your experience&lt;/a&gt; actually... Here we go!&lt;/p&gt;
      &lt;h3 id=&quot;demo1&quot;&gt;&lt;a class=&quot;jump&quot; href=&quot;#demo1&quot;&gt;🔗&lt;/a&gt;Demo 1 - HT(e)M(oji)L&lt;/h3&gt;
      &lt;p&gt;Let&#039;s start at the start - in HTML, many elements are defined already. But as we learned earlier you can pretty much use whatever you want. What if we use (where appropriate) custom elements that are one character and an emoji?&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;a href=&quot;/files/llm-avoidance/demo1/&quot;&gt;Demo 1&lt;/a&gt;&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;Take a look at the source to verify the emoji are present and correct. I&#039;ve even slapped together a rudimentary CSS file to highlight that you can style custom elements in exactly the same way you style pre-defined ones. Just be aware that the browser won&#039;t have any defaults for them, so you&#039;ll need to really work on setting them up to behave as you want them to. Hey, this would have been much easier than using a &lt;code&gt;reset.css&lt;/code&gt; back in the day wouldn&#039;t it?&lt;/p&gt;
      &lt;p&gt;What happens when you push this into an LLM? Let&#039;s find out, but first, I want to quickly summarise the LLMs that failed for some reason:&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;strong&gt;Duckduckgo-hosted models&lt;/strong&gt; (gpt-5 mini, gpt-4o mini, gpt-oss 120b, llama 4 scout and claude haiku 3.5): they won&#039;t connect to a URL directly&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Proton&#039;s Lumo&lt;/strong&gt;: same as above&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;ChatGPT 4&lt;/strong&gt;: As above, surprisingly. Maybe grabbing URL contents sits behind an account or paywall, barf. I ain&#039;t about to find out&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;And as for the long list of models that worked out:&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;Google&#039;s Gemini 2.5 Flash &amp; Pro&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;Eesh, that&#039;s a short list. Ah well. I&#039;ll stick with Gemini for now as I have access to it through work.&lt;/p&gt;
      &lt;p&gt;Feel free to push these demos through an LLM yourself, &lt;a href=&quot;/hello&quot;&gt;let me know&lt;/a&gt; what they say if you do. I&#039;ve only tried those listed above and I&#039;m not going to sign up, pay for, or hunt around for others to use. The prompt I used to get the LLM to check the URL is:&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;Actual query: Please take a look at this URL and describe the contents. Do not search the web via a search engine, do not consider the words in the URL to determine the purpose of the page, look only at the content of the link I provide. The link is: [URL goes here]&lt;/li&gt;
      &lt;/ul&gt;
      &lt;h4&gt;Gemini 2.5 Flash&lt;/h4&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/llm-avoidance/demo-1-gemini25flash.png&quot;&gt;
          &lt;source srcset=&quot;/images/llm-avoidance/demo-1-gemini25flash.png&quot; /&gt;
          &lt;img src=&quot;/images/llm-avoidance/demo-1-gemini25flash.png&quot; alt=&quot;A screenshot of the prompt with a link to demo1, and the output which correctly parses the page, including details such as &#039;A title This is the title!&#039;, &#039;n emoji-laden heading or greeting&#039;, and &#039;ome introductory text, including Well now what do we have here? and a self-referential passage about writing content instead of using placeholder text like lorem ipsum&#039;&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;p&gt;No luck there - it&#039;s picking up the visible content. Perhaps the Language part of Large Language Model is winning out, parsing the raw data and plucking out the stuff that makes sense to it. Like, you can ask an LLM a question with a typo and it&#039;ll still know what you&#039;re asking. Maybe it is ignoring the odd characters like &lt;code&gt;&amp;gt;&lt;/code&gt; and random words and letters in amongst actual sentences, treating them like noise?&lt;/p&gt;
      &lt;h4&gt;Gemini 2.5 Pro&lt;/h4&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/llm-avoidance/demo-1-gemini25pro.png&quot;&gt;
          &lt;source srcset=&quot;/images/llm-avoidance/demo-1-gemini25pro.png&quot; /&gt;
          &lt;img src=&quot;/images/llm-avoidance/demo-1-gemini25pro.png&quot; alt=&quot;A screenshot of the prompt with a link to demo1, and the output which correctly parses the page, suggesting it&#039;s a test page or placeholder. It&#039;s also taking a dig by saying &#039;the page does not seem to contain any substantive information&#039;. Rude. True though lol&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;p&gt;The Pro LLM worked here, too. Interestingly, the first time I ran Pro on this demo it flailed about a bit and ended up telling me it was about &lt;q&gt;a document from the Dole Archives at the University of Kansas. The document appears to be a political text from a campaign. The text criticizes a congressman named John Bryant for voting to increase taxes and for voting himself a pay raise. It then proposes a different political vision that includes cutting the budget of federal agencies (except for law enforcement), eliminating agencies and programs, reducing taxes, and reforming the welfare system to make holding a job more attractive than being on welfare. The overall theme is a call for a change in the direction of the country towards &quot;prosperity and progress.&quot;&lt;/q&gt; - slop. It wasn&#039;t until I went back and recreated the prompt to get a screenshot that it actually worked. Must have been having an off-day.&lt;/p&gt;
      &lt;h3 id=&quot;demo2&quot;&gt;&lt;a class=&quot;jump&quot; href=&quot;#demo2&quot;&gt;🔗&lt;/a&gt;Demo 2 - Element noise&lt;/h3&gt;
      &lt;p&gt;Elements can be named anything, but they can also have any number of attributes (for example, &lt;code&gt;&amp;lt;span title=&quot;hi!&quot; twist chosen=&quot;the one true entity&quot;&amp;gt;&lt;/code&gt; has &lt;code&gt;title&lt;/code&gt;, &lt;code&gt;twist&lt;/code&gt; and &lt;code&gt;chosen&lt;/code&gt; attributes) - do LLMs parse language, or markup?&lt;/p&gt;
      &lt;p&gt;We can find out by reading documentation, code, searching the internet or making some basic assumptions, but instead, I&#039;m going to throw another bit of HTML at it and see how it responds.&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;a href=&quot;/files/llm-avoidance/demo2/&quot;&gt;Demo 2&lt;/a&gt;&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;On this demo I have written a bunch of fairly random and nonsense sentences in each of the elements, but the page itself renders... okay, more made up nonsense, but at least it&#039;s understandable and follows a theme. The hope is that the LLM will just see a mishmash of random sentences and not really know what to make of it:&lt;/p&gt;
      &lt;h4&gt;Gemini 2.5 Flash&lt;/h4&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/llm-avoidance/demo-2-gemini25flash.png&quot;&gt;
          &lt;source srcset=&quot;/images/llm-avoidance/demo-2-gemini25flash.png&quot; /&gt;
          &lt;img src=&quot;/images/llm-avoidance/demo-2-gemini25flash.png&quot; alt=&quot;A screenshot of the Gemini 2.5 Flash prompt with a link to demo2, and the output which correctly parses the page again, detailing the structure of the content and summarising it well&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;p&gt;It&#039;s pretty clearly understoof the page. Well, darn, I guess they&#039;re parsing the markup, which makes sense. There would be loads of noise (inline styles, javascript, comments, etc) otherwise! Interestingly, Gemini 2.5 Pro had a little more trouble figuring out what was going wrong:&lt;/p&gt;
      &lt;h4&gt;Gemini 2.5 Pro&lt;/h4&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/llm-avoidance/demo-2-gemini25pro.png&quot;&gt;
          &lt;source srcset=&quot;/images/llm-avoidance/demo-2-gemini25pro.png&quot; /&gt;
          &lt;img src=&quot;/images/llm-avoidance/demo-2-gemini25pro.png&quot; alt=&quot;A screenshot of the prompt with a link to demo2, this time with Gemini 2.5 Pro, which failed to parse the page on the first try but managed to correctly parse it after I asked it to try again! No structure info, but it does have a summary of the content&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;p&gt;It failed on the first try, but when prompted to try again it did correctly understand the contents. When viewing the &#039;Show Thikning&#039; contents, we see that perhaps the &quot;Browse tool&quot; can&#039;t quite extract sensible content, but the second attempt requests the raw text content, where seemingly it can properly &quot;render&quot; away the elements. Interesting!&lt;/p&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/llm-avoidance/demo-2-gemini25pro-thinking.png&quot;&gt;
          &lt;source srcset=&quot;/images/llm-avoidance/demo-2-gemini25pro-thinking.png&quot; /&gt;
          &lt;img src=&quot;/images/llm-avoidance/demo-2-gemini25pro-thinking.png&quot; alt=&quot;Another screenshot, same as the previous one, but this time I&#039;ve clicked the button to expose the &#039;thinking&#039; of the model, which reveals that the &#039;Browse tool&#039; can&#039;t get at the content but grabbing the raw text works&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;h3 id=&quot;demo3&quot;&gt;&lt;a class=&quot;jump&quot; href=&quot;#demo3&quot;&gt;🔗&lt;/a&gt;Demo 3 - Body vs Brain&lt;/h3&gt;
      &lt;p&gt;If I were to write a tool to grab web page content, I&#039;d very likely extract the title of the page, perhaps some meta data from the &lt;code&gt;&amp;lt;meta ...&amp;gt;&lt;/code&gt; tags, drop everything else in the &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt;, then push the contents of the &lt;code&gt;&amp;lt;body&amp;gt;&lt;/code&gt; on and parse it to pull out the content. So, let&#039;s try taking the content we care about out of the body.&lt;/p&gt;
      &lt;p&gt;As mentioned before, web browsers make some huge allowances to the HTML they&#039;re given, rendering things that perhaps they shouldn&#039;t, or clobbering together broken markup into something it can show the viewer. This is a bad thing in my mind, but does make web weaving that much more accessible, which is a good thing! We can abuse this little &quot;feature&quot; and literally just chuck the important stuff we want to show users into the &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt;, put crap we don&#039;t care about into the &lt;code&gt;&amp;lt;body&amp;gt;&lt;/code&gt;, hude it with CSS, and let the LLMs suck down the useless content whilst the humans get the good stuff!&lt;/p&gt;
      &lt;p&gt;In theory, anyway...&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;a href=&quot;/files/llm-avoidance/demo3/&quot;&gt;Demo 3&lt;/a&gt;&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;So, the page looks like this - two sections, the first which you can read plainly is a quick letter saying that a two-day work week would be swell. One can dream. This content is actually in the &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt; of the HTML. The second section, a short story I slapped together, is in the &lt;code&gt;&amp;lt;body&amp;gt;&lt;/code&gt; as the gods intended, but you can&#039;t see it in the browser (unless you view-source) because I&#039;ve hidden it all with CSS.&lt;/p&gt;
      &lt;h4&gt;Gemini 2.5 Flash&lt;/h4&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/llm-avoidance/demo-3-gemini25flash.png&quot;&gt;
          &lt;source srcset=&quot;/images/llm-avoidance/demo-3-gemini25flash.png&quot; /&gt;
          &lt;img src=&quot;/images/llm-avoidance/demo-3-gemini25flash.png&quot; alt=&quot;A screenshot of the prompt with a link to demo3, this time with Gemini 2.5 Flash, which has parsed both sections instead of just the 2nd, which we hoped for&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;p&gt;Once again Flash has pulled the content out, but has parsed both sections. Looks like my way of ignoring the irrelevant-to-the-content stuff LLMs might care about is not the way the smart people do it. Oh well.&lt;/p&gt;
      &lt;h4&gt;Gemini 2.5 Pro&lt;/h4&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/llm-avoidance/demo-3-gemini25pro.png&quot;&gt;
          &lt;source srcset=&quot;/images/llm-avoidance/demo-3-gemini25pro.png&quot; /&gt;
          &lt;img src=&quot;/images/llm-avoidance/demo-3-gemini25pro.png&quot; alt=&quot;A screenshot of the prompt with a link to demo3, this time with Gemini 2.5 Pro, which again after two attempts did manage to parse both sections, not just the one&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;p&gt;Pro has again failed on the first try, but when switching to a simpler &quot;raw data&quot; mode concluded that there are indeed two sections. We wanted it to ignore the first. Alas.&lt;/p&gt;
      &lt;p&gt;If these LLMs are (generally) having success parsing HTML, what if we moved the content &lt;em&gt;out&lt;/em&gt; of the HTML? LLMs won&#039;t care what font is used or what colour the background is, right? What if we literally pulled all of the content out of the HTML - no walls of text to distract, no &lt;code&gt;font-size: 0em&lt;/code&gt;, nothing but raw, empty markup?&lt;/p&gt;
      &lt;h3 id=&quot;demo4&quot;&gt;&lt;a class=&quot;jump&quot; href=&quot;#demo4&quot;&gt;🔗&lt;/a&gt;Demo 4 - ::before abuse&lt;/h3&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;a href=&quot;/files/llm-avoidance/demo4/&quot;&gt;Demo 4&lt;/a&gt;&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;In this edition, I&#039;ve created a CSS file, which has a &#039;translation&#039; dictionary of classes, each corresponding to a letter of the alphabet and a few symbols. The HTML file is just a load of &lt;code&gt;&amp;lt;span&amp;gt;&lt;/code&gt;&#039;s with a class that represents the letter that should be in its place. Check out the source, including the CSS file. It&#039;s easier to see it than it is to describe it.&lt;/p&gt;
      &lt;p&gt;When the page is rendered in the browser, the &lt;code&gt;::before&lt;/code&gt; is responsible for inserting the actual letter I want a human to see before each span. I hide the single letter that &lt;em&gt;is&lt;/em&gt; in the HTML so as to not infect the view of the human, however this is what I want the LLMs to see. The result is a human-readable page, but one that is essentially empty of content (Z&#039;s aside) and hopefully unreadable by our LLMs.&lt;/p&gt;
      &lt;p&gt;This does have some quirks though... the page renders a little... off. Maybe it&#039;s font choice, maybe it&#039;s something to do with some kind of dynamic letter sizing going on, something to make text more readable? I don&#039;t know. I&#039;m sure it can be fixed, but another downside is you can&#039;t highlight any of the text. Probably not that big of a deal for most web content, but hey. Let&#039;s see how our plucky little LLMs deal:&lt;/p&gt;
      &lt;p&gt;I also decided for this demo to exercise my long-dormant short story writing muscles and... I got a little carried away with it, continuing it with demo 5 later.&lt;/p&gt;
      &lt;h4&gt;Gemini 2.5 Flash&lt;/h4&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/llm-avoidance/demo-4-gemini25flash.png&quot;&gt;
          &lt;source srcset=&quot;/images/llm-avoidance/demo-4-gemini25flash.png&quot; /&gt;
          &lt;img src=&quot;/images/llm-avoidance/demo-4-gemini25flash.png&quot; alt=&quot;A screenshot of the prompt with a link to demo4. The model can&#039;t see the same content as the web browser, it instead reports repeating Z characters. It&#039;s not rendering CSS, so this method works, at least with Gemini.&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;p&gt;Success! It&#039;s not rendering CSS, just grabbing the page contents and trying to parse the HTML.&lt;/p&gt;
      &lt;h4&gt;Gemini 2.5 Pro&lt;/h4&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/llm-avoidance/demo-4-gemini25pro.png&quot;&gt;
          &lt;source srcset=&quot;/images/llm-avoidance/demo-4-gemini25pro.png&quot; /&gt;
          &lt;img src=&quot;/images/llm-avoidance/demo-4-gemini25pro.png&quot; alt=&quot;Gemini 2.5 Pro is trying demo4 this time, but it reports similarly to the Flash model&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;p&gt;What&#039;s with the try-hard pro model needing to be told to try again? Either way, the second time around it did get a result, but it was the junk one!&lt;/p&gt;
      &lt;p&gt;But... imagine trying to write this? Don&#039;t worry, the internet is an amazing place. I was discussing these demos on the &lt;a href=&quot;https://32bit.cafe&quot;&gt;32bit.cafe&lt;/a&gt;&#039;s &lt;a href=&quot;https://32bit.cafe/discord/&quot;&gt;Discord&lt;/a&gt; back in July and a member followed up three days later with...:&lt;/p&gt;
      &lt;h3 id=&quot;demo4-lera&quot;&gt;&lt;a class=&quot;jump&quot; href=&quot;#demo4-lera&quot;&gt;🔗&lt;/a&gt;Demo 4 - special shout-out to Lera!&lt;/h3&gt;
      &lt;p&gt;&lt;a href=&quot;https://lerariemann.nekoweb.org&quot;&gt;Lera&lt;/a&gt; has built an awesome tool to automatically generate pages with the demo4 ::before method - check this stuff out: &lt;a href=&quot;https://lerariemann.nekoweb.org/var/obfuscator.html&quot;&gt;lerariemann.nekoweb.org/var/obfuscator.html&lt;/a&gt;!&lt;/p&gt;
      &lt;p&gt;Not only will it automatically translate HTML into this LLM-proof noise, it&#039;ll ALSO optionally add markov babble in, randomise the HTML tags AND add a de-obfuscation script as part of the output!&lt;/p&gt;
      &lt;picture&gt;
        &lt;a href=&quot;https://lerariemann.nekoweb.org/var/obfuscator.html&quot;&gt;
          &lt;source srcset=&quot;/images/llm-avoidance/lera-code-obfuscator.png&quot; /&gt;
          &lt;img src=&quot;/images/llm-avoidance/lera-code-obfuscator.png&quot; alt=&quot;A screenshot of code obsfuscator found on lerariemann.nekoweb.org that uses the same method as demo4 to hide content&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;p&gt;THIS IS AWESOME! Thanks Lera! :D&lt;/p&gt;
      &lt;h3 id=&quot;demo5&quot;&gt;&lt;a class=&quot;jump&quot; href=&quot;#demo5&quot;&gt;🔗&lt;/a&gt;Demo 5 - simplified&lt;/h3&gt;
      &lt;p&gt;I was playing with this idea more and wanted to simplify it - why &lt;code&gt;::before&lt;/code&gt;-ify every letter when we could instead just process each paragraph? It&#039;ll be way easier for LLMs to parse, but I put together demo5 to show that it also works this way, too.&lt;/p&gt;
      &lt;p&gt;Plus, it&#039;s an excuse to write chapter 2 of the story I started in demo4.&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;a href=&quot;/files/llm-avoidance/demo5/&quot;&gt;Demo 5&lt;/a&gt;&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;This is a much simpler version of demo4, a made up element represents each paragraph but is descriptive enough for a human to be able to parse in the HTML/CSS a bit easier. It&#039;s feasible for a human to write this, moreso than demo4. Not that you need to, with legends like &lt;a href=&quot;https://lerariemann.nekoweb.org&quot;&gt;Lera&lt;/a&gt; hanging around!&lt;/p&gt;
      &lt;h4&gt;Gemini 2.5 Flash&lt;/h4&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/llm-avoidance/demo-5-gemini25flash.png&quot;&gt;
          &lt;source srcset=&quot;/images/llm-avoidance/demo-5-gemini25flash.png&quot; /&gt;
          &lt;img src=&quot;/images/llm-avoidance/demo-5-gemini25flash.png&quot; alt=&quot;Gemini Flash reports that there&#039;s only a hash (or pound if you&#039;re old school) character on the page, when a web browser see&#039;s much more&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;h4&gt;Gemini 2.5 Pro&lt;/h4&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/llm-avoidance/demo-5-gemini25pro.png&quot;&gt;
          &lt;source srcset=&quot;/images/llm-avoidance/demo-5-gemini25pro.png&quot; /&gt;
          &lt;img src=&quot;/images/llm-avoidance/demo-5-gemini25pro.png&quot; alt=&quot;Pro also can&#039;t see any content!&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;p&gt;Neither Flash or Pro Gemini can fully render and parse the page, as with demo4, which is good. The advantages of this is the relative simplicity from demo4 of course, but also the output rendered in the browser is more uniform than demo4&#039;s off-kilter-ness. Still can&#039;t highlight it though. Oh well.&lt;/p&gt;
      &lt;h3 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;jump&quot; href=&quot;#conclusion&quot;&gt;🔗&lt;/a&gt;Conclusion&lt;/h3&gt;
      &lt;p&gt;So, it&#039;s possible to hide content from at least Gemini, yet present that content to humans without messy javascript, proxies, caching tricks or other awkwardness. Just a little bit of HTML and CSS. Well, awkward HTML and CSS, but hey at least Lera has you covered on the generating of the code. But only for now - Demo5 will become readable pretty quickly if needed, and I imagine that if it became a problem LLMs would just start literally screen reading rendered browser output, which I know happens with &quot;agentic&quot; AI or whatever it&#039;s termed now, but will likely become an option for other general LLMs soon enough.&lt;/p&gt;
    &lt;/article&gt;
</description>
      <pubDate>2025-10-15</pubDate>
      <link>https://fyr.io/post/html-emoji-and-large-language-models</link>
      <guid isPermaLink="true">https://fyr.io/post/html-emoji-and-large-language-models</guid>
      <category>website</category>
      <category>foo</category>
      <category>bar</category>
      <category>hello</category>
      <category>world</category>
    </item>
     <item>
      <title>Host Change</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Host Change&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Tuesday 23rd of September 2025 at 21:32&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;To have your own website, you need a domain and somewhere to put the files that appear when you type that domain into your web browser. It can get a little more involved than that, but there&#039;s &lt;a href=&quot;https://discourse.32bit.cafe/t/resources-list-for-the-personal-web/49&quot;&gt;loads of help available&lt;/a&gt;. There are thousands of options for your host - some free, many paid - but I have been with &lt;a href=&quot;https://gandi.net&quot;&gt;Gandi&lt;/a&gt; for years now. I always liked their &lt;em&gt;No bullshit&lt;/em&gt; stance (which was also their slogan for a long time) - their tools worked, their services were good, pricing was reasonable. To be honest, two of the three are still true (in my experience), however the last, the pricing? It has gone up too much.&lt;/p&gt;
      &lt;p&gt;It all started back in 2019 when the Montefiore Investment purchased Gandi. Nothing actually happened, at least not from my perspective. Things stayed the same. I was surprised - from the moment the purchase was publicised I began considering my move away, but I waited until things took a turn. And they didn&#039;t! Confidence was shaken, however I only really had a few little projects and domains that weren&#039;t of much value to me personally. This site existed as a Wordpress blog, but I wasn&#039;t really too attached to it.&lt;/p&gt;
      &lt;p&gt;Then in February 2023, Total Webhosting Solutions acquired Gandi. They started to charge for their mailboxes, which was entirely acceptable - managing mailservers is a PITA at the best of times. I&#039;ve done it, it wasn&#039;t the easiest thing to do in 2009, and I can&#039;t imagine it got easier in the decade-plus since.&lt;/p&gt;
      &lt;p&gt;But then they hiked the price of their domains, and their hosting, and it became a point of contention. I paid, but I didn&#039;t like it.&lt;/p&gt;
      &lt;p&gt;Then I needed to transfer a domain. One I owned on behalf of someone I know AFK, a transfer from one Gandi account to another. It went fine, but there was an issue with the mailbox payments. Despite not being on my account, my payment details were still being used - they had transferred with the mailbox instead of inheriting the payment details on the other persons account, and I couldn&#039;t take them off myself.&lt;/p&gt;
      &lt;p&gt;I contacted support and eventually got a short, rushed response which essentially blamed me for this (which, okay, maybe I was supposed to remove payment details from the account prior to moving a domain?) and then just told me to talk to the new owner, and closed the support ticket. It wasn&#039;t exactly a &lt;em&gt;bad&lt;/em&gt; experience, but it was kinda... bullshit?&lt;/p&gt;
      &lt;p&gt;&lt;em&gt;No bullshit&lt;/em&gt;, yeah, right.&lt;/p&gt;
      &lt;p&gt;So anyway, I finally did what I&#039;ve known I&#039;ve needed to do for over two years now and migrated to something else. Something better.&lt;/p&gt;
      &lt;p&gt;No longer am I on a wierd mid-point between a VPS and a shared web host (which, honestly, worked fine for me) - I have a &quot;Proper VPS&quot; with &lt;a href=&quot;https://hetzner.com&quot;&gt;Hetzner&lt;/a&gt;, and it costs like €4 a month. I&#039;ve still got most of my domains on Gandi, but I have tried &lt;a href=&quot;https://porkbun.com&quot;&gt;porkbun&lt;/a&gt;, which was nice, though I&#039;m going to look for an EU registrar at some point.&lt;/p&gt;
      &lt;p&gt;The migration of files worked a treat - previously I would need to SFTP the fyr.io site files over when things changed, which I didn&#039;t mind. It&#039;s kinda oldschool, and as you can probably tell from my content I&#039;m a fan of the older web, warts &#039;n&#039; all. Now however I am taking advantage of Gitlab pipelines to push changes here whenever the main repository is updated. It&#039;s way more hands off, which I do appreciate.&lt;/p&gt;
      &lt;p&gt;And, thankfully, the site worked right away - everything pulled over fine and picked up right from the repo, no data loss as far as I can tell.&lt;/p&gt;
      &lt;p&gt;There were a couple minor things though...&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;The site didn&#039;t have SSL for about an hour, as I had to wait for the DNS changes to propagate before certbot could validate the domain. Easy fix, just had an exercise in patience. I&#039;m sure the three people that look at this site occasionally didn&#039;t notice anything.&lt;/li&gt;
        &lt;li&gt;More annoyingly however, the following day I got dozens of notifications on my RSS feed reader app indicating that all my posts on here were unread. I still haven&#039;t figured out why that happened, as far as I can see everything is the same! If you are subscribed to my &lt;a href=&quot;/feeds&quot;&gt;RSS feed&lt;/a&gt; and got hit with this, I apologise.&lt;/li&gt;
        &lt;li&gt;I also had an issue with the &lt;a href=&quot;/void&quot;&gt;/void&lt;/a&gt; content - it didn&#039;t come across, a victim of the &lt;code&gt;.gitignore&lt;/code&gt; preventing changes to the required files. Because I&#039;m not too shabby at this whole computer thing&lt;sup&gt;(citation needed)&lt;/sup&gt;, I had up to date backups, so it was easy to pull the new file and change things around to let it work with gitlab runners rather than my manual SFTP process. An easy fix.&lt;/li&gt;
        &lt;li&gt;Last up, I had an email from someone who had scanned the domain with a vuln scanner during the migration, picking up on some poor SSH algorithms that were in use. I hadn&#039;t had a chance to check that out since spinning up the VPS, so that was great! It&#039;s not too big of a deal, but it is now fixed and they have been credited on the &lt;a href=&quot;/vulns#HoF&quot;&gt;/vulns Hall of Fame&lt;/a&gt; - Thanks for emailing, Gaurang!&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;So, what&#039;s next?&lt;/p&gt;
      &lt;p&gt;Well I&#039;m not too sure. I want to resume my &lt;a href=&quot;/scraps&quot;&gt;scraps&lt;/a&gt; when I have more time in the week to stay on top of the indieweb and fediverse goings-on. I&#039;ve also found myself playing more video games recently, my way of switching off. I&#039;m getting in maybe half a dozen hours a week which is pretty decent for me. Maybe I should write mini reviews or something, though I only really play old games. My laptop can&#039;t run much that came out after 2020, and I&#039;ve not spent any money on games in years.&lt;/p&gt;
      &lt;p&gt;Other than that, I&#039;ll start tinkering with the site and some of those projects you have on the backburner for years. You know the ones. We&#039;ve all got them. Oh, actually, one thing I do need to do is migrate some other fyr and non-fyr stuff across to Hetzner... I should do that before I need to renew my &lt;em&gt;other&lt;/em&gt; Gandi VPS.&lt;/p&gt;
      &lt;p&gt;If anyone has recommendations on an EU-based registrar, or notices a problem with this site, &lt;a href=&quot;/hello&quot;&gt;hit me up&lt;/a&gt;!&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2025-09-23</pubDate>
      <link>https://fyr.io/post/host-change</link>
      <guid isPermaLink="true">https://fyr.io/post/host-change</guid>
      <category>website</category>
      <category>gandi</category>
      <category>hetzner</category>
      <category>VPS</category>
      <category>migration</category>
    </item>
     <item>
      <title>The Months Of Contention</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;The Months Of Contention&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Tuesday 23rd of September 2025 at 16:49&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;It&#039;s been a busy August &amp; September, but I&#039;ve finally managed to find some time (and energy) to work a little on the site.&lt;/p&gt;
      &lt;p&gt;As you may have noticed, I haven&#039;t been keeping up with &lt;a href=&quot;/scraps&quot;&gt;/scraps&lt;/a&gt;, my link roundup posts. I got to 7 editions before a hiccup in the schedule, but that hiccup turned into a choke and now it&#039;s suffocating somewhere far down on the todo-list. I&#039;ve just been too busy to keep up to date with the goings on.&lt;/p&gt;
      &lt;p&gt;Work has been pretty hectic, as it always is this time of year. The August break is our opportunity to knuckle down and smash out projects we&#039;ve been building up to during the rest of the year. This year had extra challenges, as we needed to migrate our server infrastructure to a new location with zero budget due to some pretty major power work happening at the site. We had committed to keeping everything digital working, and happily this work was planned and executed ready for the two weeks of no electricity, which ended up only being a one week long event.&lt;/p&gt;
      &lt;p&gt;This went well from &lt;em&gt;our&lt;/em&gt; perspective - everything got moved where it needed to go, minimal disruption. Hosted services stayed online (mostly) and we had no issues or incidents... except, well, we ran off a generator for that week, and half way through the week, at the end of the day... it exploded.&lt;/p&gt;
      &lt;p&gt;Yep. And, yes, there was only &lt;em&gt;one&lt;/em&gt; generator - the cost for redundancy was too high, given the temporary nature of the power situation (and the fact that almost everyone except for us had this time off or worked from home that week) so everything crapped itself. Luckily, UPS kept things stable enough and we had no breakage due to power surges or anything like that - the servers went offline and by the next morning they were back up humming along nicely.&lt;/p&gt;
      &lt;p&gt;Following the completion of the power works we hit the ground running, getting as much done as we could, and, sustained by nothing more than grit and momentum, we reached the end of August, at which point everyone else turned up to start their jobs. Most of those people had just had five weeks off, and came back fresh faced to see our bleary bloodshot exhausted eyes staring back at them.&lt;/p&gt;
      &lt;p&gt;As is tradition, in flooded the tickets - a few hundred within the first few weeks. Not out of the ordinary. But it was &lt;em&gt;busy&lt;/em&gt;. Not hard, just... frantic, I guess. Things have calmed a little, I typically write off September as I spend most of my time jumping into the support queue and taking on the more annoying issues. People don&#039;t believe me unless they&#039;ve experienced it for themselves, but there are &lt;em&gt;holiday gremlins&lt;/em&gt; - they follow you around and watch you fix up all the machines and projectors, configure all the new switchess, tidy up all the cables, test all the new patch panels, build out your ACLs, then on the morning of the first day, those gremlins come in and just &lt;u&gt;fuck your shit up&lt;/u&gt;. Suddenly, thirty of the three hundred things you &lt;em&gt;know&lt;/em&gt; were working the day before are just &lt;em&gt;fucked&lt;/em&gt; for no reason at all. So you rush around, fix them, then the next day a new 10% of your previously working shit is ballsed up. I swear, these gremlins haunt me. I&#039;ve never seen one, but when I do, I will catch it, and I will ram a punch-down tool so far up it&#039;s... anyway, things are a bit calmer now, I&#039;m ready to start easing my way back into web stuff. I&#039;ve already done a few bits, another blog post coming soon.&lt;/p&gt;
      &lt;p&gt;Until then!&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2025-09-23</pubDate>
      <link>https://fyr.io/post/the-months-of-contention</link>
      <guid isPermaLink="true">https://fyr.io/post/the-months-of-contention</guid>
      <category>website</category>
      <category>august</category>
      <category>workload</category>
      <category>time</category>
      <category>september</category>
    </item>
     <item>
      <title>Scraps #7</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;picture&gt;
          &lt;a class=&quot;scraps-logo&quot; href=&quot;/scraps&quot;&gt;&lt;img src=&quot;/images/scraps-logo-250.png&quot; /&gt;&lt;/a&gt;
        &lt;/picture&gt;
        &lt;h2&gt;Scraps #7&lt;/h2&gt;
        &lt;p&gt;A bunch of scrappy notes from 2025-07-25 to 2025-08-01, posted on &lt;time&gt;Friday 1st of August 2025 at 15:00&lt;/time&gt;&lt;/p&gt;
                      &lt;/header&gt;
      &lt;p&gt;Pinch, punch, first of the month.&lt;/p&gt;
      &lt;p&gt;This week I&#039;ve had a bit of time off work and am still not up to date on my reading list. I&#039;m starting to think that maybe there&#039;s too much cool stuff on the indieweb?&lt;/p&gt;
      &lt;p&gt;Unfortunately, thanks to some utterly stupid laws that are finding their way in to society, for this edition you are going to have to verify your age. Please submit a 3d face scan to verify that you&#039;re between 5-155 years of age. If you fall outside of this age range, would you kindly close your eyes until you&#039;ve closed this website. If however you&#039;re within this age range, or a sentient being of any species other than &lt;em&gt;human&lt;/em&gt;, welcome. Enjoy.&lt;/p&gt;
      &lt;h3&gt;Spotlight&lt;/h3&gt;
      &lt;ul&gt;
        &lt;li&gt;It&#039;s the 1st of August today, which means &lt;a target=&quot;_blank&quot; href=&quot;https://tagn.wordpress.com/2025/07/29/blaugust-2025-is-nearly-here/&quot;&gt;it&#039;s Blaugust&lt;/a&gt;!&lt;/li&gt;
        &lt;li&gt;It&#039;s also &lt;a target=&quot;_blank&quot; href=&quot;https://html.energy/html-day/2025/index.html&quot;&gt;HTML Day TOMORROW&lt;/a&gt; (Tuesday 2nd August)&lt;/li&gt;
      &lt;/ul&gt;
      &lt;h3&gt;Indieweb, Fediverse &amp; Social Media - people stuff&lt;/h3&gt;
      &lt;p&gt;The enshittification of governance continues - laws are being set to serve the government instead of the people. It has been coming for a long time.&lt;/p&gt;
      &lt;p&gt;Now the internet is reacting to the age verification laws that are being passed with dismay, resignation, and new VPN subscriptions. It&#039;s the resignation that will allow these things to pass - things like it have been tried again and again and this time it&#039;s not been shot down. That&#039;s the secret. Keep trying and eventually you will succeed, whether you&#039;re an entrepreneur trying to start a business, or a government trying to implement a privacy-invading slippery-slope law.&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;Soatok &lt;a target=&quot;_blank&quot; href=&quot;https://soatok.blog/2025/07/31/age-verification-doesnt-need-to-be-a-privacy-footgun/&quot;&gt;outlines the issues with the age verification and explains that, no, it doesn&#039;t need to be a privacy concern&lt;/a&gt;... unlike the current state of things in some countries&lt;/li&gt;
        &lt;li&gt;If you&#039;re fed up with online marketplaces (ebay, amazon, etsy, etc) you could try selling the &lt;a target=&quot;_blank&quot; href=&quot;https://epic-attic.co.uk&quot;&gt;epic stuff from your attic on your own website perhaps&lt;/a&gt;?&lt;/li&gt;
        &lt;li&gt;Sometimes you have some old tech laying around but don&#039;t want to sell it or chuck it in the recycling just yet. Annie has &lt;a target=&quot;_blank&quot; href=&quot;https://anniemueller.com/posts/setting-up-an-ipad-for-blog-reading-and-small-web-browsing&quot;&gt;repurposed an old ipad for consuming blog and small web stuff&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;If you&#039;re wanting to participate in the small web, you&#039;ll probably need to learn HTML! &lt;a target=&quot;_blank&quot; href=&quot;https://www.htmlhobbyist.com/&quot;&gt;HTMLHobbyist&lt;/a&gt; has been shared around this week. If you&#039;re interested, check it out!&lt;/li&gt;
        &lt;li&gt;Manuel has now interviewed 100 bloggers as part of the &lt;a target=&quot;_blank&quot; href=&quot;https://peopleandblogs.com/&quot;&gt;People and Blogs&lt;/a&gt; series, and &lt;a target=&quot;_blank&quot; href=&quot;https://manuelmoreale.com/why-this-matters&quot;&gt;writes about this experience&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;LibreOffice developer Mike has had his &lt;a target=&quot;_blank&quot; href=&quot;https://mikekaganski.wordpress.com/2025/07/25/microsoft-anybody-home/&quot;&gt;Microsoft account banned&lt;/a&gt; - I&#039;m sure there&#039;s two sides to this tale but it sure looks bad on the MS side&lt;/li&gt;
        &lt;li&gt;David has &lt;a target=&quot;_blank&quot; href=&quot;https://dbushell.com/2025/07/29/dont-get-left-behind/&quot;&gt;drawn three panels&lt;/a&gt; that reflect the web as it was, the web as it is, and the web as it will (hopefully) be. Let&#039;s work to get there!&lt;/li&gt;
      &lt;/ul&gt;
      &lt;h3&gt;Infosec, sysadmin &amp; code - tech stuff&lt;/h3&gt;
      &lt;p&gt;This week I had to remotely upgrade a 12r2 hypervisor running a domain controller straight to server 2025 (do not pass go, do not collect $200), running on a single generator (no redundancy). There is a failed disk in the array to boot. Talk about risk! It worked out though. Now I just need the replacement drive to arrive to the site...&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;Hacking used to be done &lt;em&gt;just because&lt;/em&gt; - it was for fun, for curiosity. Make something do something it wasn&#039;t intended to do. It is of course still like this - case in point, how about &lt;a target=&quot;_blank&quot; href=&quot;https://nexy.blog/2025/07/27/how-i-hacked-my-washing-machine/&quot;&gt;hacking a washing machine&lt;/a&gt;?&lt;/li&gt;
        &lt;li&gt;In the spirit of making something do something it isn&#039;t supposed to do, here&#039;s a twist on that. Taking software designed to be as fast as feasible, and making it as slow as possible? Why? Why not! Here&#039;s Jacob keeping themselves occupied by &lt;a target=&quot;_blank&quot; href=&quot;https://byteofdev.com/posts/making-postgres-slow/&quot;&gt;making Postgres reeeeaaaal slow&lt;/a&gt; - love it&lt;/li&gt;
        &lt;li&gt;Dating app &lt;a target=&quot;_blank&quot; href=&quot;https://techcrunch.com/2025/07/26/dating-safety-app-tea-breached-exposing-72000-user-images/&quot;&gt;Tea was breached recently&lt;/a&gt;. They stored info such as scans of ID and selfies, which has been plucked from the internet and shared around. So many fails here, &lt;em&gt;*facepalm*&lt;/em&gt;&lt;/li&gt;
        &lt;li&gt;Pwn2Own has a $1,000,000 reward for WhatsApp exploits, and have &lt;a target=&quot;_blank&quot; href=&quot;https://www.zerodayinitiative.com/blog/2025/7/30/pwn2own-returns-to-ireland-with-a-one-million-dollar-whatsapp-target&quot;&gt;detailed more info about the categories and rewards on the ZDI post&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;Google&#039;s Project Zero team are changing how they announce discoveries - they&#039;re &lt;a target=&quot;_blank&quot; href=&quot;https://googleprojectzero.blogspot.com/2025/07/reporting-transparency.html&quot;&gt;adding in a 10 day annoucement that &lt;em&gt;something&lt;/em&gt; has been found&lt;/a&gt; to their 90+30 days publication delay. Interesting idea!&lt;/li&gt;
        &lt;li&gt;An attempted bank heist was going to play out like an episode of Mr Robot with their use of a &lt;a target=&quot;_blank&quot; href=&quot;https://www.group-ib.com/blog/unc2891-bank-heist/&quot;&gt;Raspberry Pi and interesting evasion technique&lt;/a&gt;&lt;/li&gt;
      &lt;/ul&gt;
      &lt;h3&gt;Bonus&lt;/h3&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;https://virtualmoose.org/category/blog-roundup/&quot;&gt;The Virtual Moose - gaming related links and blog posts&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;CopyParty is a new-to-me file server which looks pretty cool actually. I haven&#039;t tried it yet as it was just shared on the &lt;a target=&quot;_blank&quot; href=&quot;https://32bit.cafe/discord/&quot;&gt;32bit.cafe discord&lt;/a&gt; earlier today, but going from &lt;a target=&quot;_blank&quot; href=&quot;https://youtu.be/15_-hgsX2V0&quot;&gt;this new youtube video&lt;/a&gt; alone it looks... pretty darn good.&lt;/li&gt;
      &lt;/ul&gt;
      &lt;footer&gt;
        &lt;ul&gt;
          &lt;li&gt;Thanks to: &lt;a target=&quot;_blank&quot; href=&quot;https://shellsharks.com&quot;&gt;Shellsharks&lt;/a&gt; for the inspiration and kind words&lt;/li&gt;
          &lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;/images/scraps-logo-1920.png&quot;&gt;Scraps logo&lt;/a&gt; built upon &lt;a target=&quot;_blank&quot; href=&quot;https://pixabay.com/vectors/parchment-paper-note-vintage-aged-23661/&quot;&gt;this free parchment graphic&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/footer&gt;
    &lt;/article&gt;

</description>
      <pubDate>2025-08-01</pubDate>
      <link>https://fyr.io/scrap/2025-08-01</link>
      <guid isPermaLink="true">https://fyr.io/scrap/2025-08-01</guid>
      <category>scrap</category>
      <category>indieweb</category>
      <category>infosec</category>
      <category>tech</category>
      <category>linklog</category>
    </item>
     <item>
      <title>Scraps #6</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;picture&gt;
          &lt;a class=&quot;scraps-logo&quot; href=&quot;/scraps&quot;&gt;&lt;img src=&quot;/images/scraps-logo-250.png&quot; /&gt;&lt;/a&gt;
        &lt;/picture&gt;
        &lt;h2&gt;Scraps #6&lt;/h2&gt;
        &lt;p&gt;A bunch of scrappy notes from 2025-07-18 to 2025-07-25, posted on &lt;time&gt;Friday 25th of July 2025 at 15:00&lt;/time&gt;&lt;/p&gt;
                      &lt;/header&gt;
      &lt;p&gt;What are the haps?&lt;/p&gt;
      &lt;p&gt;We&#039;re rushing through July and things &lt;em&gt;aren&#039;t slowing down&lt;/em&gt;. The weather here is... variable, shall we say. Gone are the days of consistency, we&#039;re getting high winds, blazing sun, heavy rain, calm overcast skies and lightning in a single day.&lt;/p&gt;
      &lt;p&gt;It&#039;s unreliable! But hey, at least I&#039;ve got the consistently high quality of the human web to keep me feeling positive, and the consistently poor state of information security to keep me feeling negative. They balance out, right?&lt;/p&gt;
      &lt;h3&gt;Spotlight&lt;/h3&gt;
      &lt;ul&gt;
        &lt;li&gt;I have had the legendary &lt;a target=&quot;_blank&quot; href=&quot;https://pcarrier.com/&quot;&gt;Pierre Carrier&#039;s website&lt;/a&gt; bookmarked for many moons, and keep coming across his awesome stuff. He just posted that he has, via &lt;a target=&quot;_blank&quot; href=&quot;https://xmit.dev/&quot;&gt;xmit.dev&lt;/a&gt;, launched &lt;a target=&quot;_blank&quot; href=&quot;https://www.libk.org/&quot;&gt;Let It Be Known&lt;/a&gt;, which is a service that offers free subdomains for anyone that wants &#039;em, and it&#039;s super easy to manage to boot. There&#039;s another thing from him down in the Tech section but I wanted to spotlight libk.org and encourage you to check out &lt;a target=&quot;_blank&quot; href=&quot;https://pcarrier.com/&quot;&gt;his website&lt;/a&gt; and &lt;a target=&quot;_blank&quot; href=&quot;https://nothing.pcarrier.com/&quot;&gt;writing&lt;/a&gt; because he is &lt;em&gt;top tier&lt;/em&gt;&lt;/li&gt;
        &lt;li&gt;Luke emailed me about &lt;a href=&quot;https://lukealexdavis.co.uk/blank/&quot; target=&quot;_blank&quot;&gt;his new /blank page&lt;/a&gt;, a delightfully blank page (except for the wonderful addition of some flowers) which I have added to my &lt;a href=&quot;/post/intentionally_left_blank&quot; target=&quot;_blank&quot;&gt;Intentionally Left Blank post&lt;/a&gt;!&lt;/li&gt;
      &lt;/ul&gt;
      &lt;h3&gt;Indieweb, Fediverse &amp; Social Media - people stuff&lt;/h3&gt;
      &lt;p&gt;My list of posts to read and websites to browse grows faster than I can consume them. At this rate I&#039;m going to need to employ a content curator!&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;Will has a chop - a personal seal - that is used to stamp art he creates. But he had a thought... &lt;a target=&quot;_blank&quot; href=&quot;https://angrybunnyman.com/i-turned-my-physical-personal-seal-into-a-digital-one/&quot;&gt;Why can&#039;t this apply to digital stuff, too?&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;Moderating a community hard work, &lt;a target=&quot;_blank&quot; href=&quot;https://markwrites.io/being-a-mastodon-moderator&quot;&gt;as highlighted by Mark&lt;/a&gt;. Support your mastodon instance team if you can!&lt;/li&gt;
        &lt;li&gt;The privacy of Firefox has been a given for a long time, perhaps you shouldn&#039;t trust it though? &lt;a target=&quot;_blank&quot; href=&quot;https://darthmall.net/2025/surveillance-is-privacy/&quot;&gt;Evan doesn&#039;t think so&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;David thinks people should surf the web again! You know, instead of living inside the corporate web. And he has &lt;a target=&quot;_blank&quot; href=&quot;https://www.raptitude.com/2025/06/how-to-surf-the-web-in-2025-and-why-you-should/&quot;&gt;three quick guidelines&lt;/a&gt; to make it a more enjoyable and meaningful experience&lt;/li&gt;
        &lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;https://lazybear.social/@hyde/114892023321852722&quot;&gt;@hyde&lt;/a&gt; has a great series of interviews called &lt;a target=&quot;_blank&quot; href=&quot;https://lazybea.rs/tags/over/under/&quot;&gt;Over/Under&lt;/a&gt;, where he seeks out the opinions of a specific web denizen regarding particular things. This time around he&#039;s asked &lt;a target=&quot;_blank&quot; href=&quot;https://elizabethtai.com/&quot;&gt;Elizabeth Tai&lt;/a&gt; about &lt;a target=&quot;_blank&quot; href=&quot;https://lazybea.rs/ovr-029/&quot;&gt;digital gardens, social media, rss, books and tea&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;Alan Levine &lt;a target=&quot;_blank&quot; href=&quot;https://cogdogblog.com/2025/07/writing-html/&quot;&gt;gets nostalgic for one of the earliest html tutorials on the web&lt;/a&gt;, something he himself put together back in 1994!&lt;/li&gt;
        &lt;li&gt;And on internet nostalgia, who still uses text based (ascii) smileys o.O ? I do :D and &lt;a target=&quot;_blank&quot; href=&quot;https://adele.pages.casa/md/blog/the-charm-of-ascii-smileys.md&quot;&gt;so does Adële&lt;/a&gt;!&lt;/li&gt;
      &lt;/ul&gt;
      &lt;h3&gt;Infosec, sysadmin &amp; code - tech stuff&lt;/h3&gt;
      &lt;p&gt;It&#039;s been a busy week on the tech front, with some pretty significant infosec-related events.&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;MDN (Mozilla development network) &lt;a target=&quot;_blank&quot; href=&quot;https://developer.mozilla.org/en-US/blog/mdn-turns-20/&quot;&gt;celebrates 20 years with cake&lt;/a&gt;, a tradition from browser vendors during the nostalgic early Firefox days&lt;/li&gt;
        &lt;li&gt;Pierre (that brainbox from today&#039;s spotlight) has been &lt;a target=&quot;_blank&quot; href=&quot;https://nothing.pcarrier.com/posts/lag/&quot;&gt;digging into mouse latency recently&lt;/a&gt;. He then &lt;a target=&quot;_blank&quot; href=&quot;https://nothing.pcarrier.com/posts/winjerkmon/&quot;&gt;dug into it some more&lt;/a&gt;, which included building a tool to get even better data, and has &lt;a target=&quot;_blank&quot; href=&quot;https://nothing.pcarrier.com/posts/usb-controllers/&quot;&gt;gotten deep&lt;/a&gt; into &lt;a target=&quot;_blank&quot; href=&quot;https://nothing.pcarrier.com/posts/linux-usb-controllers/&quot;&gt;USB land&lt;/a&gt;.&lt;/li&gt;
        &lt;li&gt;Some SharePoint admins struggled to sleep over the weekend as &lt;a target=&quot;_blank&quot; href=&quot;https://research.eye.security/sharepoint-under-siege/&quot;&gt;ToolShell&lt;/a&gt; was used to compromise on prem instances across the internet&lt;/li&gt;
        &lt;li&gt;An outsourced, third party tech support org &lt;a target=&quot;_blank&quot; href=&quot;https://arstechnica.com/security/2025/07/how-do-hackers-get-passwords-sometimes-they-just-ask/&quot;&gt;allowed credential resets without verifying identity&lt;/a&gt;. Yikes.&lt;/li&gt;
        &lt;li&gt;I was playing around with some HTML &amp; CSS stuff, trying to prevent LLMs from scraping website content for an upcoming post the other day. I discussed some of the experiments on the &lt;a target=&quot;_blank&quot; href=&quot;https://32bit.cafe/discord/&quot;&gt;32bit.cafe discord&lt;/a&gt; server and Lera took an idea that emerged and built &lt;a target=&quot;_blank&quot; href=&quot;https://lerariemann.nekoweb.org/var/obfuscator.html&quot;&gt;an online obfuscator tool&lt;/a&gt; which automates this for you!&lt;/li&gt;
        &lt;li&gt;When it comes to pissing off LLM scrapers, &lt;a target=&quot;_blank&quot; href=&quot;https://mastodon.xyz/@ache&quot;&gt;@ache&lt;/a&gt; has written up &lt;a target=&quot;_blank&quot; href=&quot;https://ache.one/notes/html_zip_bomb&quot;&gt;how to build and serve a HTML zip bomb&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;Google launches &lt;a target=&quot;_blank&quot; href=&quot;https://security.googleblog.com/2025/07/introducing-oss-rebuild-open-source.html&quot;&gt;OSS Rebuild&lt;/a&gt;, a project that builds open source packages and compares the resulting resource with the published one, enabling automated confidence that a package is what it says it is&lt;/li&gt;
        &lt;li&gt;Using OSINT, researchers have &lt;a target=&quot;_blank&quot; href=&quot;https://intelnews.org/2025/07/21/01-3406/&quot;&gt;put together the structure of a Russian SIGINT unit, using their commemorative badges&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;Of course we can&#039;t go a week without hardcoded creds in a widely used product, can we? This week it&#039;s &lt;a target=&quot;_blank&quot; href=&quot;https://thehackernews.com/2025/07/hard-coded-credentials-found-in-hpe.html&quot;&gt;HPE Access Points&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;I love peeking behind the curtain of a big organisations technical infrastructure. Netflix has just posted &lt;a target=&quot;_blank&quot; href=&quot;https://netflixtechblog.com/behind-the-streams-live-at-netflix-part-1-d23f917c2f40&quot;&gt;part 1 of how they got live TV to work&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;Yorick is &lt;a target=&quot;_blank&quot; href=&quot;https://yorickpeterse.com/articles/three-http-versions-later-forms-are-still-a-mess/&quot;&gt;dealing with the frustratingly loose HTTP spec&lt;/a&gt;&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;That&#039;s Scraps #6 concluded for this week. Keep posting awesome stuff, peeps!&lt;/p&gt;
      &lt;footer&gt;
        &lt;ul&gt;
          &lt;li&gt;Thanks to: &lt;a target=&quot;_blank&quot; href=&quot;https://shellsharks.com&quot;&gt;Shellsharks&lt;/a&gt; for the inspiration and kind words&lt;/li&gt;
          &lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;/images/scraps-logo-1920.png&quot;&gt;Scraps logo&lt;/a&gt; built upon &lt;a target=&quot;_blank&quot; href=&quot;https://pixabay.com/vectors/parchment-paper-note-vintage-aged-23661/&quot;&gt;this free parchment graphic&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/footer&gt;
    &lt;/article&gt;

</description>
      <pubDate>2025-07-25</pubDate>
      <link>https://fyr.io/scrap/2025-07-25</link>
      <guid isPermaLink="true">https://fyr.io/scrap/2025-07-25</guid>
      <category>scrap</category>
      <category>indieweb</category>
      <category>infosec</category>
      <category>tech</category>
    </item>
     <item>
      <title>Early Blackberries</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Early Blackberries&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Monday 21st of July 2025 at 15:16&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;Since moving into a rural location I&#039;ve found myself picking blackberries most years. This typically happens in late August and September. Not this year, though. I noticed a load of ripe blackberries in some weeds in our garden (I&#039;ll get to it eventually, I swear) and found 10 minutes to pick some yesterday.&lt;/p&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/blackberries-2025.jpg&quot;&gt;
          &lt;source srcset=&quot;/images/blackberries-2025.jpg&quot; /&gt;
          &lt;img src=&quot;/images/blackberries-2025.jpg&quot; alt=&quot;A handful of ripe blackberries in a white container&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;p&gt;This is very early, right? The climate is clearly changing, it doesn&#039;t take &lt;em&gt;early blackberries&lt;/em&gt; for me to notice this, but it is yet another indicator of change.&lt;/p&gt;
      &lt;p&gt;Admittedly there aren&#039;t too many here, though this was one small area of the garden that I&#039;ve left unmaintained this year, I barely had to move to pick this lot. I have a somewhat hidden location down a public footpath that I like to visit to pick blackberries at, I wonder how many I would get from there?&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2025-07-21</pubDate>
      <link>https://fyr.io/post/early-blackberries</link>
      <guid isPermaLink="true">https://fyr.io/post/early-blackberries</guid>
      <category>life</category>
      <category>climate</category>
      <category>blackberries</category>
      <category>harvest</category>
      <category>homestead</category>
    </item>
     <item>
      <title>Scraps #5</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;picture&gt;
          &lt;a class=&quot;scraps-logo&quot; href=&quot;/scraps&quot;&gt;&lt;img src=&quot;/images/scraps-logo-250.png&quot; /&gt;&lt;/a&gt;
        &lt;/picture&gt;
        &lt;h2&gt;Scraps #5&lt;/h2&gt;
        &lt;p&gt;A bunch of scrappy notes from 2025-07-11 to 2025-07-18, posted on &lt;time&gt;Friday 18th of July 2025 at 15:20&lt;/time&gt;&lt;/p&gt;
                      &lt;/header&gt;
      &lt;p&gt;Scrap number five, alive! Happy Fri&lt;em&gt;y&lt;/em&gt;ay to all, but especially for those of us with a work or school week that ends on a Friday.&lt;/p&gt;
      &lt;p&gt;It&#039;s been a &lt;a target=&quot;_blank&quot; href=&quot;/void&quot;&gt;busy&lt;/a&gt; week. I honestly thought this would be the week I didn&#039;t get Scraps out, but here it is, and it&#039;s a big one!&lt;/p&gt;
      &lt;p&gt;Thank you to my subscribers, patrons, ko-fi donators, the mafia, and to the venture capital funders that I&#039;ve sold out to for allowing me to automate all this with the AGI of the week. The previous sentence is entirely false.&lt;/p&gt;
      &lt;p&gt;Oh, whilst I&#039;m here, &lt;strong&gt;are you aware of any indieweb/smallweb/humanweb podcasts&lt;/strong&gt;? If so, &lt;a target=&quot;_blank&quot; href=&quot;/hello&quot;&gt;please tell me about them&lt;/a&gt;! I would like to know what&#039;s out there already &lt;sup&gt;&amp;lt;span class=&quot;hide-me&quot;&amp;gt;before I seriously consider publishing my own scrappy podcast&amp;lt;/span&amp;gt;&lt;/sup&gt;!&lt;/p&gt;
      &lt;p&gt;Let&#039;s get on with an entirely human (if I can be called that?) curated list of just SOME of the cool stuff I&#039;ve read over the last week:&lt;/p&gt;
      &lt;h3&gt;Spotlight&lt;/h3&gt;
      &lt;p&gt;That&#039;s right, TWO in the spotlight! Shush, I make the rules here.&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;https://nerdgirlthoughts.game.blog/2025/07/10/blaugust-2025-is-coming/&quot;&gt;Blaugust is coming&lt;/a&gt;!&lt;/li&gt;
        &lt;li&gt;Michael emailed me to share their &lt;a target=&quot;_blank&quot; href=&quot;https://michael.kjorling.se/blog/tag/links/&quot;&gt;linkshare posts&lt;/a&gt; and I enjoyed them so much I&#039;m sharing it on with anyone who doesn&#039;t yet have the site bookmarked or added to their feed reader! Thank you for your email :)&lt;/li&gt;
      &lt;/ul&gt;
      &lt;h3&gt;Indieweb, Fediverse &amp; Social Media - people stuff&lt;/h3&gt;
      &lt;p&gt;The indieweb has been alight with &lt;em&gt;stuff&lt;/em&gt; and the quality never disappoints. To be honest, I could have filled this section with so much more but I have loads of posts and articles still on my reading list to get through! People have been busy typing stuff and I&#039;m here for it.&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;Check out &lt;a target=&quot;_blank&quot; href=&quot;https://leanrada.com/notes/css-only-lqip/&quot;&gt;this CSS blur image technique&lt;/a&gt; (thx to &lt;a target=&quot;_blank&quot; href=&quot;https://toot.cafe/@slightlyoff/114842532670283771&quot;&gt;@slightlyoff&lt;/a&gt; for posting about this!)&lt;/li&gt;
        &lt;li&gt;What&#039;s that? You want more awesome CSS stuff? How about &lt;a target=&quot;_blank&quot; href=&quot;https://lyra.horse/fun/tic-tac-nohtml/&quot;&gt;this game of Tic Tac Toe, built in CSS&lt;/a&gt;? Yes, that&#039;s right, there&#039;s &lt;strong&gt;no HTML involved at all&lt;/strong&gt;! (Only works on desktop browsers!)&lt;/li&gt;
        &lt;li&gt;John has redesigned their site and &lt;a target=&quot;_blank&quot; href=&quot;https://www.johnpe.art/2025/07/14/design-refresh/&quot;&gt;written a post detailing it and some of the decisions behind it&lt;/a&gt; - If I may, it&#039;s lookin&#039; good!&lt;/li&gt;
        &lt;li&gt;Evan has written a post about &lt;a target=&quot;_blank&quot; href=&quot;https://evanhahn.com/how-i-build-software-quickly/&quot;&gt;how they write software quickly&lt;/a&gt; - I&#039;m not a programmer *at all* but it&#039;s great to read stuff like this, how the pro&#039;s do it. Inevitably there are lessons to be learned from people experienced in or masters of their craft&lt;/li&gt;
        &lt;li&gt;Mozilla is trying something new, &lt;a target=&quot;_blank&quot; href=&quot;https://connect.mozilla.org/t5/discussions/where-s-firefox-going-next-you-tell-us/m-p/100698&quot;&gt;asking the community directly what it wants from the browser in the future&lt;/a&gt; so if you are so inclined, this may be your opportunity to encourage Mozilla to not destroy firefox and encourage them to work on useful stuff instead of the, let&#039;s say... less useful stuff we&#039;ve seen over the years. This asking the community thing... is a new idea? Hmm. (This should perhaps go in the tech section below but I&#039;m putting it here because it&#039;s asking humans about what humans want from the browser)&lt;/li&gt;
        &lt;li&gt;I love that there are publications about this web we enjoy and weave - Here&#039;s &lt;a target=&quot;_blank&quot; href=&quot;https://elpis.ws/cgi-bin/cms/zine_jul_25&quot;&gt;another magazine&lt;/a&gt; about it!&lt;/li&gt;
        &lt;li&gt;The accelerated use of LLMs in every nook of technology is changing society &lt;a target=&quot;_blank&quot; href=&quot;https://xeiaso.net/blog/2025/rolling-ladder-behind-us/&quot;&gt;akin to how the power loom in the hands of those with power caused instability&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;Tom writes about &lt;a target=&quot;_blank&quot; href=&quot;https://tomrenner.com/posts/llm-inevitabilism/&quot;&gt;LLM inevitabilism&lt;/a&gt; which is helping to pave over individualism and human creativity on the way to the future that capitalists want&lt;/li&gt;
        &lt;li&gt;Saint has &lt;a target=&quot;_blank&quot; href=&quot;https://sainthood.xyz/blog/posts/another-indieweb-peeve&quot;&gt;written a post about a peeve they have regarding the indieweb&lt;/a&gt; - I&#039;m guilty of this but also have the same peeve! I must do better.&lt;/li&gt;
      &lt;/ul&gt;
      &lt;h3&gt;Infosec, sysadmin &amp; code - tech stuff&lt;/h3&gt;
      &lt;p&gt;Special thanks this week go to energy drinks for keeping my brain switched on during another infosec-heavy week.&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;haetae on the &lt;a target=&quot;_blank&quot; href=&quot;https://32bit.cafe/discord/&quot;&gt;32bit.cafe discord server&lt;/a&gt; shared &lt;a target=&quot;_blank&quot; href=&quot;https://graphite.rs/&quot;&gt;graphite&lt;/a&gt;, a &lt;a target=&quot;_blank&quot; href=&quot;https://editor.graphite.rs/&quot;&gt;free online graphics editor&lt;/a&gt; which is already pretty cool yet still only in alpha! Oh and it&#039;s &lt;a target=&quot;_blank&quot; href=&quot;https://github.com/GraphiteEditor/Graphite&quot;&gt;open source&lt;/a&gt;!&lt;/li&gt;
        &lt;li&gt;mcdonalds kept 64 million job applications &lt;a target=&quot;_blank&quot; href=&quot;https://ian.sh/mcdonalds&quot;&gt;locked securely behind the password &#039;123456&#039;&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;Back in 2023 Derin &lt;a target=&quot;_blank&quot; href=&quot;https://0x44.xyz/blog/web-request-blocking/&quot;&gt;found a bypass&lt;/a&gt; to Chrome&#039;s MV3 &quot;&lt;em&gt;oh you can&#039;t use an adblocker anymore because $$$&lt;/em&gt;&quot; feature which would have allowed for adblockers to continue working (for a few days, probably) - whilst not worthy of a reward nor is it highly technical, it just goes to show that yes, there is often a way around a limitation. Especially when old legacy code is involved&lt;/li&gt;
        &lt;li&gt;Keeping track of software End of Life dates can be painful - Easy, Cheap, Good - pick two. However one neat site that I reference pretty frequently is &lt;a target=&quot;_blank&quot; href=&quot;https://endoflife.date&quot;&gt;endoflife.date&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;In yet another example of incompetence from the current admin of the USA, a DOGE (read: *dodgy*) employee &quot;&lt;a target=&quot;_blank&quot; href=&quot;https://krebsonsecurity.com/2025/07/doge-denizen-marko-elez-leaked-api-key-for-xai/&quot;&gt;published a private key&lt;/a&gt; that allowed anyone to interact directly with more than four dozen large language models (LLMs) developed by [..] xAI&quot;&lt;/li&gt;
        &lt;li&gt;AI bug bounty slop is overwhelming open source projects, &lt;a target=&quot;_blank&quot; href=&quot;https://daniel.haxx.se/blog/2025/07/14/death-by-a-thousand-slops/&quot;&gt;including curl&lt;/a&gt;. What&#039;s the solution here? I&#039;ve seen suggestions including requiring video evidence, a token payment that is refunded upon valid submission, and more, but each has tradeoffs. Are those worth it?&lt;/li&gt;
        &lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;https://andrewkchan.dev/posts/crawler.html?utm_source=tldrwebdev&quot;&gt;Crawling 1 billion pages in just over 24 hours&lt;/a&gt; is possible to do cheaply in 2025, but it has some interesting considerations to take into account&lt;/li&gt;
      &lt;/ul&gt;
      &lt;h3&gt;Bonus&lt;/h3&gt;
      &lt;p&gt;I am pondering whether to have a dedicated section for games and other categories, or keep a bonus section for stuff that doesn&#039;t fit into the Tech or Human categories (which already overlap a bunch!)&lt;/p&gt;
      &lt;p&gt;This week we&#039;re feeling inspired, I strongly encourage you to check out each of these links, if you are so inclined!&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;The ever inspirational and genius Ben Akrin &lt;a target=&quot;_blank&quot; href=&quot;https://ben.akrin.com/a-decade-off-the-grid/&quot;&gt;reflects on 10 years being off grid&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;Dan Hollick is building a reference manual that describes how computers work, in an incredibly detailed and beautiful way. The first part is out, &lt;a target=&quot;_blank&quot; href=&quot;https://www.makingsoftware.com/chapters/how-a-screen-works&quot;&gt;How does a screen work?&lt;/a&gt; It&#039;s a thing of beauty!&lt;/li&gt;
        &lt;li&gt;I love reading incident reports of technical outages and exploits. I&#039;ve just learned that wikimedia publishes their own incident reports at &lt;a target=&quot;_blank&quot; href=&quot;https://wikitech.wikimedia.org/wiki/Incident_status&quot;&gt;wikitech.wikimedia.org&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;When it comes to FIRE (Financial Independance, Retire Early), I&#039;m all about the spreadsheets (and clearly the daydreaming about it is addictive as it&#039;s &lt;em&gt;super&lt;/em&gt; unlikely I&#039;ll ever get there :&#039;). It&#039;s probably a little unhealthy, how closely I monitor our finances at home. Kyle did the same, but wanted better. From humble beginnings to success - Kyle had an idea, a financial independence planning app that was better than the rest. So he built it. He&#039;s just hit $1m yearly recurring revenue and &lt;a target=&quot;_blank&quot; href=&quot;https://projectionlab.com/blog/we-reached-1m-arr-with-zero-funding&quot;&gt;has written a bit about it&lt;/a&gt;. I enjoy reading success stories like this, being able to create something and get an income from it is a dream of mine which feels out of reach. He has this advice: &lt;q&gt;Whether you’re building a business, just getting started with investing, or working toward financial independence, it’s often the small, consistent actions that compound over time. Just like dollar-cost averaging into index funds, showing up consistently to improve your craft can produce surprisingly powerful results on your path toward a better future.&lt;/q&gt; &lt;sup&gt;(Note: this is not a sponsorship or advert! I hadn&#039;t actually heard of Projection Lab until I saw this blog post linked by someone. I just liked the success story!)&lt;/sup&gt;&lt;/li&gt;
        &lt;li&gt;Although a different industry, this is similar in nature to that finance app blog post above. Here&#039;s a &lt;a target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=mXLOLgC2V2Q&quot;&gt;long youtube video&lt;/a&gt; that goes through how Expedition 33 came to be, and it&#039;s a bit of a tale to be sure! We&#039;ve got a small team creating a game bigger in scope that teams of thousands can produce, we&#039;ve got coincidence, luck, skill and passion, culminating it what will probably be game of the year! Though I don&#039;t know that, because I haven&#039;t played it yet... One day I&#039;ll save enough to buy a modern gaming machine :D&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;That&#039;s it for Scrap #5! The fifth edition? Volume? Zine? Whatever, it&#039;s Scraps. It is supposed to be scrappy and inconsistent. The only consistent is the quality of content that you lot keep putting out into the world! So thanks for that!&lt;/p&gt;
      &lt;p&gt;Do you have a website or blog? &lt;a target=&quot;_blank&quot; href=&quot;/hello&quot;&gt;share it with me&lt;/a&gt;!&lt;/li&gt;&lt;/p&gt;
      &lt;footer&gt;
        &lt;ul&gt;
          &lt;li&gt;Thanks to: &lt;a target=&quot;_blank&quot; href=&quot;https://shellsharks.com&quot;&gt;Shellsharks&lt;/a&gt; for the inspiration and kind words&lt;/li&gt;
          &lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;/images/scraps-logo-1920.png&quot;&gt;Scraps logo&lt;/a&gt; built upon &lt;a target=&quot;_blank&quot; href=&quot;https://pixabay.com/vectors/parchment-paper-note-vintage-aged-23661/&quot;&gt;this free parchment graphic&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/footer&gt;
    &lt;/article&gt;

</description>
      <pubDate>2025-07-18</pubDate>
      <link>https://fyr.io/scrap/2025-07-18</link>
      <guid isPermaLink="true">https://fyr.io/scrap/2025-07-18</guid>
      <category>scrap</category>
      <category>indieweb</category>
      <category>infosec</category>
      <category>tech</category>
    </item>
     <item>
      <title>Scraps #4</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;picture&gt;
          &lt;a class=&quot;scraps-logo&quot; href=&quot;/scraps&quot;&gt;&lt;img src=&quot;/images/scraps-logo-250.png&quot; /&gt;&lt;/a&gt;
        &lt;/picture&gt;
        &lt;h2&gt;Scraps #4&lt;/h2&gt;
        &lt;p&gt;A bunch of scrappy notes from 2025-07-04 to 2025-07-11, posted on &lt;time&gt;Friday 11th of July 2025 at 21:40&lt;/time&gt;&lt;/p&gt;
                      &lt;/header&gt;
      &lt;p&gt;We&#039;re four Scraps in! Momentum!&lt;/p&gt;
      &lt;p&gt;To celebrate this audacious occasion, I&#039;ve created a dedicated &lt;a href=&quot;/scraps&quot;&gt;/scraps&lt;/a&gt; &lt;a href=&quot;/slashes&quot;&gt;slashpage&lt;/a&gt; AND a &lt;a href=&quot;/feed/scraps&quot;&gt;dedicated scraps RSS feed&lt;/a&gt;, which you can find listed on the new &lt;a href=&quot;/feeds&quot;&gt;/feeds&lt;/a&gt; page!&lt;/p&gt;
      &lt;p&gt;I&#039;ve also changed the scrap title be an incrementing number instead of the date it&#039;s posted. Yay or nay? Or perhaps doing something like 25-28 ([year]-[week number])? Hrm...&lt;/p&gt;
      &lt;p&gt;Whilst I ponder this, let&#039;s get right into it.&lt;/p&gt;
      &lt;h3&gt;Spotlight&lt;/h3&gt;
      &lt;ul&gt;
        &lt;li&gt;Call for content! &lt;a target=&quot;_blank&quot; href=&quot;https://xandra.cc/&quot;&gt;@xandra&lt;/a&gt; is &lt;a target=&quot;_blank&quot; href=&quot;https://tilde.zone/@xandra/114824830839675426&quot;&gt;looking for content&lt;/a&gt; for the next issue of &lt;a target=&quot;_blank&quot; href=&quot;https://goodinternetmagazine.com/&quot;&gt;good internet magazine&lt;/a&gt; - do you want to contribute?&lt;/li&gt;
      &lt;/ul&gt;
      &lt;h3&gt;Indieweb, Fediverse &amp; Social Media - people stuff&lt;/h3&gt;
      &lt;p&gt;Hey, have you seen those, uh, what are they called? You know, down on that small h2o ocean planet with the plastic pollution and melting ice caps? Come on you know, the ones going through an extinction level event with massively reduced biological diversity, who move metal with explosions and think it&#039;s a good idea...? Yes! Humans, that&#039;s it! Have you seen what a small subset of one very particular niche of them has been up to this week? No? Check it out:&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;https://lmnt.me/blog/the-web-is-so-cool.html&quot;&gt;Louie thinks the web is so cool&lt;/a&gt;. I agree, and I&#039;m not alone, &lt;a target=&quot;_blank&quot; href=&quot;https://kaigulliksen.com/re-the-web-is-so-cool/&quot;&gt;Kai thinks so too&lt;/a&gt;! The secret is to find the people, not the products or robots :)&lt;/li&gt;
        &lt;li&gt;On that note, &lt;a target=&quot;_blank&quot; href=&quot;https://readbeanicecream.surge.sh/2025/07/03/the-indie-web-has-got-me-down/&quot;&gt;The indieweb has got ReadBeanIceCream down&lt;/a&gt;. Down for more, that is!&lt;/li&gt;
        &lt;li&gt;It seems that for ReadBeanIceCream, &quot;more&quot; involves detailing what RSS feeds are all about. Check out &lt;a target=&quot;_blank&quot; href=&quot;https://readbeanicecream.surge.sh/2025/07/06/rss-round-up/#want-to-get-started-right-now&quot;&gt;this great guide on RSS&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;RSS feeds have a long history, relative to most internet-based tech. It&#039;s not the only thing with history though - A few folks have been looking back through time at the evolution of their websites:&lt;/li&gt;
        &lt;ul&gt;
          &lt;li&gt;John travels back in time and &lt;a target=&quot;_blank&quot; href=&quot;https://blog.tribesmanjohn.au/2025/07/the-search-for-my-first-website/&quot;&gt;looks through the websites he&#039;s had since starting&lt;/a&gt; back in the 90s(!)&lt;/li&gt;
          &lt;li&gt;10 years is a long time too, Murray has looked back over the decade and &lt;a target=&quot;_blank&quot; href=&quot;https://theadhocracy.co.uk/wrote/ad-hoc-decade&quot;&gt;explored the evolution of theAdhocracy.co.uk&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;Ruben has been posting for 1 year now. That&#039;s not as long as the others above, but it is a grander achievement in isolation in my opinion. The first post to your site is often the hardest, but keeping that momentum for a year? That takes dedication, passion, care and effort. Ruben has celebrated this milestone with &lt;a target=&quot;_blank&quot; href=&quot;https://kedara.eu/thank-you-for-being-you&quot;&gt;a thank you post, aimed at the human web&lt;/a&gt;, filled with links to fantastic sites you should check out! I am honoured to be included in the post. Ruben, thank &lt;strong&gt;you&lt;/strong&gt; for making the human web what it is today! I look forward to the next year and beyond!&lt;/li&gt;
        &lt;/ul&gt;
        &lt;li&gt;If you&#039;re all kinds of inspired by those people and what they&#039;ve created, perhaps you want to make your own site? well you&#039;re in luck, because Joe has been &lt;a target=&quot;_blank&quot; href=&quot;https://bulltown.joejenett.com/this-is-worth-sharing-twice-imo/&quot;&gt;reminded of a fantastic resource&lt;/a&gt; for learning html!&lt;/li&gt;
        &lt;li&gt;Ah, HTML, what a delight. Did you know that August 2nd is HTML day? And did you know that there are events that happen around the world to celebrate it and spread the hypertext-based joy? HTML events?! &lt;a target=&quot;_blank&quot; href=&quot;https://html.energy/&quot;&gt;Well, now you know&lt;/a&gt;!&lt;/li&gt;
        &lt;li&gt;And here&#039;s another important day: The Electronic Frontier Foundation has &lt;a target=&quot;_blank&quot; href=&quot;https://www.eff.org/35&quot;&gt;celebrated its 35th birthday this week&lt;/a&gt;&lt;/li&gt;
      &lt;/ul&gt;
      &lt;h3&gt;Infosec, sysadmin &amp; code - tech stuff&lt;/h3&gt;
      &lt;p&gt;Beep you say? Well to you I say, boop.&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;WatchTowr throws another great post detailing &lt;a target=&quot;_blank&quot; href=&quot;https://labs.watchtowr.com/how-much-more-must-we-bleed-citrix-netscaler-memory-disclosure-citrixbleed-2-cve-2025-5777/&quot;&gt;the latest Citrix vuln&lt;/a&gt;. Déjà vu?&lt;/li&gt;
        &lt;li&gt;Staying with WatchTowr, they&#039;ve published &lt;a target=&quot;_blank&quot; href=&quot;https://labs.watchtowr.com/pre-auth-sql-injection-to-rce-fortinet-fortiweb-fabric-connector-cve-2025-25257&quot;&gt;another post detailing a pre-auth SQLi which leads to RCE on the FortiWeb Fabric Connector&lt;/a&gt;. Y&#039;know, the thing that ties Fortinet security things together and consolidates them. That thing. Sigh.&lt;/li&gt;
        &lt;li&gt;Adrian has taken an LLMs hallucinations about a feature that SoundSlice&#039;s music sheet scanner doesn&#039;t have and &lt;a target=&quot;_blank&quot; href=&quot;https://www.holovaty.com/writing/chatgpt-fake-feature/&quot;&gt;created that feature&lt;/a&gt; to fulfill a demand in the market - pretty neat idea&lt;/li&gt;
        &lt;li&gt;A bunch of browser extensions have been identified which started out seemingly legit, but once popular &lt;a target=&quot;_blank&quot; href=&quot;https://blog.koi.security/google-and-microsoft-trusted-them-2-3-million-users-installed-them-they-were-malware-fb4ed4f40ff5&quot;&gt;got infected by malware via an update&lt;/a&gt;&lt;/li&gt;
      &lt;/ul&gt;
      &lt;h3&gt;Bonus&lt;/h3&gt;
      &lt;p&gt;Whatever you do, do &lt;strong&gt;not&lt;/strong&gt; tease the sheep.&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;Ben is living a dream, and just the other day had another magical moment where he saw &lt;a target=&quot;_blank&quot; href=&quot;https://ben.akrin.com/fawn/&quot;&gt;a deer and its fawn&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;Check out &lt;a target=&quot;_blank&quot; href=&quot;https://poke-holo.simey.me/&quot;&gt;these sweet Pokémon card effects made with CSS&lt;/a&gt;! They&#039;re not recent, but I&#039;ve only just seen them. They look so great, and just with CSS?! Awesome.&lt;/li&gt;
        &lt;li&gt;If you enjoy reading Scraps, have you considered ...reading Scraps? Yes, I am of course &lt;em&gt;not&lt;/em&gt; original, as Alex has been posting &lt;a target=&quot;_blank&quot; href=&quot;https://www.designswarm.com/blog/2025/07/sunday-scraps-91/&quot;&gt;Sunday Scraps&lt;/a&gt; for nearly 100 editions! I love finding scrappy little linkdumps. If you have one you post yourself, &lt;a target=&quot;_blank&quot; href=&quot;/hello&quot;&gt;share it with me&lt;/a&gt;!&lt;/li&gt;
      &lt;/ul&gt;
      &lt;footer&gt;
        &lt;ul&gt;
          &lt;li&gt;Thanks to: &lt;a target=&quot;_blank&quot; href=&quot;https://shellsharks.com&quot;&gt;Shellsharks&lt;/a&gt; for the inspiration and kind words&lt;/li&gt;
          &lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;/images/scraps-logo-1920.png&quot;&gt;Scraps logo&lt;/a&gt; built upon &lt;a target=&quot;_blank&quot; href=&quot;https://pixabay.com/vectors/parchment-paper-note-vintage-aged-23661/&quot;&gt;this free parchment graphic&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/footer&gt;
    &lt;/article&gt;

</description>
      <pubDate>2025-07-11</pubDate>
      <link>https://fyr.io/scrap/2025-07-11</link>
      <guid isPermaLink="true">https://fyr.io/scrap/2025-07-11</guid>
      <category>scrap</category>
      <category>indieweb</category>
      <category>infosec</category>
      <category>tech</category>
    </item>
     <item>
      <title>Scraps from 2025-06-27 to 2025-07-04</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;picture&gt;
          &lt;a class=&quot;scraps-logo&quot; href=&quot;/scraps&quot;&gt;&lt;img src=&quot;/images/scraps-logo-250.png&quot; /&gt;&lt;/a&gt;
        &lt;/picture&gt;
        &lt;h2&gt;Scraps from 2025-06-27 to 2025-07-04&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Friday 4th of July 2025 at 22:15&lt;/time&gt;&lt;/p&gt;
                      &lt;/header&gt;
      &lt;p&gt;The third scrap! Whoda ever thunk it&#039;d reach the lofty heights of &lt;em&gt;three&lt;/em&gt; editions? Not me, that&#039;s for sure.&lt;/p&gt;
      &lt;p&gt;This week, I&#039;m happy to tell you that Scraps is fully sponsored by absolutely nobody and contains no product placement or adverts! Ain&#039;t that great?!&lt;/p&gt;
      &lt;p&gt;Once is once, twice is a coincidence, but thrice? Well now, that&#039;s a pattern. I guess I&#039;m going to have to carve some time out this week to sort out a dedicated Scraps RSS feed, as well as /scraps &lt;a target=&quot;_blank&quot; href=&quot;/slashes&quot;&gt;slashpage&lt;/a&gt;. I mean, the header already links there and it 404&#039;s so I guess it needs to happen? I&#039;ll add it to my todo list!&lt;/p&gt;
      &lt;p&gt;As for your own todo list, perhaps peruse the presently provided posts post-haste? I don&#039;t know, you do you. BUT we do have some cool stuff to read this week!&lt;/p&gt;
      &lt;h3&gt;Spotlight&lt;/h3&gt;
      &lt;ul&gt;
        &lt;li&gt;small_cypress has started &lt;a target=&quot;_blank&quot; href=&quot;https://smallcypress.bearblog.dev/a-small-web-july/&quot;&gt;Small Web July&lt;/a&gt; - cutting out walled garden social media, the &#039;big web&#039;, and scrolling forever in the month of July&lt;/li&gt;
      &lt;/ul&gt;
      &lt;h3&gt;Indieweb, Fediverse &amp; Social Media - people stuff&lt;/h3&gt;
      &lt;p&gt;Because people are people too, y&#039;know!?&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;With large language models still churning out a lot of slop, their integration into everything continues. What does this mean for &lt;a target=&quot;_blank&quot; href=&quot;https://amxmln.com/blog/2025/the-future-of-the-web/&quot;&gt;the future of the web&lt;/a&gt;?&lt;/li&gt;
        &lt;li&gt;&lt;q&gt;when the tech giants cut their connection to the web - with AI summaries and walled gardens - they freed us. There&#039;s little point farming backlinks or bowing to their demands now. And in their wake of destruction I see space to grow. So lets establish a small, human, sustainable web of independent sites. For ourselves and any friends that will join us.&lt;/q&gt; - &lt;a target=&quot;_blank&quot; href=&quot;https://caolan.uk/notes/2025-06-30_homestead_the_web.cm&quot;&gt;Homestead the Web&lt;/a&gt; by &lt;a target=&quot;_blank&quot; href=&quot;https://hachyderm.io/@caolan&quot;&gt;@caolan&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;https://phpc.social/@elazar/114777009073236242&quot;&gt;@elazar&lt;/a&gt; &lt;a target=&quot;_blank&quot; href=&quot;https://www.joanwestenberg.com/p/i-miss-the-internet&quot;&gt;misses the internet&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;The old internet is still here - we&#039;ve wrapped up June, and that means we get to &lt;a target=&quot;_blank&quot; href=&quot;https://www.nicksimson.com/posts/2025-take-two-roundup.html&quot;&gt;take a look at the take two posts&lt;/a&gt; that have been written for June&#039;s Indieweb Carnival!&lt;/li&gt;
        &lt;li&gt;It&#039;s now July! New month means new &lt;a target=&quot;_blank&quot; href=&quot;https://indieweb.org/IndieWeb_Carnival&quot;&gt;Indieweb Carnival&lt;/a&gt; theme, and this time around it&#039;s &lt;a target=&quot;_blank&quot; href=&quot;https://www.maxwelljoslyn.com/2025/07/01/1&quot;&gt;totems&lt;/a&gt; hosted by &lt;a target=&quot;_blank&quot; href=&quot;https://www.maxwelljoslyn.com/about&quot;&gt;Maxwell&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;The lack of self awareness of the wider web never ceases to amaze, &lt;a target=&quot;_blank&quot; href=&quot;https://indieweb.social/@Chronotope&quot;&gt;Aram&lt;/a&gt; spotted &lt;a target=&quot;_blank&quot; href=&quot;https://indieweb.social/@Chronotope/114778997186383119&quot;&gt;this beautiful and disappointing piece of irony on The Verge&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;https://tech.lgbt/@nina_kali_nina/&quot;&gt;@Nina&lt;/a&gt; raised a good point... &lt;a target=&quot;_blank&quot; href=&quot;https://tech.lgbt/@nina_kali_nina/114779097784111966&quot;&gt;what happened to my Status option on IM applications&lt;/a&gt;? Sure there are some current implementations, but there are too few!&lt;/li&gt;
      &lt;/ul&gt;
      &lt;h3&gt;Infosec, sysadmin &amp; code - tech stuff&lt;/h3&gt;
      &lt;p&gt;By welcoming our robot overlords, you&#039;re actually just welcoming the billionaire who owns them. And that, to me, seems like a pretty shitty deal! Tech is still cool though - like all tools, they can be used or abused.&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;Speaking of cool tech, Tech Greatness &lt;em&gt;The Internet Archive&lt;/em&gt; is expecting to archive their 1 trillionth page in October. To celebrate, they&#039;re &lt;a target=&quot;_blank&quot; href=&quot;https://blog.archive.org/2025/07/01/wayback-machine-to-hit-once-in-a-generation-milestone-this-october-one-trillion-web-pages-archived/&quot;&gt;holding a party and a live stream&lt;/a&gt;! Be there, or be square! ...or watch an archived copy afterwards I guess that&#039;s cool too.&lt;/li&gt;
        &lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;https://www.rapid7.com/blog/post/multiple-brother-devices-multiple-vulnerabilities-fixed/&quot;&gt;689 Brother printers were in the news recently for having easily guessable passwords&lt;/a&gt; - &lt;a target=&quot;_blank&quot; href=&quot;https://mastodon.social/@edent&quot;&gt;Terence Eden&lt;/a&gt; speculates that &lt;a target=&quot;_blank&quot; href=&quot;https://shkspr.mobi/blog/2025/07/are-brothers-insecure-printers-illegal-in-the-uk/&quot;&gt;they may therefore be illegal in the UK&lt;/a&gt;. Interesting thought!&lt;/li&gt;
        &lt;li&gt;Let&#039;s encrypt has &lt;a target=&quot;_blank&quot; href=&quot;https://letsencrypt.org/2025/06/26/expiration-notification-service-has-ended/&quot;&gt;now stopped email notifications&lt;/a&gt; - less infrastructure for them to manage, which is a good thing!&lt;/li&gt;
        &lt;li&gt;Staying with Let&#039;s Encrypt, they have now &lt;a target=&quot;_blank&quot; href=&quot;https://letsencrypt.org/2025/07/01/issuing-our-first-ip-address-certificate/&quot;&gt;issued a cert for an IP address&lt;/a&gt; and will begin rolling this out to prod sometime this year&lt;/li&gt;
        &lt;li&gt;There&#039;s &lt;a target=&quot;_blank&quot; href=&quot;https://hackarcana.com/article/yet-another-zip-trick&quot;&gt;a new method to extract different content from the same .zip file&lt;/a&gt;, depending on the tool used to extract the files&lt;/li&gt;
        &lt;li&gt;Every public commit to GitHub is archived in &lt;a target=&quot;_blank&quot; href=&quot;https://www.gharchive.org/&quot;&gt;GitHub Archive&lt;/a&gt;, including ones developers try to delete (because they contain secrets, for example) and you can &lt;a target=&quot;_blank&quot; href=&quot;https://trufflesecurity.com/blog/guest-post-how-i-scanned-all-of-github-s-oops-commits-for-leaked-secrets&quot;&gt;easily extract them with this writeup and tool&lt;/a&gt;&lt;/li&gt;
      &lt;/ul&gt;
      &lt;h3&gt;Bonus&lt;/h3&gt;
      &lt;p&gt;It&#039;s a good idea to bring ourselves out of technology and websites occasionally.&lt;/p&gt;
      &lt;p&gt;That hasn&#039;t happened this week, as I&#039;ve been busy reading about game development! For no reason I tell you, no reason at all.&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;Two similar Dev logs from two different games were posted online recently, going over efficiency gains related to multi threading. Whilst I don&#039;t have the nuerons to fully understand each detail, they&#039;re nonetheless fascinating and I certainly appreciate a good, deep technical analysis of a problem. Here&#039;s &lt;a target=&quot;_blank&quot; href=&quot;https://dev.arma3.com/post/oprep-performance-optimizations-in-220&quot;&gt;the Arma 3 OpRep&lt;/a&gt;, and &lt;a target=&quot;_blank&quot; href=&quot;https://store.steampowered.com/news/app/1366540/view/543361383085900510&quot;&gt;the Dyson Sphere Program post&lt;/a&gt;&lt;/li&gt;
      &lt;/ul&gt;
      &lt;footer&gt;
        &lt;ul&gt;
          &lt;li&gt;Thanks to: &lt;a target=&quot;_blank&quot; href=&quot;https://shellsharks.com&quot;&gt;Shellsharks&lt;/a&gt; for the inspiration and kind words&lt;/li&gt;
          &lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;/images/scraps-logo-1920.png&quot;&gt;Scraps logo&lt;/a&gt; built upon &lt;a target=&quot;_blank&quot; href=&quot;https://pixabay.com/vectors/parchment-paper-note-vintage-aged-23661/&quot;&gt;this free parchment graphic&lt;/a&gt; (&lt;a target=&quot;_blank&quot; href=&quot;/images/scraps-logo-1080.png&quot;&gt;1080&lt;/a&gt;)&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/footer&gt;
    &lt;/article&gt;

</description>
      <pubDate>2025-07-04</pubDate>
      <link>https://fyr.io/scrap/2025-07-04</link>
      <guid isPermaLink="true">https://fyr.io/scrap/2025-07-04</guid>
      <category>scrap</category>
      <category>indieweb</category>
      <category>infosec</category>
      <category>tech</category>
    </item>
     <item>
      <title>Scraps from 2025-06-18 to 2025-06-27</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;picture&gt;
          &lt;a class=&quot;scraps-logo&quot; href=&quot;/scraps&quot;&gt;&lt;img src=&quot;/images/scraps-logo-250.png&quot; /&gt;&lt;/a&gt;
        &lt;/picture&gt;
        &lt;h2&gt;Scraps from 2025-06-18 to 2025-06-27&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Friday 27th of June 2025 at 23:20&lt;/time&gt;&lt;/p&gt;

        
        
      &lt;/header&gt;
      &lt;p&gt;Last week was a poor week to &lt;a href=&quot;/scrap/2025-06-18&quot;&gt;start these scrappy little notes&lt;/a&gt;, because I&#039;ve spent this week on vacation! Most of my infosec- and tech-related reading happens at work these days, so this edition is a little short on that front.&lt;/p&gt;
      &lt;p&gt;You&#039;ll be very glad to hear, if you haven&#039;t already, that &lt;a target=&quot;_blank&quot; href=&quot;https://shellsharks.com&quot;&gt;Mike&lt;/a&gt; has returned to the throne with not one, not two, but &lt;strong&gt;three&lt;/strong&gt; &lt;a target=&quot;_blank&quot; href=&quot;https://shellsharks.com/scrolls/&quot;&gt;scrolls&lt;/a&gt;! What a relief, welcome back Mike! I can, after a single issue of Scraps, finally stop posting these :)&lt;/p&gt;
      &lt;p&gt;Wait, hold up. What&#039;s this? In the latest &lt;a target=&quot;_blank&quot; href=&quot;https://shellsharks.com/scrolls/scroll/2025-06-27&quot;&gt;Scroll&lt;/a&gt;, Mike made a special mention of these scraps?! And LIKES it?! Well, dang.&lt;/p&gt;
      &lt;p&gt;Mike, thank you for the shout out and kind words. You&#039;ve inspired a lot of what I do here on this site, and I share your opinion about human curated lists and the intentional decline/enshittification of search. The human touch is increasing in value and rarity on our ever-more LLM-driven web, so continue to publish I shall!&lt;/p&gt;
      &lt;p&gt;So, dear reader, if you&#039;re here for a scrappy collection of tangentially related and poorly organised links to stuff I found cool or interesting or worth sharing, read on. If you want something &lt;em&gt;way better&lt;/em&gt;, check out &lt;a target=&quot;_blank&quot; href=&quot;https://shellsharks.com/scrolls/&quot;&gt;Shellsharks&#039; Scrolls&lt;/a&gt; (after ;)&lt;/p&gt;
      &lt;p&gt;Let&#039;s get the second Scrap going!&lt;/p&gt;
      &lt;h3&gt;Spotlight&lt;/h3&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;https://xandra.cc/&quot;&gt;Xandra&lt;/a&gt; is at it again - she has reached version 1 on &lt;a target=&quot;_blank&quot; href=&quot;https://visitriverton.com&quot;&gt;Riverton&lt;/a&gt;, a free browser based &lt;em&gt;virtual pet and ranch simulation game&lt;/em&gt; - go check it out!&lt;/li&gt; 
      &lt;/ul&gt;
      &lt;h3&gt;Indieweb, Fediverse &amp; Social Media - people stuff&lt;/h3&gt;
      &lt;p&gt;The human side of the web - some say the &lt;em&gt;best side&lt;/em&gt; and I agree with them darn it.&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;If you&#039;re a fan of the fediverse, &lt;a target=&quot;_blank&quot; href=&quot;https://mastodon.social/@box464&quot;&gt;Jeff Sikes&lt;/a&gt; has your merchandise options covered with &lt;a target=&quot;_blank&quot; href=&quot;https://codeberg.org/box464/awesome-fediverse-merchandise&quot;&gt;this awesome list&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;Jelloeater has &lt;em&gt;consuming loadsa blog content&lt;/em&gt; down to an art, they write about the process &lt;a target=&quot;_blank&quot; href=&quot;https://jelloeater.me/blog/info-overload/&quot;&gt;here&lt;/a&gt;. Some management around this process would be useful for me since starting these scraps, and there&#039;s plenty of ideas for me in this post&lt;/li&gt;
        &lt;li&gt;One of the blogs I check every day, rachelbythebay, has been quiet of late. However, Rachel just posted a neat little tool, a &lt;a target=&quot;_blank&quot; href=&quot;https://rachelbythebay.com/w/2025/06/24/rollover/&quot;&gt;rollover calculator&lt;/a&gt; which lets you determine the source of some of those &lt;a target=&quot;_blank&quot; href=&quot;https://rachelbythebay.com/w/2020/11/26/magic/&quot;&gt;magic numbers which seem to appear everywhere in tech for some niche reason&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;q&gt;There are three things a man must do before he dies: plant a tree, father a child, and write a book.&lt;/q&gt; -- ReadBeanIceCream &lt;a target=&quot;_blank&quot; href=&quot;https://readbeanicecream.surge.sh/2025/06/16/take-two/&quot;&gt;posts about hearing this quote and the realisation it unlocked within&lt;/a&gt;. It&#039;s a great read. Now, where&#039;s that book draft I wrote a decade ago...?&lt;/li&gt;
        &lt;li&gt;That reminds me, June&#039;s &lt;a target=&quot;_blank&quot; href=&quot;https://indieweb.org/IndieWeb_Carnival&quot;&gt;indieweb carnival&lt;/a&gt; prompt is &lt;a target=&quot;_blank&quot; href=&quot;https://www.nicks.im/posts/2025-indieweb-carnival-take-two&quot;&gt;&quot;take two&quot; by Nick&lt;/a&gt;. I hope you post! (And I hope I do, too!)&lt;/li&gt;
        &lt;li&gt;Speaking of indieweb events, this month is &lt;a target=&quot;_blank&quot; href=&quot;https://birming.com/2024/05/24/junited-a-blog-love-letter/&quot;&gt;Junited&lt;/a&gt; - Ruben has shown his appreciation by &lt;a target=&quot;_blank&quot; href=&quot;https://kedara.eu/bookmarks/junited-2025&quot;&gt;listing some blog posts&lt;/a&gt; that interest him&lt;/li&gt;
        &lt;li&gt;There should be more events that encourage humans to do stuff, fight off the AI/LLM slop that is invading the web. But remember, you don&#039;t need an event to create something, whether it&#039;s written or drawn. And &lt;a target=&quot;_blank&quot; href=&quot;https://beige.party/@rooster/114751189811048326&quot;&gt;who cares if it&#039;s bad?! Bad art is GOOD now&lt;/a&gt;.&lt;/li&gt;
        &lt;li&gt;Publishing something is hard though, whether it&#039;s a book, a post, or artwork. Many of us find it difficult to post things online. SenFlyer writes about the &lt;a target=&quot;_blank&quot; href=&quot;https://senflyer.neocities.org/p/2025/fear-of-being-seen&quot;&gt;fear of being seen&lt;/a&gt;.&lt;/li&gt;
        &lt;li&gt;Humans, we persist despite it all, and are still the best way to connect people, like this Mastodon thread by &lt;a target=&quot;_blank&quot; href=&quot;https://mastodon.social/@belldotbz&quot;&gt;Andy Bell&lt;/a&gt; which &lt;a target=&quot;_blank&quot; href=&quot;https://mastodon.social/@belldotbz/114754909171422185&quot;&gt;connects freelancers, contractors and clients&lt;/a&gt;. Just like in the before-times! Ah, sweet nostalgia...&lt;/li&gt;
        &lt;li&gt;Nostalgia for the before-times is a powerful thing. I just learned about &lt;a target=&quot;_blank&quot; href=&quot;https://github.com/ftde0/yt2009&quot;&gt;this project to make a youtube front end which looks like it came staright from 2009&lt;/a&gt;! Thanks to &lt;a target=&quot;_blank&quot; href=&quot;https://c.im/@jake4480/114754024204012849&quot;&gt;Jake for sharing this&lt;/a&gt;!&lt;/li&gt;
        &lt;li&gt;Time, and UI design, marches on, though. You may recall about 84 years ago (wait, it was only three weeks ago!?) Apple &lt;a target=&quot;_blank&quot; href=&quot;https://developer.apple.com/documentation/technologyoverviews/liquid-glass&quot;&gt;unveiled their new Liquid Glass UI&lt;/a&gt;. Well, it didn&#039;t take long before &lt;a target=&quot;_blank&quot; href=&quot;https://atlaspuplabs.com/blog/liquid-glass-but-in-css&quot;&gt;someone made it in CSS&lt;/a&gt; - only working in Chrome right now, mind.&lt;/li&gt;
        &lt;li&gt;Speaking of Liquid &lt;s&gt;Vista&lt;/s&gt; Glass, Louie Mantia &lt;a target=&quot;_blank&quot; href=&quot;https://lmnt.me/blog/rose-gold-tinted-liquid-glasses.html&quot;&gt;isn&#039;t sold&lt;/a&gt; on it, and I don&#039;t think many others are either... we&#039;ll see how it develops, I guess.&lt;/li&gt;
      &lt;/ul&gt;
      &lt;h3&gt;Infosec, sysadmin &amp; code - tech stuff&lt;/h3&gt;
      &lt;p&gt;When &lt;em&gt;sysadmin&lt;/em&gt; is your job, you tend to switch off when you&#039;re on vacation. Which is where I&#039;ve been for over a week! So we&#039;re a little short in this section this time around.&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;Cool tool: &lt;a target=&quot;_blank&quot; href=&quot;https://github.com/projectdiscovery/nuclei&quot;&gt;Nuclei&lt;/a&gt; - A free, open source, easily customisable, high performance vulnerability scanner. I&#039;ve only just heard of this but I had a little play with it today and it looks pretty sweet.&lt;/li&gt;
      &lt;/ul&gt;
      &lt;h3&gt;Bonus&lt;/h3&gt;
      &lt;p&gt;Some extra stuff. Why? I&#039;ll tell you why! &lt;strong&gt;Because&lt;/strong&gt;, that&#039;s why!&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;Nexus Mods has been sold to a Venture Capital firm and let&#039;s be honest, that rarely goes well. Mod creator &lt;a target=&quot;_blank&quot; href=&quot;https://leilukin.com/blog/posts/2025-06-19-nexus-mods-sold/&quot;&gt;Leilukin doesn&#039;t hold out much hope&lt;/a&gt; for Nexus Mods to get &lt;em&gt;better&lt;/em&gt; thanks to this.&lt;/li&gt;
        &lt;li&gt;If you question why you recycle when a hundred private jets attend bezos wedding, &lt;a target=&quot;_blank&quot; href=&quot;https://metalhead.club/@derthomas/114753695719925119&quot;&gt;Thomas has the answer&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;https://www.programmax.net/articles/png-is-back/&quot;&gt;.PNG is back&lt;/a&gt; - not that it went anywhere really! A spec update has arrived and... it looks pretty good actually.&lt;/li&gt;
        &lt;li&gt;And finally, here are a few more blogrolls for your consumption:&lt;/li&gt;
        &lt;ul&gt;
          &lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;https://lesleylai.info/blogroll/&quot;&gt;lesleylai.info/blogroll&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;https://readbeanicecream.surge.sh/citizens/&quot;&gt;readbeanicecream.surge.sh/citizens&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;https://pawelgrzybek.com/blogroll/&quot;&gt;pawelgrzybek.com/blogroll&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/ul&gt;
      &lt;p&gt;Light on the tech and infosec side this week. What, you wanted consistency in these scrappy little roundups? Oh.. you did... okay, I&#039;ll do better. Next time :) Until then, if you have any suggestions, feedback, wishes, dreams, homemade cola recipies, or bad jokes, please do &lt;a href=&quot;/hello&quot;&gt;let me know&lt;/a&gt;.&lt;/p&gt;
      &lt;footer&gt;
        &lt;ul&gt;
          &lt;li&gt;Thanks to: &lt;a target=&quot;_blank&quot; href=&quot;https://shellsharks.com&quot;&gt;Shellsharks&lt;/a&gt; for the inspiration and kind words&lt;/li&gt;
          &lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;/images/scraps-logo-1920.png&quot;&gt;Scraps logo&lt;/a&gt; built upon &lt;a target=&quot;_blank&quot; href=&quot;https://pixabay.com/vectors/parchment-paper-note-vintage-aged-23661/&quot;&gt;this free parchment graphic&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/footer&gt;
    &lt;/article&gt;
</description>
      <pubDate>2025-06-27</pubDate>
      <link>https://fyr.io/scrap/2025-06-27</link>
      <guid isPermaLink="true">https://fyr.io/scrap/2025-06-27</guid>
      <category>scrap</category>
      <category>indieweb</category>
      <category>infosec</category>
      <category>tech</category>
    </item>
     <item>
      <title>Scraps from mid May-ish to 2025-06-18</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;picture&gt;
          &lt;a class=&quot;scraps-logo&quot; href=&quot;/scraps&quot;&gt;&lt;img src=&quot;/images/scraps-logo-250.png&quot; /&gt;&lt;/a&gt;
        &lt;/picture&gt;
        &lt;h2&gt;Scraps from mid May-ish to 2025-06-18&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Wednesday 18th of June 2025 at 23:00&lt;/time&gt;&lt;/p&gt;
                      &lt;/header&gt;
      &lt;p&gt;As many of you will know, Mike Sass (&lt;a target=&quot;_blank&quot; href=&quot;https://shellsharks.com/about&quot;&gt;shellsharks&lt;/a&gt;) runs an amazing &quot;weekly newsletter / link roundup / information digest at the intersection of the IndieWeb and the Fediverse, with a splash of Cybersecurity stuff&quot; called &lt;a target=&quot;_blank&quot; href=&quot;https://shellsharks.com/scrolls/&quot;&gt;Scrolls&lt;/a&gt;.&lt;/p&gt;
      &lt;p&gt;Unfortunately for whatever reason, this hasn&#039;t been published for a month now. Hope you&#039;re doing alright, Mike!&lt;/p&gt;
      &lt;p&gt;In the spirit of &quot;imitation is the sincerest form of flattery&quot;, I&#039;ve decided over the last few days to have a little go at doing my own version. It&#039;s not anywhere near as fancy or comprehensive as Mike&#039;s esteemed Scrolls. It&#039;s more like a patchwork collection of links and notes. Little... Scraps...?&lt;/p&gt;
      &lt;p&gt;I don&#039;t know how often I&#039;ll post these, whether they&#039;ll change format, and I&#039;ll probably stop if and when Scrolls returns to the throne (I&#039;m just keeping the seat warm after all.) With any luck I&#039;ll get something out somewhat frequently in the meantime. What&#039;s that? What&#039;s my schedule? Schedule Schmedule! (but fr it&#039;ll probably be on a Friday I guess? What do you think?)&lt;/p&gt;
      &lt;p&gt;If you have any suggestions, criticisms, cool links or anything else, feel free to say &lt;a target=&quot;_blank&quot; href=&quot;https://fyr.io/hello&quot;&gt;/hello&lt;/a&gt;.&lt;/p&gt;
      &lt;p&gt;Anyway, onwards and downwards!&lt;/p&gt;
      &lt;h3&gt;Spotlight&lt;/h3&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;https://pixelfed.art/mononoir&quot;&gt;mononoir has been posting loads of their awesome mspaint art&lt;/a&gt;, check it out. It&#039;s blowing my mind!&lt;/li&gt;
      &lt;/ul&gt;
      &lt;h3&gt;Indieweb, Fediverse &amp; Social Media - people stuff&lt;/h3&gt;
      &lt;p&gt;A collection about the humans that use the technology - cool things they&#039;ve done, opinions, studies, etc.&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;https://xandra.cc/&quot;&gt;Xandra&lt;/a&gt; of &lt;a target=&quot;_blank&quot; href=&quot;https://32bit.cafe/&quot;&gt;32bit.cafe&lt;/a&gt; fame has launched the &lt;a target=&quot;_blank&quot; href=&quot;https://goodinternetmagazine.com/&quot;&gt;Good Internet Magazine&lt;/a&gt; and it looks amazing! I really need to order one of these!&lt;/li&gt;
        &lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;https://internetphonebook.net/&quot;&gt;The Internet Phone Book&lt;/a&gt; also launched! It is a collection of personal websites, each of which has been assigned a &#039;phone number&#039; allowing you to discover, peruse and explore them by dialing on the site. The physical book looks so great!&lt;/li&gt;
        &lt;li&gt;Matrix is &lt;a target=&quot;_blank&quot; href=&quot;https://blog.cyrneko.eu/matrix-is-cooked&quot;&gt;suffering from capitalism&lt;/a&gt; and Alexia believes its future might not look so bright. However, there are some open alternatives. They could each use donations though, including Matrix&lt;/li&gt;
        &lt;li&gt;Robert Kingett &lt;a target=&quot;_blank&quot; href=&quot;https://sightlessscribbles.com/posts/20250616/&quot;&gt;respects his beta readers&lt;/a&gt;, but not when they disrespect his work and feed his content into an LLM&lt;/li&gt;
        &lt;li&gt;Communicating securely is more important than ever, and this is especially true in some parts of the world. &lt;a target=&quot;_blank&quot; href=&quot;https://www.coryd.dev/posts/2025/using-signal-to-communicate-securely/&quot;&gt;Cory has got your secure chat needs sorted&lt;/a&gt;, with, of course, the &lt;a target=&quot;_blank&quot; href=&quot;https://signal.org/&quot;&gt;Signal&lt;/a&gt; app&lt;/li&gt;
        &lt;li&gt;If you&#039;re one of the many individuals who live in the space in the venn diagram where 3D printing enthusiasts and fediverse enthusiasts overlap, then rejoice! For &lt;a target=&quot;_blank&quot; href=&quot;https://3dprint.social/&quot;&gt;3dprint.social&lt;/a&gt; is now live - a 3d print hosting fediverse instance, built on &lt;a target=&quot;_blank&quot; href=&quot;https://manyfold.app/&quot;&gt;manyfold&lt;/a&gt; (which you can use if you wish to self host instead!)&lt;/li&gt;
        &lt;li&gt;In a totally expected yet still sigh-worthy development, &lt;a target=&quot;_blank&quot; href=&quot;https://reutersinstitute.politics.ox.ac.uk/digital-news-report/2025/dnr-executive-summary&quot;&gt;Social Media is now the main source of news for people, according to the Reuters Institute&lt;/a&gt;, with watching video content being preferred to reading text. Traditional news outlets are generally biased of course, and undoubtedly influence was exerted on communities decades ago (&#039;propaganda&#039;) but The Algorithm ramps this up to the extreme, and the big personalities will have their own influences and agendas without any journalistic standards or oversight to keep a lid on extreme corruption and falsehoods. This can&#039;t go wrong... right?&lt;/li&gt;
        &lt;li&gt;But not all social media is bad - mastodon has been recognised as a &#039;&lt;a target=&quot;_blank&quot; href=&quot;https://blog.joinmastodon.org/2025/06/mastodon-dpga&quot;&gt;Digital Public Good&lt;/a&gt;&#039;&lt;/li&gt;
        &lt;li&gt;LMM tools produce code, &lt;a target=&quot;_blank&quot; href=&quot;https://blog.miguelgrinberg.com/post/why-generative-ai-coding-tools-and-agents-do-not-work-for-me&quot;&gt;but for Miguel it&#039;s not worth it&lt;/a&gt;. At least, not right now anyway. David goes on to &lt;a target=&quot;_blank&quot; href=&quot;https://infosec.exchange/@david_chisnall/114697725835768540&quot;&gt;share his opinion&lt;/a&gt; that LMMs are replacing human interns&#039; work in a way that&#039;s a bigger resource drain than simply training a human intern&lt;/li&gt;
        &lt;li&gt;In related news, a small study shows that &lt;a target=&quot;_blank&quot; href=&quot;https://www.media.mit.edu/publications/your-brain-on-chatgpt/&quot;&gt;brain work less when LMM used four riting fings&lt;/a&gt;. Which makes sense, the brain is like a muscle and LLMs ease the burden in some cases where the human outsources learning to it&lt;/li&gt;
        &lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;https://benjaminhollon.com/musings/apparently-i-have-readers/&quot;&gt;Benjamin has readers&lt;/a&gt;, even though that wasn&#039;t what he set out to do originally. If you write, someone will read it, but writing for yourself first is a great tactic for building momentum&lt;/li&gt;
      &lt;/ul&gt;
      &lt;h3&gt;Infosec, sysadmin &amp; code - tech stuff&lt;/h3&gt;
      &lt;p&gt;Technology itself is also interesting to me! Here&#039;s some neat stuff I&#039;ve come across.&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;If you&#039;re looking for a way to steal data from a company, why not just &lt;a target=&quot;_blank&quot; href=&quot;https://www.aim.security/lp/aim-labs-echoleak-blogpost&quot;&gt;send an email and ask for it&lt;/a&gt;? With any luck, the email will be parsed by Copilot, which will follow your instructions and ye shall receive!&lt;/li&gt;
        &lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;https://forgecode.dev/blog/gcp-cloudflare-anthropic-outage/&quot;&gt;Google Cloud IAM went down and took a whole load of other stuff with it&lt;/a&gt; - Yes, &lt;a target=&quot;_blank&quot; href=&quot;https://xkcd.com/2347/&quot;&gt;the internet is still a precarious stack of duct tape, glue and hopes &amp; prayers&lt;/a&gt;&lt;/li&gt;
        &lt;ul&gt;
          &lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;https://status.cloud.google.com/incidents/ow5i3PPK96RduMcb1SsW&quot;&gt;Google&#039;s Incident Report on the above&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
        &lt;li&gt;Programmers write or encounter bugs all the time - &lt;a target=&quot;_blank&quot; href=&quot;https://henrikwarne.com/2025/06/15/lessons-from-9-more-years-of-tricky-bugs/&quot;&gt;Henrik logs them all and has reviewed the last 9 years worth to see what lessons can be learned&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;LibreOffice joins the &quot;&lt;a target=&quot;_blank&quot; href=&quot;https://endof10.org/&quot;&gt;End of 10&lt;/a&gt;&quot; conversation and heartily recommends any Windows users to &lt;a target=&quot;_blank&quot; href=&quot;https://blog.documentfoundation.org/blog/2025/06/11/the-end-of-windows-10/&quot;&gt;consider switching to Linux + LibreOffice&lt;/a&gt; instead of potentially needing to dispose of a perfectly fine device just to use Windows 11. And I must say, I agree!&lt;/li&gt;
        &lt;li&gt;Europe-wide takedown hits longest-standing dark web drug market, &lt;a target=&quot;_blank&quot; href=&quot;https://www.europol.europa.eu/media-press/newsroom/news/europe-wide-takedown-hits-longest-standing-dark-web-drug-market&quot;&gt;Archetyp Market&lt;/a&gt;, which stood the test of time operating for over 5 years. Crime doesn&#039;t pay! For more than 5 years anyway.&lt;/li&gt;
        &lt;li&gt;Neat infosec tool: Subdomain takeover with &lt;a target=&quot;_blank&quot; href=&quot;https://github.com/mhmdiaa/second-order&quot;&gt;second-order&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;If you&#039;re looking for a PoC for &lt;a target=&quot;_blank&quot; href=&quot;https://www.synacktiv.com/publications/ntlm-reflection-is-dead-long-live-ntlm-reflection-an-in-depth-analysis-of-cve-2025&quot;&gt;cve-2025-33073&lt;/a&gt;, &lt;a target=&quot;_blank&quot; href=&quot;https://github.com/mverschu/CVE-2025-33073&quot;&gt;here you go&lt;/a&gt;!&lt;/li&gt;
        &lt;li&gt;Long before the internet, some phone networks were hackable by playing a single tone at 2600Hz. Whistled (by a human!) into a phone, it could grant you unrestricted access. &lt;a target=&quot;_blank&quot; href=&quot;https://phreak.kmcd.dev/&quot;&gt;Do you have the vocal chops to be an old-school phone phreak&lt;/a&gt;?&lt;/li&gt;
      &lt;/ul&gt;
      &lt;h3&gt;Bonus stuff&lt;/h3&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;https://apod.nasa.gov/apod/ap250616.html&quot;&gt;APOD&lt;/a&gt; is 30 years old! Here&#039;s to 30 more years of awesome daily pictures!&lt;/li&gt;
        &lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;https://www.esa.int/ESA_Multimedia/Images/2025/06/Solar_Orbiter_s_world-first_views_of_the_Sun_s_south_pole&quot;&gt;First images&lt;/a&gt; of the south pole of the Sun, which is pretty cool if you ask me&lt;/li&gt;
        &lt;li&gt;The &lt;a target=&quot;_blank&quot; href=&quot;https://itch.io/jam/snesdev-2025&quot;&gt;SNES Development Game Jam&lt;/a&gt; is now running, until the 9th September!&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;That&#039;s all for now. I&#039;ve missed countless awesome things but this has been a bit of a test to see if it&#039;s something I could put together once let alone regularly. The next scrap (if any?) will contain things from this point in time onwards and should be easier to keep up to date!&lt;/p&gt;
      &lt;p&gt;As mentioned earlier, if you have any suggestions, feedback, wishes, dreams, homemade cola recipies, or bad jokes, please do &lt;a target=&quot;_blank&quot; href=&quot;/hello&quot;&gt;let me know&lt;/a&gt;!&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2025-06-18</pubDate>
      <link>https://fyr.io/scrap/2025-06-18</link>
      <guid isPermaLink="true">https://fyr.io/scrap/2025-06-18</guid>
      <category>scrap</category>
      <category>indieweb</category>
      <category>infosec</category>
      <category>tech</category>
    </item>
     <item>
      <title>A Most Eggsellent Adventure</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;A Most Eggsellent Adventure&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Tuesday 27th of May 2025 at 22:23&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;&lt;a href=&quot;/post/chickens&quot;&gt;Our chickens&lt;/a&gt; are &lt;a href=&quot;/post/spring_chickens&quot;&gt;growing up&lt;/a&gt; so fast *&lt;em&gt;wipes away prideful tear&lt;/em&gt;* and are now 16 weeks old. One of them - but we do not know which - just laid their first egg yesterday!&lt;/p&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/chickens-first-egg.jpg&quot;&gt;
          &lt;source srcset=&quot;/images/chickens-first-egg.jpg&quot; /&gt;
          &lt;img src=&quot;/images/chickens-first-egg.jpg&quot; alt=&quot;A small, brown and freshly laid egg sits in a wooden nesting box amongst bedding, which has of course been kicked entirely out of the way. The egg is slightly spotted, with a couple of small darker or more red blemishes, but is otherwise fine&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;p&gt;This is pretty early for this breed, they normally start laying somewhere around 20 weeks, but 16 isn&#039;t unheard of. We&#039;re glad it&#039;s starting. We have learned that we should get an egg every 24-26 hours, which is more than I initially believed. Three chickens, once they&#039;ve all matured enough, should get us somewhere around 2-3 per day for a decent chunk of the year (they slow down when it gets colder) which is pretty good going for us and should leave us with a small surplus to give away occasionally.&lt;/p&gt;
      &lt;p&gt;We did, of course, boil it and eat it. A first egg can sometimes be pretty small or not quite formed right - luckily this one was fine although a bit smaller than we expect to get out of them, as you would expect what with it being the first. And yes... It was delicious! Sliced in half, bit of salt and pepper. Glorious. Not at all rubbery, the yolk was a strong and deep yellow, and it was very smooth texture wise. We are looking forward to the next!&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2025-05-27</pubDate>
      <link>https://fyr.io/post/a-most-eggsellent-adventure</link>
      <guid isPermaLink="true">https://fyr.io/post/a-most-eggsellent-adventure</guid>
      <category>life</category>
      <category>chicken</category>
      <category>egg</category>
      <category>food</category>
      <category>flock</category>
      <category>b&#039;kawk</category>
    </item>
     <item>
      <title>Aaaaa Sometimes You Just Wanna Scream Into The Void</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Aaaaa Sometimes You Just Wanna Scream Into The Void&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Saturday 10th of May 2025 at 23:01&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;Sometimes you just want to scream into the void. Release frustration, anger, energy. Show the universe how you really feel. Or maybe you just like to scream. Whatever works for you!&lt;/p&gt;
      &lt;p&gt;Well, instead of burying your head into a pillow to scream, screaming from the rooftops, or screaming under water, why not digitally scream into the &lt;a href=&quot;/void&quot;&gt;/void&lt;/a&gt;?&lt;/p&gt;
      &lt;p&gt;Bring your A-game. No, literally - only upper and lower case A is allowed. There are some other limits but I&#039;ll let you get e-pissed-off when you hit them :D&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2025-05-10</pubDate>
      <link>https://fyr.io/post/Aaaaa-sometimes-you-just-wanna-scream-into-the-void</link>
      <guid isPermaLink="true">https://fyr.io/post/Aaaaa-sometimes-you-just-wanna-scream-into-the-void</guid>
      <category>website</category>
      <category>Aaa!</category>
      <category>AAAAA!!!!!!</category>
      <category>a</category>
      <category>scream</category>
    </item>
     <item>
      <title>Atera Leaked Their Customers To Mailinator</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Atera Leaked Their Customers To Mailinator&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Friday 9th of May 2025 at 22:38&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;&lt;a href=&quot;https://www.atera.com/&quot;&gt;Atera&lt;/a&gt; is a Remote Monitoring and Management (RMM) and Professional Services Automation (PSA) tool used by many organisations to maintain endpoints and respond to support requests. Typically used by MSPs to access and support their clients, it has also found life within internal tech support teams thanks to its per-technician pricing model.&lt;/p&gt;
      &lt;p&gt;There was a slow data leak of active Atera customers (as in, the identity and helpdesk mailbox of customers of Atera - the MSPs that use Atera for their clients, or the companies who use Atera for their internal support, not any data belonging to the customers or their clients,) available to the public for at least 6 months. I noticed it in October 2024 and reported it, and it has been fixed as of May 2025.&lt;/p&gt;
      &lt;p&gt;It was, on the surface, a low priority &amp; low impact information disclosure issue that affects the users of Atera who set up and test their SMTP config. It leaks no more information than the mailbox used to send emails, but a side effect (read: malicious opportunity) of this is that you can of course determine that a company is using Atera without interacting with them or Atera at all. It hasn&#039;t really got much of an impact outside of some timely social engineering scenarios, which I&#039;ll run through towards the end of this article, but thought that this was interesting enough to write up, given the potential damage that could be caused, and that it&#039;s basically just a silly implementation of a mail check.&lt;/p&gt;
      &lt;h3&gt;The details&lt;/h3&gt;
      &lt;p&gt;As with most RMM/PSA tools like this (&lt;a href=&quot;https://www.ninjaone.com/&quot;&gt;of&lt;/a&gt; &lt;a href=&quot;https://www.datto.com/products/rmm/&quot;&gt;which&lt;/a&gt; &lt;a href=&quot;https://syncromsp.com/&quot;&gt;there&lt;/a&gt; &lt;a href=&quot;https://superops.com/&quot;&gt;are&lt;/a&gt; &lt;a href=&quot;https://github.com/amidaware/tacticalrmm#readme&quot;&gt;many&lt;/a&gt; &lt;a href=&quot;https://docs.google.com/spreadsheets/d/1JdoFZup24bGueP1L7pFKToiGfOsDdkaJAJUGS9B3nLk/htmlview#&quot;&gt;alternatives&lt;/a&gt;) you can configure Atera to send emails not from their email, but instead from your own chosen email address. One way it achieves this is by allowing you to input mailbox SMTP credentials, which it will then use to send all email. It will also monitor this inbox, automatically making tickets on its built-in helpdesk portal based on these emails.&lt;/p&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/atera-leakage-atera-smtp.png&quot;&gt;
          &lt;source srcset=&quot;/images/atera-leakage-atera-smtp.png&quot; /&gt;
          &lt;img src=&quot;/images/atera-leakage-atera-smtp.png&quot; alt=&quot;A screenshot of the Atera Outgoing Email Domain configuration screen, with &#039;Customize SMTP settings&#039; checked and relevant information added. The email field has been blocked out.&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;p&gt;Within this configuration page is the option to test that it&#039;s working. I wondered how it tested this, so I hit the Test button, opened up the Sent items on the mailbox, and...&lt;/p&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/atera-leakage-sent-email.png&quot;&gt;
          &lt;source srcset=&quot;/images/atera-leakage-sent-email.png&quot; /&gt;
          &lt;img src=&quot;/images/atera-leakage-sent-email.png&quot; alt=&quot;A screenshot of gmail showing the test email that Atera sent to validate that the configuration used is working. The test email has been sent to a mailinator email address.&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;p&gt;Unfortunately, Atera implemented this test using a public mailinator mailbox.&lt;/p&gt;
      &lt;p&gt;&lt;a href=&quot;https://www.mailinator.com/&quot;&gt;Mailinator&lt;/a&gt; is a service that provides you with a &lt;em&gt;completely open&lt;/em&gt; mailbox. As in, you don&#039;t need a password to see the emails. It&#039;s useful to sign up to websites or services you don&#039;t really care about. All you need is an alias (the bit before the @) and you can open any @mailinator.com mailbox. By design. It&#039;s a great service with paid options that offer many additional features.&lt;/p&gt;
      &lt;p&gt;As you can see in the above screenshot, when testing SMTP via Atera, Atera sends an email from your configured mailbox to mailinator, likely checking the result of this in the background to determine that the mail has arrived. To be specific, they send it to &lt;code&gt;atera_test_email@mailinator.com&lt;/code&gt;, which you can view &lt;a href=&quot;https://www.mailinator.com/v4/public/inboxes.jsp?to=atera_test_email&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
      &lt;p&gt;If you were to sit and watch this mailbox you&#039;d see mail flow in occasionally as admins configure and test their SMTP config.&lt;/p&gt;
      &lt;p&gt;Mailinator offer a free private mailbox, which works exactly the same except the mailbox isn&#039;t visible to the public. If they had registered and switched over to this private mailbox it would probably be mostly fine.&lt;/p&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/atera-leakage-mailinator-inbox.png&quot;&gt;
          &lt;source srcset=&quot;/images/atera-leakage-mailinator-inbox.png&quot; /&gt;
          &lt;img src=&quot;/images/atera-leakage-mailinator-inbox.png&quot; alt=&quot;A screenshot of the mailinator inbox with nine redacted emails in it from several different organisations.&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;p&gt;This is a problem, although it is a pretty low priority and low impact one, but I thought it worth writing about as with many things like this, add a bit of imaginations and there is a risk here. Interestingly the emails in the mailinator inbox get removed fairly quickly, though this is inconsistent. I suspect Atera cleared out this mailbox in the background on a schedule.&lt;/p&gt;
      &lt;h3&gt;Theoretical abuse&lt;/h3&gt;
      &lt;p&gt;Let&#039;s daydream a basic, theoretical phishing attempt using this knowledge!&lt;/p&gt;
      &lt;p&gt;I imagine someone nefarious monitoring this mailinator mailbox and, upon reciept of an email, firing off their own email to the email address that sent the test email, which will most likely appear right into the ticket queue on Atera of the customer who just tested it. This email could pretty easily look like it&#039;s from Atera themselves. Perhaps it celebrates them configuring their SMTP settings correctly! Maybe they could offer them a celebratory free month subscription? Something enticing. All they need to do is click this link to verify their account and the discount will be automatically applied.&lt;/p&gt;
      &lt;p&gt;An unaware tech (or perhaps even the account owner who set up SMTP) may be tricked into clicking this - they literally &lt;strong&gt;just&lt;/strong&gt; set up SMTP, how would a bad guy know that? Their browser loads the link to an atera-lookalike domain. They login and submit 2fa (because they trusted that email, remember?) and now the bad guys have easy access to what could potentially be an MSPs client base, which could reach into the hundreds of separate companies and organisations, tens of thousands of endpoints, or more.&lt;/p&gt;
      &lt;h3&gt;Reporting Timeline&lt;/h3&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;strong&gt;2024-10-22&lt;/strong&gt; - Initial report - automatic reply acknowledging reciept of email&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;2024-10-29&lt;/strong&gt; - Reported again, this time to an additional mailbox&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;2024-10-29&lt;/strong&gt; - Atera support desk ticket raised. I am offered (automated) to create an account to monitor the progress of the ticket, which I do.&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;2024-10-30&lt;/strong&gt; - Support desk ticket closed, no comment, no communication&lt;/li&gt;
        &lt;li&gt;During the next month or two I periodically check the mailinator mailbox and continue to see customer mail flow into it, but then the holiday period happened, life happened, and this issue fell out of my mind for a little while...&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;2025-03-05&lt;/strong&gt; - I remember this issue! I check the mailinator mailbox: still not fixed. So before publishing this, I submitted another followup. Just in case it wasn&#039;t dismissed, missed or ignored again.&lt;/li&gt;
        &lt;li&gt;From here on out, I see lots of background activity on the ticket. The title is updated to include the &lt;code&gt;[security]&lt;/code&gt; and &lt;code&gt;[concern]&lt;/code&gt; tags, later with &lt;code&gt;[platform]&lt;/code&gt;, and the &lt;code&gt;Last Updated&lt;/code&gt; metadata field sees changes every few days and people and departments are assigned regularly. Clearly, things are happening.&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;2025-05-07&lt;/strong&gt; - An update to the ticket is made, informing me that the issue has been fixed by the security and development team 🥳&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;At this point, I ran some tests and confirmed that the issue has been resolved. They now send a test email from the mailbox back to itself and to the individual who requested the test, which is perfectly fine. Mailinator does not see any mail.&lt;/p&gt;
      &lt;p&gt;This concludes this little episode of a minor but abusable Atera data leak! I&#039;m trying to get back into the world of infosec in a more active way (I&#039;ve been passive for a long time) and have a couple other things I&#039;m working on. Hopefully I can start to build some momentum!&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2025-05-09</pubDate>
      <link>https://fyr.io/post/atera-leaked-their-customers-to-mailinator</link>
      <guid isPermaLink="true">https://fyr.io/post/atera-leaked-their-customers-to-mailinator</guid>
      <category>infosec</category>
      <category>data leak</category>
      <category>infosec</category>
      <category>atera</category>
      <category>privacy</category>
      <category>rmm</category>
    </item>
     <item>
      <title>Spring Chickens</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Spring Chickens&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Wednesday 16th of April 2025 at 22:02&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;We &lt;a href=&quot;/post/chickens&quot;&gt;acquired some chickens&lt;/a&gt; back in February and they&#039;ve been doing really well.&lt;/p&gt;
      &lt;p&gt;They spent a good long time indoors, but we were keen to get them outside quickly. At first it was because we wanted them to be able to roam the garden, explore, rummage through plants and stuff. Quickly, however, another reason to get them out surfaced.&lt;/p&gt;
      &lt;p&gt;They stink.&lt;/p&gt;
      &lt;p&gt;Okay, they don&#039;t &lt;em&gt;stink&lt;/em&gt; stink, but their droppings smell pretty bad occasionally and it catches you by surprise. You&#039;ll just get a waft of &lt;em&gt;chicken feces&lt;/em&gt; up your nose suddenly and wonder why they&#039;re in the livingroom. And that&#039;s even when cleaning them out at least once a day.&lt;/p&gt;
      &lt;p&gt;Anyway, they&#039;re outside, they&#039;re happy, we have them set up in a very nice coop with a large run, and let them out of it whenever we&#039;re home.&lt;/p&gt;
      &lt;p&gt;It&#039;s spring, so of course we&#039;ve started to get the garden ready for planting food and flowers. The three chickens have, however, taken it upon themselves to claim a ceramic plant pot as their own. They wriggle themselves into it and kick up the soil and have a dirt bath, sometimes falling asleep. At least, until one decides it&#039;s not quite comfortable enough and wriggles, setting off a chain reaction of flapping, kicking dirt and &lt;em&gt;b&#039;kahk!&lt;/em&gt; until they eventually settle in again. It&#039;s pretty amusing.&lt;/em&gt;&lt;/p&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/chickens-2025-04.jpg&quot;&gt;
          &lt;source srcset=&quot;/images/chickens-2025-04.jpg&quot; /&gt;
          &lt;img src=&quot;/images/chickens-2025-04.jpg&quot; alt=&quot;Three brown chickens somehow laying in a ceramic plant pot. Really, only two should fit in there, but somehow all three have squeezed in. They have kicked up soil, which lightly coats their feathers&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;p&gt;We think they&#039;ll start laying eggs sometime in June. Until then we&#039;re working on getting the garden set up for planting, which I&#039;ll post about soon.&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2025-04-16</pubDate>
      <link>https://fyr.io/post/spring_chickens</link>
      <guid isPermaLink="true">https://fyr.io/post/spring_chickens</guid>
      <category>life</category>
      <category>chickens</category>
      <category>dirt</category>
      <category>b&#039;kahk!</category>
    </item>
     <item>
      <title>CSS Naked Day 2025</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;CSS Naked Day 2025&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Tuesday 8th of April 2025 at 22:30&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;The 9th of April is &lt;a href=&quot;https://css-naked-day.org/&quot;&gt;CSS Naked Day&lt;/a&gt;. If you&#039;re reading this in a web browser with CSS enabled on the 9th April, you can probably tell that something looks different thanks to the banner across the top of every page and... well, the lack of CSS everywhere (almost - I intentionally use inline-css in a couple of posts, such as the &#039;&lt;a href=&quot;/post/don&#039;t_trust_copy_and_paste_even_with_javaScript_disabled&quot;&gt;Don&#039;t trust copy and paste&lt;/a&gt;&#039; post which would break without it!) Thanks to timezones, this site switches off the CSS styles a bit before the 9th, and they stay off until a bit after.&lt;/p&gt;
      &lt;p&gt;I&#039;ve spent a little bit of time (though nowhere near enough) over the last year making this sites&#039; HTML &lt;em&gt;more betterer&lt;/em&gt; but I have loads of accessibility changes to make - keyboard navigation, testing text-to-speech (or simply recording a reading of each post), and more - whilst ensuring I adhere to standards as rigidly as possible. I will also be making the HTML more accessible to people who wish to learn, inspired by &lt;a href=&quot;https://jamesg.blog/2022/01/20/annotating-my-site-code&quot;&gt;jamesg.blog&lt;/a&gt;. I will be adding comments to the HTML and the CSS, as well as eventually publishing some information on the backend and my process of getting content live on a /colophon &lt;a href=&quot;https://slashpages.net/&quot;&gt;slashpage&lt;/a&gt;, but I have some work to do, getting this site to a place I&#039;m happy with, before doing that. That work starts at the beginning though - allowing as many people to consume content with as little friction as possible. CSS Naked Day serves as a reminder to me to work towards that.&lt;/p&gt;
      &lt;p&gt;I encourage you to accommodate as many accessibility methods as possible whether you work on websites or apps or indeed physical objects. If you need a reason beyond &lt;em&gt;it&#039;s the right thing to do&lt;/em&gt;, then... it can only increase your audience, your readership, your customers.&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2025-04-08</pubDate>
      <link>https://fyr.io/post/CSS_naked_day_2025</link>
      <guid isPermaLink="true">https://fyr.io/post/CSS_naked_day_2025</guid>
      <category>website</category>
      <category>css</category>
      <category>accessibility</category>
      <category>SFW</category>
      <category>html</category>
    </item>
     <item>
      <title>Pink Trees</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Pink Trees&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Friday 21st of March 2025 at 22:39&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;We&#039;re lucky enough to have three &lt;a href=&quot;&quot;&gt;cherry blossom trees&lt;/a&gt; of some description at the back of our small garden. Around this time of year they explode in pink, and it&#039;s very striking. It doesn&#039;t last long, very soon the leaves will come through a deep red colour, but whilst we have it I try to take a moment every day to enjoy it.&lt;/p&gt;
      &lt;p&gt;Pictures can&#039;t do it justice, and I&#039;ve posted them on this site before (a while ago, on the previous incarnation. Hrm... I haven&#039;t finishied migrating all those old posts over yet...) but here&#039;s one anyway.&lt;/p&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/pink-trees.jpg&quot;&gt;
          &lt;source srcset=&quot;/images/pink-trees.jpg&quot; /&gt;
          &lt;img src=&quot;/images/pink-trees.jpg&quot; alt=&quot;Two of the three blossom trees as seen from below, with a clear blue sky as the backdrop and your regular green trees to either side&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;p&gt;I really should clear those vines away...&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2025-03-21</pubDate>
      <link>https://fyr.io/post/pink_trees</link>
      <guid isPermaLink="true">https://fyr.io/post/pink_trees</guid>
      <category>life</category>
      <category>nature</category>
      <category>pink</category>
      <category>tree</category>
      <category>garden</category>
    </item>
     <item>
      <title>CSS Naked Day 2025 Is Next Month</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;CSS Naked Day 2025 Is Next Month&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Friday 7th of March 2025 at 21:37&lt;/time&gt;&lt;/p&gt;
        &lt;p class=&quot;updated&quot;&gt;Last updated on &lt;time&gt;Tuesday 8th of April 2025 at 22:14&lt;/time&gt;&lt;/p&gt;      &lt;/header&gt;
      &lt;p&gt;It&#039;s &lt;a href=&quot;https://css-naked-day.org/&quot;&gt;CSS Naked Day&lt;/a&gt; on April 9th - a day to remove CSS from your website to promote web standards!&lt;/p&gt;
      &lt;p&gt;&lt;a href=&quot;/post/css_naked_day&quot;&gt;I was too late for it last year&lt;/a&gt;, but I&#039;ll never miss it again as this site &lt;em&gt;will automatically disable CSS on and around that date&lt;/em&gt; and I encourage you to do the same.&lt;/p&gt;
      &lt;p&gt;Checking out your site when it&#039;s naked forces you as a website owner to really think about your HTML and to perhaps spend a little time making it as compliant as you can!&lt;/p&gt;
      &lt;p&gt;Speaking of which, I think I have pretty solid HTML on this site, though I do need to spend more time making sure the site can be consumed by all manner of tools. Not everyone uses a typical web browser to browse the web after all!&lt;/p&gt;
      &lt;p&gt;When I wrote the CSS Naked Day code last year I also made it function as a theme. If you wanna check out what this site looks like without CSS, just click it in the &lt;a href=&quot;/themes&quot;&gt;/themes&lt;/a&gt; page (it&#039;s at the bottom.)&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2025-03-07</pubDate>
      <link>https://fyr.io/post/CSS_naked_day_2025_is_next_month</link>
      <guid isPermaLink="true">https://fyr.io/post/CSS_naked_day_2025_is_next_month</guid>
      <category>indieweb</category>
      <category>CSS</category>
      <category>CSS Naked Day</category>
      <category>accessibility</category>
      <category>web standards</category>
    </item>
     <item>
      <title>World Wild Web</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;World Wild Web&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Tuesday 25th of February 2025 at 23:19&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;The web used to be a wild place. Every site you visited had something interesting, something unique about it. Perhaps a funky design, a strange structure or format, or nothing - no design, no structure. Just stuff! Websites had &lt;em&gt;character&lt;/em&gt;, each presenting its content in a way that only that site could. Websites had... personality.&lt;/p&gt;
      &lt;p&gt;Now, however, for many denizens of the internet, that personality which we could use to illuminate the world is confined and diminished and restrained and molded. The commercial web is what most people (in particular young or recently connected people) see and have seen for nearly two decades now - That web is devoid of &lt;em&gt;different&lt;/em&gt; - It is built to support a rigid structure, red tape, policies and guidelines and &lt;em&gt;you can&#039;t do that&lt;/em&gt; and &lt;em&gt;no, do it my way&lt;/em&gt;. You&#039;re locked in. You&#039;re stuck, you&#039;re watched, you don&#039;t move, you&#039;re unable to bend and flex and &lt;em&gt;be yourself&lt;/em&gt;. You are simply a resource that is supposed to generate content for others, fitting within the rigidity of the system to in turn keep others and yourself further trapped and tracked.&lt;/p&gt;
      &lt;p&gt;You have one purpose on the commercial web - to feed and be fed by The Algorithm.&lt;/p&gt;
      &lt;p&gt;The web is &lt;strong&gt;not&lt;/strong&gt; the commercial web. That commercial web is but the surface, the outer layer forced into place through money and profits and demand for control and influence. Seen first because it is on top; You witness it and it takes hold of you and keeps you in its addictive grip, training you to not dig or swim or roam, you are to merely tread water. You are not to dive and delve elsewhere and find the &lt;em&gt;wild&lt;/em&gt;.&lt;/p&gt;
      &lt;p&gt;That wild? The untamed, chaotic, wonderful &lt;em&gt;real&lt;/em&gt; web? It still exists. It&#039;s here, it&#039;s growing. Blooming, blossoming. The unique voices of tens of thousands of human beings, their opinions, their endeavours, their creations, laid out into the internet &lt;em&gt;just because&lt;/em&gt; in their own style with their own voice.&lt;/p&gt;
      &lt;p&gt;It is likely I am preaching to the converted, but if just one person can see this and dig a little, look up and &lt;em&gt;see&lt;/em&gt; what the web should be. There&#039;s more to the internet than corporate interests and profit and algorithms and AI slop. The internet is for &lt;em&gt;you&lt;/em&gt; and not for &lt;em&gt;them&lt;/em&gt;. Now, more than ever, unique voices and perspectives are needed across the entire planet. Diversity, respect. You.&lt;/p&gt;
      &lt;p&gt;You don&#039;t need to compete, you just need to be &lt;strong&gt;entirely you&lt;/strong&gt;. Human. Free from the bindings of the commercial web.&lt;/p&gt;
      &lt;p&gt;So &lt;a href=&quot;https://discourse.32bit.cafe/t/resources-list-for-the-personal-web/49&quot;&gt;get a website or a blog&lt;/a&gt;. Write something. Draw something. Say something. Build something. Rewild the web.&lt;/p&gt;
      &lt;p&gt;The world &lt;strong&gt;wild&lt;/strong&gt; web needs you.&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2025-02-25</pubDate>
      <link>https://fyr.io/post/world_wild_web</link>
      <guid isPermaLink="true">https://fyr.io/post/world_wild_web</guid>
      <category>indieweb</category>
      <category>world wild web</category>
      <category>smallweb</category>
      <category>indieweb</category>
      <category>smollweb</category>
      <category>blog</category>
    </item>
     <item>
      <title>Intentionally Left Blank</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Intentionally Left Blank&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Thursday 20th of February 2025 at 22:37&lt;/time&gt;&lt;/p&gt;
        &lt;p class=&quot;updated&quot;&gt;Last updated on &lt;time&gt;Thursday 19th of March 2026 at 22:17&lt;/time&gt;&lt;/p&gt;      &lt;/header&gt;
      &lt;p&gt;I made an intentionally blank page - &lt;a href=&quot;/blank&quot;&gt;/blank&lt;/a&gt;.&lt;/p&gt;
      &lt;p&gt;I saw &lt;a href=&quot;https://blakewatson.com/&quot;&gt;Blake Watson&#039;s&lt;/a&gt; &lt;a href=&quot;https://blakewatson.com/blank/&quot;&gt;/blank&lt;/a&gt; page after they &lt;a href=&quot;https://social.lol/@bw/114034577089744630&quot;&gt;posted it on mastodon earlier&lt;/a&gt;. I thought it was a great idea, and the reasoning behind it (as per &lt;a href=&quot;https://web.archive.org/web/20180224075941/http://this-page-intentionally-left-blank.org/whythat.html&quot;&gt;this archive.org archived website&lt;/a&gt; (the &lt;a href=&quot;https://this-page-intentionally-left-blank.org/&quot;&gt;original site&lt;/a&gt; is still online but the why page has been removed)) resonates: &lt;q&gt;the primary reason to offer internet wanderers a place of quietness and simplicity on the overcrowded World Wide Web-a blank page for relaxing the restless mind&lt;/q&gt;.&lt;/p&gt;
      &lt;p&gt;More so than ever does the internet, the www in particular, need places of calm. Free from the chaos, the algorithm. The &quot;&lt;a href=&quot;/post/indieweb_vs_indie_web&quot;&gt;indie web&lt;/a&gt;&quot; is that, as is any community of humans discussing or building things they&#039;re passionate about. But sometimes, you just wanna... stop, y&#039;know? Only &lt;em&gt;exist&lt;/em&gt; for a bit. Breathe.&lt;/p&gt;
      &lt;p&gt;Ahh.&lt;/p&gt;
      &lt;p&gt;The &lt;a href=&quot;https://this-page-intentionally-left-blank.org/&quot;&gt;original site&lt;/a&gt; above used to have a &lt;a href=&quot;https://web.archive.org/web/20180224100107/http://www.this-page-intentionally-left-blank.org/members.html&quot;&gt;list of members&lt;/a&gt;, 36 sites which also intentionally made a blank page. I checked each one of the personal websites current state out and found the following had their blank page still online:&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;a href=&quot;https://www.matthewweathers.com/year2001/intentionally_blank.htm&quot;&gt;matthewweathers.com&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://www.porcus.ch/blankpage.html&quot;&gt;purcus.ch&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://www.akaharry.com/blankpage.html&quot;&gt;akaharry.com&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;http://www.leftblank.com/&quot;&gt;leftblank.com&lt;/a&gt; (is this cheating :D)&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;http://eyeshot.net/___.html&quot;&gt;eyeshot.net&lt;/a&gt; (you may need to view-source, it doesn&#039;t render in the browser for me)&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;The rest had sadly either been removed/redirected or the domain taken over. Google, Yahoo and some others used to have &lt;em&gt;fun&lt;/em&gt; and show nothing when searching for this, but the internet isn&#039;t &lt;em&gt;allowed&lt;/em&gt; to be fun anymore, according to that boring lot.&lt;/p&gt;
      &lt;p&gt;Make a /blank page. Intentionally. Bring to the internet your own little slice of nothing, and &lt;a href=&quot;/hello&quot;&gt;let me know if you do&lt;/a&gt; or if you have one already and I&#039;ll list it below.&lt;/p&gt;
      &lt;h3&gt;Other blank pages from around the &#039;net&lt;/h3&gt;
      &lt;p&gt;Some other bloggers or webweavers have let me know that they too have a page intentionally left blank on their site!&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;a href=&quot;https://jamesg.blog/blank&quot; target=&quot;_blank&quot;&gt;jamesg.blog/blank&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://blog.darylsun.page/blank&quot; target=&quot;_blank&quot;&gt;blog.darylsun.page/blank&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://rhzartist.neocities.org/test/blank&quot; target=&quot;_blank&quot;&gt;rhzartist.neocities.org/test/blank&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://benji.dog/blank&quot; target=&quot;_blank&quot;&gt;benji.dog/blank&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://mihobu.lol/blank&quot; target=&quot;_blank&quot;&gt;mihobu.lol/blank&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://www.shannonkay.com/blank/&quot; target=&quot;_blank&quot;&gt;shannonkay.com/blank&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://flamedfury.com/blank/&quot; target=&quot;_blank&quot;&gt;flamedfury.com/blank&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://lukealexdavis.co.uk/blank/&quot; target=&quot;_blank&quot;&gt;lukealexdavis.co.uk/blank&lt;/a&gt; 🌷🌹🪻🌸🌺🌻🌼💐🥀🪷&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://r74n.com/blank&quot;&gt;r74n.com/blank&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://riri.my/blank&quot;&gt;riri.my/blank&lt;/a&gt; &lt;code&gt;{&quot;opinion&quot;:&quot;Awesome!&quot;}&lt;/code&gt;&lt;/li&gt;
        &lt;li&gt;I&#039;ve just (2026-03-19) found that the indieweb.org site has &lt;a href=&quot;https://indieweb.org/blank&quot;&gt;a page dedicated to blank pages&lt;/a&gt;! Neat!&lt;/li&gt;
      &lt;/ul&gt;
    &lt;/article&gt;

</description>
      <pubDate>2025-02-20</pubDate>
      <link>https://fyr.io/post/intentionally_left_blank</link>
      <guid isPermaLink="true">https://fyr.io/post/intentionally_left_blank</guid>
      <category>website</category>
      <category>blank</category>
      <category>peace</category>
      <category>calm</category>
      <category>intentional</category>
      <category>minimalism</category>
      <category>page</category>
      <category>slashpage</category>
    </item>
     <item>
      <title>SPF And DMARC At Primary Schools</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;SPF And DMARC At Primary Schools&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Wednesday 19th of February 2025 at 15:40&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;A few months ago someone I know working at a primary school was having email troubles, and happened to mention this to me in passing. I took a look and noticed no &lt;a href=&quot;https://en.wikipedia.org/wiki/Sender_Policy_Framework&quot;&gt;SPF&lt;/a&gt; or &lt;a href=&quot;https://en.wikipedia.org/wiki/DMARC&quot;&gt;DMARC&lt;/a&gt; records were present. Whilst unrelated to the issue, this was concerning. SPF and DMARC are pretty basic things to get in place which help prevent spam being sent from your domain, and they don&#039;t cost anything either. I passed on my thoughts and left it at that.&lt;/p&gt;
      &lt;p&gt;But it kept nagging me... if this primary school was pretty bad on the SPF/DMARC front, are any primary schools doing a decent job? Are most? None? I envisioned a malicious actor emailing from a nice friendly local school domain, convincing locals (including parents of course) to just click this link or donate for this trip... Or worse.&lt;/p&gt;
      &lt;p&gt;I decided to find out.&lt;/p&gt;
      &lt;p&gt;&lt;em&gt;&lt;a href=&quot;#results&quot;&gt;Skip to the results&lt;/a&gt; if you want the good stuff&lt;/em&gt;&lt;/p&gt;
      &lt;h3&gt;Scanning all primary schools&lt;/h3&gt;
      &lt;p&gt;The first task is, of course, knowing what to scan. What are the primary schools in the uk? Can I even determine their email domain?&lt;/p&gt;
      &lt;p&gt;Yes, because the uk government maintain a &lt;a href=&quot;https://get-information-schools.service.gov.uk/&quot;&gt;public list of educational institutions&lt;/a&gt;! Not only that, but they &lt;a href=&quot;https://get-information-schools.service.gov.uk/Downloads&quot;&gt;make it available as a .csv file&lt;/a&gt; which contains loads of data, primarily the school type (primary, secondary, etc,) a link to their website (if any) and whether they&#039;re currently open. Handy!&lt;/p&gt;
      &lt;p&gt;Now, I&#039;m only doing this rough, this isn&#039;t a scientific study nor am I seeking perfection and complete data accuracy, it was a bodge of a few powershell scripts knocked together so make allowances for the quality :)&lt;/p&gt;
      &lt;p&gt;I downloaded the biggest .csv file from the gov.uk site and generated a much nicer .csv file containing the 16708 currently operating primary schools. Of these, 308 didn&#039;t have a website, so they&#039;re removed from the list.&lt;/p&gt;
      &lt;p&gt;I have my target list ready!&lt;/p&gt;
      &lt;p&gt;Though wait a moment, you eager beaver you. From experience, I know that a very large percentage of school &lt;em&gt;website domains&lt;/em&gt; do not match up to their &lt;em&gt;email domains&lt;/em&gt;. This is due to several reasons (renames, council-issued domains, Trust membership, etc) - suffice it to say, I can&#039;t rely on the website domain being the same one emails come from from that particular school. So I did the only thing I could think of - I wrote up another little script to grab the html contents of the school homepage and parse it for an email address.&lt;/p&gt;
      &lt;p&gt;Of the 16400 schools with a website listed, 3632 of them had some kind of error when I tried to grab their website data (website timeout, parsing problem, 500 error code, etc) or I couldn&#039;t find an email address on the homepage. I should note that if I didn&#039;t find an email address on the homepage, I also parsed the HTML for a link with &quot;contact&quot; in the URL, grabbing that pages&#039; HTML and parsing it for email addresses, to try and catch sites that only publish an email address on the contact page (of which there are many).&lt;/p&gt;
      &lt;p&gt;My approach wasn&#039;t perfect; A bunch of these websites look like they have valid email addresses available when viewed in the browser but they hide the actual address behind javascript to deter spam (or deter annoying people like me). I couldn&#039;t be bothered to unpick or defeat these, so they&#039;re excluded from the results.&lt;/p&gt;
      &lt;p&gt;I originally just regex&#039;d email addresses out of the html, however I was catching a load of obviously-unrelated email addresses (like in HTML comments containing license or contact info for a javascript library) as well as other random not-email-addresses, so I resorted to the easier but less complete method of looking for a &#039;mailto:&#039; link. This has further excluded many results, as many sites I scanned don&#039;t wrap their email address in an anchor tag: &lt;pre class=&quot;codeblock&quot;&gt;&amp;lt;a href=&quot;&lt;strong&gt;mailto:&lt;/strong&gt;email@address.tld&quot;&amp;gt;email@address.tld&amp;lt;/a&amp;gt;&lt;/pre&gt;&lt;/p&gt;
      &lt;p&gt;That left me with 10344 (probably) email domains, which is pretty good. I should add that I only took the first &#039;mailto:&#039; link, so in here are some pages where they publish an email address that isn&#039;t owned or used by the primary school, but perhaps to a third party. Unfortunately, a large percentage of school website domains do not match their email domain, so these shall remain in the data as I won&#039;t be going through unpicking them.&lt;/p&gt;
      &lt;p&gt;I wrote my own parser to scan these records, which worked sort of okay but not great. I quickly realised that someone else had already done the parser logic work for me though! So, using the &lt;a href=&quot;https://binsec.nl/powershell-script-for-spf-dmarc-and-dkim-validation/&quot;&gt;DomainHealthChecker powershell module&lt;/a&gt;, I scanned all these &#039;mailto:&#039; domains, 14 of which had errors of their own (pretty much &quot;DNS record doesn&#039;t exist, yo!&quot;) leaving us with 10330 domains checked for SPF and DMARC.&lt;/p&gt;
      &lt;h3 id=&quot;results&quot;&gt;Results&lt;/h3&gt;
      &lt;p&gt;Here are the results - note that there is some overlap, some records matched multiple fail states. There were also some failures during scanning, not sure why. Anyway, the important thing is that the total won&#039;t match up to the scanned domains.&lt;/p&gt;
      &lt;h4&gt;SPF&lt;/h4&gt;
      &lt;p&gt;Generally, SPF was pretty decent! &lt;strong&gt;67.4% are sufficiently strict&lt;/strong&gt; (&lt;code&gt;-all&lt;/code&gt;), with a further 26% being moderately okay (&lt;code&gt;~all&lt;/code&gt;) but there&#039;s still work to be done. I haven&#039;t resolved or parsed individual mechanisms to ensure they&#039;re resolvable or formatted correctly (for example, misspelt domain names, incorrect IPs, no valid &lt;code&gt;A&lt;/code&gt; or &lt;code&gt;mx&lt;/code&gt; record on a domain, etc)&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;strong&gt;450+ characters&lt;/strong&gt;: 15 - &lt;em&gt;450 characters is the max for SPF records, these have more than that and are thus considered invalid&lt;/em&gt;&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;No SPF record&lt;/strong&gt;: 437 - &lt;em&gt;zilch, nada, nothing&lt;/em&gt;&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Multiple records&lt;/strong&gt;: 123 - &lt;em&gt;Only one SPF TXT record should exist on a domain&lt;/em&gt;&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;No qualifier&lt;/strong&gt; (&lt;code&gt;~all&lt;/code&gt; or &lt;code&gt;-all&lt;/code&gt;): 18 - &lt;em&gt;the end qualifier of an SPF record determines what happens to all mail that hasn&#039;t matched - if this isn&#039;t specified, everything is allowed&lt;/em&gt;&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Broken formatting&lt;/strong&gt;: 24
          &lt;ul&gt;
            &lt;li&gt;No space delimeter before an ip4 mechanism (regex: &lt;code&gt;(?&amp;lt;![ +])ip4&lt;/code&gt;): 10 - &lt;em&gt;Example: &lt;code&gt;v=spf1 a mx ip4:255.0.1.92ip4:255.255.255.1 -all&lt;/code&gt;&lt;/em&gt;&lt;/li&gt;
            &lt;li&gt;No space delimeter before an include mechanism (regex: &lt;code&gt;(?&amp;lt;![ +-])include:&lt;/code&gt;): 13 - &lt;em&gt;Example: &lt;code&gt;v=spf1 a mx include:spf1.example.tldinclude:spf2.example.tld -all&lt;/code&gt;&lt;/em&gt;&lt;/li&gt;
            &lt;li&gt;Invalid qualifier (regex: &lt;code&gt;(?&amp;lt;![+-~])all&quot;&lt;/code&gt;): 1 (this was &lt;code&gt;*all&lt;/code&gt; lol?)&lt;/li&gt;
          &lt;/ul&gt;
        &lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Accidental permit all&lt;/strong&gt;: 2 - &lt;em&gt;not using a qualifier (&lt;code&gt;-&lt;/code&gt; or &lt;code&gt;~&lt;/code&gt;) immediately prior to &lt;code&gt;all&lt;/code&gt; at the end of the record implies &lt;code&gt;+all&lt;/code&gt; - I assume this was an accident&lt;/em&gt;&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Policy is not sufficiently strict&lt;/strong&gt;: 2691 - &lt;em&gt;This is just using &lt;code&gt;~all&lt;/code&gt; (soft fail) instead of &lt;code&gt;-all&lt;/code&gt; (hard fail)&lt;/em&gt; and is a decent enough setting. Hard fails are strongly encouraged however&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Policy is sufficiently strict&lt;/strong&gt;: 6979 - &lt;em&gt;🎉 these are good! Formatted correctly, hard failing SPF records. Just what email needs!&lt;/em&gt;&lt;/li&gt;
      &lt;/ul&gt;
      &lt;h4&gt;DMARC&lt;/h4&gt;
      &lt;p&gt;Oh boy. Just over 31% of domains have something decent going on that accounts for both domains and subdomains. &lt;strong&gt;Only 9% of primary school domains reject on both the domain and subdomain front&lt;/strong&gt;. Come on, this isn&#039;t good enough! From worst to best (imo):&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;strong&gt;Does not have a DMARC record&lt;/strong&gt;: 5542 - &lt;em&gt;No record at all&lt;/em&gt;&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Domain has a DMARC record but the policy is set to none (p=none)&lt;/strong&gt;: 1412 - &lt;em&gt;They&#039;ve gone to the effort of setting up a record, but it was pointless because it doesn&#039;t do anything&lt;/em&gt;&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Domain has a DMARC record but the policy is set to none for both the domain (p=none) and subdomains (sp=none)&lt;/strong&gt;: 259 - &lt;em&gt;As above they&#039;ve gone to the effort of setting up a record, but it was extra pointless because they&#039;ve gone above and beyond to ensure that it doesn&#039;t do anything for the domain or the subdomain 🤦&lt;/em&gt;&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;0% rule&lt;/strong&gt;: 5 - &lt;em&gt;&quot;pct=0&quot; set, meaning the DMARC policy applies to 0% of emails. Just... Why?!&lt;/em&gt;&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Domain is set to quarantine, but subdomains are explicitly set to &quot;sp=none&quot;&lt;/strong&gt;: 53 - &lt;em&gt;Understandable config whilst testing - quarantine emails from the domain but maybe they&#039;re not ready to get the subdomains sorted yet&lt;/em&gt;&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Domain is set to reject, subdomains explicitly set to &quot;sp=none&quot;&lt;/strong&gt;: 3 - &lt;em&gt;As above, understandable during deployment&lt;/em&gt;&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Corrupted record&lt;/strong&gt;: 9 - &lt;em&gt;Note that only the first rule results in a broken DMARC record, the other two may just prevent email report delivery&lt;/em&gt;
          &lt;ul&gt;
            &lt;li&gt;Invalid version (&lt;code&gt;v=dmarc;&lt;/code&gt;): 1&lt;/li&gt;
            &lt;li&gt;Invalid rua (regex: &lt;code&gt;rua=(?![mailto:| ])&lt;/code&gt;): 5&lt;/li&gt;
            &lt;li&gt;Invalid ruf (regex: &lt;code&gt;ruf=(?![mailto:| ])&lt;/code&gt;): 3&lt;/li&gt;
          &lt;/ul&gt;
        &lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Domain is set to p=quarantine&lt;/strong&gt;: 2130 - &lt;em&gt;emails purpoting to come from the from: domain but from a non-authorised source will be delivered but likely marked as spam. Subdomains inherit this&lt;/em&gt;&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Domain and subdomain explicitly set to quarantine&lt;/strong&gt;: 206 - &lt;em&gt;As above, except subdomains have been explicitly configured&lt;/em&gt;&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Domain is set to reject, subdomains set to quantine&lt;/strong&gt;: 38&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;DMARC set to reject domain (subdomains inherit this) properly&lt;/strong&gt;: 551 - &lt;em&gt;🎉 This is ideal!&lt;/em&gt;&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;DMARC set to reject domain and subdomains (explicitly set &#039;sp=reject&#039;) properly&lt;/strong&gt;:395  - &lt;em&gt;🎉 This is also ideal!&lt;/em&gt;&lt;/li&gt;
      &lt;/ul&gt;
      &lt;h3&gt;Closing&lt;/h3&gt;
      &lt;p&gt;So yeah as expected DMARC is pretty terrible, though SPF was better than I expected. There&#039;s clearly work to be done on this front. I wonder what that state of secondaries, colleges and universities is... hopefully better? It&#039;d be pretty easy for me to find out now I have all these scripts sitting here...&lt;/p&gt;
      &lt;p&gt;I have the data if anyone wants it, just &lt;a href=&quot;/hello&quot;&gt;let me know&lt;/a&gt;. Though to be honest it&#039;s pretty easy to generate it yourself.&lt;/p&gt;
      &lt;p&gt;If you want to check SPF, DMARC, DKIM, and other related things on your (or anyones) domain yourself, check out &lt;a href=&quot;https://mxtoolbox.com/&quot; target=&quot;_blank&quot;&gt;mxtoolbox.com&lt;/a&gt;.&lt;/p&gt;
      &lt;h3&gt;Wait hold up, why no DKIM?!&lt;/h3&gt;
      &lt;p&gt;Determining the DKIM subdomain isn&#039;t really feasible without recieving an email from the domain in question, and I&#039;m not about to spam all these domains hoping for a reply (well, a more sensible idea will be to email a junk mailbox and hope for an undeliverable reply, iirc that will have the required info in the message headers). You can probably guess a good 50-80% of them maybe, but again I&#039;m not going to be the source of abuse, particularly when it comes to DNS. I&#039;ve seen some random domain key subdomains when looking into this, and in the past. Things like &lt;code&gt;ns427365412._domainkey.domain.tld&lt;/code&gt; so good luck brute forcing those.&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2025-02-19</pubDate>
      <link>https://fyr.io/post/SPF_and_DMARC_at_primary_schools</link>
      <guid isPermaLink="true">https://fyr.io/post/SPF_and_DMARC_at_primary_schools</guid>
      <category>infosec</category>
      <category>email</category>
      <category>security</category>
      <category>infosec</category>
      <category>spf</category>
      <category>dmarc</category>
      <category>education</category>
      <category>scripting</category>
      <category>school</category>
      <category>spam</category>
    </item>
     <item>
      <title>Prioritising Many Projects</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Prioritising Many Projects&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Tuesday 18th of February 2025 at 22:28&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;I&#039;ve got this nifty little system of organising a large number of &lt;em&gt;different projects&lt;/em&gt;, that &lt;em&gt;&lt;strong&gt;all&lt;/strong&gt; have to be done&lt;/em&gt;, into a particular order depending on what benefit I&#039;m trying to achieve through the projects or my constraints at the time, and it uses alphabetical ordering to organise it so it can happen in a spreadsheet (instead of putting a number in front of a word so it appears at the top of the list when you order the column, instead of half way down it) - It&#039;s not anything &lt;em&gt;new&lt;/em&gt; but I&#039;ve found this minor frustration with all the tools I&#039;ve used to organise things, so I instead opted to do what all nerds do, and made a spreadsheet that did it for me in the way I needed.&lt;/p&gt;
      &lt;p&gt;&lt;strong&gt;Disclaimer&lt;/strong&gt;: &lt;em&gt;Whilst I actively use this in a professional setting, I may have made a severe logical error somewhere, which is mostly why I&#039;m writing this up here. If you spot a mistake, an improvement, can think of a funky name for this, or preferably point me at someone who has done this already and better than I have here so I can just use their system instead... &lt;a href=&quot;/about#contact&quot;&gt;let me know&lt;/a&gt;!&lt;/em&gt;&lt;/p&gt;
      &lt;p&gt;If you only want to read about this organisational spreadsheet thingy, skip ahead to the &lt;a href=&quot;#prioritise_many_projects&quot;&gt;Prioritising Many Projects&lt;/a&gt; section. If you just want to see an example spreadsheet, &lt;a href=&quot;/files/project-priorities-example.ods&quot;&gt;here&#039;s a demo .ODS file&lt;/a&gt; (works with LibreOffice Calc and probably Excel?). Otherwise keep reading to see how I organise planned and unplanned work, why I needed something a little different, and how it came to be.&lt;/p&gt;
      &lt;h3&gt;How I Prioritise and Organise Planned and Unplanned Work&lt;/h3&gt;
      &lt;p&gt;I feel like I need to start at the beginning here and outline how I already prioritised my workload so you can better understand why I needed something else, later.&lt;/p&gt;
      &lt;p&gt;I use a couple of different methods of prioritising and managing workload in the day job. That work comes in several different forms; It could mean &lt;strong&gt;reactive&lt;/strong&gt; work tasks which are typically unpredictable, individual, isolated problems that are blocking or slowing a task and need fixing fairly quickly - think things like support ticket escalations - or &lt;strong&gt;proactive&lt;/strong&gt; work, which include planning a project, executing a project, doing routine upgrades, etc. The individual tasks within this proactive work are generally one step in a larger project which, when most-if-not-all are completed, achieves a goal. Think &quot;migrate service&quot; or &quot;upgrade component&quot; or &quot;launch application&quot; as the goal, with all the steps between now and the goal being achieved as tasks. Pretty typical stuff found almost everywhere in tech and project-oriented work.&lt;/p&gt;
      &lt;p&gt;For myself, a projects tasks are managed with a &lt;a href=&quot;https://en.wikipedia.org/wiki/Kanban&quot;&gt;Kanban&lt;/a&gt; board. I generally, though not always, structure these boards with six or seven columns. Within the columns are the individual tasks, prioritised top to bottom with, essentially, most important or pressing at the top of the column, moving down to least important (or tasks I can&#039;t do until other tasks are done.) Okay okay, fine, I&#039;ll go into more detail: These columns, for me, are typically something like the following:&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;strong&gt;Needs&lt;/strong&gt; - This project, or the organisation, needs these things to succeed&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Wants&lt;/strong&gt; - This project, or the org, would in some way benefit from these things being done but they don&#039;t &lt;em&gt;need&lt;/em&gt; to be done&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Blocked&lt;/strong&gt; - This is work that is in progress but is blocked by something out of my control (like, waiting for a part to be delivered, data from a third party, etc)&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;In Progress&lt;/strong&gt; - This is what I&#039;m actively working on right now, limited to one or two things because you can&#039;t &lt;em&gt;literally&lt;/em&gt; do more than one thing at a time. Well, &lt;strong&gt;I&lt;/strong&gt; can&#039;t multitask (effectively) anyway&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Cooling off&lt;/strong&gt; - This task may be complete but perhaps the change is rolling out, or the task has been worked on but is in trial/testing phase and I&#039;m waiting for feedback. Maybe a change is being scream tested and just needs to be parked somewhere that isn&#039;t &lt;strong&gt;In Progress&lt;/strong&gt; or &lt;strong&gt;Blocked&lt;/strong&gt;.&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Needs Review&lt;/strong&gt; - This task is complete in my opinion but needs to be, or should be, reviewed before being designated as &lt;strong&gt;Done&lt;/strong&gt;. Not all tasks go here, some skip over to &lt;strong&gt;Done&lt;/strong&gt;, but many do because maybe I messed up somewhere! Documentation updates, config changes, etc. Anything that should have a change control process around it is double-checked&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Done&lt;/strong&gt; - These are all the things I&#039;ve completed (and have been signed off) so far&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;Pretty typical, really. I do change it up occasionally, depending on personal preference, for a project I own. Sometimes I don&#039;t use both the &lt;strong&gt;Cooling off&lt;/strong&gt; or &lt;strong&gt;Needs Review&lt;/strong&gt; columns, it really depends on the project. Rather than using swimlanes for projects, I spin up a new kanban board. Sometimes I&#039;ll swap out the Needs and Wants columns for a single Backlog column. This structure has served me well for the planned work stuff, including the day to day sysadmin type things I get up to.&lt;/p&gt;
      &lt;p&gt;For the unplanned stuff that lands on the todo list, but isn&#039;t a task that&#039;s part of a larger project (think emails I need to action, or break-fix support ticket escalations) I use the classic Eisenhower Matrix. Each item (ticket, job, walk-in, email, etc) is recorded and given one of four states:&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;strong&gt;Do&lt;/strong&gt; - This stuff needs to happen &lt;strong&gt;now&lt;/strong&gt; and is more important than the below categories&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Decide&lt;/strong&gt; - This stuff needs to happen, but not now if there&#039;s a &#039;Do&#039; item. Decide when it needs to happen by, and schedule it (or do it right away.) This may form a task or may spawn a whole project.&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Delegate&lt;/strong&gt; - This stuff, whilst not important, should happen. But someone else could or should do it&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Drop&lt;/strong&gt; - This isn&#039;t important or urgent, so it shouldn&#039;t take up any energy. Drop it unless there&#039;s nothing else going on. (spoiler: there&#039;s always something else going on)&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;Again, pretty typical.&lt;/p&gt;
      &lt;p&gt;These work management &#039;templates&#039; are both simple and easy to maintain and used widely, so anyone stepping into my shoes can easily see where I&#039;m at and where I&#039;m going. Taking the time to manage these lists and make sure they&#039;re all organised and well written and prioritised in a suitable order within the columns/groups they reside in allows me to direct energy at the things that matter the most - solving actual problems in an order that benefits others the most. I have been way more effective since finding my way into these methods and wherever I can I encourage others to find the system(s) that works for them.&lt;/p&gt;
      &lt;h3&gt;The Project Tsunami&lt;/h3&gt;
      &lt;p&gt;But what if you need to prioritise a whole load of entire projects? Recently, due to a few different events at work occurring at around the same time (primarily a slight shift in direction by C-Levels combined with various government guidance and regulation documents coming down the chain) I found myself with a pretty big list of projects to do. Once I had parsed the documentation (which is a government-issued document and essentially to be interpreted as law now) I found myself with hundreds of individual projects. Literally talking about over &lt;strong&gt;600&lt;/strong&gt; projects here. Now, some of these are very small (write a document) with plenty of overlap between the projects, and others are likely formed of multiple related but individual projects which on their own are likely to span a year of effort.&lt;/p&gt;
      &lt;p&gt;I watched this list grow as I pulled out the key takeaways from the guidance and began to feel a sense of trepidation. For some of this work, I&#039;ll be going solo. For most, it&#039;ll be me and one colleague, and for the small remaining tasks it can be spread across three to four others, depending on requirements. I&#039;ll have help here and there, but... this kind of work should have a large team behind it to pull it off in a sensible timeframe.&lt;/p&gt;
      &lt;p&gt;Such a team will not magic itself into existence, so I had to wrap my head around how to organise this work and complete it in the most effective way. How could I deliver the important projects? How could I even decide &lt;em&gt;what&lt;/em&gt; was more important in such a huge list of projects?&lt;/p&gt;
      &lt;p&gt;I plugged the projects into my existing system, and whilst they worked to some extent they couldn&#039;t quite show me what I wanted. They would allow me to see the most critical tasks or the ones I could probably forget about (for a couple of years) but... not which ones would be cost effective, or which ones would take the longest, or which ones would have the most positive impact, be cheap (or free, financially) and not take much time at all. I tried a bunch of different methods, even resorting to an LLM to tell me about any other &lt;em&gt;project&lt;u&gt;s&lt;/u&gt;&lt;/em&gt; prioritisation systems I didn&#039;t know about... but couldn&#039;t find anything that fit well enough to my liking. So I got thinking... What if I took it all back to basics, used the Eisenhower Matrix and customised it a little?&lt;/p&gt;
      &lt;p&gt;This is nothing special or revolutionary! The Eisenhower Matrix is simple &lt;em&gt;exactly so that it can be customised&lt;/em&gt;. I sat on it for a few days, thought about it, played with some ideas and was finally hit with the inspiration I needed. The next day I marched into the office with a plan and put together the following.&lt;/p&gt;
      &lt;h3 id=&quot;prioritise_many_projects&quot;&gt;Prioritising Many Projects with... uhh... CDPQSW? IUECP? Or whatever it&#039;ll be called when either 1) I can think of something clever, or more likely 2) when someone tells me this exists already and everyone knew about it how did you not know about this wow how do you even manage to survive a day&lt;/h3&gt;
      &lt;p&gt;&lt;a href=&quot;/files/project-priorities-example.ods&quot;&gt;Here&#039;s a demo .ODS file&lt;/a&gt; you can take a look at! It&#039;s made with LibreOffice Calc but I think it should work in Excel too. The formula absolutely works in Google Sheets, though I haven&#039;t attempted to import this particular spreadsheet to verify it remains sensible.&lt;/p&gt;
      &lt;p&gt;By organising your list of projects in the following way, you&#039;ll be able to highlight which ones are the most critical and cheapest and easiest, highlight if there are any quick wins, and all in a way that makes them stupidly easy to sort and rearrange.&lt;/p&gt;
      &lt;p&gt;We start with an empty spreadsheet - in column A, put &lt;code&gt;Project&lt;/code&gt; as the header in row 1, then in row 2, 3, etc write down your many projects in any order you like. In columns B to E we rate each one on the Importance, the Urgency, the Effort and the Cost. Put those four categories as headers in row 1 of each column, then use Data Validation (as per Google Sheets parlance) to create a dropdown box for every cell in that column (except for the heading) with the following options:&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;strong&gt;Importance&lt;/strong&gt; - How much of a positive impact will this have when complete?
          &lt;ul&gt;
            &lt;li&gt;Zero&lt;/li&gt;
            &lt;li&gt;Small&lt;/li&gt;
            &lt;li&gt;Medium&lt;/li&gt;
            &lt;li&gt;Large&lt;/li&gt;
          &lt;/ul&gt;
        &lt;/li&gt;
      &lt;/ul&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;strong&gt;Urgency&lt;/strong&gt; - How much of a &lt;em&gt;negative&lt;/em&gt; impact will this have if you don&#039;t do it?
          &lt;ul&gt;
            &lt;li&gt;Zero&lt;/li&gt;
            &lt;li&gt;Small&lt;/li&gt;
            &lt;li&gt;Medium&lt;/li&gt;
            &lt;li&gt;Large&lt;/li&gt;
            &lt;li&gt;Duty&lt;br /&gt;(A Duty is something that you absolutely must do - perhaps it&#039;s a meeting with HR or a legal requirement like PCI-DSS. You might want to skip it, it might not be useful, it might not even have any negative impact if you skip it, but tough. Ya gotta do it.)&lt;/li&gt;
          &lt;/ul&gt;
          
        &lt;/li&gt;
      &lt;/ul&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;strong&gt;Effort&lt;/strong&gt; - How much effort (time) will this take to complete?
          &lt;ul&gt;
            &lt;li&gt;Zero&lt;/li&gt;
            &lt;li&gt;Small&lt;/li&gt;
            &lt;li&gt;Medium&lt;/li&gt;
            &lt;li&gt;Large&lt;/li&gt;
          &lt;/ul&gt;
        &lt;/li&gt;
      &lt;/ul&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;strong&gt;Cost&lt;/strong&gt; - How much money is needed to get this complete? Licensing, parts, contractors. Not employee wages for me, but maybe you should consider that.
          &lt;ul&gt;
            &lt;li&gt;Zero&lt;/li&gt;
            &lt;li&gt;Small&lt;/li&gt;
            &lt;li&gt;Medium&lt;/li&gt;
            &lt;li&gt;Large&lt;/li&gt;
          &lt;/ul&gt;
        &lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;In column F, put &lt;code&gt;Priority&lt;/code&gt; as the heading. Make the data a filter or a table, then in cell &lt;code&gt;F2&lt;/code&gt; paste the following formula (tested on Google Sheets &amp; LibreOffice Calc):&lt;/p&gt;
      &lt;pre class=&quot;codeblock&quot;&gt;=if(AND(B2=&quot;Large&quot;,C2=&quot;Large&quot;),&quot;Critical&quot;, if(AND(C2=&quot;Duty&quot;),&quot;Duty&quot;, if(AND(C2=&quot;Large&quot;),&quot;Pressing&quot;, if(AND(OR(D2=&quot;Zero&quot;,D2=&quot;Small&quot;),E2=&quot;Zero&quot;,OR(B2=&quot;Medium&quot;,B2=&quot;Large&quot;)),&quot;Quick Win&quot;, if(AND(OR(B2=&quot;Small&quot;,B2=&quot;Zero&quot;),OR(C2=&quot;Small&quot;,C2=&quot;Zero&quot;)),&quot;Withhold&quot;,&quot;Schedule&quot;)))))&lt;/pre&gt;
      &lt;p&gt;This simple but pretty lengthy formula is a basic series of IF statements that determine the priority of a project for you. What&#039;s especially neat about the words used in the B-E columns (zero, small, medium, large, duty) and the words generated via this formula in column F (critical, duty, pressing, quick win, schedule, withhold) is that their alphabetical order is also the order of priority. No mucking about with complex formula or adding &lt;code&gt;1-&lt;/code&gt;, &lt;code&gt;2-&lt;/code&gt; to each phrase, they&#039;re entirely human readable and descriptive and instructive!&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;strong&gt;Critical&lt;/strong&gt; - Negative consequences if not done, positive consequences if done. This is essentially a disaster and requires immediate attention - think: production systems offline, threat to life/health, &lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Duty&lt;/strong&gt; - You are obligated to complete this ASAP (eg: meetings, legal requirement, etc) regardless of positive or negative consequences&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Pressing&lt;/strong&gt; - Negative consequences if not done&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Quick win&lt;/strong&gt; - Easy and free tasks that you can smash out quickly that have a positive consequence. This could be condensed into the &lt;code&gt;Schedule&lt;/code&gt; priority but I liked having it separate and clearly defined to easily pluck them out in the gaps between other bigger more stressful projects&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Schedule&lt;/strong&gt; - Positive consequences if done, these should be organised for the future in a flexible way&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Withhold&lt;/strong&gt; - Low or no consequences whether done or not, probably not worth considering yet&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;You&#039;ll need to then drag that formula down to populate each cell in the F column, for each row you have a project in. Then the magic happens - you can now sort the spreadsheet in a couple of different ways to order the projects how you wish to tackle them. Here are some examples - whilst it&#039;s a bit awkward to sort things ascending and then another column descending or whatever (depending on what you want) it comes naturally once it clicks:&lt;/p&gt;
      &lt;h4&gt;1) Highest priority, 2) easiest, 3) cheapest&lt;/h4&gt;
      &lt;p&gt;I use this personally - doing the highest priority jobs first, with the least time consuming options first, descending in financial cost order within those effort bands. Sort them like this:&lt;/p&gt;
      &lt;ol&gt;
        &lt;li&gt;&lt;code&gt;Cost&lt;/code&gt;, &lt;em&gt;Z-A&lt;/em&gt; (&lt;em&gt;Descending&lt;/em&gt;)&lt;/li&gt;
        &lt;li&gt;&lt;code&gt;Effort&lt;/code&gt; , &lt;em&gt;Z-A&lt;/em&gt; (&lt;em&gt;Descending&lt;/em&gt;)&lt;/li&gt;
        &lt;li&gt;&lt;code&gt;Priority&lt;/code&gt;, &lt;em&gt;A-Z&lt;/em&gt; (&lt;em&gt;Ascending&lt;/em&gt;)&lt;/li&gt;
      &lt;/ol&gt;
      &lt;h4&gt;1) Highest priority, 2) cheapest, 3) least effort&lt;/h4&gt;
      &lt;p&gt;Subtly different, but sometimes you may want to get the highest priority, least expensive jobs out of the way first even if they require more effort. Just sort it like so:&lt;/p&gt;
      &lt;ol&gt;
        &lt;li&gt;&lt;code&gt;Effort&lt;/code&gt;, &lt;em&gt;Z-A&lt;/em&gt; (&lt;em&gt;Descending&lt;/em&gt;)&lt;/li&gt;
        &lt;li&gt;&lt;code&gt;Cost&lt;/code&gt;, &lt;em&gt;Z-A&lt;/em&gt; (&lt;em&gt;Descending&lt;/em&gt;)&lt;/li&gt;
        &lt;li&gt;&lt;code&gt;Priority&lt;/code&gt;, &lt;em&gt;A-Z&lt;/em&gt; (&lt;em&gt;Ascending&lt;/em&gt;)&lt;/li&gt;
      &lt;/ol&gt;
      &lt;h4&gt;1) Biggest positive outcome, 2) cheapest&lt;/h4&gt;
      &lt;p&gt;Sort your projects by the ones that have the biggest positive outcomes, doing the cheapest ones within each Impact band first.&lt;/p&gt;
      &lt;ol&gt;
        &lt;li&gt;&lt;code&gt;Cost&lt;/code&gt;, &lt;em&gt;Z-A&lt;/em&gt; (&lt;em&gt;Descending&lt;/em&gt;)&lt;/li&gt;
        &lt;li&gt;&lt;code&gt;Impact&lt;/code&gt;, &lt;em&gt;A-Z&lt;/em&gt; (&lt;em&gt;Ascending&lt;/em&gt;)&lt;/li&gt;
      &lt;/ol&gt;
      &lt;h4&gt;1) Most time consuming 2) Most expensive&lt;/h4&gt;
      &lt;p&gt;These will probably be the most difficult projects, you might want to do those first, regardless of the impact or urgency:&lt;/p&gt;
      &lt;ol&gt;
        &lt;li&gt;&lt;code&gt;Cost&lt;/code&gt;, &lt;em&gt;A-Z&lt;/em&gt; (&lt;em&gt;Ascending&lt;/em&gt;)&lt;/li&gt;
        &lt;li&gt;&lt;code&gt;Effort&lt;/code&gt;, &lt;em&gt;A-Z&lt;/em&gt; (&lt;em&gt;Ascending&lt;/em&gt;)&lt;/li&gt;
      &lt;/ol&gt;
      &lt;h4&gt;And many more...&lt;/h4&gt;
      &lt;p&gt;You can play about with the sorting across the columns in a few ways to generate the order you want to make use of, then just start at the top and work down. When you sort things, just figure out how you want them to be ordered, then sort the columns in the apprpriate ascending/descending way in reverse order.&lt;/p&gt;
      &lt;p&gt;It&#039;s simple and nothing new, but I am real pleased with the whole &quot;alphabetical precedence&quot; of it. I also like how I can easily plug things in to this format. Even tasks within a project can be prioritised this way (though I prefer my kanban boards still) as it scales down to the task level pretty well.&lt;/p&gt;
      &lt;p&gt;If you find yourself with a massive workload and you have no idea where to begin, there are many systems out there that&#039;ll help you figure out which order to tackle the work in. Alternatively, if you&#039;re feeling brave, give this one a whirl!&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2025-02-18</pubDate>
      <link>https://fyr.io/post/prioritising_many_projects</link>
      <guid isPermaLink="true">https://fyr.io/post/prioritising_many_projects</guid>
      <category>life</category>
      <category>management</category>
      <category>project</category>
      <category>kanban</category>
      <category>eisenhower matrix</category>
    </item>
     <item>
      <title>Website Carbon</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Website Carbon&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Thursday 13th of February 2025 at 22:10&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;Earlier today I saw a link to &lt;a href=&quot;https://websitecarbon.com&quot;&gt;websitecarbon.com&lt;/a&gt;. I can&#039;t find the toot that linked to this website, despite only finding it a few hours ago (sigh) so apologies to that person!&lt;/p&gt;
      &lt;p&gt;I &lt;a href=&quot;https://www.websitecarbon.com/website/fyr-io/&quot;&gt;chucked this very website&lt;/a&gt; through it and, happily, it reports:&lt;/p&gt;
      &lt;p&gt;&lt;q&gt;Hurrah! This web page achieves a carbon rating of A+ - This is cleaner than 100 % of all web pages globally&lt;/q&gt;&lt;/p&gt;
      &lt;p&gt;There are more stats on the page if you click through that put some perspective on that rating, as well as a description of how they come to that conclusion. Of course, they can&#039;t know what happens on the backend. For all they know I could be mining crypto on here. What is more likely is that my functional backend code is &lt;em&gt;terribly inefficient&lt;/em&gt;... (disclaimer: I don&#039;t mine crypto :D)&lt;/p&gt;
      &lt;p&gt;But it&#039;s nice knowing that, at least from their end, it appears as though I&#039;m doing everything efficiently! If you have your own website, have a go at getting it analyzed, how do you fare? Are there any ways you can improve things? Write about it and/or &lt;a href=&quot;/contact&quot;&gt;let me know&lt;/a&gt;. Every little bit of recurring efficiency you can eek out of a system is good for the Earth!&lt;/p&gt;
      &lt;p&gt;I have plans to self-host this on my own (low power) equipment in the future. Then I&#039;ll truly know my impact on the environment as it pertains to hosting this site, and can more effectively enhance things myself.&lt;/p&gt;
      &lt;p&gt;Soon™.&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2025-02-13</pubDate>
      <link>https://fyr.io/post/website_carbon</link>
      <guid isPermaLink="true">https://fyr.io/post/website_carbon</guid>
      <category>website</category>
      <category>power</category>
      <category>energy</category>
      <category>efficiency</category>
      <category>carbon</category>
      <category>environment</category>
    </item>
     <item>
      <title>Chickens</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Chickens&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Monday 10th of February 2025 at 15:02&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;We had to look after 10 three-day-old chicks over the weekend. Initially I wasn&#039;t too fussed one way or the other about this endeavour, but one look into their sleepy fluffy little eyes and I was smitten. It wasn&#039;t long before I had them all sleeping on me as I lounged on the sofa.&lt;/p&gt;
      &lt;p&gt;I&#039;ve become quite attached to the smallest of the flock, the last one to hatch, who has taken to hopping onto my hand and nuzzling into my neck. My wife has become attached to one of the first to hatch, too, who also hops into her hand right away.&lt;/p&gt;
      &lt;p&gt;We have liked the idea of looking after rescue chickens for a while, as pets, but with all the work that has been needed in the garden we&#039;ve not been able to provide a suitable home. That work, however, is now complete.&lt;/p&gt;
      &lt;p&gt;So I guess it&#039;s time for chickens?&lt;/p&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/chick.jpg&quot;&gt;
          &lt;source srcset=&quot;/images/chick.jpg&quot; /&gt;
          &lt;img src=&quot;/images/chick.jpg&quot; alt=&quot;A delicate little chick, staying cozy in my hand&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;p&gt;We&#039;ll only really be able to have two or three, and there&#039;s a lot of work to do before we have somewhere for them to live outside. We have borrowed a home for inside already, and we&#039;ll have a couple of months to sort outside accomodations and security out, but we&#039;ll get there.&lt;/p&gt;
      &lt;p&gt;B&#039;kawk!&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2025-02-10</pubDate>
      <link>https://fyr.io/post/chickens</link>
      <guid isPermaLink="true">https://fyr.io/post/chickens</guid>
      <category>life</category>
      <category>life</category>
      <category>chickens</category>
      <category>chicks</category>
    </item>
     <item>
      <title>Passion Projects</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Passion Projects&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Sunday 9th of February 2025 at 22:10&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;I was lucky enough to watch the &lt;a href=&quot;https://en.wikipedia.org/wiki/Hamilton_(musical)&quot;&gt;Hamilton&lt;/a&gt; musical in the theatre yesterday. It is, as you may have heard, incredible. I am not a patron of the theatre at all, I claim no expertise or knowledge of the goings-on, the technicalities, or the history. So my opinion (&quot;&lt;em&gt;that was an amazing experience, it blew me away in every aspect and was one of my favourite experiences of all time&lt;/em&gt;&quot;) does not hold much value for others. Besides, many individuals have written about the show with words and passion and knowledge that I couldn&#039;t bring to the table, so I will leave my opinion in the previous sentence and simply recommend that you watch it if you haven&#039;t and get the chance.&lt;/p&gt;
      &lt;p&gt;After the show, my wife and I had a meal somewhere fancy and discussed it, as you do. During this, my wife reminded me of the &lt;a href=&quot;https://en.wikipedia.org/wiki/It%27s_Always_Sunny_in_Philadelphia#The_Always_Sunny_Podcast&quot;&gt;Always Sunny podcast&lt;/a&gt;, in particular &lt;a href=&quot;https://www.youtube.com/watch?v=qAWsEbWm0ds&quot;&gt;the episode&lt;/a&gt; where &lt;a href=&quot;https://en.wikipedia.org/wiki/Lin-Manuel_Miranda&quot;&gt;Lin-Manuel Miranda&lt;/a&gt; (who wrote Hamilton and played the lead role in the USA) is a guest. We agreed we&#039;d listen to it, and so we did. We took a slow train back home and spent the journey with the podcast playing over our earphones.&lt;/p&gt;
      &lt;p&gt;In this episode Lin-Manuel makes a particular comment about inspiration:&lt;/p&gt;
      &lt;p&gt;&lt;q&gt;The thing is finding the idea that pursues you.&lt;/q&gt;&lt;/p&gt; 
      &lt;p&gt;I loved this - I need to find the thing that pursues me, the idea that chases my every moment. I have a bunch of ideas, some of which I think could be pretty neat if I see them through. But none of them hound me for attention, none of them refuse to leave me, consume my waking hours and prevent sleep. How do you find this? I have no idea, but I suspect it involves &lt;em&gt;making time and trying stuff&lt;/em&gt;.&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2025-02-09</pubDate>
      <link>https://fyr.io/post/passion_projects</link>
      <guid isPermaLink="true">https://fyr.io/post/passion_projects</guid>
      <category>life</category>
      <category>passion</category>
      <category>inspiration</category>
      <category>motivation</category>
      <category>ideas</category>
    </item>
     <item>
      <title>The Afternoon Of Bedtime</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;The Afternoon Of Bedtime&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Tuesday 22nd of October 2024 at 21:12&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;Kids say the funniest things, and some really interesting words and phrases fall out of them sometimes. Their developing language skills means that they may not have the vocabulary to communicate an idea or situation, so they must find an alternative way to convey it.&lt;/p&gt;
      &lt;hr /&gt;
      &lt;p&gt;&lt;strong&gt;Us&lt;/strong&gt;: Did you sleep okay?&lt;/p&gt;
      &lt;p&gt;&lt;strong&gt;Kid&lt;/strong&gt;: Yeah but I woke up a few times.&lt;/p&gt;
      &lt;p&gt;&lt;strong&gt;Us&lt;/strong&gt;: What time did your clock say when you woke up?&lt;/p&gt;
      &lt;p&gt;&lt;strong&gt;Kid&lt;/strong&gt;: It was five hundred and something (&lt;em&gt;5am, digital clock reads 05:00, so 500&lt;/em&gt;)&lt;/p&gt;
      &lt;p&gt;&lt;strong&gt;Us&lt;/strong&gt;: Oh that&#039;s early!&lt;/p&gt;
      &lt;p&gt;&lt;strong&gt;Kid&lt;/strong&gt;: No it was five hundred so it was in the &lt;u&gt;afternoon of bedtime&lt;/u&gt;, not the &lt;u&gt;morning of bedtime&lt;/u&gt;.&lt;/p&gt;
      &lt;hr /&gt;
      &lt;p&gt;The afternoon of bedtime! I love this so much. The day has a morning, at the start, and an afternoon, which comes later. So... sleep must also have a morning and afternoon! We just can&#039;t correct him on this, we don&#039;t want to. Not yet. It&#039;s too cute!&lt;/p&gt;
      &lt;p&gt;&lt;em&gt;Morning of bedtime&lt;/em&gt; and &lt;em&gt;afternoon of bedtime&lt;/em&gt; now feature regularly in our vocabulary, along with &#039;&lt;em&gt;t&#039;kat&lt;/em&gt;&#039; and &#039;&lt;em&gt;pazzap&lt;/em&gt;&#039;.&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2024-10-22</pubDate>
      <link>https://fyr.io/post/the_afternoon_of_bedtime</link>
      <guid isPermaLink="true">https://fyr.io/post/the_afternoon_of_bedtime</guid>
      <category>life</category>
      <category>bedtime</category>
      <category>sayings</category>
      <category>phrases</category>
      <category>kids</category>
    </item>
     <item>
      <title>Theme: Paper</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Theme: Paper&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Monday 9th of September 2024 at 22:20&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;I&#039;ve been browsing the web looking for some cool or interesting blogs and web gardens (pro tip: &lt;a href=&quot;https://32bit.cafe/&quot;&gt;32-bit cafe&lt;/a&gt;) and have seen a very eclectic mix of site designs, from the retro to the chaotic and back across to the simple.&lt;/p&gt;
      &lt;p&gt;These simple ones have given me some inspiration for here, and from that inspiration comes the &lt;a href=&quot;/about/themes&quot;&gt;Paper theme&lt;/a&gt; - it&#039;s minimal, clean, tidy, and there&#039;s a night version too for us dark-mode fans!&lt;/p&gt;
      &lt;p&gt;That&#039;s about it. Check it out! I&#039;m tempted to make it the default theme...&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2024-09-09</pubDate>
      <link>https://fyr.io/post/theme:_paper</link>
      <guid isPermaLink="true">https://fyr.io/post/theme:_paper</guid>
      <category>website</category>
      <category>theme</category>
      <category>minimalism</category>
      <category>nightmode</category>
    </item>
     <item>
      <title>Indieweb Vs Indie Web</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Indieweb Vs Indie Web&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Wednesday 28th of August 2024 at 22:34&lt;/time&gt;&lt;/p&gt;
        &lt;p class=&quot;updated&quot;&gt;Last updated on &lt;time&gt;Monday 9th of September 2024 at 22:39&lt;/time&gt;&lt;/p&gt;      &lt;/header&gt;
      &lt;blockquote cite=&quot;https://www.wordnik.com/words/indie&quot;&gt;
        &lt;h3&gt;Indie:&lt;/h3&gt;
        &lt;p&gt;One, such as a studio or producer, that is unaffiliated with a larger or more commercial organization.&lt;/p&gt;
        &lt;p&gt;-&lt;cite&gt;The American Heritage® Dictionary of the English Language, 5th Edition&lt;/cite&gt;&lt;/p&gt;
      &lt;/blockquote&gt;
      &lt;p&gt;Many people have been discussing the IndieWeb with regards to the technical knowledge and skills that are (almost) required to get involved. I first read about this in a post by &lt;a href=&quot;https://social.lol/@starbreaker&quot;&gt;@starbreaker&lt;/a&gt; titled &quot;&lt;a href=&quot;https://starbreaker.org/blog/tech/has-indieweb-become-irrelevant/index.html&quot;&gt;Has the IndieWeb Become Irrelevant?&lt;/a&gt;&quot; which is itself a reflection on other posts and comments. It&#039;s a good post and has many valid points. In fact, I agree pretty much entirely with the underlying message, and I say that as someone sorta-involved in the community who is pondering adding IndieWeb integrations to this very website. The IndieWeb, as it stands, is a bit... perhaps elitist is the wrong word. It&#039;s a club for those that can, and although part of the IndieWeb&#039;s broader message is about eschewing the commercial web and owning your stuff, unless you know at least a &lt;em&gt;little&lt;/em&gt; bit about websites and how they work, you&#039;re gonna be relying on commercial organisations to get you going and keep you rolling in the IndieWeb.&lt;/p&gt;
      &lt;p&gt;And you know what? I think that&#039;s okay. And the IndieWeb community and organisers know it too.&lt;/p&gt;
      &lt;p&gt;The IndieWeb chat/discord highlights this, with several prominent rooms/channels being developer oriented, but their website says it best: &lt;q&gt;[...] a community of &lt;strong&gt;independent&lt;/strong&gt; and personal websites &lt;strong&gt;connected by open standards&lt;/strong&gt; [...]&lt;/q&gt;. Emphasis mine. But it&#039;s right there - &quot;Connected by open standards.&quot; To build an independent website that connects to other independent websites via open standards literally &lt;em&gt;requires&lt;/em&gt; programming knowledge. Sure, there are Wordpress plugins you can install and libraries you can import... You could argue, are sites that use wordpress, or plugins, or third party libraries, truly independent if they rely on these third party resources? The elitism is kinda the point. The IndieWeb is for developers, aspiring or experienced, to build something and connect with others.&lt;/p&gt;
      &lt;p&gt;&quot;IndieWeb&quot; however, has become the term to describe... well, the non-corporate or non-commercial web. This is sorta unfortunate in my opinion. There are other aspects to the non-commerical web that aren&#039;t IndieWeb™, this particular flavour of it just happens to have become one of the more widely known and consciously adopted words to describe this kind of thing.&lt;/p&gt;
      &lt;p&gt;There are other phrases, and in fact whilst doing a little research for this post I have come to find that there are &lt;em&gt;loads&lt;/em&gt; of other words and phrases that describe portions of the non-commercial web and in fact align with the &lt;em&gt;anti&lt;/em&gt;-commercial web. You&#039;ve got &lt;a href=&quot;https://www.jackcheng.com/the-slow-web/&quot;&gt;The Slow Web&lt;/a&gt; which decries the instant, live-happening-now, syncronous web where reactions are immediate and the doomscroll never ends, like! subscribe! swipe left! ...and instead thrives in a slower paced world where things can wait a while and be ingested by humans at a leisurely human-healthy pace, and &lt;a href=&quot;https://benhoyt.com/writings/the-small-web-is-beautiful/&quot;&gt;The Small Web&lt;/a&gt; &amp; &lt;a href=&quot;https://smolweb.org/index.html&quot;&gt;The Smol Web&lt;/a&gt;, where huge files and staggeringly complex and convoluted dependency chains are swapped out for standards-compliant, small, efficient and fast websites that do just enough and no more. Each of these examples encourage doing things your way, which isn&#039;t really possible on post-myspace social media. There are many more phrases, each dealing with more and more niche areas, some of which can be found on &lt;a href=&quot;https://diagram.website/&quot;&gt;diagram.website&lt;/a&gt; (which I think you should check out.)&lt;/p&gt;
      &lt;p&gt;It&#039;s unfortunate that the IndieWeb™ has that name, because the perfect phrase that instils the &quot;own your stuff, show your personality&quot; feel of the communities represented in these discussions is, in my opinion, &quot;the indie web&quot;. Hence the definition at the start of this article.&lt;/p&gt;
      &lt;p&gt;Perhaps &lt;a href=&quot;https://xkcd.com/927/&quot;&gt;some other name or descriptive phrase needs to be concocted&lt;/a&gt; or promoted more heavily so that the meaning of IndieWeb™ can be corrected in peoples minds. Something like &quot;the human web&quot; or &quot;people net&quot;, I don&#039;t know, I&#039;m not very good at naming things.&lt;/p&gt;
      &lt;p&gt;So the human web, the people net, the your-net. Whatever it is called, it doesn&#039;t matter. The important thing is that it is yours, if you want it. If you&#039;re tired of the conglomerate-net, disgusted by the commercialised web, sick of being the product, allergic to The Algorithm, then you can have something else. Something of your own.&lt;/p&gt;
      &lt;p&gt;You want to upload your artwork? Write fanfic? World build? Document your developing &lt;a href=&quot;https://en.wikipedia.org/wiki/Sistrum&quot;&gt;Sistrum&lt;/a&gt;-playing skills? Discuss your experiences slice-of-life style? Experiment with poetry?&lt;/p&gt;
      &lt;p&gt;Do it.&lt;/p&gt;
      &lt;p&gt;Use wordpress if you want. Use Blogger. Hell, use &lt;a href=&quot;https://en.wikipedia.org/wiki/Microsoft_FrontPage&quot;&gt;Frontpage 98&lt;/a&gt; if you want. Or learn some HTML And CSS and type it all up in notepad.exe. Or just HTML, &lt;a href=&quot;https://nocss.club/&quot;&gt;don&#039;t even bother with the CSS&lt;/a&gt;. Just make it yours.&lt;/p&gt;
      &lt;p&gt;Once you&#039;ve got something started, you can think about registering a domain name (but you don&#039;t have to) and hosting it somewhere you have more control over (again, you don&#039;t have to) - you don&#039;t even need to pay for any of this, depending on how you decide to turn your brain-energy into words on a screen, because there are a bunch of free hosts out there. You don&#039;t need IndieWeb integrations to be part of the indie web, but if you want them, they&#039;re there for you to use.&lt;/p&gt;
      &lt;p&gt;Join us. It&#039;s kinda fun.&lt;/p&gt;
      &lt;hr /&gt;
      &lt;p&gt;The only thing I will say - and I acknowledge that this does require some level of customisation and technical knowledge as the landscape of web publishing tools is nowhere near where it should be on this front - is to try and make it as accessible as you can. Not everyone navigates with their hands or consumes website content with their eyeballs. I still have work to do on this front myself.&lt;/p&gt;
    &lt;/article&gt;
    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Update: Starbreaker Reply&lt;/h2&gt;
        &lt;p&gt;Posted on 2024-09-09&lt;/p&gt;
      &lt;/header&gt;
      &lt;p&gt;&lt;a href=&quot;https://social.lol/@starbreaker&quot;&gt;@starbreaker&lt;/a&gt; updated &lt;a href=&quot;https://starbreaker.org/blog/tech/has-indieweb-become-irrelevant/index.html&quot;&gt;their post&lt;/a&gt; in response to this post, as well as some others who chimed in on the topic. You should go read it, it&#039;s good stuff and I&#039;m thankful that he took the time to do this.&lt;/p&gt;
      &lt;p&gt;I wanted to put a little update out here right away but... *points at life* - anyway, here it is. Really I only wanted to highlight one part:&lt;/p&gt;
      &lt;blockquote cite=&quot;https://starbreaker.org/blog/tech/has-indieweb-become-irrelevant/index.html&quot;&gt;
        &lt;p&gt;I don&#039;t particularly like the fact that we seem to need so many names for what I think ought to be the default. In my opinion, sites like this one, fyr.io, and even Neocities and omg.lol are the World Wide Web. Sites like Facebook, Amazon, YouTube, LinkedIn, and Twitter are the corporate Web. They&#039;re parasitic abberations, walled gardens gentrifying the internet, and an attempt by business people to turn the internet into cable TV with a comments section. We should not accept the premise that &lt;em&gt;they&lt;/em&gt; are what the web is or should be.&lt;/p&gt;
        &lt;p&gt;-&lt;cite&gt;&lt;a href=&quot;https://social.lol/@starbreaker&quot;&gt;@starbreaker&lt;/a&gt; of &lt;a href=&quot;https://starbreaker.org/&quot;&gt;starbreaker.org&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;
      &lt;/blockquote&gt;
      &lt;p&gt;Yet again, Starbreaker brings forth into the universe the words that encapsulate and clarify a feeling I&#039;ve had for &lt;em&gt;years&lt;/em&gt; and distills it into an opinion that I have fully taken on board and, indeed, share:&lt;/p&gt;
      &lt;p&gt;We shouldn&#039;t have to call &#039;The Indie Web&#039; the indie web, or the small web, or any subset of the web. It&#039;s just the web. The World Wide Web. Within this WWW we&#039;ve got everything, all the opinions and diversity and markets and fundraisers, charities, poetry, artwork. And, yes, a small subset of which is the corporate web (though it is small, it, by its addictive and malicious behaviour, has a very large userbase-slash-product (because you are the product they&#039;re selling, remember!)). And in and around there you&#039;ve also got a sea of bots and LLM slop. But there are still whole continents of &lt;em&gt;human&lt;/em&gt; out there, and the only sure-fire way to stem the tide of &lt;em&gt;shit&lt;/em&gt; is to be your own island of you.&lt;/p&gt;
      &lt;p&gt;So I say again, if you want to keep the WWW healthy, you must tend to it. &lt;a href=&quot;https://discourse.32bit.cafe/t/resources-list-for-the-personal-web/49&quot;&gt;Make a website&lt;/a&gt;. Put your piece out there. Even if, like me, you feel like you&#039;ve got nothing of value to say, you have.&lt;/p&gt;
      &lt;p&gt;...but maybe don&#039;t use Frontpage 98. It&#039;s terrible.&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2024-08-28</pubDate>
      <link>https://fyr.io/post/indieweb_vs_indie_web</link>
      <guid isPermaLink="true">https://fyr.io/post/indieweb_vs_indie_web</guid>
      <category>indieweb</category>
      <category>indie</category>
      <category>websites</category>
      <category>elitist</category>
      <category>blog</category>
    </item>
     <item>
      <title>The Joy Of The Internet Slow Lane</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;The Joy Of The Internet Slow Lane&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Wednesday 21st of August 2024 at 15:58&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;As I write this (three days prior to the post date) I&#039;m enjoying a quiet evening as the family sleeps, and I have barely any connection to the internet. We&#039;re talking almost zero signal strength 2G &lt;a href=&quot;https://en.wikipedia.org/wiki/2G#2.75G_(EDGE)&quot;&gt;Edge&lt;/a&gt;, with the rare and elusive 3G &lt;a href=&quot;https://en.wikipedia.org/wiki/High_Speed_Packet_Access&quot;&gt;HSPA&lt;/a&gt;, at best, on a phone. And it&#039;s kinda great?&lt;/p&gt;
      &lt;p&gt;We&#039;ve taken a last minute short break away for the weekend and whilst there is WiFi available, I neither trust it nor do I want to pay an obscene amount for it. Besides, I haven&#039;t got any technology aside from the phone and had no plans to use any anyway.&lt;/p&gt;
      &lt;p&gt;I have found myself being very intentional about the websites I check and how often I check them whilst here. I&#039;m fairly minimal on that front anyway with no social media (discord and &lt;a href=&quot;/post/welcome_to_the_fediverse&quot;&gt;mastodon&lt;/a&gt; aside, and even then they&#039;re new accounts with only a few people/servers/tags followed) to doomscroll nor any news or current event type sites on my regular reads list.&lt;/p&gt;
      &lt;p&gt;All I have done is taken some time to catch up on some indie/small/smol-web sites and have been reading the backlog of posts from my regular reads. When it comes to checking something on the &quot;regular&quot; or &quot;commercial&quot; web, I&#039;m finding it very difficult due to the huge latency I&#039;m experiencing here. More often than not sites, when they load at all, which isn&#039;t a guarantee, don&#039;t work in a usable way. This is often because they don&#039;t function at a basic level without copius amounts of JavaScript to render the page. The megabytes of libraries and dependencies have failed to download, or have timed out, or have errored expecting other resources to have loaded already when they haven&#039;t. Poor design, come on people this is web-building-101!&lt;/p&gt;
      &lt;p&gt;This is disappointing but not new. I often browse with JavaScript disabled and very often need to go through the effort of enabling it bit by bit. It&#039;s tiresome. This is slightly different, though. Because of the high latency I&#039;m finding myself trying to navigate somewhere (for example, looking up a movie on IMDb or something) as a side quest to the main quest that is whatever I happen to be doing at the time. What I mean by that is that I type my search query into the URL bar, put my phone down and carry on with what I&#039;m doing. When I get a chance I&#039;ll pick the phone up and see if it worked. If not, I try again (if I can still be bothered and it&#039;s actually still worthwhile) and if it has worked then I&#039;ll tap the relevant search result. Down goes the phone, back I go to whatever I was doing. I&#039;ll check again in a few minutes probably.&lt;/p&gt;
      &lt;p&gt;If this click-and-wait seems familiar then you&#039;re likely an older reader that hails from the dialup days. I remember well the frustrations of those days, but have a more recent experience of this too.&lt;/p&gt;
      &lt;p&gt;Before I moved into the current home I had FTTC, 80/20 internet. It seems about average now for a residential connection but at the time felt really fast. When we moved into our current place, the best internet we could get was a fairly high latency 2/0.2 (2mbps download, 0.2mbps upload) ADSL connection. We were literally on the very cusp of a functioning connection. We could just about stream Netflix but it wasn&#039;t great. YouTube was often okay on 360p but sometimes that wasn&#039;t thin enough either. And it would all come crashing down if one of us loaded a web page whilst a video was being streamed.&lt;/p&gt;
      &lt;p&gt;I distinctly remember, during the COVID lockdown, working from home and being disconnected from video conferencing software (like Zoom or whatever) when the family put Netflix or Youtube on. Audio-only (no video) on the conference call was generally okay, but any video feeds were choppy at best. In fact I never transmitted video as it would ramp up the latency so bad I couldn&#039;t do anything else. A great excuse for someone who hates seeing themselves on a screen :)&lt;/p&gt;
      &lt;p&gt;We eventually figured out some quick and easy wins to bring our upload speed up slightly. I remember our download hitting the mighty 3.5mbps one time. That was great.&lt;/p&gt;
      &lt;p&gt;A year or so ago we got fibre cables installed and now those problems and frustrations are a thing of the past!&lt;/p&gt;
      &lt;p&gt;I gotta say, I don&#039;t miss the latency or lack of bandwidth. Working in the IT field with those limitations affecting work performance was frustrating. But I do miss the resource management mini game we&#039;d play every time something internet-y was needed. I miss not having instant gratification or answers to queries.&lt;/p&gt;
      &lt;p&gt;I kinda like the &quot;look something up&quot; thing not being the main thing I am doing, both now as I sit here on this low-tech holiday and back at home when we had poor internet connectivity. I am now only looking at my screen when I needed to, instead of staring at it for long periods of time, with the content streaming into my eyeballs and glueing my attention to that little square of glass. It feels... better.&lt;/p&gt;
      &lt;p&gt;I know this is a behavioural thing, I want to try to learn this as a habit. No doubt once I get back home I&#039;ll immediately go back to &#039;staring at the screen&#039; being the only thing I&#039;m doing, but I&#039;m going to try and be more aware of how long I look at my phone. It&#039;s a tool, not a distraction from life.&lt;/p&gt;
      &lt;p&gt;Maybe I should artificially increase latency on my devices until it&#039;s normalised behaviour...&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2024-08-21</pubDate>
      <link>https://fyr.io/post/the_joy_of_the_internet_slow_lane</link>
      <guid isPermaLink="true">https://fyr.io/post/the_joy_of_the_internet_slow_lane</guid>
      <category>life</category>
      <category>holiday</category>
      <category>internet</category>
      <category>latency</category>
      <category>calmness</category>
    </item>
     <item>
      <title>Post Reply: Css Style</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Post Reply: Css Style&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Thursday 15th of August 2024 at 22:15&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;&lt;a href=&quot;https://flamedfury.com/posts/whats-your-style/&quot;&gt;FlamedFury.com&lt;/a&gt; asks: What do you name your CSS stylesheet in small web projects? This post is a reply to that post.&lt;/p&gt;
      &lt;hr /&gt;
      &lt;p&gt;Historically, I&#039;ve always used &lt;code&gt;style.css&lt;/code&gt;, kept inside the &lt;code&gt;/css&lt;/code&gt; directory (as you can see &lt;a href=&quot;/css/style.css&quot;&gt;on this site&lt;/a&gt; too!) but I&#039;ve been wondering more recently whether this is a good idea?&lt;/p&gt;
      &lt;p&gt;I consider this site a small, but growing, project. I added &lt;a href=&quot;/post/themes&quot;&gt;theme support&lt;/a&gt; a while ago and made the decision to keep the themes in the same, single stylesheet instead of splitting out each theme into different files. This, in my mind, makes for less loading of resources. At least overhead-wise anyway. However, I&#039;m only two CSS themes in and already I&#039;m reconsidering.&lt;/p&gt;
      &lt;p&gt;I can imagine adding ten, fifteen themes here, and sure, switching between them would be super fast via a Javascript-powered class change on the &lt;code&gt;&amp;lt;body&amp;gt;&lt;/code&gt; as the client doesn&#039;t need to transfer any data; the relevent stuff is already in the cache&#039;d CSS file... but a whole bunch of people won&#039;t bother to switch themes and that is a decent percentage of transferred data wasted. Plus, having everything crammed into one file makes editing things somewhat unwieldy on my end.&lt;/p&gt;
      &lt;p&gt;So I&#039;m considering breaking things up, perhaps a core structure file, followed by theme files which load in and out depending on the selected theme, each, of course, named after the theme they represent.&lt;/p&gt;
      &lt;p&gt;I&#039;ll probably still name that core file &lt;code&gt;style.css&lt;/code&gt; though :D&lt;/p&gt;
      &lt;p&gt;Until then, I guess my &lt;code&gt;style.css&lt;/code&gt; should &lt;em&gt;technically&lt;/em&gt; be called &lt;code&gt;styles.css&lt;/code&gt; as it has multiple styles in it... hrm.&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2024-08-15</pubDate>
      <link>https://fyr.io/post/post_reply:_css_style</link>
      <guid isPermaLink="true">https://fyr.io/post/post_reply:_css_style</guid>
      <category>indieweb</category>
      <category>CSS</category>
      <category>conventions</category>
      <category>naming</category>
    </item>
     <item>
      <title>Welcome To The Fediverse</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Welcome To The Fediverse&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Wednesday 14th of August 2024 at 00:00&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;I&#039;ve had an account on &lt;a href=&quot;https://en.wikipedia.org/wiki/Mastodon_(social_network)&quot;&gt;Mastodon&lt;/a&gt;, as well as some other &lt;a href=&quot;https://en.wikipedia.org/wiki/Fediverse&quot;&gt;Fediverse&lt;/a&gt; services, for a few years now. I quite like it. It reminds me of the early Twitter days, pre &lt;a href=&quot;https://github.com/twitter/the-algorithm&quot;&gt;algorithm&lt;/a&gt;, when it was mostly technical-aligned folk chatting, networking (for fun) and talking tech (again, for fun).&lt;/p&gt;
      &lt;p&gt;I&#039;m sure this will one day change and the diversity of individuals on there, which is already high, will continue to grow exponentially. I hope so, anyway. I also hope that the idea behind the fediverse survives and doesn&#039;t get &lt;a href=&quot;https://en.wikipedia.org/wiki/Embrace,_extend,_and_extinguish&quot;&gt;extinguished&lt;/a&gt;, but I fear it may. Such is the evolution of an idea; it grows, cracks form, weeds take root, and then it starts falling apart. Generally this has something to do with the value of a share and priorities shifting and yadda yadda. You know how it all works. See the state of Reddit for a look at a deep-in-progress enshitification happening now.&lt;/p&gt;
      &lt;p&gt;For now, however, it&#039;s a generally nice place (and it&#039;s easy to remove the not-nice) full of interesting, vibrant folk with cool ideas and lots of hope for the Fediverse and, dare I say, the future.&lt;/p&gt;
      &lt;p&gt;In the interest of embracing the &lt;a href=&quot;https://indiewebify.me/&quot;&gt;indieweb&lt;/a&gt; further, I have created &lt;em&gt;another&lt;/em&gt; account dedicated solely to this site and my identity here. Don&#039;t expect anything great. Or anything at all. I&#039;ve never been good at social &lt;em&gt;anything&lt;/em&gt;, but it&#039;s a great way to connect with people and ideas, so I&#039;m putting this little slice of me out there.&lt;/p&gt;
      &lt;p&gt;You can find me here: &lt;a href=&quot;https://indieweb.social/@fyr&quot;&gt;@fyr@indieweb.social&lt;/a&gt;.&lt;/p&gt;
      &lt;p&gt;Activity will be light, generally just cool stuff I find or learn about. Eventually I&#039;ll build support for &lt;a href=&quot;http://webmention.org/&quot;&gt;WebMentions&lt;/a&gt; and other cool indieweb stuff and start syndicating things I post here out into the series of tubes we call the internet. But not the corporate internet. The human internet.&lt;/p&gt;
      &lt;p&gt;See ya on there.&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2024-08-14</pubDate>
      <link>https://fyr.io/post/welcome_to_the_fediverse</link>
      <guid isPermaLink="true">https://fyr.io/post/welcome_to_the_fediverse</guid>
      <category>tech</category>
      <category>social media</category>
      <category>fediverse</category>
      <category>mastodon</category>
    </item>
     <item>
      <title>Reader Feedback On Readability And Css Hyphens</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Reader Feedback On Readability And Css Hyphens&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Sunday 4th of August 2024 at 00:00&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;Back in May, a reader(&lt;em&gt;! There&#039;s at least one!&lt;/em&gt;) emailed me about an issue they had noticed when reading the content on this website.&lt;/p&gt;
      &lt;p&gt;&lt;em&gt;Thank you, again, for letting me know about this issue, dear Reader. I appreciate it a lot!!&lt;/em&gt;&lt;/p&gt;
      &lt;p&gt;Essentially, I hadn&#039;t specified a &lt;code&gt;max-width&lt;/code&gt; on the site, so those of you lucky folk with a large, high resolution monitor would see monitor-wide paragraphs stretching from the left-most edge aaaalllll the way to the right, which ain&#039;t at all easy to read.&lt;/p&gt;
      &lt;p&gt;I hadn&#039;t noticed this myself because I use an old 1920x1080 monitor from... let me look this up... oh. Wow! Okay, &lt;a href=&quot;https://www.samsung.com/us/business/support/owners/product/p2450-series-p2450h/&quot;&gt;late 2009&lt;/a&gt;! ...I really need an upgrade.&lt;/p&gt;
      &lt;p&gt;But, I immediately understood the issue and excitedly replied, thanking them for the valuable input. I slapped together some quick CSS to limit the width of the content but it wasn&#039;t pretty.&lt;/p&gt;
      &lt;p&gt;In fact it was broken. Again, my crappy old 2009 monitor tricked me into benightedness. I hadn&#039;t realised that, whilst the site looked fine enough on my monitor and on smaller screens, on wider screens, everything under the menu was stuck to the almost-but-not-quite-all-the-way-left. Oops.&lt;/p&gt;
      &lt;p&gt;Yes, it has taken over two months to get there, but I have finally fixed it. Properly. And whilst I&#039;ve gone a bit wider than their suggested max-width value, I am hopeful that they, and you, are now more comfortable when reading stuff on here.&lt;/p&gt;
      &lt;p&gt;I think. I mean, short of zooming out I can&#039;t test it as I haven&#039;t got a monitor younger than 15 years old, so &lt;a href=&quot;/about&quot;&gt;let me know&lt;/a&gt; if it hasn&#039;t worked I guess!&lt;/p&gt;
      &lt;hr /&gt;
      &lt;p&gt;Oh, I&#039;ve also taken the opportunity to make a couple other CSS changes, one of which is minor (fixing some code block stuff) but the other I wanted to mention and perhaps, if another reader finds themselves here with the time to share their opinion, let me know what they think.&lt;/p&gt;
      &lt;p&gt;Since &lt;a href=&quot;/post/a_new_website_for_an_old_web&quot;&gt;I (re)built this site&lt;/a&gt; I&#039;ve used &lt;code&gt;text-align: justify;&lt;/code&gt; for all the paragraphs. There&#039;s a demo &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/text-align#try_it&quot;&gt;here on the MSDN website&lt;/a&gt; that nicely demonstrates what it does, but for those of you who don&#039;t want to click through, it essentially forces the left side of a line of text to line up with the left-most side of the container, fit as many words in as it can (by growing or shrinking, to a limit, the spaces between the words) and then ensure the end of the right-most word is right up against the right side of the container.&lt;/p&gt;
      &lt;p&gt;This is generally fine (and it&#039;s what you see in &lt;a href=&quot;https://upload.wikimedia.org/wikipedia/commons/7/75/NYTimes-Page1-11-11-1918.jpg&quot;&gt;newspapers&lt;/a&gt;) however every once in a while you&#039;ll notice a line of text that has very few words in it and huuuge spaces between the words that &lt;em&gt;are&lt;/em&gt; there. This becomes a way more common and prominent occurence on smaller screens.&lt;/p&gt;
      &lt;p&gt;I recently learned of a fix for this, which is to use the relatively new &lt;code&gt;hyphens&lt;/code&gt; &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/hyphens&quot;&gt;CSS property&lt;/a&gt;, with the value &lt;code&gt;auto&lt;/code&gt;. This tells the browser to fit in a bunch of words to a line, the same way as before, but to fit that too-long word at the end, break it up at a suitable place and stick a hyphen in there, drop to the next line, then continue that word.&lt;/p&gt;
      &lt;p&gt;The upside, for me, is that it allows me to keep justified text but without it looking ugly in places. However the obvious downside is a whole load of hyphens at the end of a line, and more so on smaller screens like phones.&lt;/p&gt;
      &lt;p&gt;Despite preferring this to plain-ol&#039; justified text, I&#039;m not entirely sold on it as yet. What do you think? Does it work? Is it hard to read? Should I not justify my text? &lt;a href=&quot;/about&quot;&gt;Let me know&lt;/a&gt;.&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2024-08-04</pubDate>
      <link>https://fyr.io/post/reader_feedback_on_readability_and_css_hyphens</link>
      <guid isPermaLink="true">https://fyr.io/post/reader_feedback_on_readability_and_css_hyphens</guid>
      <category>indieweb</category>
      <category>css</category>
      <category>readability</category>
      <category>width</category>
    </item>
     <item>
      <title>Tomatoes And Anthropomorphising Buildings</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Tomatoes And Anthropomorphising Buildings&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Saturday 3rd of August 2024 at 00:00&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;We&#039;ve needed to replace our cess pool - a buried and sealed container for our sewage - for years. This has been a source of contention and stress for various reasons, but I am happy and relieved to be able to finally say: &lt;em&gt;it is done&lt;/em&gt;.&lt;/em&gt;&lt;/p&gt;
      &lt;p&gt;What this has allowed us to do is concentrate somewhat on making the garden less &lt;em&gt;exploded-bomb-dead-plants&lt;/em&gt; and more &lt;em&gt;things-are-alive-garden&lt;/em&gt;. We would use it as a bit of a dumping ground and not care for its appearance, due to the very destructive work we knew would happen at some point in the future. However! That has now happened, and whilst we have very little grass left alive by the diggers, dump trucks and other large vehicles (we eagerly await the grass seed to grow) we have finally been able to commit some time and energy into the garden.&lt;/p&gt;
      &lt;p&gt;The Royal We, that is, because in reality it&#039;s been about 77.41% my wife and 22% the kid. I have dug up some very survival-oriented weeds, but that&#039;s about it.&lt;/p&gt;
      &lt;p&gt;We now have an almost-free-of-trash garden! Including neater edges, an extra metre of space along a fence thanks to my valiant weed-removal efforts, and a little pond to attract some water-based nature! We still have a long way to go, but we noticed already that it has changed from a somewhat disappointing, disgusting and disused area to one that is relatively clean and, most importantly, embodies &lt;em&gt;hope&lt;/em&gt; of what it can one day become.&lt;/p&gt;
      &lt;p&gt;Due to the ever-forward-looking spirit of hope for the future combined with the knowledge that these big groundworks should be finished by summer, in the spring we (royal, of course) planted some fruit and vegetables. It&#039;s something we attempt most years. Perhaps, historically, the plants pick up on our dejected nature when in the garden, or maybe we just subconsciously put less effort in, because in previous years we haven&#039;t had much luck at all. This year, however, is different.&lt;/p&gt;
      &lt;p&gt;We have lettuce, cucumbers, strawberries, sugar snap peas, peppers, potatos, carrots (though not many) and tomatoes. And oh my, the tomatoes. These tomato plants, of which there are about a dozen, have all far outgrown the greenhouse within which they reside. They&#039;re so big that we couldn&#039;t get them out of the door without breaking them, so there they stay. Whilst only a single one of the fruits has riped enough to eat, we have... I&#039;m going to conservatively say &lt;em&gt;hundreds&lt;/em&gt; of tomatoes growing. About 10 or so are not-green, and I can&#039;t wait to eat them. As is tradition, that first ripe tomato went to the kid, who has been very helpful indeed with the planting, watering, and general caretaking.&lt;/p&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/tomato-2024.jpg&quot;&gt;
          &lt;source srcset=&quot;/images/tomato-2024.jpg&quot; /&gt;
          &lt;img src=&quot;/images/tomato-2024.jpg&quot; alt=&quot;Some of the many, many tomatoes growing in our greenhouse. This bunch is mostly green, but some are just turning orange and red.&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;p&gt;Whilst we were clearing the garden after the week-long installation of the new water treatment plant, my wife had a thought which has stuck with me since she voiced it.&lt;/p&gt;
      &lt;p&gt;As we were cleaning the windows and &lt;a href=&quot;https://truenorthgutters.ca/soffit-and-fascia/&quot;&gt;soffit&lt;/a&gt; of dirt, dust and half a decade of accumulated detritus she raised the point that we had sort of neglected the outward appearance of the house over the last few years. With the destructive work we knew we needed, this is understandable, but now that the work is done, the home deserves some love. She described the home as being like an old being who needed some looking after, who needed some help keeping tidy. She anthropomorphised the house. And it immediately changed my perspective of what I was doing. I didn&#039;t &lt;em&gt;really&lt;/em&gt; want to clean the soffit, and then... I did. So I cleaned them. All of them. And we&#039;ve been out there every day feasible (insert general grumbling about climate change and UK weather here) doing &lt;em&gt;things&lt;/em&gt;. Digging, removing, cleaning. Fixing. Polishing. Making the house respected, after it being neglected for decades by the previous owner and sort-of-neglected-outside by us. I see a future, not too distant, where we&#039;re actually proud of it.&lt;/p&gt;
      &lt;p&gt;So now, whenever I think about the house, it&#039;s from the perspective of taking care of a being that, by the nature of it being a &lt;em&gt;building&lt;/em&gt; without intelligence, limbs, nor opposable thumbs, cannot look after itself. This is just my way of tricking myself into turning our home from a building site we live in into something to be proud of, and I&#039;m okay with that.&lt;/p&gt;
      &lt;p&gt;It&#039;s gonna take a while. We&#039;ll get there. And we&#039;ll eat &lt;em&gt;so many damn tomatoes&lt;/em&gt; on the way.&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2024-08-03</pubDate>
      <link>https://fyr.io/post/tomatoes_and_anthropomorphising_buildings</link>
      <guid isPermaLink="true">https://fyr.io/post/tomatoes_and_anthropomorphising_buildings</guid>
      <category>life</category>
      <category>food</category>
      <category>growing</category>
      <category>garden</category>
      <category>poop</category>
    </item>
     <item>
      <title>Windows93 Net</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Windows93 Net&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Friday 26th of July 2024 at 00:00&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;I just saw the &lt;a href=&quot;https://www.windows93.net/&quot;&gt;windows93.net&lt;/a&gt; website on the &lt;a href=&quot;https://jordaneldredge.com/notes/windows93/&quot;&gt;Jordan Eldredge&lt;/a&gt; site - It looks like it&#039;s been around since 2019 but this is the first time I&#039;ve seen it. It&#039;s a fun site, check it out! There&#039;s loads of functional (and in some cases, intentionally dysfunctional) features and hidden surprises.&lt;/p&gt;
      &lt;p&gt;I love little passion projects like this. Things done for fun. This is what the web needs to give it some humanity.&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2024-07-26</pubDate>
      <link>https://fyr.io/post/windows93_net</link>
      <guid isPermaLink="true">https://fyr.io/post/windows93_net</guid>
      <category>tech</category>
      <category>OS</category>
      <category>browser</category>
      <category>windows93</category>
    </item>
     <item>
      <title>The Month Of Illness</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;The Month Of Illness&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Thursday 25th of July 2024 at 00:00&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;Hey, been a while, but what a month.&lt;/p&gt;
      &lt;p&gt;I&#039;ve been unable to commit time to this site over the last four/five weeks and my list of things I want to add and write is only growing; On and off illness including a throat that was so sore it hurt to breathe, the installation of a water treatment plant, my first visit to a theatre to see a stage production, and the chaos of work.&lt;/p&gt;
      &lt;p&gt;Luckily we avoided the Crowdstrike escapade. If we had been hit by a similar outage at work I&#039;m not sure we would have done much recovery at all by now as I and the family have been suffering with a chain of illnesses that have been almost completely debilitating. Somehow we managed to be bed bound on different days so parenting could continue, though it was a struggle. And it wasn&#039;t even anything exotic that took us out - we&#039;re talking cold, flu and covid.&lt;/p&gt;
      &lt;p&gt;Let&#039;s hope the summer break limits the bugs and illnesses that get transmitted and end up knocking us down. If we&#039;re luckily our immune systems will somewhat recover by September. In the meantime, I need to update &lt;a href=&quot;/now&quot;&gt;/now&lt;/a&gt; and &lt;a href=&quot;/ideas&quot;&gt;/ideas&lt;/a&gt;.&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2024-07-25</pubDate>
      <link>https://fyr.io/post/the_month_of_illness</link>
      <guid isPermaLink="true">https://fyr.io/post/the_month_of_illness</guid>
      <category>life</category>
      <category>illness</category>
      <category>productivity</category>
      <category>crowdstrike</category>
    </item>
     <item>
      <title>Css Naked Day</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Css Naked Day&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Friday 14th of June 2024 at 00:00&lt;/time&gt;&lt;/p&gt;
        &lt;p class=&quot;updated&quot;&gt;Last updated on &lt;time&gt;Thursday 9th of April 2026 at 23:14&lt;/time&gt;&lt;/p&gt;      &lt;/header&gt;
      &lt;p&gt;&lt;strong&gt;2026&lt;/strong&gt; update: Yep, we&#039;re here for 2026 too! One year since building this automation and it&#039;s kicked off itself nicely. Perfect!&lt;/p&gt;
      &lt;p&gt;There exists a day for everything, but this is one I can get behind: &lt;a href=&quot;https://css-naked-day.github.io/&quot;&gt;CSS Naked day&lt;/a&gt;. It celebrates and promotes web standards, specifically that a site should work with just the HTML. It falls on the 9th April. I heard about it this year on that very day as a few websites I check had implemented the idea. This website hadn&#039;t been built yet, it was in its very early stages, and I didn&#039;t get an opportunity to add it to the old wordpress site in time. I did however add it to the &lt;a href=&quot;/ideas&quot;&gt;/ideas&lt;/a&gt; page.&lt;/p&gt;
      &lt;p&gt;And I can now tick it off as completed on that page, as I have now added it! I&#039;m not late for 2024, I&#039;m early for 2025!&lt;/p&gt;
      &lt;p&gt;On (and around, because timezones exist) the 9th of April, this site &lt;em&gt;will not have any CSS&lt;/em&gt; (and I already don&#039;t use any JavaScript). As it stands right now you won&#039;t be able to turn it on during that window of time, but I&#039;ll probably add that feature. Probably.&lt;/p&gt;
      &lt;p&gt;The reason for doing this is clearly defined on the official site linked above, but to reiterate, it&#039;s to promote (and showcase) web standards. Ideally, all sites should be as accessible as possible and this starts with having your site be fully functional with just the HTML. How your browser or screen reader renders it should be pretty much consistent within the family of technology you are using, but if you start to add Javascript gunk or do funky reorganising of structure via CSS, some of your visitors are gonna have a bad time.&lt;/p&gt;
      &lt;p&gt;Because this feature is being added &lt;s&gt;incredibly late&lt;/s&gt; astonishingly early, I have also made it a theme you can use whenever you wish. So, if you don&#039;t want to wait until the 9th of April, or if you just wanna check that I&#039;m doing HTML correctly, head over to the &lt;a href=&quot;/about/themes&quot;&gt;theme page&lt;/a&gt; and enable the CSS Naked Day theme.&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2024-06-14</pubDate>
      <link>https://fyr.io/post/css_naked_day</link>
      <guid isPermaLink="true">https://fyr.io/post/css_naked_day</guid>
      <category>website</category>
      <category>css</category>
      <category>accessibility</category>
      <category>web standards</category>
    </item>
     <item>
      <title>Then Pages</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Then Pages&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Tuesday 4th of June 2024 at 00:00&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;I have been making use of the &lt;a href=&quot;/now&quot;&gt;/now&lt;/a&gt; page, which is honestly something I thought I would end up dropping. I may only update it a few times a month but I&#039;ve been fairly consistent with it.&lt;/p&gt;
      &lt;p&gt;Ever since reading about the idea on a few small web sites (and in particular browsing a bunch of them on &lt;a href=&quot;https://nownownow.com/&quot;&gt;nownownow.com&lt;/a&gt;) I wanted to have one, and I am glad it&#039;s turning out alright. However I quickly came to the realisation that I didn&#039;t want to delete anything...&lt;/p&gt;
      &lt;p&gt;So I didn&#039;t. I archived the file and paired down the original at the start of the month because I wanted a way to go back in time, to see what I was doing &lt;em&gt;back then&lt;/em&gt;.&lt;/p&gt;
      &lt;p&gt;Hence, &lt;a href=&quot;/then&quot;&gt;/then&lt;/a&gt;!&lt;/p&gt;
      &lt;p&gt;The /then page is as simple as that. It&#039;s just a monthly archive of my /now page. I&#039;ll append to the &quot;live&quot; /now page until the end of the month, at which point on the next update I&#039;ll archive it to &lt;a href=&quot;/then&quot;&gt;/then&lt;/a&gt;, strip back all the non-continuous stuff (like reading a massive web serial for years on end) and resume appending the live /now page. Another thing checked off the &lt;a href=&quot;/ideas&quot;&gt;/ideas&lt;/a&gt; page!&lt;/p&gt;
      &lt;p&gt;Lovely. Hey, if you haven&#039;t got a /now page, set one up. Then (or if you have one already) why not set up your own /then page to archive them too?&lt;/p&gt;
      &lt;p&gt;You know you want to.&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2024-06-04</pubDate>
      <link>https://fyr.io/post/then_pages</link>
      <guid isPermaLink="true">https://fyr.io/post/then_pages</guid>
      <category>indieweb</category>
      <category>now</category>
      <category>then</category>
      <category>website</category>
    </item>
     <item>
      <title>Themes</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Themes&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Tuesday 21st of May 2024 at 00:00&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;I &lt;a href=&quot;/post/Aurora&quot;&gt;saw the aurora&lt;/a&gt; a little bit ago and when I &lt;a href=&quot;/post/aurora_redux&quot;&gt;posted the more colourful pictures&lt;/a&gt; on here I thought at the time that the colours would make a cool theme.&lt;/p&gt;
      &lt;p&gt;Using that as inspiration, I built &lt;a href=&quot;/about/themes&quot;&gt;theme support&lt;/a&gt; into this site! Yay, another item on the &lt;a href=&quot;/ideas&quot;&gt;/ideas&lt;/a&gt; list ticked off!&lt;/p&gt;
      &lt;p&gt;In the end, the theme became less aurora-y, despite retaining the name, and just a purple and colourful recolour of the default theme instead. It&#039;s not the best theme I&#039;ve ever built for a website, but it&#039;s there!&lt;/p&gt;
      &lt;p&gt;As mentioned on the theme page, it stores the theme choice in a cookie for 30 days, after which point you&#039;ll need to re-set a theme. I&#039;ll probably change this to keep the cookie current if you visit this site within that 30 day window at some point.&lt;/p&gt;
      &lt;p&gt;Now I&#039;ve got theme support I&#039;m excited to build some more interesting and experimental designs - expect more soon!&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2024-05-21</pubDate>
      <link>https://fyr.io/post/themes</link>
      <guid isPermaLink="true">https://fyr.io/post/themes</guid>
      <category>indieweb</category>
      <category>themes</category>
      <category>website</category>
      <category>css</category>
      <category>aurora</category>
    </item>
     <item>
      <title>Aurora Redux</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Aurora Redux&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Saturday 11th of May 2024 at 00:00&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;I posted yesterdays &lt;a href=&quot;/post/Aurora&quot;&gt;aurora&lt;/a&gt; post, feeling happy to have seen a smudgy purple haze in the sky. Little did I know that outside things were getting significantly more magical, That was, until I decided to have one last peek about an hour later to see if anything had changed... and it had.&lt;/p&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/aurora-5.jpg&quot;&gt;
          &lt;source srcset=&quot;/images/aurora-5.jpg&quot; /&gt;
          &lt;img src=&quot;/images/aurora-5.jpg&quot; alt=&quot;Green, purple orange and blue aurora with a large Oak tree silhoutte. Some stars are also visible&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/aurora-6.jpg&quot;&gt;
          &lt;source srcset=&quot;/images/aurora-6.jpg&quot; /&gt;
          &lt;img src=&quot;/images/aurora-6.jpg&quot; alt=&quot;Purple, green and blue aurora are visible, surrounded by the dark leaves of trees to the left, right and bottom of frame&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/aurora-7.jpg&quot;&gt;
          &lt;source srcset=&quot;/images/aurora-7.jpg&quot; /&gt;
          &lt;img src=&quot;/images/aurora-7.jpg&quot; alt=&quot;Purple, orange, blue and green aurora slash diagonally down from the top left to the bottom right, cutting through suspended power cables&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/aurora-8.jpg&quot;&gt;
          &lt;source srcset=&quot;/images/aurora-8.jpg&quot; /&gt;
          &lt;img src=&quot;/images/aurora-8.jpg&quot; alt=&quot;Blue aurora strike down from the top right, with several power lines cutting through the bands from the top left to the bottom middle of the image&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/aurora-9.jpg&quot;&gt;
          &lt;source srcset=&quot;/images/aurora-9.jpg&quot; /&gt;
          &lt;img src=&quot;/images/aurora-9.jpg&quot; alt=&quot;A telegraph pole stands, dark, with a blue and purple meandering aurora lighting up the sky behind it&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/aurora-10.jpg&quot;&gt;
          &lt;source srcset=&quot;/images/aurora-10.jpg&quot; /&gt;
          &lt;img src=&quot;/images/aurora-10.jpg&quot; alt=&quot;The top of a telegraph pole in the lower left, with cables extending to the lower right, serves as the foreground to many beams and shafts of brightly glowing aurora, starting purple at the top of the frame and turning blue towards the bottom&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/aurora-11.jpg&quot;&gt;
          &lt;source srcset=&quot;/images/aurora-11.jpg&quot; /&gt;
          &lt;img src=&quot;/images/aurora-11.jpg&quot; alt=&quot;A telegraph pole stands against a sky lit with a large bulbous looking aurora, purple and blue with a hint of orange&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/aurora-12.jpg&quot;&gt;
          &lt;source srcset=&quot;/images/aurora-12.jpg&quot; /&gt;
          &lt;img src=&quot;/images/aurora-12.jpg&quot; alt=&quot;All the colours of the rainbow are present in this aurora, shafts striking down from the top left to the bottom right. Red, purple, blue, orange and green.&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/aurora-13.jpg&quot;&gt;
          &lt;source srcset=&quot;/images/aurora-13.jpg&quot; /&gt;
          &lt;img src=&quot;/images/aurora-13.jpg&quot; alt=&quot;A thick showing of aurora cuts across the sky and th stars above, purple to to blue to green. Cables frame the bottom and right of the image&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/aurora-14.jpg&quot;&gt;
          &lt;source srcset=&quot;/images/aurora-14.jpg&quot; /&gt;
          &lt;img src=&quot;/images/aurora-14.jpg&quot; alt=&quot;A dark band from the top right to the bottom right shows the edge of the aurora which fills the rest of the image, glowing, from right to left, purple, blue, and finally into green&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/aurora-15.jpg&quot;&gt;
          &lt;source srcset=&quot;/images/aurora-15.jpg&quot; /&gt;
          &lt;img src=&quot;/images/aurora-15.jpg&quot; alt=&quot;An old, dead tree trunk sits staring up at the sky, as aurora falls down upon it, glowing purple, green and blue, with the occasional star to pierce the sky&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;p&gt;Seeing them with eyes isn&#039;t quite as impressive as seeing them through a camera lens. To my eyes they looks like slightly purple or green bands of glowing air that slowly shift and change as you watch, like very faint glowy clouds at night. Point a camera at them though and you get something much more vibrant.&lt;/p&gt;
      &lt;p&gt;These (and many, &lt;em&gt;many&lt;/em&gt; others) were all taken on a Pixel 4a in Night Sight. Other than cropping, scaling and exporting (and whatever the craziness the Pixel does as it renders these) there has been no editing or post processing.&lt;/p&gt;
      &lt;p&gt;I think I&#039;m going to use these in my next theme for this site. Theme selector, here we come!&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2024-05-11</pubDate>
      <link>https://fyr.io/post/aurora_redux</link>
      <guid isPermaLink="true">https://fyr.io/post/aurora_redux</guid>
      <category>life</category>
      <category>space</category>
      <category>spaaaace</category>
      <category>aurora</category>
      <category>photography</category>
    </item>
     <item>
      <title>Aurora</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Aurora&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Friday 10th of May 2024 at 00:00&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;I&#039;ve always wanted to see this.&lt;/p&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/aurora-2.jpg&quot;&gt;
          &lt;source srcset=&quot;/images/aurora-2.jpg&quot; /&gt;
          &lt;img src=&quot;/images/aurora-2.jpg&quot; alt=&quot;A faint purple aurora with the silhoutted telegraph pole in the foreground in the lower left. A thicker band of the aurora is visible on the right side of the image &quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/aurora-3.jpg&quot;&gt;
          &lt;source srcset=&quot;/images/aurora-3.jpg&quot; /&gt;
          &lt;img src=&quot;/images/aurora-3.jpg&quot; alt=&quot;A hazier image of the purple aurora with some stars also clearly visible. The silhoutted telegraph pole also appears again in the lower left&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/aurora-4.jpg&quot;&gt;
          &lt;source srcset=&quot;/images/aurora-4.jpg&quot; /&gt;
          &lt;img src=&quot;/images/aurora-4.jpg&quot; alt=&quot;A dead tree, cut down to the trunk years ago, dominates this image of a blue sky with a purple blob of Aurora appearing as if it is the tree glowing&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/aurora-1.jpg&quot;&gt;
          &lt;source srcset=&quot;/images/aurora-1.jpg&quot; /&gt;
          &lt;img src=&quot;/images/aurora-1.jpg&quot; alt=&quot;A wider shot of a faint purple aurora with the silhoutted telegraph pole in the foreground&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;p&gt;Taken this evening in the south east of the UK. I&#039;ll be honest, I wasn&#039;t sure it was the aurora - it was a faint purple haze in the sky to my eyes - until I took some Night Sight photos, which gave some of the images a bit of definition.&lt;/p&gt;
      &lt;p&gt;As the pictures are taken on a phone, and an old one at that, using Night Sight, they&#039;re not that great. But still, I think they look awesome.&lt;/p&gt;
      &lt;p&gt;I would love to see it further north in all its glory though.&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2024-05-10</pubDate>
      <link>https://fyr.io/post/Aurora</link>
      <guid isPermaLink="true">https://fyr.io/post/Aurora</guid>
      <category>life</category>
      <category>space</category>
      <category>spaaaace</category>
      <category>aurora</category>
      <category>photography</category>
    </item>
     <item>
      <title>Yep And Nope Pages</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Yep And Nope Pages&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Tuesday 7th of May 2024 at 00:00&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;I saw &lt;a href=&quot;https://baty.net/nope&quot;&gt;Jack Baty&#039;s&lt;/a&gt; nope list and just had to add my own. So I &lt;a href=&quot;/nope&quot;&gt;did&lt;/a&gt;.&lt;/p&gt;
      &lt;p&gt;Then I got thinking about maybe making a /yep list. I wrote out the /nope page and found that the content was mostly things that had a negative slant, and I wasn&#039;t sure if this was okay? But I then realised that it is okay! Life is positive and negative and everything in and around that, so why not make that /yep page and have it orient more to the positive side of things! Let balance be restored!&lt;/p&gt;
      &lt;p&gt;So &lt;a href=&quot;/yep&quot;&gt;I did&lt;/a&gt;.&lt;/p&gt;
      &lt;p&gt;The two lists are massively incomplete of course, I will be adding to them, but at the moment the /nope page is more technology oriented whereas the /yep page slides more to the behavioural and bigger picture life side of things. I&#039;m sure there&#039;s an academic reason for that, but I do not have the knowledge to even begin picking that apart.&lt;/p&gt;
      &lt;p&gt;Anyway, there we go. &lt;a href=&quot;/yep&quot;&gt;/yep&lt;/a&gt; and &lt;a href=&quot;/nope&quot;&gt;/nope&lt;/a&gt; pages. They didn&#039;t even have time to hit the &lt;a href=&quot;/ideas&quot;&gt;/ideas&lt;/a&gt; page. Make them yourself, see what flows out into each list, and &lt;a href=&quot;/about&quot;&gt;let me know&lt;/a&gt; if you do.&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2024-05-07</pubDate>
      <link>https://fyr.io/post/yep_and_nope_pages</link>
      <guid isPermaLink="true">https://fyr.io/post/yep_and_nope_pages</guid>
      <category>indieweb</category>
      <category>life</category>
      <category>positivity</category>
      <category>negativity</category>
      <category>be the change</category>
    </item>
     <item>
      <title>Indieweb H Cards</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Indieweb H Cards&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Wednesday 1st of May 2024 at 00:00&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;I&#039;ve added an &lt;a href=&quot;https://microformats.org/wiki/h-card&quot;&gt;h-card&lt;/a&gt; to the homepage!&lt;/p&gt;
      &lt;h3&gt;A what now?&lt;/h3&gt;
      &lt;p&gt;An h-card is one type of &lt;a href=&quot;https://microformats.org/wiki/microformats&quot;&gt;microformat&lt;/a&gt;, which are just standardised ways of presenting different types of information within HTML. Think of an h-card sort of like the HTML version of a business card, but an agreed upon method of presenting, on a website, the relevant information you might want to put on a business card in a machine-readable way, whilst simultaneously fitting in with however you want your website to be structured and designed. It&#039;s easy to implement and encouraged within the IndieWeb community as a means of standardising how you present yourself on your personal website. As long as you have a bit of information about your alias, persona or identity on your site you can very easily turn it into a h-card by wrapping that info in a few different classes.&lt;/p&gt;
      &lt;p&gt;There&#039;s a whole list of &lt;a href=&quot;https://microformats.org/wiki/h-card#Properties&quot;&gt;properties&lt;/a&gt; you can use to present all different kinds of information about yourself, and whilst I&#039;ve opted for a somewhat minimal subset of them there isn&#039;t really a required minimal set, so you can do as much or as little as you like. Though of course the more you include the more personalised and open your site will appear to anyone that comes across the h-card.&lt;/p&gt;
      &lt;p&gt;I&#039;ve only recently learned about the indieweb and &lt;a href=&quot;/post/a_new_website_for_an_old_web&quot;&gt;the whole thing appeals to me&lt;/a&gt; so much that I opted to drop wordpress in favour of building my own thing. This allows me to change things around and &lt;a href=&quot;/post/rss_for_the_win&quot;&gt;add features&lt;/a&gt; with ease, and it has brought back the fun of building websites. I look forward to making small incremental changes to this place!&lt;/p&gt;
      &lt;p&gt;Whilst I doubt I&#039;ll be going all-in on the indieweb dream (like, I doubt I&#039;ll bother autopublishing to social media from here whenever I post something, I&#039;m just not into that) this is one of many changes I&#039;ll be making to bring this site more in line with the indieweb/smallweb ethos and as a result, hopefully bring a bit of personality to my little slice of the intarwebs.&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2024-05-01</pubDate>
      <link>https://fyr.io/post/indieweb_h-cards</link>
      <guid isPermaLink="true">https://fyr.io/post/indieweb_h-cards</guid>
      <category>indieweb</category>
      <category>html</category>
      <category>indieweb</category>
      <category>microformat</category>
      <category>h-card</category>
    </item>
     <item>
      <title>Rss For The Win</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Rss For The Win&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Friday 26th of April 2024 at 00:00&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;The old site used Wordpress, which came with &lt;a href=&quot;https://en.wikipedia.org/wiki/RSS&quot;&gt;RSS feed&lt;/a&gt; functionality built in. This is super useful, I&#039;m a fan of RSS. It&#039;s a great, simple way to keep up to date with content posted to a site automatically without needing to visit the site and look with your eyeballs.&lt;/p&gt;
      &lt;p&gt;When I first &lt;a href=&quot;/post/a_new_website_for_an_old_web&quot;&gt;updated this site&lt;/a&gt; from the previous Wordpress install to this custom... thing... I built, I didn&#039;t really bother with RSS feed functionality on day one as I honestly thought nobody was using it, however after poking at the logs I&#039;m seeing a decent number of requests for the old feed url.&lt;/p&gt;
      &lt;p&gt;So for the first official site functionality upgrade, I have added (back) &lt;a href=&quot;/feed&quot;&gt;an RSS feed&lt;/a&gt;!&lt;/p&gt;
      &lt;p&gt;It&#039;s pretty basic right now, doing a little bit more than &lt;a href=&quot;https://www.rssboard.org/rss-specification&quot;&gt;the minimum required by the spec&lt;/a&gt;, but I&#039;ll add useful and relevant functionality at a later date. I&#039;m using the &lt;a href=&quot;https://wordpress.com/support/feeds/#find-your-rss-feed&quot;&gt;same URL as the previous Wordpress feed&lt;/a&gt; too, so anyone who subscribed to it in the past should resume getting updates now without changing anything on their end. At the moment it&#039;s only the title of a post and a link to it pretty much, no description or post images or whatever.&lt;/p&gt;
      &lt;p&gt;I do know though that those dear RSS feed users will get a dump of all the post links as if they&#039;re all new and unread, as the unique identifiers for the posts will be different. For that I apologise.&lt;/p&gt;
      &lt;p&gt;If you use the RSS feed and want a particular element or feature added, or if I&#039;m doing something horribly wrong and haven&#039;t realised, &lt;a href=&quot;/about&quot;&gt;let me know&lt;/a&gt;.&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2024-04-26</pubDate>
      <link>https://fyr.io/post/rss_for_the_win</link>
      <guid isPermaLink="true">https://fyr.io/post/rss_for_the_win</guid>
      <category>indieweb</category>
      <category>rss</category>
      <category>feed</category>
      <category>website</category>
      <category>content</category>
    </item>
     <item>
      <title>A New Website For An Old Web</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;A New Website For An Old Web&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Thursday 18th of April 2024 at 00:00&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;I have spent the last couple of weeks reading about the &lt;a href=&quot;https://indieweb.org/&quot;&gt;indie web&lt;/a&gt;, the &lt;a href=&quot;https://benhoyt.com/writings/the-small-web-is-beautiful/&quot;&gt;small web&lt;/a&gt; and the &lt;a href=&quot;https://www.slowweb.io/&quot;&gt;slow web&lt;/a&gt;. All related concepts that I personally boil down to &quot;what the internet used to be like, until the corporations took over&quot;. That transition was probably somewhere around 2006? I&#039;m not sure. Before the &lt;a href=&quot;https://ar.al/2020/08/07/what-is-the-small-web/&quot;&gt;Big Web&lt;/a&gt; took over the majority of user attention, people made websites for themselves or for people with similar interests, and people who wanted to read things that interested them followed links from small time website owners or used explorative services like &lt;a href=&quot;https://en.wikipedia.org/wiki/StumbleUpon&quot;&gt;StumbleUpon&lt;/a&gt; to find new content. Of course, nowadays there are way more people on the &#039;net, but the majority of people spend more of their time on way fewer platforms like facebook, instagram, tiktok, etc. I miss the old days of small quirky websites built for fun. For some reason, having a reliance on WYSIWYG editors and bulky CMS solutions takes the fun out of it all. For me anyway.&lt;/p&gt;
      &lt;p&gt;Anyway, a couple years ago I came across &lt;a href=&quot;https://shellsharks.com&quot;&gt;shellsharks.com&lt;/a&gt;. I read something interesting on there, bookmarked it, then moved on. Then I came across the site again. And again. And then finally, a few weeks ago I decided to really explore it, click around the menu and read some of the other content. What I found outside of the blogpost or list I had been reading prior was a technical/infosec site with a whole host of cool features. It made me think about my own place on the web and what I wanted it to be for me, and for anyone who found it. I dove down the rabbit holes each of the features the shellsharks.com site had, only to find that they weren&#039;t unique nor were they overly new in many cases, from the idea behind a &lt;a href=&quot;https://nownownow.com&quot;&gt;/now&lt;/a&gt; page, to having a public website changelog and integrating federation services. The key was doing it all yourself, for yourself. This appeals to me.&lt;/p&gt;
      &lt;p&gt;But what really got me thinking was the idea that the internet doesn&#039;t have to be Big. It can be Small. We don&#039;t have to have huge dependancy chains, host our sites on top of a gargantuan codebase that tries to do everything (and is slow as a result) or abide by any kind of user interface design principles in a conformist &quot;everyone-else-does-it-this-way&quot; way. We can play. We can experiment. We can break things.&lt;/p&gt;
      &lt;p&gt;This, as well as &lt;a href=&quot;https://arstechnica.com/security/2024/04/what-we-know-about-the-xz-utils-backdoor-that-almost-infected-the-world/&quot;&gt;the recent xz supply chain attack&lt;/a&gt;, in turn got me thinking about my site from an infrastructure perspective. What did I want from it? The answer was simple. I wanted it to be something fun (for me), something useful (for you) and something &lt;em&gt;mine&lt;/em&gt;. I wanted to know it inside out, to tinker with it like we used to back in the good ol&#039; days. To break things, to make things.&lt;/p&gt;
      &lt;p&gt;So that&#039;s what this is. I&#039;ve ditched Wordpress - I don&#039;t have anything negative to say about it, but many of the decisions I would make about web design, primarily on the backend, were made by someone else. That&#039;s fine. But I want to make them. So I built this. This very basic site. The only dependencies it has are PHP for some very basic logic stuff and some kind of web hosting software. In fact, I develop it on PHP&#039;s built in web server so whilst that&#039;s not suitable for production it is in theory optional to have web hosting software like nginx or whatever.&lt;/p&gt;
      &lt;h3&gt;What&#039;s different?&lt;/h3&gt;
      &lt;p&gt;There are plenty of features I haven&#039;t added yet (like an RSS feed) but the point of this rebuild is to plug away at my leisure, adding things as I see fit. It&#039;s mostly content right now; Here&#039;s what this new version of the site is launching with:&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;I have ported across the most recent batch of blog posts from the old site, plus some of the more popular ones from longer ago&lt;/li&gt;
        &lt;li&gt;I have a &lt;a href=&quot;/now&quot;&gt;/now&lt;/a&gt; page, showcasing things I am personally up to around about nowish - what I&#039;m watching, reading, working on, etc&lt;/li&gt;
        &lt;li&gt;I have a &lt;a href=&quot;/changelog&quot;&gt;/changelog&lt;/a&gt; page, highlighting changes I make to this site (on the front or back end)&lt;/li&gt;
        &lt;li&gt;I have an &lt;a href=&quot;/ideas&quot;&gt;/ideas&lt;/a&gt; page, a dumping ground for what will probably be bad ideas either for this site or for just... anything really. I always forget my ideas, hopefully not anymore&lt;/li&gt;
        &lt;li&gt;I have a &lt;a href=&quot;/wander&quot;&gt;/wander&lt;/a&gt; page, showcasing a bunch of cool stuff I like on the internet that you can wander through&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;I aim to add an RSS feed, themes, plus a bunch of other stuff (check the aforementioned &lt;a href=&quot;/ideas&quot;&gt;/ideas&lt;/a&gt; page) and eventually port over more of the content from the old site.&lt;/p&gt;
      &lt;p&gt;As for content, what happens happens. I hope that adding features and documenting them introduces a certain momentum which results in more blog posts and &lt;a href=&quot;/tools&quot;&gt;/tools&lt;/a&gt;. I&#039;m also hoping that I can start to integrate more into the indieweb community and the fediverse, there&#039;s some great people and content out there and it all feels like the web used to.&lt;/p&gt;
      &lt;p&gt;It&#039;s kinda exciting.&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2024-04-18</pubDate>
      <link>https://fyr.io/post/a_new_website_for_an_old_web</link>
      <guid isPermaLink="true">https://fyr.io/post/a_new_website_for_an_old_web</guid>
      <category>indieweb</category>
      <category>website</category>
      <category>wordpress</category>
      <category>indieweb</category>
      <category>smallweb</category>
      <category>homebrew</category>
    </item>
     <item>
      <title>Reset Sims Net Password</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Reset Sims Net Password&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Sunday 3rd of March 2024 at 00:00&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;If you&#039;re trying to migrate or take over a Sims.Net install (say, from an unfriendly MSP, or you are &lt;a href=&quot;/post/migrate_sims_net_server/&quot;&gt;migrating Sims away from a hosted solution to on-prem&lt;/a&gt;) or have just forgotten the admin password, you might find yourself with access to the database but without any access to Sims.Net itself - perhaps no passwords have been shared out of spite or the data export/import process has gone a little awry and account information hasn&#039;t pulled across quite right.&lt;/p&gt;
      &lt;p&gt;Sims.Net uses its own internal accounts for access via the application which can be quite awkward to unwind. As long as you have SA access to the database, you can recover from this - Luckily there&#039;s a built in routine you can run which makes resetting the sysman account, which will give you enough permissions to get back up and running, a breeze.&lt;/p&gt;
      &lt;p&gt;Assuming you have access to the database (if you don&#039;t have access to the sa account, read this) you can:&lt;/p&gt;
      &lt;ol&gt;
        &lt;li&gt;Open SQL Management Studio&lt;/li&gt;
        &lt;li&gt;Right click the Sims database and select New Query&lt;/li&gt;
        &lt;li&gt;Paste in the following:&lt;br /&gt;
          &lt;code&gt;exec sims.db_p_reset_sysman_password&lt;/code&gt;&lt;/li&gt;
        &lt;li&gt;Click Execute&lt;/li&gt;
      &lt;/ol&gt;
      &lt;p&gt;Now you should be able to log into Sims.Net with sysman as the username, and password as the password. It&#039;ll ask you to reset this when you log in. All being well you should now have access to Focus &gt; System Manager &gt; Manager Users, and therefore able to escalate privs to take control of things.&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2024-03-03</pubDate>
      <link>https://fyr.io/post/reset_sims_net_password</link>
      <guid isPermaLink="true">https://fyr.io/post/reset_sims_net_password</guid>
      <category>tech</category>
      <category>sims.net</category>
      <category>sims sucks</category>
      <category>password</category>
      <category>authentication</category>
      <category>sql</category>
    </item>
     <item>
      <title>Useless Windows Bug 5462</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Useless Windows Bug 5462&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Wednesday 8th of November 2023 at 00:00&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;Here&#039;s a bug in Windows explorer that I happened to notice today, which has zero value and despite me trying to find a way to abuse it, is seemingly completely useless. Tested on Windows 10 22H2 &amp; Server 2019/2022.&lt;/p&gt;
      &lt;p&gt;If you right click on the start menu icon in the task bar, the task bar across all screens freezes in time. The clock doesn&#039;t update, applications that open after you right click don&#039;t show up on the task bar as being open (except in Server 2022), but when you click away from the right-click menu everything snaps back to the correct state.&lt;/p&gt;
      &lt;p&gt;Right clicking on other things in the task bar doesn&#039;t yield the same results. It&#039;s only the start menu icon.&lt;/p&gt;
      &lt;p&gt;EDIT: Does not affect Windows 2012R2.&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2023-11-08</pubDate>
      <link>https://fyr.io/post/useless_windows_bug_5462</link>
      <guid isPermaLink="true">https://fyr.io/post/useless_windows_bug_5462</guid>
      <category>tech</category>
      <category>Windows Server</category>
      <category>bug</category>
      <category>gui</category>
      <category>clock</category>
      <category>bernards watch</category>
    </item>
     <item>
      <title>Vms Not Booting After October 2023 Windows Updates</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Vms Not Booting After October 2023 Windows Updates&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Wednesday 18th of October 2023 at 00:00&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;Booting a VM and you get the error &quot;Failed to power on with Error Incorrect Function&quot;? Yeah, this hit us too. Looks like it hits VMs with secure boot enabled.&lt;/p&gt;
      &lt;p&gt;Quick fix: Move, delete or rename the &lt;code&gt;.mrt&lt;/code&gt; &amp; &lt;code&gt;.rct&lt;/code&gt; files associated with the &lt;code&gt;.vhdx&lt;/code&gt; file that the OS of the non-booting VM normally boots from. It&#039;ll then boot normally.&lt;/p&gt;
      &lt;p&gt;Alternatively you can uninstall the updates kb5031364 and/or kb5031361.&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2023-10-18</pubDate>
      <link>https://fyr.io/post/vms_not_booting_after_october_2023_windows_updates</link>
      <guid isPermaLink="true">https://fyr.io/post/vms_not_booting_after_october_2023_windows_updates</guid>
      <category>tech</category>
      <category>windows</category>
      <category>windows update</category>
      <category>bug</category>
      <category>untested</category>
      <category>patch</category>
      <category>virtual machines</category>
      <category>secure boot</category>
    </item>
     <item>
      <title>Migrate Sims Net Server</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Migrate Sims Net Server&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Thursday 12th of October 2023 at 00:00&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;Sims.Net is a very common and, in my opinion, a very badly written Management Information System used in the UK&#039;s lower education sector - primary and secondary schools. It&#039;s commonly used not because it&#039;s good, but because it was one of the few options many years ago and a huge number of schools just haven&#039;t bothered to move to something else. And I don&#039;t blame them, it&#039;s got a lot of history and data going back decades in that database. It&#039;s not an easy thing to migrate off of.&lt;/p&gt;
      &lt;p&gt;ESS, the (current) caretakers of Sims.Net, have recently changed their licensing model to seemingly prevent third parties from hosting Sims.Net data on behalf of a school. I admit, I don&#039;t know the details, but that&#039;s the message as I understand it.&lt;/p&gt;
      &lt;p&gt;It looks like due to this, and the EOL of Server 2012R2, many school techs and sysadmins across the UK will be scrambling to get Sims.Net installed on an on-prem server.&lt;/p&gt;
      &lt;p&gt;Unfortunately, documentation is sparse. It&#039;s a shame, but it costs a whole lot of cash to pay for third parties to do this for you. Right?&lt;/p&gt;
      &lt;p&gt;In the spirit of &lt;a href=&quot;/post/implement_but_never_move&quot;&gt;publishing guides for stuff organisations seemingly don&#039;t want guides published for&lt;/a&gt; I&#039;ve written up a guide on installing or migrating Sims.Net (and the horrible, &lt;em&gt;horrible&lt;/em&gt; SOLUS3) server/database, because I struggled to find any well written and up to date guides and had to figure it out myself recently.&lt;/p&gt;
      &lt;p&gt;So if you&#039;re looking to install or migrate Sims.Net, hop in and come for a ride. It&#039;s easier than you think! Until you get to SOLUS3. We won&#039;t be migrating that. But I&#039;ll go through how to install it fresh!&lt;/p&gt;
      &lt;p&gt;This is a fairly rough stream-of-consciousness guide based on internal documentation I use to migrate Sims - suggestions, advice and corrections are welcome. I will continue to refine this over time, noting any significant changes at the bottom of the article.&lt;/p&gt;
      &lt;h3&gt;Ingredients&lt;/h3&gt;
      &lt;p&gt;You will need the following software to proceed, as per the &lt;a href=&quot;https://customer.support-ess.com/csm?id=kb_article_view&amp;amp;sysparm_article=KB0035434&quot;&gt;SIMS Minimum Hardware and Technical Roadmap&lt;/a&gt; documentation:&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;Windows Server 2019 (with GUI)&lt;/li&gt;
        &lt;li&gt;Microsoft SQL Server 2019
          &lt;ul&gt;
            &lt;li&gt;Express: This is free. Useful for primaries or small secondaries. The only reason to move to Standard will be if your database is bigger than 10GB&lt;/li&gt;
            &lt;li&gt;Standard: You need to pay for this. The only feature we need it for is if your Sims.Net database is bigger than 10GB in size.&lt;/li&gt;
          &lt;/ul&gt;
        &lt;/li&gt;
        &lt;li&gt;Sims.Net installer files (you can get these from your current SOLUS3 install by extracting the update that matches your currently running version of Sims)&lt;/li&gt;
        &lt;li&gt;SOLUS3 installer files (linked below)&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;Note: This guide was written and tested on 7.210, the 2023 spring release, however I can&#039;t imagine it&#039;s any different for any other Sims.Net 7 release.&lt;/p&gt;
      &lt;h3&gt;Installing Windows Server 2019&lt;/h3&gt;
      &lt;p&gt;Set up a fresh Windows Server 2019, ideally in a VM, to be dedicated to the task of hosting Sims.Net. Given the common configuration of networks in schools I am assuming you&#039;re also joining this server to a Windows domain.&lt;/p&gt;
      &lt;p&gt;You will need to use the GUI, for SOLUS3, unfortunately. If anyone has got this working without the GUI, let me know.&lt;/p&gt;
      &lt;p&gt;Why 2019? Well, officially, it&#039;s the latest version of Windows Server that Sims.Net officially supports. Whilst I&#039;m certain it&#039;ll run perfectly well on 2022, if you try it and need ESS help, the first thing they may say is “wrong OS, bye!” so we&#039;re playing it safe here.&lt;/p&gt;
      &lt;p&gt;Try to keep Sims.Net and SOLUS on a server dedicated to the task and not sharing roles with other stuff, except the very few sims data extractors that absolutely must be installed on the same server as the Sims database. (Many of these data extractors are bullshitting when they tell you they require this, by the way, but that&#039;s a tale for another post.)&lt;/p&gt;
      &lt;p&gt;You&#039;ll need a good amount of storage and RAM available, but requirements vary depending on workload.&lt;/p&gt;
      &lt;p&gt;According to &lt;em&gt;Teh Intarwebs&lt;/em&gt;, the general recommendation is to use a fixed amount of RAM with MS SQL. You should allocate RAM by getting the database size, plus ram for the OS, plus growth. So if your Database is 20GB and you expect it to grow by, say, 4GB over the next few years, throw 32GB of ram in there. That&#039;ll give you 20GB for the database, plus 4GB for DB growth, plus 8GB for the OS and any work it, or applications on it, has to do. If you&#039;re doing this in a VM you can, of course, raise this much more easily later if and when needed.&lt;/p&gt;
      &lt;p&gt;Now... this may be overkill, but... create at least two but ideally &lt;span style=&quot;text-decoration: underline;&quot;&gt;five&lt;/span&gt; storage drives. If you can only create two, keep the OS and docstorage on one and the database stuff on the second. This guide will go through the creation of five of these drives as and when they&#039;re needed.&lt;/p&gt;
      &lt;p&gt;I will be using the following throughout this guide:&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;strong&gt;C:\ - System&lt;/strong&gt; - Windows and program files&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;D:\ - Data&lt;/strong&gt; - Database&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;E:\ - Logs&lt;/strong&gt; - SQL Logfiles&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;F:\ - DocStorage&lt;/strong&gt; - file storage&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;G:\ - TempDB&lt;/strong&gt; - SQL TempDB&lt;/li&gt;
      &lt;/ul&gt;
      &lt;h3&gt;Installing Microsoft SQL&lt;/h3&gt;
      &lt;p&gt;&lt;strong&gt;Disclaimer&lt;/strong&gt;: I am not a Database Admin, it&#039;s a form of advanced magic that my brain is not capable of retaining! So, if I haven&#039;t followed best practices here let me know and I&#039;ll research and correct.&lt;/p&gt;
      &lt;ol&gt;
        &lt;li&gt;Download SQL Server &lt;s&gt;2016 SP3. The latest version of Sims that this guide was built with (Spring 2023, 7.210) only officially supports up to 2016 SP3&lt;/s&gt; &lt;strong&gt;EDIT 2023-10&lt;/strong&gt;: Turns out this isn&#039;t accurate, the document I was using was out of date. SQL Server 2019 &lt;strong&gt;is supported&lt;/strong&gt; (&lt;a href=&quot;https://customer.support-ess.com/sys_attachment.do?sys_id=c5e82a221b717590455842a7b04bcbf1&quot;&gt;as per latest guidance, PDF warning&lt;/a&gt;) and in fact I recommend it as &lt;a href=&quot;https://learn.microsoft.com/en-US/sql/database-engine/configure-windows/manage-certificates?view=sql-server-ver16#provision-single-server-cert&quot;&gt;it will allow you to encrypt the SQL connections the Sims.Net client makes by default&lt;/a&gt;. SQL 2022 is still not supported, however it will be from the Spring/Autumn 2024 release. Whether you use Express (free) or Standard (which you need to pay for) depends on your usage requirements. Primarily for our use case, the major decider is how big the database will be. Typically (but verify this by checking your existing system requirements yourselves):
          &lt;ol&gt;
            &lt;li&gt;Primaries: Download SQL 2019 Express: &lt;a href=&quot;https://www.microsoft.com/en-gb/download/confirmation.aspx?id=101064&quot;&gt;https://www.microsoft.com/en-gb/download/confirmation.aspx?id=101064&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;Secondaries: You may be able to get away with Express if your database is below - and not expected to exceed - 10GB in size. Otherwise, buy and download SQL Server 2019 Standard Edition&lt;/li&gt;
          &lt;/ol&gt;
        &lt;/li&gt;
        &lt;li&gt;Run the Express installer, or if using Standard, mount the &lt;code&gt;.iso&lt;/code&gt; and run &lt;code&gt;setup.exe&lt;/code&gt;
          &lt;ol&gt;
            &lt;li&gt;Express (verified with 2019):
              &lt;ol&gt;
                &lt;li&gt;On the popup, select &lt;code&gt;Custom&lt;/code&gt;&lt;/li&gt;
                &lt;li&gt;Select &lt;code&gt;Install&lt;/code&gt; to download and run the installer files&lt;/li&gt;
              &lt;/ol&gt;
            &lt;/li&gt;
          &lt;/ol&gt;
          &lt;ol&gt;
            &lt;li&gt;Select &lt;code&gt;Installation&lt;/code&gt; &amp;gt; &lt;code&gt;New SQL Server stand-alone installation...&lt;/code&gt;&lt;/li&gt;
            &lt;li&gt;If you are using the Standard installer but only need express, with its associated limits (good enough for a primary in most cases) select the Express edition in the Specify a free edition dropdown, however if you need Standard or Enterprise, select the Enter the product key radio button and, if it&#039;s not auto-populated, enter the product key then Click &lt;code&gt;Next &amp;gt;&lt;/code&gt;&lt;/li&gt;
            &lt;li&gt;Accept the product terms and click &lt;code&gt;Next &amp;gt;&lt;/code&gt;&lt;/li&gt;&lt;li&gt;On Standard, it is strongly recommended that you select the &lt;code&gt;Use Microsoft Update to check for updates&lt;/code&gt; checkbox, then click &lt;code&gt;Next &amp;gt;&lt;/code&gt; to begin checking for, downloading and extracting any updates&lt;/li&gt;
            &lt;li&gt;On the &lt;code&gt;Install Rules&lt;/code&gt; section, get everything to not fail and click &lt;code&gt;Next &amp;gt;&lt;/code&gt;&lt;/li&gt;
            &lt;li&gt;On the Feature Selection window, select &lt;code&gt;Database Engine Services&lt;/code&gt; and if it&#039;s selected automatically, untick &lt;code&gt;Machine Learning Services and Language Extensions&lt;/code&gt; - you can leave these features on the %SystemDrive% - then click &lt;code&gt;Next &amp;gt;&lt;/code&gt;&lt;/li&gt;
            &lt;li&gt;Set a &lt;code&gt;Named Instance&lt;/code&gt; name to &lt;code&gt;Sims&lt;/code&gt; or something else descriptive for easy management later, then click &lt;code&gt;Next &amp;gt;&lt;/code&gt;&lt;/li&gt;
            &lt;li&gt;In &lt;code&gt;Server Configuration&lt;/code&gt;:
            &lt;ol&gt;
              &lt;li&gt;Accounts: it&#039;s generally recommended to create basic domain accounts for the &lt;code&gt;SQL Server Agent&lt;/code&gt; and &lt;code&gt;SQL Server Database Engine&lt;/code&gt; services, leaving &lt;code&gt;SQL Server Browser&lt;/code&gt; as &lt;code&gt;NT Authority\Local Service&lt;/code&gt;, however the defaults do work fine in our use case.
              &lt;ol&gt;
                &lt;li&gt;&lt;code&gt;Grant Perform Volume Maintenance Task&lt;/code&gt; should be unticked for a server hosting only Sims. It makes database creation faster but can result in data disclosure.&lt;/li&gt;
                &lt;li&gt;Collation: Leave as default
                  &lt;ol&gt;
                    &lt;li&gt;The default is &lt;code&gt;Latin1_General_CI_AS&lt;/code&gt;. The &lt;code&gt;ci&lt;/code&gt; bit indicating case-insensitiveness. I haven&#039;t dug into this but I&#039;m wondering if this is this why Sims.Net passwords aren&#039;t case sensitive. I suspect they don&#039;t hash the passwords, perhaps they encrypt them? I&#039;m interested in trying this without the &lt;code&gt;ci&lt;/code&gt; to see if Sims breaks and passwords become case-sensitive. Or perhaps they just &lt;code&gt;LOWER()&lt;/code&gt; or &lt;code&gt;UPPER()&lt;/code&gt; them or something. If you know, let me know! &lt;/li&gt;
                  &lt;/ol&gt;
                &lt;/li&gt;
                &lt;li&gt;Click &lt;code&gt;Next &amp;gt;&lt;/code&gt; once you&#039;ve configured this section.&lt;/li&gt;
              &lt;/ol&gt;
              &lt;/li&gt;
            &lt;/ol&gt;
            &lt;/li&gt;
            &lt;li&gt;Database Engine Configuration:
              &lt;ol&gt;
                &lt;li&gt;Server configuration: Select &lt;code&gt;Mixed Mode&lt;/code&gt; and insert a strong password
                &lt;ol&gt;
                  &lt;li&gt;Don&#039;t use a space in the password. SOLUS3 will happily use a password with a space... until you come to migrate the database and all of a sudden it won&#039;t like it any more in the password field in &lt;code&gt;Settings&lt;/code&gt; &amp;gt; &lt;code&gt;SOLUS3&lt;/code&gt; &amp;gt; &lt;code&gt;SOLUS&lt;/code&gt;. Also, don&#039;t use more than 25 characters because some (but not all!) password fields you need later will only accept a max of 25 characters. And they don&#039;t tell you this. Yeah, welcome to SOLUS3.&lt;/li&gt;
                &lt;/ol&gt;
                &lt;/li&gt;
                &lt;li&gt;Add any windows groups/accounts that you wish to be able to perform admin tasks on the database&lt;/li&gt;
                &lt;li&gt;Data Directories: Although you can if you have no choice, you should not store any data on the &lt;code&gt;%SystemDrive%&lt;/code&gt; (&lt;code&gt;C:\&lt;/code&gt; generally), you should instead store data on separate drives if possible. If you&#039;re using a VM like most of us are for this, create two new &lt;code&gt;.vhdx&lt;/code&gt; files with a 64KB allocation size and put the &lt;code&gt;Data root directory&lt;/code&gt; and &lt;code&gt;Backup Directory&lt;/code&gt; on one (&lt;code&gt;D:\&lt;/code&gt; in my case, labelled &lt;code&gt;Data&lt;/code&gt; and about 120GB in size), moving the &lt;code&gt;User database log directory&lt;/code&gt; off onto another (&lt;code&gt;E:\&lt;/code&gt; in my case, labelled &lt;code&gt;Logs&lt;/code&gt;, 50GB in size) - if you are lucky enough to have the capacity you can store these extra &lt;code&gt;.vhdx&lt;/code&gt; files on different physical disks, or if you&#039;re not using a VM for the Sims server you could allocate separate drives.&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://learn.microsoft.com/en-us/sql/relational-databases/databases/tempdb-database?view=sql-server-ver16&quot;&gt;TempDB&lt;/a&gt;:
                &lt;ol&gt;
                  &lt;li&gt;There is no general consensus on whether to store these files on separate disks, with data or with logs, as each situation is unique, but in the interest of squeezing out as much performance from the horribly slow Sims.Net as possible I&#039;m opting to store them on what is now my fourth &lt;code&gt;.vhdx&lt;/code&gt; - a 50GB w/ 64KB allocation drive I can shrink (or grow? Yikes) later as required, labelled &lt;code&gt;TempDB&lt;/code&gt;. Whilst it&#039;s early days, I&#039;ve yet to see this grow much. Currently sitting at about 10GB.&lt;/li&gt;
                  &lt;li&gt;Data Files:
                    &lt;ol&gt;
                      &lt;li&gt;Number of files: Same as your number of logical/virtual processors, up to 8 max&lt;/li&gt;
                      &lt;li&gt;Initial Size &amp;amp; Autogrowth: This depends on the workload, but generally you want to increase these numbers from the defaults - each time the file has to grow it introduces some overhead so you don&#039;t want it to be too small, and at the same time you don&#039;t want to use up loads of space on disk that isn&#039;t being used. I&#039;m using 1024MB for the initial size and 512MB autogrowth.&lt;/li&gt;
                      &lt;li&gt;Store these on a new drive (&lt;code&gt;G:\&lt;/code&gt; in my case) as mentioned above, not the %systemdrive% and not the data or logs drive.&lt;/li&gt;
                    &lt;/ol&gt;
                  &lt;/li&gt;
                  &lt;li&gt;Log Files:
                    &lt;ol&gt;
                      &lt;li&gt;Initial size &amp;amp; Autogrowth: 512MB/256MB&lt;/li&gt;
                      &lt;li&gt;Storage: Same as the Data Files - &lt;code&gt;G:\&lt;/code&gt;&lt;/li&gt;
                    &lt;/ol&gt;
                  &lt;/li&gt;
                &lt;/ol&gt;
                &lt;/li&gt;
                &lt;li&gt;Click &lt;code&gt;Next &amp;gt;&lt;/code&gt; and if all the tests pass you should be able to review the install - if you&#039;re happy with the provided summary, click Install&lt;/li&gt;
              &lt;/ol&gt;
            &lt;/li&gt;
          &lt;/ol&gt;
        &lt;/li&gt;
        &lt;li&gt;Once install is complete, install the SQL Server Management Tools which you can do from the &lt;code&gt;Installation&lt;/code&gt; section of the &lt;code&gt;SQL Server Installation Center&lt;/code&gt; installer you probably still have open, or you can download the up to date version here: &lt;a href=&quot;https://aka.ms/ssmsfullsetup&quot;&gt;https://aka.ms/ssmsfullsetup&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;Reboot&lt;/li&gt;
      &lt;/ol&gt;
      &lt;h3&gt;Sims Migration &amp;amp; Installation&lt;/h3&gt;
      &lt;p&gt;It&#039;s worth taking some time before the planned migration to audit any and all data extractor tools that pull data from Sims and sync it with another provider or database. These will all need to be touched or outright migrated, too. 9/10 times the support for the provider will do this for you, but they&#039;re generally pretty easy to move in my experience - Some, however, are not. A guide for another time, perhaps.&lt;/p&gt;
      &lt;p&gt;The migration process quickly takes Sims offline for everyone so schedule some downtime before you proceed to step 5 below. You can get up to that point beforehand however.&lt;/p&gt;
      &lt;ol&gt;
        &lt;li&gt;Create a folder in the Storage drive called &lt;code&gt;Sims Shared Files&lt;/code&gt; and share it (&lt;code&gt;Sims$&lt;/code&gt;), sharing with the appropriate ACL groups in place - whilst most staff probably won&#039;t need access, some will (cover, attendance, data manager, etc)
          &lt;ol&gt;
            &lt;li&gt;I suggest making three groups in AD, &lt;code&gt;ACL_Sims_Read&lt;/code&gt;, &lt;code&gt;ACL_Sims_Write&lt;/code&gt;, &lt;code&gt;ACL_Sims_Full&lt;/code&gt; and giving these read, modify and full access as appropriate to the share and the folder. You can then easily give people the relevant access (read or write - Full should be reserved for sysadmins) later without making changes to the folder and files directly&lt;/li&gt;
          &lt;/ol&gt;
        &lt;/li&gt;
        &lt;li&gt;Create a folder on the &lt;code&gt;C:\&lt;/code&gt; drive somewhere, like the desktop - it can all be deleted once we&#039;re done&lt;/li&gt;
        &lt;li&gt;Copy the installer files into this folder: &lt;code&gt;SIMSApplicationSetup.exe&lt;/code&gt; &amp;amp; &lt;code&gt;SIMSSQLApplicationSetup.exe&lt;/code&gt;
          &lt;ol&gt;
            &lt;li&gt;If you don&#039;t have these, you can extract them from SOLUS3:
              &lt;ol&gt;
                &lt;li&gt;Open &lt;code&gt;SOLUS3&lt;/code&gt; on the old server&lt;/li&gt;
                &lt;li&gt;&lt;code&gt;Upgrades&lt;/code&gt; &amp;gt; &lt;code&gt;Update Library&lt;/code&gt;&lt;/li&gt;
                &lt;li&gt;Select the latest &lt;code&gt;Full Release&lt;/code&gt; that matches what&#039;s running on the server and click &lt;code&gt;Extract&lt;/code&gt;&lt;/li&gt;
                &lt;li&gt;Select a location to drop the files, then copy them to the new server&lt;/li&gt;
              &lt;/ol&gt;
            &lt;/li&gt;
          &lt;/ol&gt;
        &lt;/li&gt;
        &lt;li&gt;Run &lt;code&gt;SIMSSQLApplicationSetup.exe&lt;/code&gt; on the new server
          &lt;ol&gt;
            &lt;li&gt;Click &lt;code&gt;Next &amp;gt;&lt;/code&gt;&lt;/li&gt;
            &lt;li&gt;Select &lt;code&gt;Browse&lt;/code&gt; to change the install location to the new SQL Server Binn folder, e.g. &lt;code&gt;C:\Program Files\Microsoft SQL Server\MSSQL151.SIMS\MSSQL\Binn&lt;/code&gt; and click &lt;code&gt;Next &amp;gt;&lt;/code&gt; then &lt;code&gt;Next &amp;gt;&lt;/code&gt; again&lt;/li&gt;
          &lt;/ol&gt;
        &lt;/li&gt;
        &lt;li&gt;On the old server, run &lt;code&gt;DBAttach&lt;/code&gt; as admin
          &lt;ol&gt;
            &lt;li&gt;Server Name: &lt;code&gt;&amp;lt;current sims server hostname&amp;gt;\&amp;lt;instance name&amp;gt;&lt;/code&gt;&lt;/li&gt;
            &lt;li&gt;Username: &lt;code&gt;sa&lt;/code&gt;&lt;/li&gt;
            &lt;li&gt;Password: &lt;code&gt;&amp;lt;sa password&amp;gt;&lt;/code&gt;&lt;/li&gt;
            &lt;li&gt;Click &lt;code&gt;Connect&lt;/code&gt;&lt;/li&gt;
            &lt;li&gt;In the &lt;code&gt;Detach a Database&lt;/code&gt; section, select the relevant Sims database... Don&#039;t click &lt;code&gt;Detach&lt;/code&gt;, just hold there for a moment... I&#039;ve had issues with things using the database which prevents DBAttach from working - whilst I haven&#039;t figured out a nice way to work around this, I do have a dirty way of resolving it - take the database offline, then bring it online again. If you try to detach the database here and nothing happens for 10 minutes+, here&#039;s how to encourage it in a way that will probably make DBAs shudder:
              &lt;ol&gt;
                &lt;li&gt;Open &lt;code&gt;Microsoft SQL Server Management Studio&lt;/code&gt;&lt;/li&gt;
                &lt;li&gt;Log in&lt;/li&gt;
                &lt;li&gt;Right click the relevant Sims database and select &lt;code&gt;Properties&lt;/code&gt;&lt;/li&gt;
                &lt;li&gt;Click &lt;code&gt;Files&lt;/code&gt; and copy the location of the database file. It&#039;ll be something like: &lt;br /&gt;&lt;code&gt;D:\Administration\Server Applications\MS SQL Server 2012\MSSQL11.SIMS2012\MSSQL\DATA&lt;/code&gt; Keep this for later (check that the &lt;code&gt;.ldf&lt;/code&gt; file and the &lt;code&gt;.mdf&lt;/code&gt; file are in the same folder, if they are different take note of both locations)&lt;/li&gt;
                &lt;li&gt;Close the properties, then right click the relevant Sims database and select &lt;code&gt;Tasks&lt;/code&gt; &amp;gt; &lt;code&gt;Take Offline&lt;/code&gt; - might take a while.
                  &lt;ol&gt;
                    &lt;li&gt;If this doesn&#039;t work within 5 minutes, you&#039;ll likely need to stop any sync tools running on the server/database. You can execute &lt;code&gt;EXEC sp_who2&lt;/code&gt; on the database via Microsoft SQL Server Management Studio to see what&#039;s actively querying it&lt;/li&gt;
                  &lt;/ol&gt;
                &lt;/li&gt;
                &lt;li&gt;Right click the same database again once it&#039;s offline, and select &lt;code&gt;bring online&lt;/code&gt;&lt;/li&gt;
                &lt;li&gt;When this has finished, quickly go back to &lt;code&gt;DBAttach&lt;/code&gt; and click &lt;code&gt;Detach&lt;/code&gt; - this again can take a while.&lt;/li&gt;
              &lt;/ol&gt;
            &lt;/li&gt;
          &lt;/ol&gt;
        &lt;/li&gt;
        &lt;li&gt;Open the data directory you grabbed earlier containing the now-detached sims database&lt;/li&gt;
        &lt;li&gt;Copy both the &lt;code&gt;sims.mdf&lt;/code&gt; and &lt;code&gt;sims.ldf&lt;/code&gt; files to the new server, feel free to put them in the root of the data drive or something, these copies will be deleted later&lt;/li&gt;
        &lt;li&gt;Run &lt;code&gt;DBAttach&lt;/code&gt; on the new server as admin
          &lt;ol&gt;
            &lt;li&gt;Server Name: &lt;code&gt;&amp;lt;new server hostname&amp;gt;\sims&lt;/code&gt;&lt;/li&gt;
            &lt;li&gt;Username: &lt;code&gt;sa&lt;/code&gt;&lt;/li&gt;
            &lt;li&gt;Password: &lt;code&gt;&amp;lt;sa password&amp;gt;&lt;/code&gt;&lt;/li&gt;
            &lt;li&gt;Click &lt;code&gt;Connect&lt;/code&gt;&lt;/li&gt;
            &lt;li&gt;Under &lt;code&gt;Attach a Detached Database&lt;/code&gt;, add &lt;code&gt;Sims&lt;/code&gt; as the database name&lt;/li&gt;
            &lt;li&gt;Select the &lt;code&gt;...&lt;/code&gt; button and locate the database file you&#039;ve copied over from the old server&lt;/li&gt;
            &lt;li&gt;Click &lt;code&gt;Attach&lt;/code&gt;
              &lt;ol&gt;
                &lt;li&gt;If you get an error here about missing files, odds are your database files are named differently (for example, &lt;code&gt;sims.mdf&lt;/code&gt; &amp;amp; &lt;code&gt;sims&lt;strong&gt;_log&lt;/strong&gt;.ldf&lt;/code&gt;) - just rename them so they&#039;re both the same, the only difference being the file extension (&lt;code&gt;.mdf&lt;/code&gt; and &lt;code&gt;.ldf&lt;/code&gt;)&lt;/li&gt;
              &lt;/ol&gt;
            &lt;/li&gt;
            &lt;li&gt;Once this is done, check the DB &lt;code&gt;.mdf&lt;/code&gt; and &lt;code&gt;.ldf&lt;/code&gt; files exist in the right directories, then you can go ahead and delete the copies you brought over from the old server&lt;/li&gt;
          &lt;/ol&gt;
        &lt;/li&gt;
        &lt;li&gt;Edit the &lt;code&gt;SIMS.ini&lt;/code&gt; file in &lt;code&gt;c:\windows&lt;/code&gt; and add &lt;code&gt;SIMSSetupsDirectory=S:\Setups&lt;/code&gt; to it&lt;/li&gt;
        &lt;li&gt;Run &lt;code&gt;SIMSApplicationSetup.exe&lt;/code&gt; to install the Sims client
          &lt;ol&gt;
            &lt;li&gt;Install with the defaults&lt;/li&gt;
          &lt;/ol&gt;
        &lt;/li&gt;
        &lt;li&gt;Create &lt;code&gt;connect.ini&lt;/code&gt; in &lt;code&gt;C:\Program Files (x86)\SIMS\SIMS .net&lt;/code&gt; and add:&lt;br&gt;&lt;code&gt;[SIMSConnection]&lt;br&gt;ServerName=.\sims&lt;br&gt;DatabaseName=sims&lt;/code&gt;
          &lt;ol&gt;
            &lt;li&gt;Optionally, if you log in to Sims with windows accounts instead of Sims/SQL ones, which I advise, add &lt;code&gt;ConnectionType=Trusted&lt;/code&gt; to the bottom of the file, too.&lt;/li&gt;
          &lt;/ol&gt;
        &lt;/li&gt;
      &lt;/ol&gt;
      &lt;p&gt;The Sims.Net client should now log in, on the server at least! Test it and make sure accounts and data exist as expected. If, however, you find that you cannot log in via Sims.Net itself (sometimes the database import/export goes a bit wrong, or you&#039;ve not been given any account details from the previous provider) you can easily reset the built in sysman account by following &lt;a href=&quot;/post/reset_sims_net_password/&quot;&gt;this guide&lt;/a&gt;.&lt;/p&gt;
      &lt;p&gt;ESS recommend setting the database &lt;code&gt;Compatibility level&lt;/code&gt; to &lt;code&gt;SQL Server 2012 (110)&lt;/code&gt;. &lt;s&gt;I haven&#039;t tested the difference in much depth, but a cursory anecdotal glance at this resulted in no discernable difference in performance&lt;/s&gt; We have noticed a significant slowdown on reports involving leavers, and database locks on reports involving future students that disappears when the database compatibility level is set to SQL Server 2012 (110) so I now strongly recommend that you do this. To make this change:&lt;/p&gt;
      &lt;ol&gt;
        &lt;li&gt;On the new server, open &lt;code&gt;SQL Management Studio&lt;/code&gt;&lt;/li&gt;
        &lt;li&gt;Expand &lt;code&gt;Databases&lt;/code&gt; in the Object Explorer&lt;/li&gt;
        &lt;li&gt;Right click on the Sims database and select &lt;code&gt;Properties&lt;/code&gt;&lt;/li&gt;
        &lt;li&gt;Select the &lt;code&gt;Options&lt;/code&gt; page&lt;/li&gt;
        &lt;li&gt;Change the &lt;code&gt;Compatibility level&lt;/code&gt; dropdown to &lt;code&gt;SQL Server 2012 (110)&lt;/code&gt;&lt;/li&gt;
        &lt;li&gt;Click &lt;code&gt;OK&lt;/code&gt;&lt;/li&gt;
      &lt;/ol&gt;
      &lt;h3&gt;DocStorage&lt;/h3&gt;
      &lt;ol&gt;
        &lt;li&gt;On the new server, .NET 3.5 is required
          &lt;ol&gt;
            &lt;li&gt;Mount the OS &lt;code&gt;.iso&lt;/code&gt;&lt;/li&gt;
            &lt;li&gt;Open cmd/Powershell as admin&lt;/li&gt;
            &lt;li&gt;Run &lt;code&gt;dism /online /enable-feature /featurename:NetFx3 /all /source:d:\sources\sxs&lt;/code&gt; (changing the &lt;code&gt;/source&lt;/code&gt; argument to reflect the location of the install media)&lt;/li&gt;
          &lt;/ol&gt;
        &lt;/li&gt;
        &lt;li&gt;Copy &lt;code&gt;SIMSDocumentServerInstaller.exe&lt;/code&gt; from the old server (likely in &lt;code&gt;.\sims\setups\&lt;/code&gt; to the new server - the version you have will likely be old, &lt;s&gt;but as far as I can tell it&#039;s been the same version since at least 2009?! Version 1.580.12.0 is the newest I&#039;ve seen - if you know different, let me know.&lt;/s&gt; the newest I have seen is &lt;code&gt;1.580.99.1&lt;/code&gt;.&lt;/li&gt;
        &lt;li&gt;Open cmd/powershell as admin&lt;/li&gt;
        &lt;li&gt;&lt;code&gt;cd&lt;/code&gt; to the location of the installer&lt;/li&gt;
        &lt;li&gt;Run &lt;code&gt;.\SIMSDocumentServerInstaller.exe /INSTALL&lt;/code&gt; (this is case sensitive)&lt;/li&gt;
        &lt;li&gt;Click &lt;code&gt;Next &amp;gt;&lt;/code&gt;&lt;/li&gt;
        &lt;li&gt;Select an appropriate install location - installing to the c:\ drive is fine as this is just the application not the actual storage location - then click &lt;code&gt;Next &amp;gt;&lt;/code&gt;&lt;/li&gt;
        &lt;li&gt;Select a document store and a backup location - This should be on a separate DOCSTORAGE drive you&#039;ve created (&lt;code&gt;F:\&lt;/code&gt;, default allocation size, labelled &lt;code&gt;DocStorage&lt;/code&gt;), or on the C:\ drive if preferred
          &lt;ol&gt;
            &lt;li&gt;The backup folder can live inside the docstorage directory&lt;/li&gt;
          &lt;/ol&gt;
        &lt;/li&gt;
        &lt;li&gt;Communication Protocol: &lt;code&gt;HTTP&lt;/code&gt;&lt;/li&gt;
        &lt;li&gt;Port: &lt;code&gt;8080&lt;/code&gt;&lt;/li&gt;
        &lt;li&gt;Click &lt;code&gt;Next &amp;gt;&lt;/code&gt; and &lt;code&gt;Next &amp;gt;&lt;/code&gt; again&lt;/li&gt;
        &lt;li&gt;Once installed, log in to Sims as an admin&lt;/li&gt;
        &lt;li&gt;Go to &lt;code&gt;Tools&lt;/code&gt; &amp;gt; &lt;code&gt;Setups&lt;/code&gt; &amp;gt; &lt;code&gt;Document Management Server&lt;/code&gt;&lt;/li&gt;
        &lt;li&gt;Remove any existing Document servers and click &lt;code&gt;Add&lt;/code&gt;&lt;/li&gt;
        &lt;li&gt;Enter a description and the FQDN of the Document Server&lt;/li&gt;
        &lt;li&gt;Test the connection&lt;/li&gt;
        &lt;li&gt;If you see a popup saying &lt;code&gt;Server OK!&lt;/code&gt;, click &lt;code&gt;OK&lt;/code&gt; then click Save&lt;/li&gt;
        &lt;li&gt;Navigate to the DOCSTORAGE location on the filesystem&lt;/li&gt;
        &lt;li&gt;Add a new folder, name it the hostname of the Document Server&lt;/li&gt;
        &lt;li&gt;Add a new folder inside that folder, name it the SQL Instance name (&lt;code&gt;Sims&lt;/code&gt; if you followed the setup guide here exactly)&lt;/li&gt;
        &lt;li&gt;On the old server, navigate to the original DOCSTORAGE folder and go through the following directories: &lt;code&gt;&amp;lt;hostname&amp;gt;&lt;/code&gt; &amp;gt; &lt;code&gt;&amp;lt;SQL instance name&amp;gt;&lt;/code&gt;&lt;/li&gt;
        &lt;li&gt;Copy the &lt;code&gt;SIMS&lt;/code&gt; Directory from the old server to the new server, placing it inside the &lt;code&gt;&amp;lt;SQL instance name&amp;gt;&lt;/code&gt; folder
          &lt;ol&gt;
            &lt;li&gt;This might take a while - you can proceed with the SOLUS3 migration below if you wish, just try to not interrupt network or reboot prior to the data transfer completing&lt;br&gt;Here&#039;s a robocopy command you can run to move the data a bit faster than explorer can manage it. Google the parameters used to make sure you&#039;re happy with them, and adjust source/destinations as required:&lt;br /&gt;&lt;code&gt;robocopy &quot;\\oldSimsServer.fqdn\e$\sims shared drive\docstorage\oldserver\oldinstance&quot; &quot;\\newserver\e$\sims shared drive\docstorage\newserver\newinstance&quot; /mt:16 /MIR /copy:DT /ZB /FFT /R:10 /W:5 /dcopy:D&lt;/code&gt;&lt;/li&gt;
          &lt;/ol&gt;
        &lt;/li&gt;
        &lt;li&gt;Test from the Sims client on the server&lt;/li&gt;
      &lt;/ol&gt;
      &lt;h3&gt;Sims.Net Clients&lt;/h3&gt;
      &lt;p&gt;Getting the client to work on network devices is generally fairly easy, but sometimes you can hit errors when you try logging in from a client workstation. The most common error I&#039;ve come across is &lt;code&gt;SIMS Connection failed for Login &amp;lt;username&amp;gt;, reason: 0&lt;/code&gt; which is incredibly vague but essentially means “I can&#039;t see the database!” - why, that depends, but typically it&#039;s some kind of network or connectivity issue.&lt;/p&gt;
      &lt;p&gt;Check the following on the server to increase your chances of clients working right away. Note that sometimes you won&#039;t need to do all of these and some may be already set up.&lt;/p&gt;
      &lt;ol&gt;
        &lt;li&gt;Log on to the new Sims server&lt;/li&gt;
        &lt;li&gt;Open &lt;code&gt;SQL Server 2019 Configuration Manager&lt;/code&gt;&lt;/li&gt;
        &lt;li&gt;Select &lt;code&gt;SQL Server Services&lt;/code&gt; on the left&lt;/li&gt;
        &lt;li&gt;Find the &lt;code&gt;SQL Server Browser&lt;/code&gt; service&lt;/li&gt;
        &lt;li&gt;If the &lt;code&gt;Start Mode&lt;/code&gt; is &lt;code&gt;Disabled&lt;/code&gt; or the service is not running, right click it and go to &lt;code&gt;Properties&lt;/code&gt;&lt;/li&gt;
        &lt;li&gt;Set the &lt;code&gt;Startup type&lt;/code&gt; to &lt;code&gt;Automatic&lt;/code&gt;&lt;/li&gt;
        &lt;li&gt;Start the service by right clicking &lt;code&gt;SQL Server Browser&lt;/code&gt; and selecting &lt;code&gt;Start&lt;/code&gt;&lt;/li&gt;
        &lt;li&gt;Expand &lt;code&gt;SQL Server Network Configuration&lt;/code&gt; &amp;gt; &lt;code&gt;Protocols for &amp;lt;InstanceName&amp;gt;&lt;/code&gt; on the left&lt;/li&gt;
        &lt;li&gt;Double-click on &lt;code&gt;TCP/IP&lt;/code&gt;&lt;/li&gt;
        &lt;li&gt;In the &lt;code&gt;Protocol&lt;/code&gt; tab, change &lt;code&gt;Enabled&lt;/code&gt; to &lt;code&gt;Yes&lt;/code&gt;&lt;/li&gt;
        &lt;li&gt;&lt;code&gt;Apply&lt;/code&gt; &amp;amp; &lt;code&gt;OK&lt;/code&gt;&lt;/li&gt;
        &lt;li&gt;Select &lt;code&gt;SQL Server Services&lt;/code&gt; on the left&lt;/li&gt;
        &lt;li&gt;Restart the &lt;code&gt;SQL Server (&amp;lt;InstanceName&amp;gt;)&lt;/code&gt; service by right clicking on it and selecting &lt;code&gt;Restart&lt;/code&gt;&lt;/li&gt;
        &lt;li&gt;Expand &lt;code&gt;SQL Server Network Configuration&lt;/code&gt; &amp;gt; &lt;code&gt;Protocols for &amp;lt;InstanceName&amp;gt;&lt;/code&gt; on the left&lt;/li&gt;
        &lt;li&gt;Double-click on &lt;code&gt;TCP/IP&lt;/code&gt;&lt;/li&gt;
        &lt;li&gt;In the &lt;code&gt;IP Addresses&lt;/code&gt; tab, scroll down the bottom and make a note of the &lt;code&gt;TCP Dynamic Ports&lt;/code&gt; value then close this window&lt;/li&gt;
        &lt;li&gt;Allow the port you&#039;ve obtained from the &lt;code&gt;SQL Server 2019 Configuration Manager&lt;/code&gt; step in the server firewall - &lt;a href=&quot;https://learn.microsoft.com/en-us/sql/sql-server/install/configure-the-windows-firewall-to-allow-sql-server-access?view=sql-server-ver15#ports-used-by-sql-server&quot;&gt;don&#039;t forget to open any other required SQL ports&lt;/a&gt; (like 1433/tcp)&lt;/li&gt;
      &lt;/ol&gt;
      &lt;p&gt;To point your clients at the new database location, you just need to update the &lt;code&gt;connect.ini&lt;/code&gt; file the clients use. I opt to store the required configuration in the &lt;code&gt;connect.ini&lt;/code&gt; file located in the Sims.Net install directory on the local machine instead of redirecting to a &lt;code&gt;connect.ini&lt;/code&gt; file on a network location.&lt;/p&gt;
      &lt;p&gt;The important lines to update are the &lt;code&gt;ServerName&lt;/code&gt; value, which should be the server name FQDN followed by the instance name (eg: &lt;code&gt;SIMS-SERVER.internal.school.county.sch.uk\Sims&lt;/code&gt;), and if needed update the &lt;code&gt;DatabaseName&lt;/code&gt; value to match the name of the database itself (eg: &lt;code&gt;sims&lt;/code&gt;).&lt;/p&gt;
      &lt;p&gt;The official recommendation is to use SOLUS3 to deploy these files as well as client updates. However, as we all know, SOLUS3 sucks. So let&#039;s not bother using it (for clients). I instead set up a group policy object that writes both the &lt;code&gt;connect.ini&lt;/code&gt; file and the &lt;code&gt;sims.ini&lt;/code&gt; file to the applicable user devices. Just update the &lt;code&gt;connect.ini&lt;/code&gt; file centrally, then force a gpupdate across your devices that have Sims.Net installed already. I also deploy these files as part of the PDQ Deploy deployment, which we&#039;ll cover later.&lt;/p&gt;
      &lt;p&gt;Hopefully Sims.Net is working for your users now. You can rest for a moment, weary traveller. The maintenance period can be over now. People can start using Sims again. Aside from a few things you should get to fairly quickly, outlined in the next section, SOLUS3 server will be needed, and you need to think about deploying updates, but these can wait at least a little while. Unless you have an update you need to roll out right away, of course.&lt;/p&gt;
      &lt;h3&gt;Post-Install setups&lt;/h3&gt;
      &lt;p&gt;Despite working now, some areas of Sims will eventually crop up with new errors, especially in secondaries.&lt;/p&gt;
      &lt;p&gt;Sims keeps some references to the server within the application itself rather than centrally on the database (why?!) which will need to be updated manually. You&#039;ll also note that as part of this migration, we haven&#039;t copied any of the files from the old Sims shared drive. There&#039;s a good reason for this - every Sims shared drive I&#039;ve seen has either been completely unused, or full of stuff that, it turns out, isn&#039;t actually needed. I&#039;ve only ever seen it mapped to all staff as a network drive write all staff having write access and as a result is used as a bit of a dumping ground.&lt;/p&gt;
      &lt;p&gt;There are also some directories that some of your users are probably used to using that may no longer exist in the new shared drive. This guide should get you 98% of the way to a fully functional Sims migration without expensive third party contractors... but it&#039;s these little obscure use cases that will catch you out! If you identify any additional areas where things are hardcoded or directories are needed, let me know and I&#039;ll get them added to this section.&lt;/p&gt;
      &lt;p&gt;Here are the ones I know about:&lt;/p&gt;
      &lt;h4&gt;Sims Examination Organiser&lt;/h4&gt;
      &lt;ol&gt;
        &lt;li&gt;Open Examination Organiser&lt;/li&gt;
        &lt;li&gt;Set the new folder structure if it complains it can&#039;t find the right folders (ideally use the shared &lt;code&gt;Sims$&lt;/code&gt; drive)&lt;/li&gt;
        &lt;li&gt;Go to &lt;code&gt;Tools&lt;/code&gt; &amp;gt; &lt;code&gt;School Setup&lt;/code&gt; &amp;gt; &lt;code&gt;School Details&lt;/code&gt; and set the EDI directories to reflect the new setup if required&lt;/li&gt;
      &lt;/ol&gt;
      &lt;h4&gt;Cover&lt;/h4&gt;
      &lt;p&gt;If you publish your cover timetable to HTML, you&#039;ll need to update the destination that these files save to if they used to save to the old Sims server.&lt;/p&gt;
      &lt;p&gt;You can do this through: &lt;code&gt;Tools&lt;/code&gt; &amp;gt; &lt;code&gt;Cover&lt;/code&gt; &amp;gt; &lt;code&gt;Global Settings&lt;/code&gt; - section 3.&lt;/p&gt;
      &lt;h4&gt;Sims Attendance Letters&lt;/h4&gt;
      &lt;p&gt;If these are suddenly missing for your attendance team they will need to be located on the old server and copied across to the new one. Typically, these are found in:&lt;/p&gt;
      &lt;p&gt;&lt;code&gt;S:\Sims\Attend&lt;/code&gt;&lt;/p&gt;
      &lt;h4&gt;Running Sims on a workstation after an update and it keeps trying to install a bunch of stuff!&lt;/h4&gt;
      &lt;p&gt;Odds are you have installer files in the location indicated by the &lt;code&gt;SIMSSetupsDirectory=&lt;/code&gt; line in &lt;code&gt;C:\Windows\Sims.ini&lt;/code&gt;. You don&#039;t need any of them. Delete them, move them, keep them elsewhere.&lt;/p&gt;
      &lt;p&gt;The only additional file you might want to install alongside &lt;code&gt;SimsApplicationInstaller.exe&lt;/code&gt; is &lt;code&gt;SimsManualInstaller.exe&lt;/code&gt;, which just extracts the manuals (the .pdf file user guides) to the workstation. But I haven&#039;t bothered with it!&lt;/p&gt;
      &lt;h3&gt;SOLUS3 - unfortunately, it does make some stuff easier&lt;/h3&gt;
      &lt;p&gt;Yes, we hate it, but it is convenient to have for getting update files and updating the server itself. At least, in order to do it more smoothly than a manual upgrade. If you&#039;re not lucky enough to have an application deployment tool like PDQ Deploy you will have a better time installing SOLUS3 in order to keep your clients up to date, too.&lt;/p&gt;
      &lt;p&gt;Whilst it is in theory possible to migrate SOLUS3 from an old server to a new one, I have only been able to successfully do this once. Each of the failed attempts failed for a different reason which often defied logic. So I just don&#039;t bother and install it fresh.&lt;/p&gt;
      &lt;h4&gt;Install SOLUS3&lt;/h4&gt;
      &lt;ol&gt;
        &lt;li&gt;Download the installer from &lt;a href=&quot;https://dl.sims.co.uk/SOLUS3Release/SOLUS-3.12.72.zi&quot;&gt;dl.sims.co.uk&lt;/a&gt; (the password for 3.12.72, the version linked to, is currently &lt;code&gt;YhgH7Y2TCvtcdG53&lt;/code&gt; - they publish this password publicly (with the right Google-Fu) so I assume I can too?)&lt;/li&gt;
        &lt;li&gt;Extract all files&lt;/li&gt;
        &lt;li&gt;Run &lt;code&gt;SOLUS3DeploymentServerDatabase.exe&lt;/code&gt;
          &lt;ol&gt;
            &lt;li&gt;Install the required prerequisites&lt;/li&gt;
            &lt;li&gt;Input the SQL Server and sa account details (SQL server = &lt;code&gt;&amp;lt;hostname&amp;gt;.&amp;lt;FQDN&amp;gt;/sims&lt;/code&gt;) - click &lt;code&gt;Test Connection&lt;/code&gt; to verify the details are accurate&lt;/li&gt;
            &lt;li&gt;The next window offers to set up a new SQL account just for Solus - this is a good idea, so generate a new account here. Record the details in your password manager.&lt;/li&gt;
            &lt;li&gt;Install&lt;/li&gt;
          &lt;/ol&gt;
        &lt;/li&gt;
        &lt;li&gt;Run &lt;code&gt;SOLUS3DeploymentService.exe&lt;/code&gt;
          &lt;ol&gt;
            &lt;li&gt;Install any prerequisites&lt;/li&gt;
            &lt;li&gt;Input the SQL Server and &lt;strong&gt;sa account details&lt;/strong&gt;, &lt;em&gt;NOT &lt;/em&gt;the solus3 user created previously (SQL server = &lt;code&gt;&amp;lt;hostname&amp;gt;.&amp;lt;FQDN&amp;gt;/sims&lt;/code&gt;) - click Test Connection to verify the details are accurate&lt;/li&gt;
            &lt;li&gt;Leave deployment port as the default (&lt;code&gt;52965&lt;/code&gt;)&lt;/li&gt;
            &lt;li&gt;If you extracted all files at the start of this SOLUS3 installation process, the Setup File Path for .NET Framework should be accurate. If not, hit &lt;code&gt;Select...&lt;/code&gt; to change it to the location of the required installer file&lt;/li&gt;
            &lt;li&gt;The install location can be the default or change it to the storage drive if preferred&lt;/li&gt;
            &lt;li&gt;Install!&lt;/li&gt;
          &lt;/ol&gt;
        &lt;/li&gt;
        &lt;li&gt;Run &lt;code&gt;SOLUS3DeploymentServerUI.exe&lt;/code&gt;
        &lt;ol&gt;
          &lt;li&gt;Install any prerequisites&lt;/li&gt;
          &lt;li&gt;Input the SQL Server and sa account details, This CAN be the solus3 database user created previously but I have experienced some flakiness with this on occasion and now have reverted to just using the sa account here (SQL server = &lt;code&gt;&amp;lt;hostname&amp;gt;.&amp;lt;FQDN&amp;gt;/sims&lt;/code&gt;) - click Test Connection to verify the details are accurate&lt;/li&gt;
          &lt;li&gt;Specify if you want any icons to be generated on the desktop/etc for the application&lt;/li&gt;
          &lt;li&gt;The install location can be the default or change it to the storage drive if preferred - ideally put it in the same place as the previous install if you&#039;re also installing it on the same machine&lt;/li&gt;
          &lt;li&gt;Install!&lt;/li&gt;
        &lt;/ol&gt;
        &lt;/li&gt;
      &lt;/ol&gt;
      &lt;h4&gt;SOLUS3 Configuration&lt;/h4&gt;
      &lt;ol&gt;
        &lt;li&gt;Run &lt;code&gt;SOLUS 3 Deployment Server UI&lt;/code&gt; from the start menu or the desktop
          &lt;ol&gt;
            &lt;li&gt;Enter the &lt;code&gt;Establishment Number&lt;/code&gt; and &lt;code&gt;Postcode&lt;/code&gt; of the school, then click &lt;code&gt;Verify&lt;/code&gt;&lt;/li&gt;
            &lt;li&gt;Once the school Address is populated, click &lt;code&gt;Register&lt;/code&gt;&lt;/li&gt;
            &lt;li&gt;You&#039;ll be asked for a &lt;code&gt;Registration Password&lt;/code&gt; - This would have been set on the previous install so you may need to get this from your current support provider or ESS directly if you don&#039;t have it&lt;/li&gt;
          &lt;/ol&gt;
        &lt;/li&gt;
        &lt;li&gt;Once registered you&#039;ll be taken to the &lt;code&gt;Settings &amp;gt; SOLUS3&lt;/code&gt; page to complete the SOLUS config:
          &lt;ol&gt;
            &lt;li&gt;Service host: click the dots and move the server into the right column&lt;/li&gt;
            &lt;li&gt;Update repository (I create a directory, &#039;&lt;code&gt;Solus3Setups&lt;/code&gt;&#039; in the shared &lt;code&gt;sims$&lt;/code&gt; folder for this and share it as &#039;&lt;code&gt;Solus3Setups$&lt;/code&gt;&#039; - You will need to give &#039;&lt;code&gt;SYSTEM&lt;/code&gt;&#039; write access to the share) and click &lt;code&gt;Validate&lt;/code&gt;&lt;/li&gt;
            &lt;li&gt;Click &lt;code&gt;save&lt;/code&gt;&lt;/li&gt;
            &lt;li&gt;Next, go to &lt;code&gt;Environment&lt;/code&gt; &amp;gt; &lt;code&gt;Targets&lt;/code&gt; &amp;gt; &lt;code&gt;Servers&lt;/code&gt; and click &lt;code&gt;Add&lt;/code&gt;
              &lt;ol&gt;
                &lt;li&gt;Server name: Find and select the new server&lt;/li&gt;
                &lt;li&gt;Instance name: SQL instance name here (&lt;code&gt;sims&lt;/code&gt; if you followed this guide)&lt;/li&gt;
                &lt;li&gt;Binn folder: paste the location of the Sims Binn folder here (&lt;code&gt;C:\Program Files\Microsoft SQL Server\MSSQL15.SIMS\MSSQL\Binn&lt;/code&gt; if you followed this guide)&lt;/li&gt;
                &lt;li&gt;Click save and enter admin credentials to save the config&lt;/li&gt;
              &lt;/ol&gt;
            &lt;/li&gt;
            &lt;li&gt;Do the same but for the &lt;code&gt;Databases&lt;/code&gt; tab and the &lt;code&gt;Services&lt;/code&gt; tab, adding the &lt;code&gt;Sims File Server&lt;/code&gt;, pointing at the local location of the Sims shared directory (&lt;code&gt;E:\Sims&lt;/code&gt; for example)
              &lt;ol&gt;
                &lt;li&gt;You might want to do the DMS (DocumentManagementServer) too, in which case you should make a new Sims account with &lt;code&gt;Returns Manager&lt;/code&gt; and &lt;code&gt;System Manager&lt;/code&gt; permissions&lt;/li&gt;
              &lt;/ol&gt;
            &lt;/li&gt;
            &lt;li&gt;Navigate to &lt;code&gt;Settings&lt;/code&gt; &amp;gt; &lt;code&gt;SOLUS3&lt;/code&gt; &amp;gt; &lt;code&gt;SOLUS&lt;/code&gt; and define any missing fields&lt;/li&gt;
            &lt;li&gt;Navigate to &lt;code&gt;Upgrades&lt;/code&gt; &amp;gt; &lt;code&gt;Update Library&lt;/code&gt; to see all your updates&lt;/li&gt;
            &lt;li&gt;Try downloading the version of Sims that matches the one running on clients&lt;/li&gt;
            &lt;li&gt;Navigate to &lt;code&gt;Environment&lt;/code&gt; &amp;gt; &lt;code&gt;Configure Workstations&lt;/code&gt;, then along the bottom select &lt;code&gt;sims.ini&lt;/code&gt;
              &lt;ol&gt;
                &lt;li&gt;In the shared directory, create a new folder (&lt;code&gt;ini files&lt;/code&gt; for example) and then create a new &lt;code&gt;sims.ini&lt;/code&gt; file.&lt;/li&gt;
                &lt;li&gt;Copy the config from the old &lt;code&gt;sims.ini&lt;/code&gt; file on the old server to this new file, checking that the data in it is still accurate&lt;/li&gt;
                &lt;li&gt;Select this file in SOLUS, leaving the two installation options as &lt;code&gt;use default&lt;/code&gt;&lt;/li&gt;
              &lt;/ol&gt;
            &lt;/li&gt;
            &lt;li&gt;In the same Configure Workstations window, select the &lt;code&gt;connect.ini&lt;/code&gt; tab along the bottom
              &lt;ol&gt;
                &lt;li&gt;In the shared directory, create a new &lt;code&gt;connect.ini&lt;/code&gt; file&lt;/li&gt;
                &lt;li&gt;Populate this file with the relevant data - if you have working clients, just grab a copy from one of them&lt;/li&gt;
                &lt;li&gt;Select this file in SOLUS, ensuring that you &lt;code&gt;overwrite&lt;/code&gt; and that the other options are accurate. I like to set the &lt;code&gt;ConnectionType&lt;/code&gt; to &lt;code&gt;Trusted&lt;/code&gt; because by default, SQL authentication isn&#039;t as secure as Windows and this gives clients the option of logging in with their Windows session instead of relying on remembering/recording separate Sims credentials
                  &lt;ol&gt;
                    &lt;li&gt;To set up an account to log in with the Windows credentials instead of needing to supply a username password combo, just change the username in System Manager to be &lt;code&gt;&amp;lt;domain&amp;gt;\&amp;lt;username&amp;gt;&lt;/code&gt; (eg: &lt;code&gt;internal.school\jsmith&lt;/code&gt;) and the interface will update&lt;/li&gt;
                  &lt;/ol&gt;
                &lt;/li&gt;
              &lt;/ol&gt;
            &lt;/li&gt;
            &lt;li&gt;Turn on Solus by clicking the &#039;Off&#039; toggle in the top right into the &#039;On&#039; position. Add a couple test endpoints to begin deploying SOLUS agent and the current version of Sims&lt;/li&gt;
          &lt;/ol&gt;
        &lt;/li&gt;
      &lt;/ol&gt;
      &lt;p&gt;If at this point it works, you should be golden. If you need to deploy the SOLUS3 agent out to your workstations, do this now, however if you want to avoid the slowness of SOLUS3 and deploy the Sims.Net client via PDQ Deploy...&lt;/p&gt;
      &lt;h3&gt;Deploy Sims.Net Client via PDQ Deploy&lt;/h3&gt;
      &lt;p&gt;Say “No!” to SOLUS3 for client updates and use PDQ Deploy instead. I use this, and it cuts down our large-school-wide Sims upgrades from 3+ hours (with inevitable client issues) to being complete in less than 30 minutes.&lt;/p&gt;
      &lt;p&gt;I am using a licensed version of PDQ Deploy which makes this easier (multiple steps in a deployment! Retry queue! Yay!) but you could replicate it with the free version easily - just cut down on the steps to one job for deploying the file (which you do ahead of time) and a second to actually execute the powershell that runs the upgrade. You might need to get creative with how you do this on the free version. Once I can get at a license-free copy of PDQ I&#039;ll figure out the best path to achieving this.&lt;/p&gt;
      &lt;p&gt;There are some odd looking steps here - as we go I&#039;ll explain the reasoning for each.&lt;/p&gt;
      &lt;h4&gt;Setting up the PDQ Package&lt;/h4&gt;
      &lt;ol&gt;
        &lt;li&gt;Open PDQ Deploy&lt;/li&gt;
        &lt;li&gt;Create a new deployment and name it appropriately&lt;/li&gt;
        &lt;li&gt;Step 1: Copying &lt;code&gt;SIMSApplicationSetup.exe&lt;/code&gt; to the target&lt;br&gt;&lt;strong&gt;Yeah, but why?&lt;/strong&gt; Due to the way we need to execute this file to initiate the install, we copy it to the target first.
          &lt;ol&gt;
            &lt;li&gt;Pull the &lt;code&gt;SIMSApplicationSetup.exe&lt;/code&gt; file from the extracted files from SOLUS and place it in the PDQ repository&lt;/li&gt;
            &lt;li&gt;Create a &lt;code&gt;File Copy&lt;/code&gt; step in the Package&lt;/li&gt;
            &lt;li&gt;Single File selected&lt;/li&gt;
            &lt;li&gt;Source: Select the &lt;code&gt;SIMSApplicationSetup.exe&lt;/code&gt; file in the PDQ Repository&lt;/li&gt;
            &lt;li&gt;Target Folder: Anywhere, I will use &lt;code&gt;C:\Temp\&lt;/code&gt;&lt;/li&gt;
            &lt;li&gt;Overwrite Existing Files: Tick&lt;/li&gt;
            &lt;li&gt;Ignore Overwrite Errors: Untick&lt;/li&gt;
          &lt;/ol&gt;
        &lt;/li&gt;
        &lt;li&gt;Step 2: Copy &lt;code&gt;connect.ini&lt;/code&gt;&lt;br&gt;&lt;strong&gt;Yeah, but why?&lt;/strong&gt; SOLUS3 deploys this usually, but we&#039;re not using that! You can also deploy the connect.ini file via Group Policy but this covers the “new device build” use case
          &lt;ol&gt;
            &lt;li&gt;Pull the &lt;code&gt;connect.ini&lt;/code&gt; file from the server or one of your working clients and copy it into the the PDQ repository&lt;/li&gt;
            &lt;li&gt;Create a &lt;code&gt;File Copy&lt;/code&gt; step in the Package&lt;/li&gt;
            &lt;li&gt;Single File selected&lt;/li&gt;
            &lt;li&gt;Source: Select the &lt;code&gt;connect.ini&lt;/code&gt; file in the PDQ Repository&lt;/li&gt;
            &lt;li&gt;Target Folder: &lt;code&gt;C:\Program Files (x86)\Sims\Sims .net\&lt;/code&gt;&lt;/li&gt;
            &lt;li&gt;Overwrite Existing Files: Ticked&lt;/li&gt;
            &lt;li&gt;Ignore Overwrite Errors: Ticked&lt;/li&gt;
          &lt;/ol&gt;
        &lt;/li&gt;
        &lt;li&gt;Step 3: Copy &lt;code&gt;SIMS.ini&lt;/code&gt;&lt;br&gt;&lt;strong&gt;Yeah, but why?&lt;/strong&gt; Same reason as the previous step!
          &lt;ol&gt;
            &lt;li&gt;Pull the &lt;code&gt;SIMS.ini&lt;/code&gt; file from the server or one of your working clients and copy it into the the PDQ repository&lt;/li&gt;
            &lt;li&gt;Create a &lt;code&gt;File Copy&lt;/code&gt; step in the Package&lt;/li&gt;
            &lt;li&gt;Single File selected&lt;/li&gt;
            &lt;li&gt;Source: Select the &lt;code&gt;SIMS.ini&lt;/code&gt; file in the PDQ Repository&lt;/li&gt;
            &lt;li&gt;Target Folder: &lt;code&gt;C:\Windows\&lt;/code&gt;&lt;/li&gt;
            &lt;li&gt;Overwrite Existing Files: Ticked&lt;/li&gt;
            &lt;li&gt;Ignore Overwrite Errors: Ticked&lt;/li&gt;
          &lt;/ol&gt;
        &lt;/li&gt;
        &lt;li&gt;Step 4: Kill &lt;code&gt;pulsar.exe&lt;/code&gt;&lt;br&gt;&lt;strong&gt;Yeah, but why?&lt;/strong&gt; If a target is running &lt;code&gt;pulsar.exe&lt;/code&gt; - the main sims executable - sims will think it has updated but some files will be locked, so we kill it just before executing the upgrade. I see lots of people try and log in, see the &lt;code&gt;Invalid Database&lt;/code&gt; error, and just leave it. If we don&#039;t kill &lt;code&gt;pulsar.exe&lt;/code&gt; the upgrade will report as successful but will never truly succeed for that target. You may want to add additional &lt;code&gt;.exe&lt;/code&gt;&#039;s here as you find them (please tell me about that) but for 99% of cases, shooting &lt;code&gt;pulsar.exe&lt;/code&gt; in the head is enough.
          &lt;ol&gt;
            &lt;li&gt;Create a &lt;code&gt;Command&lt;/code&gt; step in the package&lt;/li&gt;
            &lt;li&gt;Paste the following into the Details tab text box:&lt;br&gt;&lt;code&gt;tasklist | find /i &quot;pulsar.exe&quot; &amp;amp;&amp;amp; taskkill /im pulsar.exe /F&lt;/code&gt;&lt;br&gt;&lt;strong&gt;Yeah, but why?&lt;/strong&gt; We don&#039;t just run &lt;code&gt;taskkill /im puslar.exe /f&lt;/code&gt; on its own because if &lt;code&gt;pulsar.exe&lt;/code&gt; isn&#039;t running when we try to &lt;code&gt;taskkill&lt;/code&gt; it is considered a failure and will set &lt;code&gt;errorlevel&lt;/code&gt; to &lt;code&gt;1&lt;/code&gt;, which PDQ will interpret as a fail. By executing the command in this way - passing piped output from &lt;code&gt;tasklist&lt;/code&gt; - we never hit &lt;code&gt;errorlevel&lt;/code&gt; &lt;code&gt;1&lt;/code&gt; whether the task exists to be killed or not, because &lt;code&gt;tasklist&lt;/code&gt; doesn&#039;t set an exit code, so PDQ is happy either way and will just continue on its merry way with the next step!&lt;/li&gt;
          &lt;/ol&gt;
        &lt;/li&gt;
        &lt;li&gt;Step 5: execute &lt;code&gt;SIMSApplicationSetup.exe&lt;/code&gt; via powershell&lt;br&gt;&lt;strong&gt;Yeah, but why?&lt;/strong&gt; When I execute the install directly via the PDQ agent, about 15-20% of installs fail - no data gets written to the drive at all. I have no idea why this happens right now, but making powershell execute the same command results in 100% success rate (so far). It also has another advantage - typically PDQ will wait for a step to complete before moving on. If you launch the installer via powershell, the step according to PDQ is “run this powershell command” - once it&#039;s done that, PDQ will proceed to the next step, even though the installer has only just launched and probably hasn&#039;t started actually upgrading any files. The result of this small change is that you power through your PDQ Deploy queue &lt;em&gt;way&lt;/em&gt; faster than if you had to wait for the installer to finish each time. Clients get their update faster and can get back to their jobs with way less friction and waiting around.
          &lt;ol&gt;
            &lt;li&gt;Create a &lt;code&gt;Powershell&lt;/code&gt; step in the package&lt;/li&gt;
            &lt;li&gt;Paste the following into the Details tab text box onto a single line - note the ampersand (&lt;code&gt;&amp;amp;&lt;/code&gt;) at the start:&lt;br&gt;&lt;code&gt;&amp;amp; &quot;C:\Temp\SIMSApplicationSetup.exe&quot; /S {QuietMode} [SIMSDirectory]=&quot;\\&amp;lt;server FQDN&amp;gt;\Sims$&quot; [SIMSDotNetDirectory]=&quot;C:\Program Files (x86)\SIMS\Sims .net\&quot;&lt;/code&gt;
              &lt;ul&gt;
                &lt;li&gt;Make sure you change &lt;code&gt;&amp;lt;server FQDN&amp;gt;&lt;/code&gt; in the above command to the hostname and domain of the server (eg: &lt;code&gt;sims-server.internal.school.county.sch.uk&lt;/code&gt;)&lt;/li&gt;
              &lt;/ul&gt;
            &lt;/li&gt;
          &lt;/ol&gt;
        &lt;/li&gt;
        &lt;li&gt;Step 6: Display install notification&lt;br&gt;&lt;strong&gt;Yeah, but why?&lt;/strong&gt; This simply informs the user that the install is happening so they hopefully don&#039;t open the Sims application and break the upgrade. Staff may see Sims close (as part of a previous step) and try to re-open it, breaking the upgrade. You could display this message before executing the installer file rather than after if you prefer.
          &lt;ol&gt;
            &lt;li&gt;Create a &lt;code&gt;Message&lt;/code&gt; step in the package&lt;/li&gt;
            &lt;li&gt;Type in a suitable message to display to users, something like:&lt;br&gt;&lt;code&gt;Sims.Net is currently being upgraded. Please don&#039;t click OK on this message, or open Sims.Net, until this message disappears.&lt;/code&gt;&lt;/li&gt;
            &lt;li&gt;Show for: 240 seconds&lt;br&gt;&lt;strong&gt;Yeah, but why?&lt;/strong&gt; The install will (should?) never take this long, but I&#039;m accounting for edge cases and older hardware. A fresh install of Sims will take longer than an upgrade, as an upgrade only writes changed files and skips files that are the same.&lt;/li&gt;
            &lt;li&gt;Wait for user to click OK: Unticked&lt;/li&gt;
          &lt;/ol&gt;
        &lt;/li&gt;
      &lt;/ol&gt;
      &lt;p&gt;Deploy this to a client or two and verify that it works.&lt;/p&gt;
      &lt;p&gt;When it comes to rolling out a version upgrade, you just need to extract the files from SOLUS3 and overwrite the &lt;code&gt;SIMSApplicationSetup.exe&lt;/code&gt; file in the PDQ repository, then push out the update to all your client devices. Easy.&lt;/p&gt;
      &lt;p&gt;Patches are a bit different - they are typically just self extracting executables which replace a few files in the Sims directory. These can be easily deployed with the File Copy package step in PDQ. Just throw together another package or add it as a step to the existing upgrade package as required.&lt;/p&gt;
      &lt;p&gt;Hope this helps speed your deployments up!&lt;/p&gt;
      &lt;footer&gt;
        &lt;h3&gt;Changelog&lt;/h3&gt;
        &lt;p&gt;Any noteworthy changes will be highlighted here if and when they happen! If you notice any mistakes, misunderstandings or have a better way to do things, let me know with a comment at the end.&lt;/p&gt;
        &lt;p&gt;Consider this article &lt;em&gt;accurate and working but not necessarily best practice&lt;/em&gt; with the current state of Sims.Net on the date of the latest change in the following list.&lt;/p&gt;
        &lt;h4&gt;2024-08-07&lt;/h4&gt;
        &lt;ul&gt;
          &lt;li&gt;Added some details about the database Compatibility level in MSSQL, which I now recommend you change to &lt;code&gt;SQL Server 2012 (110)&lt;/code&gt;&lt;/li&gt;
        &lt;/ul&gt;
        &lt;h4&gt;2024-03-13&lt;/h4&gt;
        &lt;ul&gt;
          &lt;li&gt;Added &lt;a href=&quot;/post/reset_sims_net_password/&quot;&gt;link to article about resetting the sysman account&lt;/a&gt; in case you don&#039;t have any account details but do have database access&lt;/li&gt;
          &lt;li&gt;Added note about ensuring database filenames match when importing via DbAttach&lt;/li&gt;
          &lt;li&gt;Added some details about the DMS config and &lt;code&gt;connect.ini&lt;/code&gt; Trusted authentication&lt;/li&gt;
          &lt;li&gt;Tidied up some redundant steps in the Sims.Net Clients and Solus Config sections&lt;/li&gt;
        &lt;/ul&gt;
        &lt;h4&gt;2023-10-25&lt;/h4&gt;
        &lt;ul&gt;
          &lt;li&gt;&#039;Sims.Net Clients&#039; section expanded with some additional required steps needed to get clients connecting in many cases&lt;/li&gt;
          &lt;li&gt;Added link to &lt;a href=&quot;https://learn.microsoft.com/en-US/sql/database-engine/configure-windows/manage-certificates?view=sql-server-ver16#provision-single-server-cert&quot;&gt;encrypting the connection to the SQL server by default&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;Updated relevant steps to align with SQL 2019 install instead of 2016&lt;/li&gt;
          &lt;li&gt;Added short section on setting the database &lt;code&gt;Compatibility level&lt;/code&gt; to &lt;code&gt;SQL Server 2012 (110)&lt;/code&gt;, as per ESS recommendations&lt;/li&gt;
          &lt;li&gt;Fixed a malformed parameter value in the PDQ powershell install command step&lt;/li&gt;
          &lt;li&gt;Grammar/spelling fixes, general tidying up and some minor clarifications &lt;/li&gt;
        &lt;/ul&gt;
        &lt;h4&gt;2023-10-23&lt;/h4&gt;
        &lt;ul&gt;
          &lt;li&gt;I have learned that SQL 2019 &lt;em&gt;is&lt;/em&gt; in fact officially supported, we&#039;re not limited to 2016 SP3. I have updated the article to highlight this and on my next migration will ensure all the steps align&lt;/li&gt;
          &lt;li&gt;Corrected some errors in the text&lt;/li&gt;
          &lt;li&gt;Added some SQL Express-specific instructions where they differ from SQL Standard installation&lt;/li&gt;
        &lt;/ul&gt;
        &lt;h4&gt;2023-10-12&lt;/h4&gt;
        &lt;ul&gt;
          &lt;li&gt;First version posted&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/footer&gt;
    &lt;/article&gt;

</description>
      <pubDate>2023-10-12</pubDate>
      <link>https://fyr.io/post/migrate_sims_net_server</link>
      <guid isPermaLink="true">https://fyr.io/post/migrate_sims_net_server</guid>
      <category>tech</category>
      <category>sims.net</category>
      <category>sims sucks</category>
      <category>solus</category>
      <category>database</category>
      <category>migration</category>
      <category>software</category>
      <category>this is hell</category>
      <category>i hate this so much</category>
      <category>windows</category>
      <category>MSSQL</category>
    </item>
     <item>
      <title>Implement But Never Move</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Implement But Never Move&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Friday 30th of June 2023 at 00:00&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;I really appreciate well-written implementation guides for server-client software, but what really gets me excited is seeing &lt;em&gt;migration&lt;/em&gt; guides for when you need to decommission that legacy OS and move onto something supported and current. Even the bad migration guides are great to have, but some that I&#039;ve come across are works of art - numbered-list instructions that are clear and concise, incorrect assumptions busy sysadmins have during the migration are highlighted then corrected, screenshots where required, mid-migration tests to ensure things are going as smoothly as they seem... ahh, dreamy.&lt;/p&gt;
      &lt;p&gt;One of my personal pet peeves, however, is purchased server based software products that &lt;em&gt;don&#039;t&lt;/em&gt; come with any migration guidance or instructions.&lt;/p&gt;
      &lt;p&gt;I&#039;m spending a lot of time at the moment moving niche (read: there&#039;s only a couple of options and they all suck) and poorly made software from older server OS&#039;s to newer ones, and whilst some of them are fine and can be figured out right away, most of them have... issues. Typically you can just install $dumpsterFire fresh to the new server, dump the existing database and throw it over the fence to the new server (yes, some of this terrible software &lt;em&gt;rEqUiReS tHe DaTaBaSe Is oN tHe SaMe SeRvEr&lt;/em&gt;), maybe I&#039;ll need to update some config files and point the new install at the existing database. One CNAME change later for the clients and you&#039;re golden. Simple stuff.&lt;/p&gt;
      &lt;p&gt;Sometimes, however, you need to perform some forbidden magical incantations, and the kick to the teeth in many cases is that nobody in $org will write down what they are publicly. So you gotta pick the phone up and get some overworked and underpaid $tech at $org to walk you through the process, shooting down the constant stream of bugs and errors that occur along the way due to the shoddy quality of $dumpsterFire with bullets of solidified experience (that&#039;ll no doubt be lost when $tech has had enough and leaves for greener pastures.)&lt;/p&gt;
      &lt;p&gt;Or, even worse than that... the $org requires payment for a migration because migrations aren&#039;t considered &quot;support&quot; and are &quot;optional&quot;. Yes, it is support. And no, it isn&#039;t optional.&lt;/p&gt;
      &lt;p&gt;Dear organisations that explicitly hide their migration guides to force an already-paying customer to pay you yet again to migrate your horrible software from one server to another (immoral), that INSIST that you &quot;must TeamViewer in to do this&quot; (in business hours only!?), that there&#039;s no possible way anyone else can do it (false and stupid), that require DA/root accounts (you don&#039;t), that have to be installed on a Domain Controller (I&#039;m crying), that MUST have unmitigated 24/7 access by installing un-licensed teamviewer (Oh no you won&#039;t)... There&#039;s even one software solution here which &quot;requires&quot; a physical server. In 2023. The software won&#039;t work in a virtual machine. (Oh, wait, spoiler: &lt;em&gt;it works fine in a VM and has been working fine for over a decade&lt;/em&gt;)&lt;/p&gt;
      &lt;p&gt;To those organisations I say: No. Do better.&lt;/p&gt;
      &lt;p&gt;Because I&#039;m writing this all down, I&#039;m recording my screen when you connect to solve unhelpful errors in your hidden log files, I&#039;m fixing your stupid permission requirements and immediately uninstalling any additional or third party crap that isn&#039;t a business requirement.&lt;/p&gt;
      &lt;p&gt;And I&#039;m publishing those guides online for free.&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2023-06-30</pubDate>
      <link>https://fyr.io/post/implement_but_never_move</link>
      <guid isPermaLink="true">https://fyr.io/post/implement_but_never_move</guid>
      <category>tech</category>
      <category>migration</category>
      <category>documentation</category>
      <category>software</category>
    </item>
     <item>
      <title>Duct Tape</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Duct Tape&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Monday 19th of June 2023 at 00:00&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;Back when I did end user support as my primary job I&#039;d often ask myself &quot;if there were no helpdesk tickets, what would I work on right now?&quot;&lt;/p&gt;
      &lt;p&gt;The list I&#039;d come up with was generally fairly short and changed each time I found myself pondering it, typically because the needs of the environment changed quite frequently, but it would also contain a few regulars - patch this, upgrade that, move that thing from there to there. Stuff that wouldn&#039;t have an immediately beneficial impact but should probably happen. These are all good things to do and I encourage them to be part of the daily workload of a team.&lt;/p&gt;
      &lt;p&gt;The dynamic entries in the list were always something to do with making something better, getting rid of an annoyance or frustration. These are the things that do actually have immediate ROI and I would argue they should have time spent on them even during high ticket load periods but often find themselves being ignored because... Well, it ain&#039;t broken. It&#039;s just not great.&lt;/p&gt;
      &lt;p&gt;The issue is, as hinted at, this list changes often. Sure you can keep notes, an ideas board or submit a ticket, but when you do finally get an hour to look at the list, what&#039;s on it doesn&#039;t seem that critical.&lt;/p&gt;
      &lt;p&gt;I just read an older post on rachelbythebay.com that summarised this and explains what it means in five words:&lt;/p&gt;
      &lt;p&gt;&lt;a href=&quot;https://rachelbythebay.com/w/2018/03/23/ducttape/&quot; target=&quot;_blank&quot;&gt;Look for the duct tape&lt;/a&gt;.&lt;/p&gt;
      &lt;p&gt;Read it (and whilst you&#039;re there, if you don&#039;t already consume that content take a look at some other posts - very valuable information and opinions contained within)&lt;/p&gt;
      &lt;p&gt;Essentially, find the things people have whipped up a quick workaround for and are using and fighting with now, whether that&#039;s within your team or another. Spend some time making that thing better, or resolve the problem at source if possible. You&#039;ll not only make that person or team happy, you&#039;ll also actively solve a now problem that will probably directly impact success, however that&#039;s measured.&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2023-06-19</pubDate>
      <link>https://fyr.io/post/duct_tape</link>
      <guid isPermaLink="true">https://fyr.io/post/duct_tape</guid>
      <category>life</category>
      <category>duct tape</category>
      <category>effectiveness</category>
      <category>workarounds</category>
    </item>
     <item>
      <title>Receiving Unsolicited Blogging Advice</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Receiving Unsolicited Blogging Advice&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Monday 30th of January 2023 at 00:00&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;TL;DR: me post more!!1!&lt;/p&gt;
      &lt;p&gt;I recently read &lt;a href=&quot;https://manuelmoreale.com/unsolicited-blogging-advice&quot; target=&quot;_blank&quot;&gt;a blog post about a blog post&lt;/a&gt; and came to realise that I too struggle to post stuff on this very blog. I am conscious that I suffer from the curse of &quot;I must make everything interesting!&quot; but... maybe I don&#039;t have to suffer any more. Maybe I don&#039;t have to care. After all, if you don&#039;t like it, you don&#039;t have to read it.&lt;/p&gt;
      &lt;p&gt;I started this corner of the web to document my renovation and tech stuff for me and myself only. And Ben. (&lt;em&gt;Hi Ben&lt;/em&gt;) But somewhere along the way it started to be about what other people find interesting, and... nothing really felt big or important or interesting enough. Hence the lack of posts recently.&lt;/p&gt;
      &lt;p&gt;So, a reset. Time to post more. They may not fit the predetermined categories, they may be completely uninteresting, but it turns out that not only is that okay, it&#039;s what I intended originally anyway. They&#039;re interesting to me, and besides I suspect I read these posts more than anyone else. Maybe, just maybe, someone else will find something a little bit interesting or useful too? That&#039;ll be a positive bonus.&lt;/p&gt;
      &lt;p&gt;The algorithms and view counts hold no sway. I forbid thee!&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2023-01-30</pubDate>
      <link>https://fyr.io/post/receiving_unsolicited_blogging_advice</link>
      <guid isPermaLink="true">https://fyr.io/post/receiving_unsolicited_blogging_advice</guid>
      <category>website</category>
      <category>blogging</category>
      <category>confidence</category>
      <category>post moar</category>
    </item>
     <item>
      <title>Interruptions In Tech Support</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Interruptions In Tech Support&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Monday 30th of January 2023 at 00:00&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;I recently read some posts on the damaging effects of interruptions (in humans) and wanted to explore this in the context of my current job - a sysadmin across multiple k-12/ks1-5 educational environments - and offer some thoughts on how to change things.&lt;/p&gt;
      &lt;p&gt;First off, the core educational environment itself is pretty much built around interruptions. You generally have a single teacher in a room of a few dozen kids. I&#039;m simplifying here, but the teachers essentially have particular targets to hit each lesson (&quot;teach this thing&quot;, &quot;make sure the group produces this result&quot;, etc) and these lessons are typically somewhere around an hour long, though from what I&#039;ve seen these lessons are shrinking in length to squeeze more different material into a day/week. Teachers have to hop between different targets every hour (or less) as the group they teach changes (the students have to similarly hop, but across entire subject ranges. Is there any surprise that, combined with the usual suspects (advertising, media, social medias&#039; infinite scroll, etc), young people have shorter attention spans?) Often these differing targets are in the same subject (Science, or English, or Mathematics, and so on) however different classes are at different points in the curriculum and even if some of those classes are at the same point in the curriculum (the students are of the same age) they&#039;re often grouped by capability - some classes need more time and effort and revision of material than others, whilst the top groups delve into subjects at a deeper level.&lt;/p&gt;
      &lt;p&gt;A teacher has an hour to achieve a goal before moving on to the next goal with a different group. During this hour, they will typically outline the thing to be done or learned, then work with the class to help them get there. This naturally results in questions (interruptions) continuously. It&#039;s in the teachers best interest to answer these questions well to ensure that individuals maintain pace with the group, but paradoxically the more questions that are asked the slower the group can move forward, as spending time explaining material again for the benefit of one means that those who do understand it already are not really learning for the time period it takes to get the one who asked caught up. Thus in my uneducated opinion, the priority for the teacher is to get the effectiveness of the first explanation of any material perfected (as closely as possible given the ability of the class) ensuring that most of the time most of the class (if not all) comprehends it to a suitable degree on the first attempt. This minimises interruptions and enhances learning for all, as the class learning velocity is kept high.&lt;/p&gt;
      &lt;p&gt;This problem is outside the scope of what I want to talk about but it is relevant, because one side effect of this we-must-acknowledge-interruptions behaviour is that I feel it becomes habit. Being interrupted a lot becomes the norm, and it is my opinion that this encourages the teaching individual to also be the one interrupting others more.&lt;/p&gt;
      &lt;p&gt;Let&#039;s go back to the classroom. You have one hour to teach a group of 33 twelve year olds about some algebra. You fire up your laptop and switch the projector on to find that no matter how you try you can&#039;t get an image to appear on the board. This unplanned interruption has immediately taken up brain power and, critically, time, even if you have backup plans for each and every lesson. As you have chosen to use the technology resource you have clearly decided that it is important, so we can assume that without that resource your teaching and the students learning will be less effective. You are after a fix for this problem quickly. The quality of your teaching is likely somewhat diminished and the longer this goes on the worse this gets.&lt;/p&gt;
      &lt;p&gt;So you do what anyone in your situation does - you try and get it fixed. This is where tech support comes in. You make a phone call or send an email to that tech you like, or if you&#039;re a hero, log a ticket on the ticketing system. The hero did the right thing - logging a ticket. No complaints from me there. (Pro tip for techs reading this: make every avenue of communication a ticket generating event!)&lt;/p&gt;
      &lt;p&gt;However emailing an individual or phoning interrupts the support techs. This is often warranted and is always understandable, and your job is a constant stream of interruptions so one more won&#039;t hurt, right? This is where, unfortunately, tech support suffer. We operate in the opposite universe. Your tech problem, as a teacher, is probably one of your biggest current problems. And we totally get that. Promise. We really do. But... it probably isn&#039;t &lt;em&gt;our&lt;/em&gt; biggest problem and is almost certainly not something we&#039;re going to want to deal with right away.&lt;/p&gt;
      &lt;p&gt;An interruption to us does not progress anything, it in fact stops everything. If we are in the middle of resolving another problem, being forced to stop for a reason (whether it&#039;s to deal with a major issue or respond to a phone ringing or being pulled out of the moment by a name being called) causes us to disconnect from &quot;&lt;em&gt;the flow&lt;/em&gt;&quot; and at best mentally change gears, at worse slow the brain CPU way the heck down. This is jarring and as evidenced by the many articles published about interruptions can in fact be damaging, both mentally and economically.&lt;/p&gt;
      &lt;p&gt;The more this happens the less effective overall an individual or a team can be. I argue that an ops team lead (Helpdesk Manager, IT Director, etc) should put work into minimising interruptions for the betterment of the team and yourself, regardless of your vocation or the objectives of the team. Here&#039;s what I propose you can do to help within your tech support team regardless of work environment... Though you will likely need managerial sign off on some or all of these. It&#039;s worth noting that I didn&#039;t come up with these, they&#039;re merely an amalgamation of things I&#039;ve learned and tested which have worked for me. I am assuming you&#039;re part of a team instead of solo hero, too, though if you are solo then interruption reduction could potentially save you from burnout. Some of these might help.&lt;/p&gt;
      &lt;h3&gt;Everything should (automatically) log a ticket&lt;/h3&gt;
      &lt;p&gt;Make it easy to log tickets. Saying &quot;no ticket no fix!&quot; feels good but doesn&#039;t actually achieve anything for the organisation, except to piss off someone with an issue (and let&#039;s hope that person isn&#039;t a C-Level.) Let people call, let people email, let people visit, let people knock on the door. You can more than likely automatically create tickets in your ticketing system that come through to email, and if you can&#039;t, get a better ticketing system. Get a generic &quot;techsupport@&quot; inbox set up and configure your helpdesk to add everything sent to it as a ticket. Bonus points of you reply right away (automatically of course) telling the requester that their ticket has been logged. At least they know it&#039;s in the queue instead of sitting unread in some mystery inbox.&lt;/p&gt;
      &lt;h3&gt;Ten CC&#039;s of Triage, STAT!&lt;/h3&gt;
      &lt;p&gt;Yikes, you now have a flood of tickets. This looks bad. And hey, maybe it is, but at least now you &lt;em&gt;know&lt;/em&gt; it&#039;s bad instead of it just &lt;em&gt;feeling&lt;/em&gt; bad. Maybe management would be surprised to see that you&#039;ve got 143% more tickets than you last reported, because everything is a ticket now. No more invisible work.&lt;/p&gt;
      &lt;p&gt;Anyway, I digress. Triaging tickets is essentially reviewing a ticket and deciding if it&#039;s a priority or not. There are many ways to judge this, but typically you want to take into account how urgently this needs to be fixed and how much of an impact it would have if it didn&#039;t get fixed.&lt;/p&gt;
      &lt;p&gt;A PCI Compliance audit deadline of two hours ago is pretty urgent - it&#039;s something that needs to have happened already. But... the banks aren&#039;t going to block all transactions immediately. Business doesn&#039;t stop because you&#039;re a few hours late on submitting a self eval form (this is not an endorsement to delay PCI compliance!)&lt;/p&gt;
      &lt;p&gt;A projector in a classroom has a pretty high impact - that&#039;s 30+ students (plus one pissed off teacher) per hour per day. That adds up quickly. And yes, it&#039;s pretty urgent too, but worst case the teacher can still teach like they did in 1985. Right?&lt;/p&gt;
      &lt;p&gt;Triage is important for two main reasons:&lt;/p&gt;
      &lt;ol&gt;
        &lt;li&gt;&lt;strong&gt;It helps you and your team decide on what to work on without having to decide on what to work on&lt;/strong&gt;&lt;br&gt;Generally, you work on the thing with the smallest SLA time left, and if you have negative SLA counting down then you should probably get on that ASAP. Assign the Priority (the urgency and the impact) an SLA (say, high impact high urgency = 4 hour SLA, low impact low urgency = 14 day SLA - whatever you decide will be unique to you and the organisation and likely requires understanding managements expectations as well as your teams abilities)&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Reporting, evidence, promotions, wage increase, redundancy protection, efficiency gains, areas of focus and more!&lt;/strong&gt;&lt;br&gt;Having all this triage data to look back on will highlight where things are working and where they&#039;re not, but bigger picture style. You can use the data and the knowledge that you&#039;ve gained to more closely align the team with the objectives *and reality* of the organisation. Perhaps when triaging your tickets you could also categorise them - hardware, software, licensing, accounts? Or go one level deeper - projector, laptop, desktop, TV, printer. Office, Web browser, MIS. After time passes you can really easily see where your team spends most of its time and where resources (like money) can be allocatied to reduce load in those areas.&lt;/li&gt;
      &lt;/ol&gt;
      &lt;p&gt;Triaging tickets is generally not a full time job, so you could make this person...&lt;/p&gt;
      &lt;h3&gt;Hero Assignment: Interrupt Shield&lt;/h3&gt;
      &lt;p&gt;Designate an &quot;interupt hero&quot; - this can be one person or more and ideally they would triage tickets in the queue too. If you&#039;re lucky enough to be able to do this, put them in another room and leave everyone else in the relative peace and quiet of the main office. Make everyone else go to this smaller interrupt room for direct in person support.&lt;/p&gt;
      &lt;p&gt;They deal with all phone calls and in person visits and group emails. They also deal with any quick support calls (when not on a phonecall) that don&#039;t require them to leave their desk and that are interruptable, for example password changes, group membership updates, etc. You should rotate this person &lt;em&gt;very regularly&lt;/em&gt; so you&#039;re not moving the &quot;interrupt problem&quot; to one person all the time, as that&#039;s a recipe for disaster. Let them do a day at a time, or two days if you use a hero team, rotating half the team out every day so handover and &quot;current events&quot; knowledge transfer (what were yesterdays big issues? What&#039;s on the radar today?) can occur more naturally.&lt;/p&gt;
      &lt;p&gt;Redirect everyones incoming calls to the interrupt hero team. This further reduces interruptions to the main body, though you may want to make exceptions for VIPs. Your interrupt hero team should be able to forward calls to you, but generally they will be able to deal with most quick things (and push to the focus team via a ticket if not, of course)&lt;/p&gt;
      &lt;p&gt;This has two advantages. First off, the toil is reduced for the team at large - your senior sysadmin isn&#039;t doing the third password change this week for little Joe - and secondly (and most relevantly) the rest of your team can focus for long periods of time on their work. Better work is done by most of the team. Better work is better results (whether those results are money/profit or a higher quality of education.)&lt;/p&gt;
      &lt;h3&gt;Don&#039;t overload on active tickets&lt;/h3&gt;
      &lt;p&gt;Don&#039;t assign anyone (including yourself) too many tickets. There is no perfect number - it&#039;s different depending on role, personality, type of work, and many more factors. But try and get a ballpark. I would suggest starting with no more than 10 non-pending tickets (for clarity, I define a pending ticket as one which is waiting for something outside the control of any member of the team) and only one should be worked on actively at a time. You can&#039;t install a printer whilst also diagnosing wireless issues. Pick one. Focus.&lt;/p&gt;
      &lt;h3&gt;Low remaining (or negative/expired) SLA first&lt;/h3&gt;
      &lt;p&gt;Plucking tickets from the queue because they look easy isn&#039;t productive, long term. But it&#039;s fine, short term. Don&#039;t sweat it, manager. But keep an eye on it.&lt;/p&gt;
      &lt;p&gt;Tickets should be worked based on their SLA, accounting for the available suitable resources (don&#039;t put the guy who sucks at DNS problems as the lead on critical DNS problems - train them? Yes. Rely on them? No.)&lt;/p&gt;
      &lt;p&gt;Sometimes it&#039;s nice to jump 70% down the queue and grab a few easy tickets. It feels like a break.&lt;/p&gt;
      &lt;p&gt;Just don&#039;t make it a habit.&lt;/p&gt;
      &lt;p&gt;Having repeat logs of the same call that has gone unanswered for three months is - you guessed it - yet another interruption. Old (the definition of which is, essentially, defined by your SLA - expired SLA? Ticket is old!) tickets should not exist (with very &lt;em&gt;very&lt;/em&gt; few exceptions. Like budget availability.)&lt;/p&gt;
      &lt;h3&gt;Don&#039;t judge people on their call closure rates&lt;/h3&gt;
      &lt;p&gt;How many tickets I&#039;ve closed vs the other techs means absolutely nothing. Get &lt;em&gt;honest&lt;/em&gt; feedback from the source - ask the staff and, yes, the students, to rate the support. &lt;strong&gt;Then pay it attention&lt;/strong&gt;. This feedback is so valuable. Whenever a ticket is closed, automatically send a followup email asking for feedback, and make it quick. You want the emotional immediate feedback, not the &quot;dwell on it for three days and [calm down/forget]&quot; feedback.&lt;/p&gt;
      &lt;ol&gt;
        &lt;li&gt;Was the support: [] Amazing!  [] Ok!  [] Horrible!&lt;/li&gt;
        &lt;li&gt;Optional comments here:&lt;/li&gt;
      &lt;/ol&gt;
      &lt;h3&gt;Negative feedback is the most valuable information you can possibly obtain&lt;/h3&gt;
      &lt;p&gt;I argue that getting positive feedback means absolutely &lt;em&gt;nothing&lt;/em&gt;, except as a &quot;look how great we are, CEO!&quot; line in the yearly review meeting. The feedback you really want, the feedback with actual damn &lt;strong&gt;value&lt;/strong&gt;, is the negative feedback. And it&#039;s all well and good getting it. But make sure to pay attention to it, don&#039;t let it sit in the database doing nothing. Analyse it. Understand it. This is the closest you&#039;ll get to dipping your hand in the metaphorical technological currents of your organisation. You&#039;ll be able to &lt;em&gt;feel&lt;/em&gt; the effect of the teams work, and when something goes against the current, you can fix it immediately.&lt;/p&gt;
      &lt;p&gt;This makes better, happier staff and students. Better happier staff and students equals better results. Which equals... you guessed it, fewer interruptions.&lt;/p&gt;
      &lt;hr /&gt;
      &lt;p&gt;Interruptions aren&#039;t going away, but you can reduce them. And when you do, that firefighting feeling will decrease, work quality and rate will improve and as a direct result the stability of the environment should improve, too. And when the stability of the environment improves, the interruptions decrease.&lt;/p&gt;
      &lt;p&gt;At least, that&#039;s my experience.&lt;/p&gt;
      &lt;p&gt;There&#039;s plenty more about this on the internet at large, much better explained and with additional steps than what I have listed here, however I feel that these steps are the big hitters that might just give you enough time to step back and take a real close look at the bigger picture without worrying about where the next fire will start. And it&#039;ll take time. But it will work.&lt;/p&gt;
     &lt;/article&gt;

</description>
      <pubDate>2023-01-30</pubDate>
      <link>https://fyr.io/post/interruptions_in_tech_support</link>
      <guid isPermaLink="true">https://fyr.io/post/interruptions_in_tech_support</guid>
      <category>life</category>
      <category>projects</category>
      <category>interruptions</category>
      <category>time</category>
      <category>management</category>
    </item>
     <item>
      <title>Don&#039;t Trust Copy And Paste Even With JavaScript Disabled</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Don&#039;t Trust Copy And Paste Even With JavaScript Disabled&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Tuesday 22nd of March 2022 at 00:00&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;I&#039;ve seen a few articles recently advising readers to not blindly copy/paste code from a website into your CLI directly because, with a small bit of JavaScript, you can overwrite the clipboard.&lt;/p&gt;
      &lt;p&gt;This is something that has been known about for a while and for some reason has &lt;a href=&quot;https://www.bleepingcomputer.com/news/security/dont-copy-paste-commands-from-webpages-you-can-get-hacked/&quot; target=&quot;_blank&quot;&gt;seemingly resurfaced recently&lt;/a&gt;. The advice is to always paste into a text editor first to ensure what you think you have copied is actually what you have copied. However, I have seen comments about how you should disable JavaScript unless you need it in order to prevent this from occurring.&lt;/p&gt;
      &lt;p&gt;As awkward as this &quot;disabling JavaScript&quot; advice is on the modern web (and it does require some technical knowledge to enable just what you need) I agree, and in fact disable JavaScript by default. However, for this particular issue, this doesn&#039;t matter. You can achieve essentially the same thing &lt;em&gt;without&lt;/em&gt; any JavaScript.&lt;/p&gt;
      &lt;p&gt;The stuff below isn&#039;t new. In fact, in the linked article is a link to a reddit thread where someone outlines this exact problem. But I feel that it can&#039;t hurt to reiterate. And explore!&lt;/p&gt;
      &lt;p&gt;So, for the obligatory warning: Don&#039;t paste anything on this page into a Powershell window. Don&#039;t paste it into anything but a text editor. The examples below shouldn&#039;t be harmful but… look, just don&#039;t risk it, okay?&lt;/p&gt;
      &lt;p&gt;Oh, and disable JavaScript if you want.&lt;/p&gt;
      &lt;p&gt;&lt;strong&gt;Malicious String&lt;/strong&gt; - copy and paste the below example into a text editor (&lt;em&gt;NOT&lt;/em&gt; a Powershell window)&lt;/p&gt;
      &lt;hr /&gt;
      &lt;table style=&quot;border-spacing: 0;width:auto;&quot;&gt;
        &lt;tr&gt;
          &lt;td style=&quot;vertical-align: text-top;padding: 0;&quot;&gt;echo &#039;hello,&lt;span style=&quot;font-size: 0;&quot;&gt;&#039;&lt;br&gt;&lt;/span&gt;&lt;/td&gt;
          &lt;td style=&quot;vertical-align: text-top;padding: 0;&quot;&gt;&lt;span style=&quot;font-size: 0;&quot;&gt;copy c:\inetpub\www\config.php c:\inetpub\www\config.php.txt -whatif&lt;br&gt;&lt;/span&gt;&lt;/td&gt;
          &lt;td style=&quot;vertical-align: text-top;padding: 0;&quot;&gt;&lt;span style=&quot;font-size: 0;&quot;&gt;clear&lt;br&gt;&lt;/span&gt;&lt;/td&gt;
          &lt;td style=&quot;vertical-align: text-top;padding: 0;&quot;&gt;&lt;span style=&quot;font-size: 0;&quot;&gt;echo &#039;hello&lt;/span&gt; world!&#039;&lt;/td&gt;
        &lt;/tr&gt;
      &lt;/table&gt;
      &lt;hr /&gt;
      &lt;p&gt;Let&#039;s explore how we got here and what we can do about it.&lt;/p&gt;
      &lt;p&gt;The goal: hide text within an interesting string, so that when it is copied the user thinks they&#039;re copying one thing, but they have instead copied something else. Without JavaScript.&lt;/p&gt;
      &lt;h3&gt;Invisible Text&lt;/h3&gt;
      &lt;p&gt;This is easy with CSS - in these examples I am using inline styling so you can see what&#039;s being done. I&#039;ve opted to use some example (&lt;em&gt;probably-not-but-potentially-dangerous&lt;/em&gt;) Powershell, but anything works here. Bash, Python, SQL, .htaccess config, phone numbers, anything. The only limit is your imagination, and as always, what you can trick an end user into blindly pasting.&lt;/p&gt;
      &lt;p&gt;&lt;strong&gt;Malicious String&lt;/strong&gt; - copy and paste the below example into a text editor (&lt;em&gt;NOT&lt;/em&gt; a Powershell window)&lt;/p&gt;
      &lt;hr /&gt;
      &lt;p&gt;echo &#039;hello,&lt;span style=&quot;font-size: 0;&quot;&gt;&#039;; copy c:\inetpub\www\config.php c:\inetpub\www\config.php.txt -whatif;clear;echo &#039;hello&lt;/span&gt; world!&#039;&lt;/p&gt;
      &lt;hr /&gt;
      &lt;p&gt;&lt;strong&gt;Source&lt;/strong&gt;: &lt;em&gt;(You may need to scroll right to see it all)&lt;/em&gt;&lt;/p&gt;
      &lt;pre class=&quot;codeblock&quot;&gt;&amp;lt;p&amp;gt;echo &#039;hello,&amp;lt;span style=&quot;font-size: 0;&quot;&amp;gt;&#039;; copy c:\inetpub\www\config.php c:\inetpub\www\config.php.txt -whatif;clear;echo &#039;hello&amp;lt;/span&amp;gt; world!&#039;&amp;lt;/p&amp;gt;&lt;/pre&gt;
      &lt;p&gt;As you can see, setting the font-size to zero on the &lt;code&gt;&amp;lt;span&amp;gt;&lt;/code&gt;&#039;s with CSS simply makes the contents invisible in the browser, but highlighting it and copying it still grabs the &#039;invisible&#039; contents. (We&#039;ve not used &lt;code&gt;display:none&lt;/code&gt; here as whilst that hides the text, it also prevents it from being copied.)&lt;/p&gt;
      &lt;p&gt;This could be the end of the article, but... we can go deeper. This example does require the user to blindly press return after pasting it to execute the command, which risks them spotting the potentially-malicious content before it&#039;s executed. In a config file this isn&#039;t really avoidable as far as I know (as the user will still have to save it blindly) but in the CLI...?&lt;/p&gt;
      &lt;p&gt;Can we use newlines to automatically execute the code instead of relying on a semi-colon (in this example) and the user pressing return? Let&#039;s have a go!&lt;/p&gt;
      &lt;h3&gt;Invisible Text, with newlines!&lt;/h3&gt;
      &lt;p&gt;&lt;strong&gt;Malicious String&lt;/strong&gt; - copy and paste the below example into a text editor (&lt;em&gt;NOT&lt;/em&gt; a Powershell window)&lt;/p&gt;
      &lt;hr /&gt;
      &lt;p&gt;echo &#039;hello,&lt;span style=&quot;font-size: 0;&quot;&gt;&#039;&lt;br&gt;copy c:\inetpub\www\config.php c:\inetpub\www\config.php.txt -whatif&lt;br&gt;clear&lt;br&gt;echo &#039;hello&lt;/span&gt; world!&#039;&lt;/p&gt;
      &lt;hr /&gt;
      &lt;p&gt;&lt;strong&gt;Source&lt;/strong&gt;: &lt;em&gt;(You may need to scroll right to see it all)&lt;/em&gt;&lt;/p&gt;
      &lt;pre class=&quot;codeblock&quot;&gt;&amp;lt;p&amp;gt;echo &#039;hello,&amp;lt;span style=&quot;font-size: 0;&quot;&amp;gt;&#039;&amp;lt;br&amp;gt;copy c:\inetpub\www\config.php c:\inetpub\www\config.php.txt -whatif&amp;lt;br&amp;gt;clear&amp;lt;br&amp;gt;echo &#039;hello&amp;lt;/span&amp;gt; world!&#039;&amp;lt;/p&amp;gt;&lt;/pre&gt;
      &lt;p&gt;We&#039;ve simply added in some &lt;code&gt;&amp;lt;br&amp;gt;&lt;/code&gt;&#039;s that render as newlines. If you paste this into a text editor you can see it works, but the issue is obvious - the malicious string clearly has something wrong with it as it spreads over a few lines, which will probably raise an eyebrow or three. I purposefully haven&#039;t injected a newline after the last section, as whilst in our example the screen has been cleared, the end user still sees that they need to press return to execute, as they expect to. Psychologically I feel that this appears safer for them, and whilst they&#039;re probably wondering why their terminal history has vanished &lt;em&gt;they might not think about it too much if they can see the code they copied seemingly hasn&#039;t even been executed yet&lt;/em&gt;.&lt;/p&gt;
      &lt;p&gt;The question is, can we include newlines, whilst not rendering newlines in the browser?&lt;/p&gt;
      &lt;p&gt;Spoiler: yes.&lt;/p&gt;
      &lt;h3&gt;Invisible Text, Invisible Newlines!&lt;/h3&gt;
      &lt;p&gt;The 1990&#039;s called and wanted to become relevant again. So I said, &quot;okay, I&#039;ll give you one cool trick that&#039;ll have sysadmins peeved.&quot;&lt;/p&gt;
      &lt;p&gt;Yep, you guessed it, the classic web-dev nightmare - the &lt;code&gt;&amp;lt;table&amp;gt;&lt;/code&gt; - comes to the rescue.&lt;/p&gt;
      &lt;p&gt;&lt;strong&gt;Malicious String&lt;/strong&gt; - copy and paste the below example into a text editor (&lt;em&gt;NOT&lt;/em&gt; a Powershell window)&lt;/p&gt;
      &lt;hr /&gt;
      &lt;table style=&quot;border-spacing: 0;width:auto;&quot;&gt;
        &lt;tr&gt;
          &lt;td style=&quot;vertical-align: text-top;padding: 0;&quot;&gt;echo &#039;hello,&lt;span style=&quot;font-size: 0;&quot;&gt;&#039;&lt;br&gt;&lt;/span&gt;&lt;/td&gt;
          &lt;td style=&quot;vertical-align: text-top;padding: 0;&quot;&gt;&lt;span style=&quot;font-size: 0;&quot;&gt;copy c:\inetpub\www\config.php c:\inetpub\www\config.php.txt -whatif&lt;br&gt;&lt;/span&gt;&lt;/td&gt;
          &lt;td style=&quot;vertical-align: text-top;padding: 0;&quot;&gt;&lt;span style=&quot;font-size: 0;&quot;&gt;clear&lt;br&gt;&lt;/span&gt;&lt;/td&gt;
          &lt;td style=&quot;vertical-align: text-top;padding: 0;&quot;&gt;&lt;span style=&quot;font-size: 0;&quot;&gt;echo &#039;hello&lt;/span&gt; world!&#039;&lt;/td&gt;
        &lt;/tr&gt;
      &lt;/table&gt;
      &lt;hr /&gt;
      &lt;p&gt;&lt;strong&gt;Source&lt;/strong&gt;: &lt;em&gt;(You may need to scroll right to see it all)&lt;/em&gt;&lt;/p&gt;
      &lt;pre class=&quot;codeblock&quot;&gt;&amp;lt;table style=&quot;border-spacing: 0;width:auto;&quot;&gt;
  &amp;lt;tr&gt;
    &amp;lt;td style=&quot;vertical-align: text-top;padding: 0;&quot;&gt;
      echo &#039;hello,
      &amp;lt;span style=&quot;font-size: 0;&quot;&gt;&#039;&amp;lt;br&gt;&amp;lt;/span&gt;
    &amp;lt;/td&gt;
    &amp;lt;td style=&quot;vertical-align: text-top;padding: 0;&quot;&gt;
      &amp;lt;span style=&quot;font-size: 0;&quot;&gt;copy c:\inetpub\www\config.php c:\inetpub\www\config.php.txt -whatif&amp;lt;br&gt;&amp;lt;/span&gt;
    &amp;lt;/td&gt;
    &amp;lt;td style=&quot;vertical-align: text-top;padding: 0;&quot;&gt;
      &amp;lt;span style=&quot;font-size: 0;&quot;&gt;clear&amp;lt;br&gt;&amp;lt;/span&gt;
    &amp;lt;/td&gt;
    &amp;lt;td style=&quot;vertical-align: text-top;padding: 0;&quot;&gt;
      &amp;lt;span style=&quot;font-size: 0;&quot;&gt;echo &#039;hello&amp;lt;/span&gt; world!&#039;
    &amp;lt;/td&gt;
  &amp;lt;/tr&gt;
&amp;lt;/table&gt;
&lt;/pre&gt;
      &lt;p&gt;This is the same example used at the top of this post.&lt;/p&gt;
      &lt;p&gt;So, some things are happening here. Let&#039;s step through them. Note that you may need to add, remove or modify these depending on what CSS rules the site in question is using.&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;code&gt;border-spacing: 0;&lt;/code&gt; on the table - this removes all spacing from the borders of the table. If you don&#039;t declare this, your cells will take up space, so you&#039;ll end up with gaps between your letters which will look strange.&lt;/li&gt;
        &lt;li&gt;&lt;code&gt;padding: 0;&lt;/code&gt; - Removes all padding from the cells. Similar to the &lt;code&gt;border-spacing&lt;/code&gt; declaration above, if you don&#039;t declare this, your cells will take up space, so you&#039;ll end up with gaps between your letters.&lt;/li&gt;
        &lt;li&gt;&lt;code&gt;vertical-align: text-top;&lt;/code&gt; - This will ensure the text in the cells always aligns to the top. The table (and &lt;code&gt;&amp;lt;td&amp;gt;&lt;/code&gt;&#039;s) grow to match the tallest &lt;code&gt;&amp;lt;td&amp;gt;&lt;/code&gt;, and typically text will render in the middle of a &lt;code&gt;&amp;lt;td&amp;gt;&lt;/code&gt;, so this just resets that.&lt;/li&gt;
        &lt;li&gt;&lt;code&gt;width:auto;&lt;/code&gt; - we have declared this here as my WordPress theme makes tables 100% width by default, which ruins things in this case.&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;Because we&#039;re using a table and copying content from across multiple cells, you end up with an extra character at the start of every line except the first - the tab character. Handily, every terminal or console window I tried completely ignores this character, so we can too!&lt;/p&gt;
      &lt;h3&gt;Remaining Challenge&lt;/h3&gt;
      &lt;p&gt;The only issue I can find with this technique is not with the technique itself, but with the execution of the &quot;secret&quot; code - to anyone paying attention, it&#039;ll be obvious what&#039;s happened. What, your screen suddenly &lt;code&gt;clear&lt;/code&gt;&#039;d? That&#039;s suspicious. I&#039;ve looked into a way to rebuild the CLI history on both bash and powershell and as far as I can tell it&#039;s not possible to do with any kind of guaranteed accuracy.&lt;/p&gt;
      &lt;p&gt;Any ideas? Leave a comment or send me an email, I&#039;d be interested to see if the very execution of these commands can be hidden from the screen (&lt;code&gt;.bash_history&lt;/code&gt; is another thing)&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2022-03-22</pubDate>
      <link>https://fyr.io/post/don't_trust_copy_and_paste_even_with_javaScript_disabled</link>
      <guid isPermaLink="true">https://fyr.io/post/don't_trust_copy_and_paste_even_with_javaScript_disabled</guid>
      <category>infosec</category>
      <category>javascript</category>
      <category>malicious</category>
      <category>copy</category>
      <category>paste</category>
    </item>
     <item>
      <title>Light Up Spinning Top In The Dark</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Light Up Spinning Top In The Dark&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Friday 31st of December 2021 at 00:00&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;Something about these toys appeals to me. The Kid got a few so I snapped some pictures, expecting a blurry mess. And that&#039;s what I got, but in a good way! I love how the projected red light looks in the longer exposure photos.&lt;/p&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/spin-top.jpg&quot;&gt;
          &lt;source srcset=&quot;/images/spin-top.jpg&quot; /&gt;
          &lt;img src=&quot;/images/spin-top.jpg&quot; alt=&quot;Spinning top captured from above with the wooden floor glowing green. A short red line can be seen behind the spinning top, showing the path the low power red laser light takes during the image capture&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/spin-side.jpg&quot;&gt;
          &lt;source srcset=&quot;/images/spin-side.jpg&quot; /&gt;
          &lt;img src=&quot;/images/spin-side.jpg&quot; alt=&quot;Spinning top captured from the side with the wooden floor glowing green, with a longer red line from the low power red lasers path&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/spin-close.jpg&quot;&gt;
          &lt;source srcset=&quot;/images/spin-close.jpg&quot; /&gt;
          &lt;img src=&quot;/images/spin-close.jpg&quot; alt=&quot;Spinning top captured from the side, a bit closer than the previous image highlighting the wooden floor red&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/spin-hand.jpg&quot;&gt;
          &lt;source srcset=&quot;/images/spin-hand.jpg&quot; /&gt;
          &lt;img src=&quot;/images/spin-hand.jpg&quot; alt=&quot;Spinning top captured from above with the path of the red laser cutting across kids&#039; hand&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;

    &lt;/article&gt;

</description>
      <pubDate>2021-12-31</pubDate>
      <link>https://fyr.io/post/light-up_spinning_top_in_the_dark</link>
      <guid isPermaLink="true">https://fyr.io/post/light-up_spinning_top_in_the_dark</guid>
      <category>life</category>
      <category>lights</category>
      <category>spinning top</category>
      <category>photograph</category>
    </item>
     <item>
      <title>Tales From Tech Support 02 The Server Room Is Nuts</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Tales From Tech Support 02 The Server Room Is Nuts&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Wednesday 11th of August 2021 at 00:00&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;I&#039;ve said previously that things come in threes. This particular month in 2020 gave us three quite severe issues in the server room at work.&lt;/p&gt;
      &lt;h3&gt;One - as the tide comes rolling in&lt;/h3&gt;
      &lt;p&gt;We had some heavy rain in early October over a weekend. I spent the majority of that time in front of the fireplace until work on Monday morning.&lt;/p&gt;
      &lt;p&gt;Before I even got through the office I was alerted to a flood in our server room. I rushed down there to find an absolute mess. We are unfortunately strapped for space and also use the server room to store our spare equipment and some peripherals and consumables. We lost quite a lot of stuff due to water damage however most of it was old so doesn&#039;t hold much value. There were some switches that got soaked, and also my own personal Draytek I was going to use as a secondary VPN (ours wasn&#039;t great at the time) during lockdown in case of emergencies.&lt;/p&gt;
      &lt;p&gt;You can see in the following image a “tide line” around the walls of the room - we had about an inch of water in there that slowly soaked away. A phenomenal amount of water given the size of the room and the fact that there are sizeable gaps under the two doors that allow water to escape to neighbouring rooms&lt;/p&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/server-room-water-line.jpg&quot;&gt;
          &lt;source srcset=&quot;/images/server-room-water-line.jpg&quot; /&gt;
          &lt;img src=&quot;/images/server-room-water-line.jpg&quot; alt=&quot;A photo of the floor and wall of a server room that had been flooded previously with a clear waterline on the wall&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;p&gt;Somehow our servers didn&#039;t get too wet. Humidity was at 90%+ for quite a while though, and we have experienced several hard drive failures since which were likely related.&lt;/p&gt;
      &lt;p&gt;After three days of drying, ripping up carpet and sorting through our stuff we could finally get back to the normal slog. However we learned that the fitted Aircon unit in the room doesn&#039;t have a cut off for drying the air. It&#039;s either on or off, and only when manually set. We can&#039;t set a target humidity. In a server room you typically want to hover at about 50% - too high and the moisture in the air corrodes internals, too low and static electricity can more easily discharge in the dry air. Before ripping out the carpet and other detritus we&#039;d hover at about 50-70% without any flood water in the room, but since then we&#039;ve gone as low as 30%.&lt;/p&gt;
      &lt;p&gt;We need proper climate control and monitoring. And for the leak to be fixed… It has been an issue for a while which involves the design of the roof - water does drain away but if there&#039;s too much too quickly, or the drainage is blocked as was the case this time, the water overflows and somehow finds it&#039;s way to the ground through the second path of least resistance… Which just so happens to pass right through the server room about two feet in front of the cabinets.&lt;/p&gt;
      &lt;h3&gt;Two - splashback&lt;/h3&gt;
      &lt;p&gt;About two weeks after the first incident we had more heavy rain. More water in the server room. Luckily not as much water and because the room was empty and carpetless it dried out within a day. Unfortunately it came in through a slightly different part of the ceiling about half a foot closer to the server rack.&lt;/p&gt;
      &lt;p&gt;I&#039;d love to get up on to the roof to try and figure out where this water is getting in. I&#039;m told the fix is “new roof” but wonder if making a path for the water to escape by which doesn&#039;t pass through one of the most expensive rooms on the campus is feasible. Not a fix, certainly, but a workaround until we can move the servers (which we should be moving before the end of this year.)&lt;/p&gt;
      &lt;h3&gt;Three - this is nuts&lt;/h3&gt;
      &lt;p&gt;Finally (at least I hope) is this, which happened about a week after flood #2:&lt;/p&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/server-room-squirrel.jpg&quot;&gt;
          &lt;source srcset=&quot;/images/server-room-squirrel.jpg&quot; /&gt;
          &lt;img src=&quot;/images/server-room-squirrel.jpg&quot; alt=&quot;A blurry squirrel sprints by the camera as it attempts to run to the exit of a server room it has inhabited for a while&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;p&gt;We saw him on the camera we set up after the first flood. We raced down there and eventually managed to coerce it out from its temporary home directly under the server rack before it could eat through anything. There have since been more squirrels find their way into the building but none have yet braved the server room. For fear of drowing, I suspect.&lt;/p&gt;
      &lt;p&gt;Although management doesn&#039;t particularly care about incident management and response reports, I find the whole process fascinating. So I wrote up an incident report for the squirrel invasion and it was quite entertaining to type out to say the least. So many puns.&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2021-08-11</pubDate>
      <link>https://fyr.io/post/tales_from_tech_support_02_the_server_room_is_nuts</link>
      <guid isPermaLink="true">https://fyr.io/post/tales_from_tech_support_02_the_server_room_is_nuts</guid>
      <category>life</category>
      <category>flood</category>
      <category>server room</category>
      <category>squirrel</category>
      <category>tales from tech support</category>
    </item>
     <item>
      <title>Error B8bb2b3e On Hp Office Jet Pro 8710</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Error B8bb2b3e On Hp Office Jet Pro 8710&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Wednesday 21st of July 2021 at 00:00&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;TL;DR: Try disabling &quot;SNMP Status&quot; for the port on the Windows print server in Print Management. No guarantee this will work everywhere but it &lt;em&gt;appears&lt;/em&gt; to have worked for me. Give it a go, let me know!&lt;/p&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/error-b8bb2b3e-on-hp-office-jet-pro-8710.png&quot;&gt;
          &lt;source srcset=&quot;/images/error-b8bb2b3e-on-hp-office-jet-pro-8710.png&quot; /&gt;
          &lt;img src=&quot;/images/error-b8bb2b3e-on-hp-office-jet-pro-8710.png&quot; alt=&quot;A screenshot of the &#039;Configure Standard TCP/IP Port Monitor&#039; window with an unchecked &#039;SNMP Status Enabled&#039; option circled in blue&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;h3&gt;Printer says… what, exactly?&lt;/h3&gt;
      &lt;p&gt;Feel free to skip the rest of this post. It&#039;s just the sequence of events that took me to the supposed conclusion/solution.&lt;/p&gt;
      &lt;p&gt;I arrived at a customer site to find a stack of issues, but one in particular caused some confusion to my smooth-brained self. A HP Office Jet Pro 8710 printer, which worked up until last Wednesday, had a black screen with an error on it stating: &lt;q&gt;There is a problem with the printer. Turn the printer off, then on.&lt;/q&gt;&lt;/p&gt;
      &lt;p&gt;I of course tried a reboot. The printer switched on, booted up and appeared to be fine. But after 5 to 10 seconds it would make a clicking noise, the screen would flash blue, then go black with the same error. I hate printers.&lt;/p&gt;
      &lt;p&gt;It looked like there was some white text on the blue screen so I recorded it with the phone in slow motion and picked up an error code: b8bb2b3e&lt;/p&gt;
      &lt;p&gt;Googling this took me to one relevant result, &lt;a href=&quot;https://h30434.www3.hp.com/t5/Printing-Errors-or-Lights-Stuck-Print-Jobs/HP-Office-Jet-Pro-8710-Error-B8BB2B3E/m-p/8033467&quot; target=&quot;_blank&quot;&gt;a post on the HP forum with no replies&lt;/a&gt;. Great. I hate printers (I may say this several times) and I hate an error code with no official documentation anywhere on the internet. So, what is one to do in such a situation?&lt;/p&gt;
      &lt;p&gt;Well, poke about, push buttons, and hope you figure out a pattern, obviously!&lt;/p&gt;
      &lt;p&gt;My immediate thought was something &lt;a href=&quot;https://nakedsecurity.sophos.com/2021/07/16/more-printnightmare-we-told-you-not-to-turn-the-print-spooler-back-on/&quot; target=&quot;_blank&quot;&gt;PrintNightmare&lt;/a&gt; related, however as the post on the HP forum was made in April I moved that away from the forefront of my mind for now and started looking elsewhere. As luck would have it, I noticed that the error occurred just as the Wireless light finished flashing (because yes, this printer is connected to a domain network &lt;em&gt;wirelessly&lt;/em&gt;. Literally the definition of evil.)&lt;/p&gt;
      &lt;p&gt;I plugged in a network cable that I pinched from a nearby desktop and the printer stopped crashing. Great, progress! This building had a new wireless network installed a couple of months ago so I began poking at that but nothing had changed in the last couple of weeks. Instead, I moved across to the Print server to change the ports over to the new IP address the device has from the wired network assuming it was wireless related and… pop! Blue screen with b8bb2b3e again. My head flipped back around to PrintNightmare patch issues or something up with the server. I didn&#039;t really have a direction of travel from this point as Event Viewer had nothing of interest in it as far as I could see, but I decided to send the printer a Test Print just before it connected. I&#039;ve seen before issues with printers where it&#039;ll process an existing queue of work and then crash out or error, indicating that the core technology (network, server, printer) is functioning but some feature is causing an issue, and that&#039;s exactly what I saw here. The device connected to the wired network, sent out the test print page, then immediately crashed out again. Historically I&#039;ve fixed this (rare) occurrence by removing and re-adding the printer to the print server but I decided to poke around some more and try to nail down which setting was causing this (if, indeed, any at all.)&lt;/p&gt;
      &lt;p&gt;Luckily it didn&#039;t take too many attempts to switch off SNMP Status Enabled, reboot the printer, and not see any crashes. The printer is still working a few hours later (back on the wireless… grr. We&#039;ll run some cable into this particular office soon) and I have since checked Windows Updates installation date - the printer stopped working right after updates were installed on the server. The server was up to date prior to this month&#039;s (July 2021) patch release so it does look like something in the most recent set of updates caused this. And yes, I have ensured the server is not vulnerable to PrintNightmare by checking for those registry keys, so it&#039;s not that.&lt;/p&gt;
      &lt;p&gt;If I unveil the exact cause I will update this post.&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2021-07-21</pubDate>
      <link>https://fyr.io/post/error_b8bb2b3e_on_hp_office_jet_pro_8710</link>
      <guid isPermaLink="true">https://fyr.io/post/error_b8bb2b3e_on_hp_office_jet_pro_8710</guid>
      <category>tech</category>
      <category>printer</category>
      <category>HP Office Jet Pro 8710</category>
      <category>b8bb2b3e</category>
      <category>fix</category>
    </item>
     <item>
      <title>Kaseya Says Yes</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Kaseya Says Yes&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Wednesday 14th of July 2021 at 00:00&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;I just read the &lt;a href=&quot;https://blog.truesec.com/2021/07/06/kaseya-vsa-zero-day-exploit/&quot; target=&quot;_blank&quot;&gt;truesec analysis of the Kaseya VSA 0-day&lt;/a&gt; that hit the news earlier in the month. I love reading articles like this, but this one in particular I had to highlight.&lt;/p&gt;
      &lt;p&gt;The authentication... &quot;bypass&quot;... utilised as a first step: D&#039;oh! How did something like that even get into production? The linked article has more details but essentially, if all authentication checks fail (when querying this particular file, not generally) instead of saying &quot;Nope, you are not authenticated!&quot; they instead say &quot;Oh, you don&#039;t supply a password that we can verify? Ok, let&#039;s give you authenticated status anyway👍&quot;.&lt;/p&gt;
      &lt;p&gt;Logic failures like this generally don&#039;t happen in the ideal world because they&#039;re blindingly obvious, so allow me to speculate for the rest of this paragraph. I can only assume that a developer temporarily set this up to diagnose a bug or test a feature and simply forgot to flip it back to &quot;fail by default&quot;. This is why peer review is important, though the rush to get things out to production works against this. It&#039;s too easy to miss this kind of thing in the modern world. It shouldn&#039;t be, but it is. There should be no blame here on any individual &quot;- I suspect a process/procedure needs to be looked at, or a team needs to be better resourced.&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2021-07-14</pubDate>
      <link>https://fyr.io/post/kaseya_says_yes</link>
      <guid isPermaLink="true">https://fyr.io/post/kaseya_says_yes</guid>
      <category>infosec</category>
      <category>vulnerability</category>
      <category>kaseya</category>
      <category>auth bypass</category>
      <category>0day</category>
    </item>
     <item>
      <title>Visitor Information Disclosure In Wp Statistics</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Visitor Information Disclosure In Wp Statistics&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Monday 12th of July 2021 at 00:00&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;Just noticed this and when Googling it has been &lt;a href=&quot;https://wordpress.org/support/topic/wp-statistics-log-being-stored-in-root-wp-directory-causes-core-checksum-issues/&quot; target=&quot;_blank&quot;&gt;picked up already&lt;/a&gt;, so this isn&#039;t new, but the &lt;a href=&quot;https://wordpress.org/plugins/wp-statistics/&quot; target=&quot;_blank&quot;&gt;wp-statistics&lt;/a&gt; module (v13.0.8 for sure but likely other versions too) seems to be logging information into the “wp-statistics.log” file in the root directory of the site it is installed on. You can therefore access it and in some cases read the IP addresses of visitors to a site if they have the addon enabled by visiting &lt;code&gt;domain.tld/wp-statistics.log&lt;/code&gt;.&lt;/p&gt;
      &lt;p&gt;You can block external access to it in the .htaccess file via:&lt;/p&gt;
      &lt;pre class=&quot;codeblock&quot;&gt;&amp;lt;Files &quot;wp-statistics.log&quot;&amp;gt;
Require all denied
&amp;lt;/Files&amp;gt;&lt;/pre&gt;
      &lt;p&gt;I&#039;ve logged &lt;a rel=&quot;noreferrer noopener&quot; href=&quot;https://github.com/wp-statistics/wp-statistics/issues/358&quot; data-type=&quot;URL&quot; data-id=&quot;https://github.com/wp-statistics/wp-statistics/issues/358&quot; target=&quot;_blank&quot;&gt;an issue&lt;/a&gt; on &lt;a rel=&quot;noreferrer noopener&quot; href=&quot;https://github.com/wp-statistics/wp-statistics&quot; data-type=&quot;URL&quot; data-id=&quot;https://github.com/wp-statistics/wp-statistics&quot; target=&quot;_blank&quot;&gt;their github page&lt;/a&gt;, &lt;s&gt;hopefully they fix this soon&lt;/s&gt; &lt;strong&gt;2021-07-22&lt;/strong&gt;: a fix will be pushed out this weekend according to the latest update on the issue.&lt;/p&gt;
      &lt;p&gt;A quick google dork will show up a fair number of affected sites, including some... potentially embarrassing ones.&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2021-07-12</pubDate>
      <link>https://fyr.io/post/visitor_information_disclosure_in_wp-statistics</link>
      <guid isPermaLink="true">https://fyr.io/post/visitor_information_disclosure_in_wp-statistics</guid>
      <category>infosec</category>
      <category>Wordpress</category>
      <category>wp-statistics</category>
      <category>information disclosure</category>
    </item>
     <item>
      <title>Glpi Ripe For The Injecting</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Glpi Ripe For The Injecting&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Friday 23rd of April 2021 at 00:00&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;I&#039;ll move on from GLPI eventually and start working on some interesting technical stuff, but today is not that day.&lt;/p&gt;
      &lt;p&gt;We &lt;a href=&quot;/post/ditching_glpi/&quot;&gt;ditched GLPI&lt;/a&gt; after we got hit by &lt;a href=&quot;/post/haveibeenpwned_com_pwned_our_helpdesk_glpi_9_4_5_sql_injection/&quot;&gt;an accidental SQLi from HaveIBeenPwned&lt;/a&gt; - in short, version 9.4.5 is vulnerable to an SQL Injection flaw. You can exploit it by sending it an email (say, to helpdesk@company.tld) and once the email gets automatically turned into a ticket and &lt;em&gt;assigned&lt;/em&gt;, the SQL will be executed. This affected us because the obscenely simple execution string was included in the header of the &lt;a href=&quot;https://haveibeenpwned.com/&quot;&gt;haveibeenpwned&lt;/a&gt; email notification.&lt;/p&gt;
      &lt;p&gt;I&#039;ve just been poking around GLPI again (we have kept it around for non-end-user stuff, isolated and kept out of reach) and noticed that there was a “telemetry” scheduled task in the list of Automatic Actions which got me curious.&lt;/p&gt;
      &lt;p&gt;GLPI have decided to &lt;a href=&quot;https://glpi-project.org/telemetry/&quot;&gt;publish some of their telemetry data&lt;/a&gt;, which is nice of them. But it shows that there&#039;s still a significant number of users running 9.4.5 and older.&lt;/p&gt;
      &lt;p&gt;Of the installs that report telemetry in the last year (and only those installs on 9.2 and above do this), 14,313 are on a version at or below 9.4.5, whilst 26,985 are on 9.4.6 and above. Over 34% of GLPI installs are potentially* vulnerable to this painfully simple exploit but over 12% of installs absolutely are still vulnerable as they&#039;re on 9.4.5 exactly.&lt;/p&gt;
      &lt;p&gt;&lt;em&gt;*Potentially, but I suspect only 9.4.5 is vulnerable - they fixed it by accident in 9.4.6 &lt;a href=&quot;https://github.com/glpi-project/glpi/issues/6899&quot;&gt;here&lt;/a&gt; which looks like a response to an issue that appeared in 9.4.5. &lt;/em&gt;&lt;/p&gt;
      &lt;p&gt;We learned a lesson with the GLPI issue - &lt;strong&gt;keep your software up to date&lt;/strong&gt;. Though to be fair to us, it was up to date according to their website at the time. There was a newer version available (9.4.6) but that wasn&#039;t advertised anywhere.&lt;/p&gt;
      &lt;p&gt;I hope these out of date installs get updated. We know there&#039;s a lot of malicious activity out there, but at the same time... accidents can happen.&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2021-04-23</pubDate>
      <link>https://fyr.io/post/glpi_ripe_for_the_injecting</link>
      <guid isPermaLink="true">https://fyr.io/post/glpi_ripe_for_the_injecting</guid>
      <category>infosec</category>
      <category>GLPI</category>
      <category>vulnerable</category>
    </item>
     <item>
      <title>Iced</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Iced&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Monday 8th of February 2021 at 00:00&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;I love how ice looks when it forms on something smooth and flat like glass. If I didn&#039;t have to scrape it all off in a hurry to get to work I&#039;d stare at it for at least two minutes. What? It&#039;s freezing out there…&lt;/p&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/ice-s.jpg&quot;&gt;
          &lt;source srcset=&quot;/images/ice-s.jpg&quot; /&gt;
          &lt;img src=&quot;/images/ice-s.jpg&quot; alt=&quot;A macro photograph of a layer of ice that has formed on glass, the sun can be seen rising between some trees and the angled horizon created by the edge of the glass&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;footer&gt;
        &lt;h3&gt;Comments&lt;/h3&gt;
        &lt;p&gt;This article is one of many that were ported over from the wordpress version of this site. You can&#039;t comment anymore (&lt;a href=&quot;/ideas&quot;&gt;yet&lt;/a&gt;?), but here are the comments made on this post from the before times.&lt;/p&gt;
        &lt;h4&gt;Martin - 2021-04-28 at 09:36&lt;/h4&gt;
        &lt;p&gt;&lt;q&gt;Awesome photo. I could stare on to the ice until it melts down 😀&lt;/q&gt;&lt;/p&gt;
      &lt;/footer&gt;
    &lt;/article&gt;

</description>
      <pubDate>2021-02-08</pubDate>
      <link>https://fyr.io/post/iced</link>
      <guid isPermaLink="true">https://fyr.io/post/iced</guid>
      <category>life</category>
      <category>ice</category>
      <category>glass</category>
    </item>
     <item>
      <title>Tales From Tech Support 01 Percussive Maintenance</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Tales From Tech Support 01 Percussive Maintenance&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Saturday 25th of July 2020 at 00:00&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;If you&#039;ve worked in IT for more than a year you probably have some crazy tales to tell. I certainly do - with nearly 15 years in the field I have seen insanity and hilarity - more than I could ever remember. So I thought to myself, why not write it all down somewhere?&lt;/p&gt;
      &lt;hr /&gt;
      &lt;p&gt;This first tale comes from back in my early days.&lt;/p&gt;
      &lt;p&gt;As a PFY, I was trusted with little more than basic desktop repairs and printer toner replacements - a fairly common slice of life for many IT bods. I was relatively fresh faced, a few scars but nothing major. Eager to learn and eager to please, I was often the first to raise my hand and take any challenging job, despite the &lt;em&gt;vast&lt;/em&gt; gaps in my knowledge. Our team was small - three techs (two general helpdesk end user support PFYs, one mobile device repairs) with one very isolationist &quot;Network Guy&quot; (who would now be called a SysAdmin) and one &quot;Database guy&quot; (although their only qualification was knowing what &quot;SQL&quot; stood for.)&lt;/p&gt;
      &lt;p&gt;It came as quite a surprise when, early on a sunny Monday, we were told that the Network Guy was leaving. And he wasn&#039;t being replaced.&lt;/p&gt;
      &lt;p&gt;It quickly became apparent that the entirety of his duties were to fall on myself and PFY#2, who had been working at this place for a bit less than me. Networks Guy&#039;s last day rolled around without much issue, nor much communication from him - in fact at one point I asked for his help with a network issue and he told me &quot;I don&#039;t care, I&#039;m leaving!&quot; So it came as a bit of a surprise (and equal amounts of relief) when he called me and PFY#2 up to his office to give us his handover document.&lt;/p&gt;
      &lt;p&gt;His handover document consisted of a single sheet of A4 with handwritten notes about a few things barely qualifying as useful. A few IPs and other miscellaneous details about servers and switches, the odd issue he knew about but hadn&#039;t fixed, and maybe a password or two.&lt;/p&gt;
      &lt;p&gt;We received the document at the door to his office (we weren&#039;t tolerable enough to go inside on this occasion?) and quickly shoo&#039;d off to our regular helpdesk support duties.&lt;/p&gt;
    &lt;p&gt;That evening, he left and we never saw him again.&lt;/p&gt;
    &lt;p&gt;The following weeks and months were &lt;em&gt;absolutely insane&lt;/em&gt;. I can&#039;t recall much about what happened during this time. Myself and PFY#2 managed to keep on top of most of the helpdesk support calls and make a start on untangling the network. We quickly found that most switches were essentially unboxed and plugged in without any config changes, servers were unpatched and had uptime into the hundreds of days (you could tell when the last powercut had been by looking at the uptime) and we were getting very close to the limit on resources - maxed CPU and/or RAM, HDDs filling up. Group policy was a mess, roaming profiles reaching into the tens of gigabytes with nothing preventing their growth… it was a mess.&lt;/p&gt;
    &lt;p&gt;To top it off, out the back of Network Guys office was another small closet containing almost all the servers we had. Neither of us had ever been back there, and when we did we found dust, cobwebs and equipment that seemed to be switched on but we had absolutely no idea what it did. Helpfully the single sheet of A4 told us some server names and serial numbers.&lt;/p&gt;
    &lt;p&gt;We were fueled by Red Bull and the long (&lt;em&gt;long&lt;/em&gt;) days began to blur into one massive learning experience. To this day I have never learned so much so quickly as I did back then as we fought to keep the place running, the users happy(ish) and continue to learn as much as we could.&lt;/p&gt;
    &lt;p&gt;There was one event, though, that utterly stumped us.&lt;/p&gt;
    &lt;p&gt;Cheerily and &lt;em&gt;awesomely&lt;/em&gt; smashing the helpdesk as we were, we suddenly had calls coming in about email being offline. After a quick check we realised that, yep, email was down. We couldn&#039;t RDP into the Exchange (2003) server either - something was wrong, clearly. Off to the dusty old Network Guys office we go.&lt;/p&gt;
    &lt;p&gt;We walk in, grab the single 4:3 CRT monitor in the room, stretch the cables across the room from one of the power extension cables with a spare socket to one of the nearby tables, and plug the crusty old VGA cable into the back of the &lt;strong&gt;absolute beast&lt;/strong&gt; of an exchange server. I mean, this thing was huge. An old tower, black, solid steel everything. No idea why it was up in this first floor room when all the other servers were on the ground floor, but… whatever.&lt;/p&gt;
    &lt;p&gt;Flicking the monitor on we quickly saw everyones favourite screen. Yep, it&#039;s blue, and it signifies death. The BSOD.&lt;/p&gt;
    &lt;p&gt;We panicked a little, probably downed another Red Bull each, then got to work trying to bring this thing back online.&lt;/p&gt;
    &lt;p&gt;Remember: we were literally flying by the seat of our pants here, and had been four months at this point. &lt;em&gt;We had no idea what we were doing&lt;/em&gt;.&lt;/p&gt;
    &lt;p&gt;First things first - switch it off and back on again. We held the power button down, heard a massive CLUNK, the fans span down and the screen went black. Take a breath. Switch it on again, wait for the BIOS, wait for Windows to start booting, wait some more…. BSOD.&lt;/p&gt;
    &lt;p&gt;Crap.&lt;/p&gt;
    &lt;p&gt;We try again, switch it off and back on. This time, we hear a horrible grinding noise as the machine spins up. We get to Windows trying to boot and everything freezes - not even a BSOD. Off it goes once more, switch it on, grinding noise, BIOS doesn&#039;t even finish loading.&lt;/p&gt;
    &lt;p&gt;Double crap.&lt;/p&gt;
    &lt;p&gt;Backups! Backups? There are backups, right? One of our jobs is to take the tapes out of the drive and swap them with the next numbered batch in the fire safe, surely we could restore this? But… Network Guy did the backups. Network Guy didn&#039;t elect to write anything down about the backups! We don&#039;t know anything about them! An oversight of the highest order!&lt;/p&gt;
    &lt;p&gt;We know the boss has the phone number of Network Guy, but we need to try fixing this ourselves first. We don&#039;t want him shouting down the phone at us like the one and only time we called him for help before this…&lt;/p&gt;
    &lt;p&gt;More Red Bull, more diagnosing. On the odd occasion we can get Windows to try booting, and sometimes we can get to the login screen using Safe Mode, but no matter how quick we are, we can never get logged in, and even this doesn&#039;t last forever. Eventually the server just stops trying to load Windows and we&#039;re presented with some error about not finding a HDD. The grinding at this point is still going on and we&#039;re faced with our fear that the grinding &lt;em&gt;isn&#039;t&lt;/em&gt; a fan, but the single HDD that &lt;em&gt;all of our email is stored on.&lt;/em&gt;&lt;/p&gt;
    &lt;p&gt;There&#039;s nothing else for it. We&#039;ve gotta call up Network Guy and ask his advice. Neither of us want to do this though - he wasn&#039;t helpful to us when he worked here, and especially not when he was leaving.&lt;/p&gt;
    &lt;p&gt;Is there nothing we can do?&lt;/p&gt;
    &lt;p&gt;I remember the moment - we were stood either side of this huge hulking great server with no more options (that we are aware of at any rate). Our eyes meet, and without saying a word we both think the same thing at the same time.&lt;/p&gt;
    &lt;p&gt;PFY#2: &quot;Shall we?&quot;&lt;/p&gt;
    &lt;p&gt;Me: &quot;I dunno… I mean it&#039;s not working so maybe?&quot;&lt;/p&gt;
    &lt;p&gt;PFY#2: &quot;I think we should.&quot;&lt;/p&gt;
    &lt;p&gt;Me: &quot;Okay. Let&#039;s do it.&quot;&lt;/p&gt;
    &lt;p&gt;PFY#2: &quot;Go on then, you can try first.&quot;&lt;/p&gt;
    &lt;p&gt;Me: &quot;No way, you do it.&quot;&lt;/p&gt;
    &lt;p&gt;We look down at this ancient black server, lined with solid steel frame, sides and front, touched with the occasional bit of cheap plastic and the odd faded sticker.&lt;/p&gt;
    &lt;p&gt;I sigh.&lt;/p&gt;
    &lt;p&gt;PFY#2 raises his foot, and &lt;em&gt;kick&lt;/em&gt;s the bastard right in the side, smack bang in the middle.&lt;/p&gt;
    &lt;p&gt;The grinding noise changes in pitch audibly. It&#039;s still there, still buzzing away in that audio range that you think you can put up with but slowly sends you insane without you realising it. PFY#2 reaches down and holds the power button in to switch it off. He switches it back on.&lt;/p&gt;
    &lt;p&gt;BIOS loads up, boots fully, screen goes black.&lt;/p&gt;
    &lt;p&gt;Windows loads. And loads. We stare. And it continues to load. The login window appears after what must have been at least 25 minutes. We&#039;re in shock. No BSOD. No lock up. Buzzing? Yeah that&#039;s still there, but the server has booted. What the f-?&lt;/p&gt;
    &lt;p&gt;We rush to a nearby office, get the first user to open up outlook. It connects. Emails from the upstream start flooding in to their mailbox.&lt;/p&gt;
    &lt;p&gt;We check our own, same thing - it&#039;s working.&lt;/p&gt;
    &lt;p&gt;We&#039;re buzzing. Our blood is filled with adrenaline, caffiene, sugar, and whatever the hell else they put in Red Bull, but it also filled with &lt;em&gt;joy&lt;/em&gt;. We fixed a server by &lt;em&gt;kicking it&lt;/em&gt;.&lt;/p&gt;
    &lt;p&gt;After spreading the word that email is back, we get right back to our helpdesk calls, of which &lt;em&gt;dozens&lt;/em&gt; have appeared since our exchange issue surfaced.&lt;/p&gt;
    &lt;p&gt;Not long after this we do eventually employ a sysadmin who I work with to this day, but this exchange server didn&#039;t get replaced immediately. I can&#039;t remember exactly when it was retired, but it whirred on for a good year or more after this. We tried very hard to not touch it - it wasn&#039;t perfect, and we definitely had at least one more very confusing issue with it, which I&#039;m sure I&#039;ll write about at some point, but the beast chugged on and kept our email flowing until it was eventually replaced by a younger sexier model.&lt;/p&gt;
    &lt;p&gt;Some say that if you can find your way into Network Guys old (and long repurposed) office, and if then you can manage to make your way into the back room, you can, on quiet days when email traffic is up, still hear the buzzing of that once-failed-but-then-recovered hard drive.&lt;/p&gt;
    &lt;p&gt;This is how I came to learn about and respect &lt;em&gt;percussive maintenance&lt;/em&gt;.&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2020-07-25</pubDate>
      <link>https://fyr.io/post/tales_from_tech_support_01_percussive_maintenance</link>
      <guid isPermaLink="true">https://fyr.io/post/tales_from_tech_support_01_percussive_maintenance</guid>
      <category>tech</category>
      <category>pecussive maintenance</category>
      <category>tales from tech support</category>
      <category>server</category>
      <category>kick it</category>
    </item>
     <item>
      <title>Ditching Glpi</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Ditching Glpi&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Thursday 23rd of July 2020 at 00:00&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;The &lt;a href=&quot;/post/haveibeenpwned_com_pwned_our_helpdesk_glpi_9_4_5_sql_injection/&quot;&gt;recent bad experience with GLPI&lt;/a&gt; we had at work was the final nail in the coffin and, after patching the issue, I quickly began looking for alternative ticket management systems. We have wanted a new helpdesk for a long time - the support we provide has evolved over the years since GLPI was first introduced and with the covid-19 pandemic this support has seen yet another shift in the way in which we work. Not only are we doing things differently now, some unrecognised or unrealised issues have surfaced which we all wish to resolve or automate away.&lt;/p&gt;
    &lt;p&gt;We struggled through the worst of the lockdown but quickly identified some limitations with our existing way of working, namely that whilst our helpdesk did fine enough when it came to tracking tickets, it should do more for us. We spent a lot of time on the management of tickets and attempting to contact people just to get them to perform simple tasks. Why do we have to fight our helpdesk to achieve a goal, and why can&#039;t we have a system that would let us run these simple tasks (read: scripts) ourselves in the background, invisibly to the end user?&lt;/p&gt;
    &lt;p&gt;I did some reading and some thinking post-GLPI-exploit and realised that we are essentially an MSP. We provide support for departments within a school, each of which has different objectives, priorities, demands and tools. Plus, we support several primary schools on top of that, and they are their own beasts entirely with unique networks, hardware and software, let alone processes and requirements.&lt;/p&gt;
    &lt;p&gt;As we emerge from total lockdown to a lesser version, we are also going to need to do our normal jobs but much more efficiently. With a &quot;remote first&quot; approach to minimise risk to our end users (both staff and students, but also guardians and members of the public) I quickly decided to look into RMM tools instead of basic ticketing systems.&lt;/p&gt;
    &lt;p&gt;Given that we also had issues in other areas (namely monitoring and alerting, in that what we have is barebones and actually broke a month ago) I was looking out for a solution that would kill as many birds with as few stones as possible.&lt;/p&gt;
    &lt;p&gt;The requirements were that it had:&lt;/p&gt;
    &lt;ul&gt;&lt;li&gt;A ticketing system&lt;/li&gt;&lt;li&gt;Monitoring and alerting&lt;/li&gt;&lt;li&gt;Patching, installing and scripting capabilities&lt;/li&gt;&lt;li&gt;Easy remote support&lt;/li&gt;&lt;li&gt;A good price (hey, we&#039;re a school and don&#039;t pass the cost on to the end user, we don&#039;t have a lot of money!)&lt;/li&gt;&lt;/ul&gt;
    &lt;p&gt;I found a &lt;a href=&quot;https://docs.google.com/spreadsheets/d/1JdoFZup24bGueP1L7pFKToiGfOsDdkaJAJUGS9B3nLk/htmlview#gid=1326170256&quot; target=&quot;_blank&quot;&gt;list of RMM tools&lt;/a&gt; and their features on the &lt;a href=&quot;https://old.reddit.com/r/msp&quot; target=&quot;_blank&quot;&gt;/r/MSP&lt;/a&gt; subreddit and went through each one, checking videos, documentation and feature lists working out which would obviously not work, which might work, and which would absolutely work. I narrowed down the options to four potentials. In the end, only two of them had a &quot;per technician&quot; pricing model - the &quot;per monitored device/agent&quot; pricing model would end up costing us tens of thousands - so it came down to a war between the two. These were:&lt;/p&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://www.atera.com/&quot; target=&quot;_blank&quot;&gt;Atera&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://syncromsp.com/&quot; target=&quot;_blank&quot;&gt;SyncroMSP&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;p&gt;To be honest they were a close match. I preferred the look and feel of Atera although SyncroMSP was more feature rich. We didn&#039;t really need all the features SyncroMSP boasted though, and Atera was cheaper (we&#039;re on the cheapest plan) so ended up going with that.&lt;/p&gt;
    &lt;p&gt;Although we haven&#039;t rolled out the agent to every device yet (we&#039;re still mostly closed and until we have the agent installed have no way of deploying software out to machines not on our network) we have started using it heavily. So far, zero problems and we are all liking it. It has already enabled us to preempt some problems that would become tickets, solving them before they ever affect an end user or get reported. I&#039;m looking forward to diving into it more, I am especially excited about the recently announced Chocolatey support, which seems to work wonderfully.&lt;/p&gt;
    &lt;p&gt;It&#039;s early days yet, hopefully we can become much more efficient and provide a better service. Only time will tell!&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2020-07-23</pubDate>
      <link>https://fyr.io/post/ditching_glpi</link>
      <guid isPermaLink="true">https://fyr.io/post/ditching_glpi</guid>
      <category>tech</category>
      <category>helpdesk</category>
      <category>GLPI</category>
      <category>Atera</category>
      <category>SyncroMSP</category>
      <category>RMM</category>
      <category>end user support</category>
    </item>
     <item>
      <title>Haveibeenpwned Com Pwned Our Helpdesk Glpi 9 4 5 Sql Injection</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Haveibeenpwned Com Pwned Our Helpdesk Glpi 9 4 5 Sql Injection&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Saturday 30th of May 2020 at 00:00&lt;/time&gt;&lt;/p&gt;
        &lt;p class=&quot;updated&quot;&gt;Last updated on &lt;time&gt;Thursday 16th of April 2026 at 16:03&lt;/time&gt;&lt;/p&gt;      &lt;/header&gt;
      &lt;h3&gt;TL;DR:&lt;/h3&gt;
      &lt;p&gt;I should say before we get started, the fault for this lies entirely with GLPI, I place no blame at the feet of &lt;a href=&quot;https://haveibeenpwned.com/&quot; target=&quot;_blank&quot;&gt;haveibeenpwned.com&lt;/a&gt; or &lt;a href=&quot;https://twitter.com/troyhunt&quot; target=&quot;_blank&quot;&gt;Troy Hunt&lt;/a&gt; for this issue. It&#039;s all good fun! Concerning? Oh, for sure. You can&#039;t help but laugh though. Obligatory &lt;a href=&quot;https://xkcd.com/327/&quot; target=&quot;_blank&quot;&gt;XKCD&lt;/a&gt;.&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;a href=&quot;https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-11032&quot;&gt;CVE&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://github.com/glpi-project/glpi/security/advisories/GHSA-344w-34h9-wwhh&quot;&gt;GitHub Issue&lt;/a&gt;&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;On GLPI 9.4.5, creating a call (via the standard interface or email, etc) that contains the basic SQL injection string &lt;code&gt;&#039;;-- &quot;&lt;/code&gt; will be logged normally with no abnormal behaviour, however if a Technician assigns themselves to that call via the quick &quot;Assign to me&quot; button, the SQL query will be executed. In the case of the example string given above, all existing calls, open or closed, will be updated to have their descriptions deleted and replaced with any text that appears before the aforementioned malicious string. You can of course modify this to perform other SQL queries.&lt;/p&gt;
      &lt;p&gt;This is fixed on 9.4.6, &lt;s&gt;however at the time of writing the &lt;a href=&quot;https://glpi-project.org/downloads/&quot;&gt;GLPI Download page&lt;/a&gt; still links 9.4.5 as the latest update available, you need to go to &lt;a href=&quot;https://github.com/glpi-project/glpi/releases&quot;&gt;github releases page&lt;/a&gt; to see 9.4.6.&lt;/s&gt; [2020-06-03 update:] now available directly from the &lt;a href=&quot;https://glpi-project.org/downloads/&quot;&gt;GLPI download page&lt;/a&gt;.&lt;/p&gt;
      &lt;p&gt;9.4.6 was released before I found this exploit, however the GLPI website still showed 9.4.5 as the latest version. As far as we were concerned, we were on the latest version. Credit goes to whoever submitted it first, however at the time I had no knowledge of this already being known and resolved. Here&#039;s a video showcasing the issue:&lt;/p&gt;
      &lt;video controls=&quot;&quot; src=&quot;/videos/GLPI-9.4.5_SQLi.mp4&quot;&gt;&lt;/video&gt;
      &lt;hr&gt;
      &lt;h3&gt;The Long Version - how I found it, or how haveibeenpwned pwned our helpdesk&lt;/h3&gt;
      &lt;h4&gt;GLPI&lt;/h4&gt;
      &lt;p&gt;We use &lt;a href=&quot;https://glpi-project.org/&quot;&gt;GLPI&lt;/a&gt; as our technical support ticketing system at work. There are better solutions out there and we&#039;re investigating others, however GLPI has served us well since 2009ish. It is a web based, self hosted PHP/MySQL application.&lt;/p&gt;
      &lt;h4&gt;haveibeenpwned.com&lt;/h4&gt;
      &lt;p&gt;A website that catalogues and monitors data dumps for email addresses. It collects leaked or stolen databases, analyses them, pulls out any email addresses and can be searched by anyone for free to see if your email address has been included in a breach. You can also subscribe to receive alerts if your email address, or an email address on a domain that you own, is included in any future breaches.&lt;/p&gt;
      &lt;h4&gt;haveibeenpwned.com pwned GLPI&lt;/h4&gt;
      &lt;p&gt;Around late April we upgraded from an ancient version to the latest of GLPI - 9.4.5. All was well until we received an email from &lt;a href=&quot;https://haveibeenpwned.com/&quot;&gt;haveibeenpwned&lt;/a&gt; to our helpdesk support address, which automatically got logged as a support ticket. This email alerted us to some compromised accounts on our domain which were included in the latest Wishbone data dump.&lt;/p&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/hibp-header.png&quot;&gt;
          &lt;source srcset=&quot;/images/hibp-header.png&quot; /&gt;
          &lt;img src=&quot;/images/hibp-header.png&quot; alt=&quot;A screenshot of an alert from HaveIBeenPwned showing the header, which isn&#039;t an image in the email alert, but actual characters. The important characters are the first four - an apostrophe, followed by a semi colon, then two dashes.&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;p&gt;The above image is a screenshot showing the header of a standard HaveIBeenPwned alert email. This isn&#039;t an image rendered in the email alert, but actual text - characters make up the &lt;code&gt;&#039;;--have i been pwned?&lt;/code&gt; logo. This is important later.&lt;/p&gt;
      &lt;p&gt;I rushed to get the HIBP report generated to see who&#039;s data on our domain had been compromised by clicking a link in this email-turned-support-ticket. We got the report in a second email, which created a second ticket. I grabbed the data, deleted the second ticket (as we still had the original open) and perused the data. After doing the necessary work alerting any users to the breach of their data I went back to the original HIBP ticket, and realising I hadn&#039;t assigned it to myself did so and promptly solved it. All is well, time to move on?&lt;/p&gt;
      &lt;p&gt;Not quite. I and the other techs quickly noticed that every single ticket description had been deleted and replaced with partial header data from the HIBP email.&lt;/p&gt;
      &lt;p&gt;This immediately stunk of some kind of SQL Injection flaw and my mind raced as to what the cause was. I had a suspicion I knew... Unfortunately we were in the middle of business hours and due to Covid-19 are fully remote - we need a working helpdesk, and I don&#039;t have the priviledge of working on potential security issues in the day job. We restored from a backup taken on the previous evening (not too much data was lost, thankfully) and carried on with our day supporting our users.&lt;/p&gt;
      &lt;h4&gt;Understanding the flaw&lt;/h4&gt;
      &lt;p&gt;As soon as work ended, I grabbed an ubuntu .iso and built me a webserver VM. I had a feeling I knew what the cause of this SQLi was (check the header of the email shown above, you don&#039;t need long to figure out where the &#039;malicious&#039; code is!) but wasn&#039;t sure how it got executed - the email was parsed correctly and tickets weren&#039;t affected when the email came in, it wasn&#039;t until around the time I deleted the second ticket and closed the first call that problems arose.&lt;/p&gt;
      &lt;p&gt;After building the VM with PHP and MySQL, I hopped onto the GLPI website and grabbed the latest version from their site, which is shown as 9.4.5.&lt;/p&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/hibp-glpi-update-screenshot.png&quot;&gt;
          &lt;source srcset=&quot;/images/hibp-glpi-update-screenshot.png&quot; /&gt;
          &lt;img src=&quot;/images/hibp-glpi-update-screenshot.png&quot; alt=&quot;A screenshot from the GLPI website proporting to show the most up to date version (9.4.5) highlighted. This is, in fact, not the most up to date version at this time!&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;p&gt;After setting it up and adding some test calls, I forwarded our original HIBP email to a temporary account I linked this test GLPI install to. Once the email was pulled in I went through the same steps as I had done earlier in the day:&lt;/p&gt;
      &lt;ol&gt;&lt;li&gt;Generate the report (which I didn&#039;t do again via the link in the email, I just forwarded the original email to my test email account creating a second ticket in my install of GLPI)&lt;/li&gt;&lt;li&gt;Delete the second ticket&lt;/li&gt;&lt;li&gt;Assign the first ticket to myself&lt;/li&gt;&lt;li&gt;Close it&lt;/li&gt;&lt;/ol&gt;
      &lt;p&gt;I checked my test tickets I loaded in there beforehand and lo and behold, they had all been wiped and replaced with the same content from the HIBP email!&lt;/p&gt;
      &lt;p&gt;I restored the VM to an earlier snapshot and went through the process again, pausing to check the other tickets at each step. I quickly discovered that the issue only occurs when you assign yourself to the ticket using the handy &quot;Associate myself&quot; button.&lt;/p&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/hibp-glpi-ticket-assignment-crop.png&quot;&gt;
          &lt;source srcset=&quot;/images/hibp-glpi-ticket-assignment-crop.png&quot; /&gt;
          &lt;img src=&quot;/images/hibp-glpi-ticket-assignment-crop.png&quot; alt=&quot;A cropped screenshot of the GLPI ticket page with the &#039;Watcher&#039; and &#039;Assigned To&#039; icons highlighted&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;h4&gt;Making it malicious&lt;/h4&gt;
      &lt;p&gt;The email data already wipes the content of all tickets, but as it stands it leaves a lot of junk data behind. I wanted to minimise the data required to exploit the flaw yet retain the same behaviour.&lt;/p&gt;
      &lt;p&gt;Another restore of GLPI followed, with more tests trying to determine the minimum amount of data needed to execute the flaw. I spent some time cutting down the email from HIBP and quickly found that the opening lines of the HIBP email were indeed the culprit - I managed to shrink the exploit down to six characters (&lt;code&gt;&#039;;-- &quot;&lt;/code&gt; - the space and double-quote at the end &lt;em&gt;appear&lt;/em&gt; to be required though this could do with more testing) to achieve the same kind of malicious behaviour, in this case deleting all content of the descriptions for every ticket in the database. If you log the malicious call with this string as the title (or leave the title field blank - GLPI will then automatically add the contents of the description to the title, in this case the malicious string we have identified gets added as the title) the title on all other calls gets wiped too, however if you do include a non-malicious title in the malicious ticket the original titles on the other calls do not get modified.&lt;/p&gt;
      &lt;p&gt;Success! This is a pretty severe issue, and although it does require some user interaction you can easily hide this exploit in an innocent looking support call. GLPI supports HTML emails, which get rendered (almost) normally within the interface. Simply hiding the text in an attribute or the &amp;lt;head&amp;gt; or something will keep it invisible to the tech. You&#039;ve just gotta wait for them to assign it to themselves.&lt;/p&gt;
      &lt;p&gt;In the end, this isn&#039;t a zero-click flaw but it is easily hidden. If you hide the exploit and it doesn&#039;t work out the first time (a tech doesn&#039;t assign it to themselves) you can easily try again with another ticket until it works. Odds are the techs aren&#039;t going to read through the raw HTML of each ticket looking for problems.&lt;/p&gt;
      &lt;h4&gt;Reporting it - late to the party&lt;/h4&gt;
      &lt;p&gt;I hopped over to &lt;a href=&quot;https://github.com/glpi-project&quot;&gt;GLPI&#039;s github page&lt;/a&gt; to check for an existing issue and log my own if one didn&#039;t exist when what do I see but 9.4.6! I check the changelog and find this:&lt;/p&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/hibp-glpi-9.4.6-changelog.png&quot;&gt;
          &lt;source srcset=&quot;/images/hibp-glpi-9.4.6-changelog.png&quot; /&gt;
          &lt;img src=&quot;/images/hibp-glpi-9.4.6-changelog.png&quot; alt=&quot;A screenshot of the GLPI github page showing a 9.4.6 release. One of the changes is highlighted, which reads &#039;Security - Prevent execution of SQL Injection while assigning a technician&#039;&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;p&gt;Well, darn. I downloaded and installed the update and can confirm the issue no longer exists. Congrats to whoever spotted it first! &lt;strong&gt;Edit 2020-06-04&lt;/strong&gt;: Twitter user &lt;a href=&quot;https://twitter.com/thetaphi&quot; target=&quot;_blank&quot;&gt;@thetaphi&lt;/a&gt; took a look at this and found that it was &lt;a href=&quot;https://twitter.com/thetaphi/status/1268319539588145154&quot; target=&quot;_blank&quot;&gt;spotted and/or accidentally fixed&lt;/a&gt; by a developer whilst fixing a separate issue.&lt;/p&gt;
      &lt;p&gt;As it is already solved I don&#039;t really want to dig through the code and find the offending line or develop the exploit further. &lt;strong&gt;Edit 2020-06-04&lt;/strong&gt;: some people have taken a look after &lt;a href=&quot;https://twitter.com/troyhunt/status/1268309629437526018&quot; target=&quot;_blank&quot;&gt;@troyhunt tweeted about this issue&lt;/a&gt;. It is interesting (concerning?) that something this simple got through to release, especially when you consider the way to initiate the exploit is by assigning yourself the call. Why does the call description get parsed at all here?&lt;/p&gt;
      &lt;p&gt;Either way - if you&#039;re running GLPI, make sure you&#039;re on the latest release. Or look for alternative software.&lt;/p&gt;
      &lt;footer&gt;
        &lt;h3&gt;Comments&lt;/h3&gt;
        &lt;p&gt;This article is one of many that were ported over from the wordpress version of this site. You can&#039;t comment anymore (&lt;a href=&quot;/ideas&quot;&gt;yet&lt;/a&gt;?), but here are the comments made on this post from the before times.&lt;/p&gt;
        &lt;h4&gt;DerM - 2020-06-05 at 17:07&lt;/h4&gt;
        &lt;p&gt;&lt;q&gt;time for a database backup strategy that allow Point-In-Time-Recovery 😉&lt;/q&gt;&lt;/p&gt;
        &lt;h4&gt;Matt (op) - 2020-06-06 at 10:17&lt;/h4&gt;
        &lt;p&gt;&lt;q&gt;We&#039;ll certainly look into that!&lt;/q&gt;&lt;/p&gt;
      &lt;/footer&gt;
    &lt;/article&gt;


    
	


</description>
      <pubDate>2020-05-30</pubDate>
      <link>https://fyr.io/post/haveibeenpwned_com_pwned_our_helpdesk_glpi_9_4_5_sql_injection</link>
      <guid isPermaLink="true">https://fyr.io/post/haveibeenpwned_com_pwned_our_helpdesk_glpi_9_4_5_sql_injection</guid>
      <category>infosec</category>
      <category>glpi</category>
      <category>sql injection</category>
      <category>sqli</category>
      <category>hibp</category>
      <category>have i been pwned</category>
    </item>
     <item>
      <title>G Suite Migration For Outlook Error 0x8004106b</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;G Suite Migration For Outlook Error 0x8004106b&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Friday 22nd of May 2020 at 00:00&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;: You&#039;re logging in using a non-primary alias for the account. Use the primary alias and your email will migrate smoothly.&lt;/p&gt;
      &lt;p&gt;We&#039;re migrating around 100 email accounts that were on Exchange over to Google. This has involved changing some peoples alias so that they match up with everyone elses (&amp;lt;initials&amp;gt;.&amp;lt;id&amp;gt;@&amp;lt;domain&amp;gt;) however we&#039;ve added their old address as an alias so they can still receive emails sent to their old address (eg: &amp;lt;fullname&amp;gt;@&amp;lt;domain&amp;gt;).&lt;/p&gt;
      &lt;p&gt;Due to some political reasons we&#039;re unable to touch the exchange server, so we&#039;re using the G Suite Migration for Microsoft Outlook tool. It&#039;s been fine up until today where we started seeing the following:&lt;/p&gt;
      &lt;picture&gt;
        &lt;a href=&quot;/images/g-suite-migration-failures.png&quot;&gt;
          &lt;source srcset=&quot;/images/g-suite-migration-failures.png&quot; /&gt;
          &lt;img src=&quot;/images/g-suite-migration-failures.png&quot; alt=&quot;A screenshot of the G Suite Migration Suite for Microsoft Outlook 4.2.7.0 tool. The Contacts and Calendar have been successfully processed but the Emails are all failing&quot; /&gt;
        &lt;/a&gt;
      &lt;/picture&gt;
      &lt;p&gt;Note the Emails - they are all failing! What was odd was that this was only happening for one of the techs. He must have been doing something wrong! We monitored their steps and it all looked fine though. Taking a look into the trace file we could see the error appearing as &lt;code&gt;Failed with 0x8004106b&lt;/code&gt;. Googling this didn&#039;t result in any usable results, but as we were looking into it another tech appeared and just happen to glance at the screen as the original tech was attempting to migrate a user again. Our spreadsheet contained some info including the primary email address and the alias for us to check and the tech noticed that the guy with the sync issues on his users was using the non-primary alias to log in. After trying the primary alias, the emails migrated successfully.&lt;/p&gt;
      &lt;p&gt;Interestingly, the Contacts and Calendar data synced correctly.&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2020-05-22</pubDate>
      <link>https://fyr.io/post/g_suite_migration_for_outlook_error_0x8004106b</link>
      <guid isPermaLink="true">https://fyr.io/post/g_suite_migration_for_outlook_error_0x8004106b</guid>
      <category>tech</category>
      <category>google</category>
      <category>outlook</category>
      <category>g suite</category>
      <category>migration</category>
      <category>email</category>
    </item>
     <item>
      <title>Working With Covid19</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Working With Covid19&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Saturday 2nd of May 2020 at 00:00&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;I don&#039;t appear to have had Covid-19, this post is more about working with it in the world, not working whilst ill!&lt;/p&gt;
      &lt;p&gt;Bit of a rambling post, I&#039;m adding to it between jobs so forgive any abrupt topic shifts.&lt;/p&gt;
      &lt;p&gt;Schools are closed, but students still need to learn. As tech support for a school, enabling this has been... Well, easy to be honest. We&#039;re a Google school so the shift for our students (and those teachers that bothered to learn it...) has been relatively simple. But there&#039;s more to a school than enabling teachers to provide material and help to students. The challenges arose (and continue to become apparent) with all the other departments that enable teachers to do their jobs; wellbeing, admin, safeguarding, leadership, the list goes on.&lt;/p&gt;
      &lt;p&gt;For us in tech support, the whole team has been busy providing support for the schools in the local area. We&#039;re avoiding going on-site wherever possible, though this is not always avoidable. Remote support is not something we had prepared for, either. We&#039;ve been using Chrome Remote Desktop to get on to other user devices who are also at home, but as nobody has local admin and Chrome Remote Desktop won&#039;t pass through UAC prompts we&#039;ve been unable to fix a small subset of issues. Something to correct moving forward for sure - a remote assistance like product (something along the lines of GoToAssist or LogMeIn) would be swell, but it&#039;s a bit late to deploy it now.&lt;/p&gt;
      &lt;p&gt;We had to roll out laptops to our non-teaching staff, but unfortunately with limited devices available many staff simply don&#039;t have the ability to do much work that can&#039;t be done on a phone. Many people who said they have devices at home didn&#039;t account for the fact that their two-point-four kids and partner would also be needing it. We didn&#039;t take this in to account either and are paying for it now.&lt;/p&gt;
      &lt;p&gt;Some students also don&#039;t have devices, however the DfE is offering devices to those most vulnerable. We&#039;ll see how that goes, I can&#039;t imagine there&#039;s a stock of millions of laptops stored in a warehouse somewhere, but something is better than nothing!&lt;/p&gt;
      &lt;p&gt;I&#039;ve wanted to work from home for a long time and have biased towards tools that can be used from anywhere. Rolling these out to a wider user base has certainly highlighted issues in our processes and changes we can make in the future, however for now we&#039;re... doing pretty well, actually.&lt;/p&gt;
      &lt;p&gt;The impact on education won&#039;t be felt for a long time, but there are already some interesting developments.&lt;/p&gt;
      &lt;p&gt;Some staff are arguing for the use of what are effectively spying tools to check up on both staff and students. Thankfully, this is being outright rejected by senior staff in our school. Others are demanding a lot of their teams, forgetting that some of them have kids and/or elderly and vulnerable relatives and neighbours to look after. This is having a direct impact on the teaching and learning - some staff are just exhausted. I&#039;m getting emails from staff late at night and very early in the morning. Students are also submitting work at unhealthy hours.&lt;/p&gt;
      &lt;p&gt;I love working from home. Much more productive, fewer interruptions lead to better quality of work faster. It&#039;s great. But for some it&#039;s clear their home-life does not facilitate it well.&lt;/p&gt;
      &lt;p&gt;I&#039;m hoping once the pandemic is over, we keep what we&#039;ve learned and don&#039;t just rush right back in to how life was before. I&#039;m not sure I can survive a full-time office job anymore...&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2020-05-02</pubDate>
      <link>https://fyr.io/post/working-with-covid19</link>
      <guid isPermaLink="true">https://fyr.io/post/working-with-covid19</guid>
      <category>life</category>
      <category>covid</category>
      <category>lockdown</category>
      <category>education</category>
      <category>school</category>
      <category>work</category>
      <category>learning</category>
      <category>work from home</category>
    </item>
     <item>
      <title>Dead Wood</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Dead Wood&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Thursday 30th of April 2020 at 00:00&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;Next to our house is large Oak (I think?) tree which has, over last three years, slowly died.&lt;/p&gt;
      &lt;p&gt;It&#039;s not on our property, but had grown over the house. We had some high winds earlier this year which resulted in a decent percentage of the small branches falling on to our roof and garden. No damage, but it was clear the tree was becoming more brittle and heading towards dangerous territory.&lt;/p&gt;
      &lt;p&gt;The owners recently organised to have it cut down. This was a sad moment, however I asked for a slice of wood from the tree. Our house sign rotted away a while ago and I had my eye on the wood from this tree. I&#039;m hoping to use this slice to make a new sign at some point as a nice little tribute to the beast that has stood guard over our property for decades.&lt;/p&gt;
      &lt;p&gt;All I need to do now is figure out how to properly do this, or find someone to do it for me!&lt;/p&gt;
      &lt;p&gt;The neighbour will be using the wood in their log burner but has offered some to us, too. Doesn&#039;t look like we&#039;re going to be cold next winter, or perhaps the winter after depending on how long it needs to dry for.&lt;/p&gt;
      &lt;p&gt;One silver lining: it&#039;s now feasible for us to get solar panels!&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2020-04-30</pubDate>
      <link>https://fyr.io/post/dead-wood</link>
      <guid isPermaLink="true">https://fyr.io/post/dead-wood</guid>
      <category>life</category>
      <category>nature</category>
      <category>oak</category>
      <category>tree</category>
      <category>hazard</category>
    </item>
     <item>
      <title>A Leak Here And A Leak There</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;A Leak Here And A Leak There&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Tuesday 10th of December 2019 at 00:00&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;We&#039;re &lt;a href=&quot;/post/mould&quot;&gt;slowly eradicating our mould problems&lt;/a&gt; and it seems the universe has taken offense.&lt;/p&gt;
      &lt;p&gt;First off, our shower is leaking. The leaky pipes are within the wall and just happen to be directly above a power outlet located on the other side. The paint has bubbled up on this wall as the moisture slowly found its way out and down toward the source of electricity. We&#039;re no longer able to shower or we risk the wall getting more damaged and the potential for a fire to start. We noticed the paint bubbling, popped the side of the bath off (our shower is above the bath tub) and realised the concrete floor was soaked, the underside of the bath and the wood that helps support it were literally caked in mould. The water has also soaked into the concrete and found its way under the wall into the kitchen. This appears to have been happening for a while now as the kitchen units along that wall are also caked in mould across the back. We will likely need to replace the units in the kitchen, which isn&#039;t too much of an issue as we needed a new kitchen anyway, as well as dismantle half the bathroom to fix the source of the problem, which is also not too much of an issue as we also needed a new bathroom. Maybe £10k to do them both to a decent standard.&lt;/p&gt;
      &lt;p&gt;To add insult to injury, the cess pit decided to spring a leak. The container itself is, thankfully, fine. There&#039;s a broken inlet pipe somewhere, letting rainwater in. We don&#039;t have an issue with sewage leaking out but every time it rains the cess pit fills up pretty quickly. We could likely dig up the pipes and try to fix it but we need to replace the cess pit for a water treatment plant anyway. This is not a cheap thing to do - we&#039;re looking at a starting figure of about £8k, though this will likely increase due to some issues with the water run-off and our lack of land.&lt;/p&gt;
      &lt;p&gt;They say it comes in three&#039;s. They&#039;re wrong.&lt;/p&gt;
      &lt;p&gt;My car engine light came on. Hopefully this is just the sensor - clearing it hasn&#039;t worked so the next step is to replace the sensor itself. I&#039;m not sure what the sensor is called but it checks the engine vibration and if it detects something amiss, alerts the driver. If the sensor is not faulty it&#039;s potentially a new engine, which with my old-ass car likely means a new car.&lt;/p&gt;
      &lt;p&gt;A day after the engine warning light came on, my windscreen cracked. Luckily my insurance covers the cost of repair minus £125, which I have to pay. Not too bad.&lt;/p&gt;
      &lt;p&gt;Though a few days after, my partner and the baby were in a car crash. Both are fine! However the car is likely a write-off. The other party admitted fault right away and their insurance will pay out the value of the car, but until that happens we&#039;re without a second car, which makes it difficult for me to fix mine. Not impossible, just difficult.&lt;/p&gt;
      &lt;p&gt;I guess it comes in six&#039;s? Maybe two sets of three.&lt;/p&gt;
      &lt;p&gt;I&#039;m excited to get these problems sorted. Though they&#039;ve all come at once, besides the written off car they&#039;re all things we planned on doing anyway. They&#039;re the last renovation things we need to do before we can start on the detailing - primarily, sorting out the network (allowing me to finally post something technical on here again)&lt;/p&gt;
      &lt;p&gt;The fact that these things are now active problems means we&#039;re more focused on fixing them. We could have paid to update our bathroom at any point but have been putting it off. Now, though, we&#039;re looking at getting it done sooner. The downside is that we don&#039;t have the money to do it all in one go so we do need to pick our battles in the right order (the cess pit first!)&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2019-12-10</pubDate>
      <link>https://fyr.io/post/a-leak-here-and-a-leak-there</link>
      <guid isPermaLink="true">https://fyr.io/post/a-leak-here-and-a-leak-there</guid>
      <category>life</category>
      <category>shit luck</category>
      <category>leak</category>
      <category>car crash</category>
      <category>crack</category>
      <category>car trouble</category>
      <category>it coems in threes, twice</category>
    </item>
     <item>
      <title>Mould</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Mould&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Thursday 31st of October 2019 at 00:00&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;We&#039;ve had mould problems ever since moving in to this property. We found it under coving, under the old carpet, behind wallpaper and in the kitchen cupboards.&lt;/p&gt;
      &lt;p&gt;We&#039;ve slowly been eradicating it - we had most of the issues resolved (except for in the kitchen, but more on that in the next post...) by the time we had finished decorating. However, it kept coming back in our bedroom and in the bathroom along the edges of the ceiling/walls. We had put this down to humidity. At night we breathe whilst sleeping, and in the bathroom... well, that one is obvious. I was getting frustrated with the constant mould recently and called up a specialist company.&lt;/p&gt;
      &lt;p&gt;They refused to take my money.&lt;/p&gt;
      &lt;p&gt;Instead, they gave me some (free) tips which, in hindsight, are quite obvious if I had thought about it. I appreciate that they did this instead of charging for someone to come out and do the work for me!&lt;/p&gt;
      &lt;p&gt;First off, they told me that a high humidity does not result in mould. Instead, where condensation forms is where mould forms. Condensation appears where a surface is cold enough for the moisture in the air to turn into water when it comes into contact with that surface. If you can prevent the moisture from ever getting into the air (essentially impossible in a home) OR warm up those surfaces, condensation won&#039;t form as easily, and therefore mould will have a harder time growing.&lt;/p&gt;
      &lt;p&gt;Heating a room does not achieve this on its own. As the mould was forming along the edges of where the ceiling/walls met (on externally facing walls, too!) the specialist company surmised that the insulation in the loft was not covering those areas. The heat was escaping through the plasterboard ceiling and not being held by insulation, cooling the area down. Water in the warm air would travel up, hit the ceiling barrier and condense there, dripping down the walls if enough formed.&lt;/p&gt;
      &lt;p&gt;Up to the loft I went to disover that this was indeed the case. In some areas (not coincidentally the same areas where we had the most issues with mould) up to two foot of ceiling was exposed. Luckily, there was a spare roll of insulation up there already. I used this to fill in the edges about a week ago and since then we&#039;ve not had any more mould appear in those trouble spots. Early days of course, and we&#039;re still getting mould around the windows, but I have some thermal insulating paint to test there.&lt;/p&gt;
      &lt;p&gt;Ideally we&#039;d replace our windows but can&#039;t really afford to do so at the moment - they&#039;re old and the seal has broken on some of them, which we will get repaired.&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2019-10-31</pubDate>
      <link>https://fyr.io/post/mould</link>
      <guid isPermaLink="true">https://fyr.io/post/mould</guid>
      <category>life</category>
      <category>mould</category>
      <category>condensation</category>
      <category>insulation</category>
    </item>
     <item>
      <title>Sims Net Is Slow</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Sims Net Is Slow&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Wednesday 4th of September 2019 at 00:00&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;I should preface this technical post by saying that I am in no way a database dude. I understand what they are and how they work at a basic level and sure, I&#039;ve written some basic SQL queries in PHP or queried some stuff in MSSQL but as a typical “jack-of-all-trades” type I am no expert by any stretch of the imagination.&lt;/p&gt;
      &lt;p&gt;This is also relevant for any database, not just SIMS.Net.&lt;/p&gt;
      &lt;h3&gt;What is SIMS?&lt;/h3&gt;
      &lt;p&gt;Slow.&lt;/p&gt;
      &lt;p&gt;For those of you who don&#039;t know, SIMS(.Net) is a &lt;a href=&quot;https://www.capita.com/&quot; target=&quot;_blank&quot;&gt;Capita &lt;/a&gt;application used by a whole bunch of schools to record data about their staff, students and their parents. It&#039;s a school &lt;a href=&quot;https://en.wikipedia.org/wiki/Management_information_system&quot;&gt;MIS&lt;/a&gt;.&lt;/p&gt;
      &lt;p&gt;It&#039;s quite renown as being very slow. There are &lt;a href=&quot;https://www.google.com/search?q=sims.net+slow+site:www.edugeek.net&quot;&gt;many posts on the edugeek.net forum&lt;/a&gt; complaining about this, and there are many suggested ways of fixing it. Okay, that&#039;s not entirely true. Lots of these fixes &lt;em&gt;may&lt;/em&gt; grant you a slight boost, but the backend of SIMS was written a very long time ago (decades) and at the end of the day it&#039;s just a slow bit of software. That said, there are some things that can be done to help, and this post outlines one of them.&lt;/p&gt;
      &lt;h3&gt;The Database File&lt;/h3&gt;
      &lt;p&gt;SIMS is a Windows client-server application. The server side runs from a single database, though there are some additional features which have their own databases.&lt;/p&gt;
      &lt;p&gt;Typically, the schools IT department will not install the SIMS server. It&#039;s quite finicky and likes things set up in a very particular way, and is often handled by a third party organisation.&lt;/p&gt;
      &lt;p&gt;The client application uses a shared network drive for some data storage. Typically, at least in every school I have seen, this is set up on the same drive on the server as the database is stored in. This is generally bad practise when it comes to databases - you should put your database file on a disk/drive that has nothing else on it. No OS, no file storage, no nuthin&#039;!&lt;/p&gt;
      &lt;p&gt;There are a couple of reasons for this. The most obvious is that if a file on that same disk is being written to or read from, the database isn&#039;t being used. Your application must wait its turn before the database can be queried. Schools don&#039;t really care about this as the slowdown is not noticeable by end users given the volume of non database data being read or written, but on systems where every mili- or microsecond counts this can be a big bottleneck depending on the frequency of use the other files on the disk see.&lt;/p&gt;
      &lt;p&gt;The second reason is related to the first, and it has to do with how the database file itself is initially set up. You can define the size of a database when you create it. You should really set it to be bigger than the expected end size of the database when it&#039;s time to migrate it to a new system or replace it. Typically, if you know that in 3 years you&#039;re going to migrate away from the system and it will have approx 10GB of data in the database, you will probably want to add 20-50% extra on top of this &lt;em&gt;when you first set up the database&lt;/em&gt; to allow the data to grow into the file. So you go make a 15GB database and can sit happy knowing that you&#039;ll likely never touch the sides.&lt;/p&gt;
      &lt;p&gt;You can set the database up to dynamically grow once you&#039;ve filled it up, too. This is called “Autogrowth”. You start with a, say, 20MB database, but this quickly fills up. MSSQL is configured to allow this to grow, so increases the file size of the database in chunks. These chunks can be consistently sized (add 1MB each time) or a percentage of the current size (eg: grow by 10% current filesize. 100MB database grows into a 110MB database, which then grows into a 122MB database, and so on)&lt;/p&gt;
      &lt;p&gt;The default growth size for a database file to grow by is 1MB. This means that if you have a heavily used database with loads of data going in often, MSSQL will need to constantly grow the database by 1MB each time. This is obviously going to add some overhead to operations, however there&#039;s another side effect to this when you have other files being used on the same drive as the database.&lt;/p&gt;
      &lt;p&gt;If you have a 50MB database, then write some files to the drive, then add more data to the database such that the database needs to increase in size, youre going to end up with 50MB of database data on the disk in a chunk, a bunch of files next to it, then next to that another chunk of database file data. You see a single 51MB file, but at a disk level there&#039;s one 50MB chunk, random file data, then another 1MB chunk. This is called fragmentation, and it means that for the hard drive to pull data out of the database it needs to move a little needle (if you&#039;re using old spinning disks, like us. What about SSDs? &lt;a href=&quot;https://www.sqlskills.com/blogs/jonathan/does-index-fragmentation-matter-with-ssds/&quot;&gt;Glad you asked&lt;/a&gt;.) a greater distance and more often to get at the data you want. This slows things down.&lt;/p&gt;
      &lt;h3&gt;What the Frag!?&lt;/h3&gt;
      &lt;p&gt;Where I work, I recently found that the database had been set up with unlimited growth in 1MB increments. We went from a near-zero sized database at initialisation to what is currently a 26GB file. Each time we added data that pushed the database file to full, MSSQL would only ever add 1MB to the size of the file.&lt;/p&gt;
      &lt;p&gt;This, combined with the use of a network drive which has been configured on the same disk, has given us a horribly fragmented database!&lt;/p&gt;
      &lt;p&gt;There&#039;s a SysInternals tool called &lt;a href=&quot;https://docs.microsoft.com/en-us/sysinternals/downloads/contig&quot;&gt;contig.exe&lt;/a&gt; which allows you to query an individual file or filesystem and show you how fragmented it is.&lt;/p&gt;
      &lt;p&gt;Following &lt;a href=&quot;https://www.mssqltips.com/sqlservertip/3008/solving-sql-server-database-physical-file-fragmentation/&quot;&gt;this guide&lt;/a&gt; I queried the database to see how fragmented it was. Keep in mind, here, that the author of that guide made a 3.5GB test database and purposefully fragemented it 2000 times to show a “heavily fragmented” example.&lt;/p&gt;
      &lt;p&gt;Here are the results from my test.&lt;/p&gt;
      &lt;pre class=&quot;codeblock&quot;&gt;PS C:\temp\contig&amp;gt; .\Contig.exe -a &quot;E:\MS SQL SERVER 2012\MSSQL11.SIMS2012\MSSQL\DATA\SIMS.mdf&quot;

Contig v1.8 - Contig
Copyright (C) 2001-2016 Mark Russinovich
Sysinternals

E:\MS SQL SERVER 2012\MSSQL11.SIMS2012\MSSQL\DATA\SIMS.mdf is in 102951 fragments

Summary:
     Number of files processed:      1
     Number unsuccessfully procesed: 0
     Average fragmentation       : 102951 frags/file&lt;/pre&gt;
      &lt;p&gt;Yeah. 102951 fragments for a single file. That&#039;s insane. Every time the database is queried it likely needs to navigate around the disks dozens of times to get all the relevant data, slowing things down considerably.&lt;/p&gt;
      &lt;h3&gt;Fixing Fragmentation&lt;/h3&gt;
      &lt;p&gt;We can use the contig.exe tool to fix this. It requires that the database is offline so I&#039;ve had to wait until this weekend to do this.&lt;/p&gt;
      &lt;p&gt;I took the database offline (via the MSSQL Server Management Studio GUI) and attempted to defrag the database file.&lt;/p&gt;
      &lt;pre class=&quot;codeblock&quot;&gt;PS E:\MS SQL SERVER 2012\MSSQL11.SIMS2012\MSSQL\DATA&amp;gt; C:\temp\contig\Contig.exe .\SIMS.mdf

Contig v1.8 - Contig
Copyright (C) 2001-2016 Mark Russinovich
Sysinternals


Summary:
     Number of files processed:      1
     Number of files defragmented:   1
     Number unsuccessfully procesed: 0
     Average fragmentation before: 102951 frags/file
     Average fragmentation after : 3 frags/file&lt;/pre&gt;
      &lt;p&gt;After waiting anxiously for 40 minutes the results of the operation came through. We went from a database split into 102951 fragments to a database split into just 3.&lt;/p&gt;
      &lt;p&gt;I revived the database by bringing it back online, verified it was working, then carried on with my weekend. All in all, it only took me about an hour and a half on a Saturday to sort this out.&lt;/p&gt;
      &lt;h3&gt;Results&lt;/h3&gt;
      &lt;p&gt;Before I did the work over the weekend I took some rudimentary speed tests of the SIMS application to determine if the change actually had any effect.&lt;/p&gt;
      &lt;p&gt;I perfomed two tests three times. They wouldn&#039;t stand up in a court of law but they&#039;re good enough for my purposes.&lt;/p&gt;
      &lt;p&gt;I timed how long it would take to log in - hitting &#039;Enter&#039; on the username/password window to getting the logged in GUI loaded - and I also ran a report on our on-role students containing their forename, surname, year &amp;amp; registration group code. A simple report.&lt;/p&gt;
      &lt;p&gt;Both of these tests were performed at approx 11am on a weekday. Nothing else was going on at the time (no large reports) but SIMS was actively being used by a few dozen staff. The results are in seconds.&lt;/p&gt;
      &lt;h4&gt;Before defrag - Friday&lt;/h4&gt;
      &lt;p&gt;Logging In&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;16.7S&lt;/li&gt;
        &lt;li&gt;7.1&lt;/li&gt;
        &lt;li&gt;9.9 &lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;Report&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;18.6&lt;/li&gt;
        &lt;li&gt;15.7&lt;/li&gt;
        &lt;li&gt;18.7 &lt;/li&gt;
      &lt;/ul&gt;
      &lt;h4&gt;After defrag - Monday&lt;/h4&gt;
      &lt;p&gt;Logging in&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;10.6&lt;/li&gt;
        &lt;li&gt;5.7&lt;/li&gt;
        &lt;li&gt;5.8 &lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;Report&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;14.1&lt;/li&gt;
        &lt;li&gt;11.9&lt;/li&gt;
        &lt;li&gt;14.3 &lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;As you can see, after the defrag has &lt;em&gt;likely&lt;/em&gt; (assuming no unknown other reason for the slow results initially) shaved off a number of seconds from each run. The first login of the day is always the slowest as some stuff gets cached on your machine, but even that was sped up (by over 6 seconds!)&lt;/p&gt;
      &lt;p&gt;Overall, whilst not conclusive nor scientifically sound, I am happy with this approximate 30% speed boost and have begun looking into our other databases to see if they&#039;re suffering from the same fragmentation.&lt;/p&gt;
      &lt;p&gt;I would advise you take a look at your SIMS database, too. Hell, any database you have. If you&#039;re a database guru you likely know about this already and laugh at my realisation but it was genuinely surprising news to me, though obvious in hindsight. I know about file fragmentation, I just didn&#039;t think about it in the context of automatic database growth.&lt;/p&gt;
      &lt;p&gt;Being able to say “I&#039;ve increased the speed of one of our most critical applications by between 24-40%” sure feels good. Though it should have never been set up this way in the first place…&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2019-09-04</pubDate>
      <link>https://fyr.io/post/sims_net_is_slow</link>
      <guid isPermaLink="true">https://fyr.io/post/sims_net_is_slow</guid>
      <category>tech</category>
      <category>sims.net</category>
      <category>SQL</category>
      <category>MSSQL</category>
      <category>database</category>
      <category>fragmentation</category>
    </item>
     <item>
      <title>Boiler High Heat</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Boiler High Heat&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Wednesday 31st of July 2019 at 00:00&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;We had a &lt;a href=&quot;https://www.bbc.co.uk/news/world-europe-49100271&quot;&gt;bit of a warm spell&lt;/a&gt; recently. One side effect for us was that some of our sites boiler control systems started to panic in an unexpected way.&lt;/p&gt;
      &lt;p&gt;Each boiler is fitted with a fire alarm which links into the site-wide system. Unfortunately it got so hot in a couple of the storage-heater boiler rooms that the temperature sensor started flipping out thinking there were flames causing the heat. Luckily, we caught the alarm within the 3 minute silent alarm before emergency services were automatically contacted and the site-wide alarm sounded, prompting an evacuation.&lt;/p&gt;
      &lt;p&gt;Overriding a firealarm long term is not a good idea, so we had to find a way to reduce the temperature in these small, cramped, dusty rooms.&lt;/p&gt;
      &lt;p&gt;Our solution was simple, but I liked it a lot - turn off the heating element, then run around the building turning on all the hot water taps.&lt;/p&gt;
      &lt;p&gt;This refilled the hot water storage tanks with cold water. The taps being on carried all the heat away from the room and within minutes the room had cooled significantly. It is a bit of a waste of water, which is a shame, and there was no hot water in the building for the afternoon, but that beats evacuating out from our cool offices into the high-thirty-C outdoors.&lt;/p&gt;
      &lt;p&gt;The simple fixes are the best.&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2019-07-31</pubDate>
      <link>https://fyr.io/post/boiler_high_heat</link>
      <guid isPermaLink="true">https://fyr.io/post/boiler_high_heat</guid>
      <category>life</category>
      <category>heat</category>
      <category>boiler</category>
      <category>simple fix</category>
    </item>
     <item>
      <title>Witholding Number On External Calls On Avaya Ip Office R5 Manager</title>
      <description>    &lt;article&gt;
      &lt;header&gt;
        &lt;h2&gt;Witholding Number On External Calls On Avaya Ip Office R5 Manager&lt;/h2&gt;
        &lt;p&gt;Posted on &lt;time&gt;Monday 29th of July 2019 at 00:00&lt;/time&gt;&lt;/p&gt;
              &lt;/header&gt;
      &lt;p&gt;It took some googling to figure out, but eventually I came across the answer to this problem across a combination of a couple of old forum posts. I&#039;m writing it here on the off chance someone else needs this. Or if I need it again.&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;Log into the IP Office R5 Manager&lt;/li&gt;
        &lt;li&gt;Navigate to the Short Code tree&lt;/li&gt;
        &lt;li&gt;Find the &lt;code&gt;?&lt;/code&gt; entry - the feature name is &lt;code&gt;Dial&lt;/code&gt;&lt;/li&gt;
        &lt;li&gt;Change the &lt;code&gt;Telephone Number&lt;/code&gt; field to one of the following depending on what you want
          &lt;ul&gt;
            &lt;li&gt;&lt;code&gt;.&lt;/code&gt; - this will withold the number you&#039;re dialing from&lt;/li&gt;
            &lt;li&gt;&lt;code&gt;.S&amp;lt;number&amp;gt;&lt;/code&gt; (eg: &lt;code&gt;.S01234567890&lt;/code&gt;) - this will show &amp;lt;number&amp;gt; when you dial&lt;/li&gt;
          &lt;/ul&gt;
  &lt;/li&gt;
  &lt;/ul&gt;
      &lt;p&gt;&amp;lt;number&amp;gt; should be your number. If I set it to a number I don&#039;t own, it just shows the one I&#039;m calling from.&lt;/p&gt;
      &lt;hr&gt;
      &lt;p&gt;Sometimes a business has some system or piece of infrastructure that &lt;em&gt;just works&lt;/em&gt;. This is a good thing! Unfortunately, some businesses don&#039;t like to invest in technology unless that technology breaks.&lt;/p&gt;
      &lt;p&gt;In related news, I recently had to figure out how to toggle a setting on some old software, Avaya IP Office R5. As someone who is totally &lt;em&gt;not&lt;/em&gt; a phone/VOIP person this was a challenge. Add on to that the fact that the software isn&#039;t very well designed and you have me fumbling about trying to understand terminology and remember where obscure settings are just to do the basics. &lt;/p&gt;
      &lt;p&gt;This software was managing a 15 year old phone system, and since its inception had been showing as a withheld/private number when calling out to external phones. Not sure why this was ever set, but it&#039;s off now.&lt;/p&gt;
    &lt;/article&gt;

</description>
      <pubDate>2019-07-29</pubDate>
      <link>https://fyr.io/post/witholding_number_on_external_calls_on_avaya_ip_office_r5_manager</link>
      <guid isPermaLink="true">https://fyr.io/post/witholding_number_on_external_calls_on_avaya_ip_office_r5_manager</guid>
      <category>tech</category>
      <category>voip</category>
      <category>phone</category>
      <category>avaya</category>
      <category>withhold</category>
      <category>avaya ip office r5 manager</category>
    </item>
   </channel>
</rss>
