Shellsharks Blogroll - BlogFlock https://blogflock.com/list/xJ8yq 2026-09-10T12:49:00.000Z BlogFlock shellsharks 2026-09-10 13:49: The constant outrage on #Mastodon (and maybe other social sites?) for is so tiring. - Kev Quirk https://kevquirk.com/2026-09-10-1349 2026-09-10T12:49:00.000Z Kev Quirk <p>The <em>constant</em> outrage on #Mastodon (and maybe other social sites?) for <code>[bad thing of the day]</code> is so tiring.</p> <div class="email-hidden"> <hr /> <p>Thanks for reading this post via RSS. RSS is ace, and so are you. ❤️</p> <p>You can <a href="mailto:19gy@qrk.one?subject=2026-09-10%2013%3A49">reply to this post by email</a>, or <a href="https://kevquirk.com/2026-09-10-1349#comments">leave a comment</a>.</p> </div> Put an AV test at the start of your slides - Terence Eden’s Blog https://shkspr.mobi/blog/?p=68346 2026-09-10T11:34:10.000Z Terence Eden’s Blog <p>For years, I've had a <a href="https://shkspr.mobi/blog/2017/11/put-a-test-card-at-the-start-of-your-slides/">test-card at the start of my slides</a>. Before I start my talk, I can immediately see if the aspect ratio is wrong, colours are off, or any other visual issues with the presentation.</p> <img src="https://shkspr.mobi/blog/wp-content/uploads/2017/10/Test-Card-on-a-screen.jpg" alt="A test card is displaying on a television screen" width="1024" height="768" class="alignleft size-full wp-image-28772"> <p>A few years ago I was invited to give a talk and was assured that the venue was set up for audio as well as video. I dutifully filled my slides with with demo videos containing sound. None of them worked. Somewhere between the HDMI output of the presentation laptop and the speakers, the audio went <abbr title="Absent Without Leave">AWOL</abbr>.</p> <p>Ever since then, I've placed an audio test slide at the start of my presentations. There's <a href="https://www.youtube.com/results?search_query=sound+sync+test">a good range of videos on YouTube</a> - pick one you like, embed it into your slides, and play it before your talk starts.</p> <p>Over the years, I've found the following "bugs" with event AV setups:</p> <ul> <li>No sound.</li> <li>Only left channel working.</li> <li>Severe latency between audio and video.</li> <li>Garbled sound.</li> <li>Sound routing to the room but not the livestream.</li> <li>Feedback / howl around when sound playing.</li> </ul> <p>Whether events are professionally run or community managed, you can never guarantee that sound will work. Add subtitles to your videos. If possible, add a sign-language interpreter. And, if all else fails, hold your microphone to your laptop's speakers.</p> <img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=68346&HTTP_REFERER=Atom" alt width="1" height="1" loading="eager"> Visual; textual - James' Coffee Blog https://jamesg.blog/2026/09/10/visual-textual 2026-09-10T00:00:00.000Z James' Coffee Blog <p>My home page is a poem. I designed it in this way to explore the extent to which a literary medium – a poem – could be used for navigation, for <a href="https://jamesg.blog/2026/08/10/poems-as-wayfinding">way finding</a>. Poems help me see the world differently, to navigate thoughts. So too does navigation: every link is a bridge to a new place, to new thoughts. While the style is unconventional and less clear than traditional navigation bars, I love it. My home page brings me closer to poetry, and reminds me of my love of words.</p> <p>For the last few weeks, I have had an idea in the back of my mind: what if my home page poem had a few icons in the background that served as visual cues to different stanzas in the poem? These icons might make it easier to find particular sections of the poem. The would also add a more visual dimension to the poem. While poems are visual in themselves – the spaces between words and stanzas, indentations, the lengths of lines, the space the poem takes on a page, the typography used, and the symbols used, among other factors, all influence how we read a poem – images add a new dimension.</p> <p>One of the things I love most about the web is that I can ask myself “what would this look like?” and then, through code and tinkering, bring the idea to life. I spent some time this morning searching through <a href="https://phosphoricons.com/">Phosphor Icons</a>, an MIT-licensed icon set I use for, among other things, the icons in my mobile navigation bar. I decided on a flower for the first stanza, which speaks of stories and poems and ideas and joy, a notebook for the second, where my most recent blog posts are listed, and footsteps for the third stanza, which is more about navigation. I am not fully set on footsteps for the third stanza, as they don’t quite relate to the invitation to say hello at the beginning of the stanza. Indeed, part of the creative challenge of this concept is to find an image that matches many words.</p> <p>Here is what I designed:</p> <p><figure><picture><img alt="" loading="lazy" src="https://jamesg.blog/assets/uploads/iconhomepage.png" style=" max-width: 130%;"/></picture></figure></p> <p>Faint blue icons appear on alternating sides of each stanza: right, left, right. The icons are all at slight angles. An opacity is applied so that the icons do not stand out as much as the words in the poem. The icons complement the text in each stanza to varying extents.</p> <p>Thinking about the idea of adding images to a poem brought me back to a list I started curating in the last month of places where words exist next to images. Words appear on album covers as part of the art designed to represent the album. Words appear in front of or near images on book covers. In museums, words appear on some paintings (i.e. signatures, or even, in some cases, stories), next to art (i.e. on information plaques), below art (i.e. on a label on the frame of a painting), and more. Words and images, although separate modalities, appear together so often. Indeed, I have started to add more images to my home page that was originally all-text except for my website mascot; the images I have since added – two buttons – convey information in a way I can’t with words, but also serve as a complement to what is on the page.</p> <p>While I haven’t rolled out this design on my home page – and I’m not sure yet if I will – it has been interesting to explore the intersection of the visual and the textual in this way. Indeed, my poem also explores a third dimension – navigation – through the links it uses. It is fascinating to try and extend a literary medium with the affordances that hypertext allows. What if a poem revealed a piece of art every time you hovered over a stanza?</p> <p>My main reservation with the icon design is that it may distract from the words. But it also creates new visual anchors. There is a lot to think about.</p> <p>This crossing of disciplines relates to a conversation I had earlier this year with an uncle when I mentioned that I don’t think the sciences and the arts are disconnected, but rather are complementary. I can’t remember his exact words, but I was left feeling excited about how someone else also didn’t see them as separate buckets. Similarly, it is interesting to think of words and images not only in the context of each modality, but in the context of all the spaces in between. Indeed, we already have picture books, prose poetry, technical writing, visual communication, and many other forms that combine two concepts or traditions together.</p> <script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a38db58d9d2ea619',t:'MTc4OTAzNTcyMQ=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script> <a class="tag" href="https://jamesg.blog/2026/08/10/poems-as-wayfinding">way finding</a> <a class="tag" href="https://phosphoricons.com/">Phosphor Icons</a> A Year of Silksong - Joel's Log Files https://joelchrono.xyz/blog/a-year-of-silksong 2026-09-09T18:10:00.000Z joelchrono <p>It’s been a whole year now since <em>Hollow Knight: Silksong</em> finally released, and it has been a <em>delightful</em> journey.</p> <p>I wasn’t there for a lot of the hype around it, I was more than happy playing <a href="/blog/hollow-knight"><em>Hollow Knight</em></a> in the span of a year or so, and beat it only a few days after Silksong was finally released to the public on September 4, 2025, a day after I posted my review.</p> <p>I was perfectly aware of the meme though, and the time it took for this sequel to finally show up, so I was very clearly hyped, and I had decided that I would buy and start <em>Silksong</em> on the very first day, the first time I even considered doing something like that.</p> <p>Waiting in line is something I’ve never done. It has always been a bit of a dream of mine, to wait for a whole day behind the closed doors of a videogame shop, like those old videos on YouTube where people are camping for a whole night just to be among the first to get <em>Halo 2</em> for the Xbox back in the day, though in this case it would be a digital game I guess.</p> <p>Of course, we all know how that went. The servers on every single gaming platform were overwhelmed for hours, as people tried and failed to purchase this twenty dollar game. I was trying to get to it on the Nintendo Switch, but I failed to do so.</p> <p>Thankfully, I was actually at work, and I would have been unable to play the game immediately anyway, so I simply waited until later to purchase it and finally get started with it.</p> <p>The progress I’ve made so far in the span of a year has been… slow. I pick it up when I want and leave it be when I feel like trying something else. I’ve not pushed myself t play it when I don’t want to, and I have even abandoned it for months at a time, until things line up and I can return to it.</p> <p>Most of my progress has been consistently shared on a <a href="https://fosstodon.org/@joel/115148705875759493">long thread</a> that has been around since the game first came out, lots of screenshots and recordings can be seen of the most important steps of my journey through Pharloom.</p> <p>In case you somehow don’t know this, Silksong is a Metroidvania game with Soulslike elements, in case you don’t know what that means, you basically get lost in a world that is gated by hard to reach areas, so you have to get new powers that let you make progress. Oh, and you also have to fight against enemies and bosses that will kill you in three hits. Incredibly fun!</p> <p>At this point I could write a review for the game, but since I’m still going through Act 3, I want to finish that first too. Kind of funny considering I didn’t go through a lot of Hollow Knight, avoiding the Path of Pain and much of the DLC content, but well, things happen, I may even revisit that game later on.</p> <p>As of today, I have been playing this game for over 80 hours, making it the most played title in my Nintendo Switch, surpassing <em>The Hundred Line: Last Defense Academy</em>. Both games still have a bunch of playtime left for me to go through, so I am wondering how long it will be for me to get through it all.</p> <p>Of course, some titles like <em>Minecraft</em> and <em>Monster Hunter Freedom Unite</em> are still hundreds of hours ahead, but they are completely different and I’ve also played them for many years so they have a big advantage.</p> <p>Silksong is a triumph, something truly special that I am really happy to be a part of. Dare I say it’s the only game whose release date I have memorized! So of course I just wanted to yap a little bit about it.</p> <p>Definitely not a game for everyone, even after all the updates that have balanced some of the difficulty, but if you are up for a challenge, it is always worth a try!</p> <figure> <img src="/assets/img/blogs/2026-09-08-silksong.webp" /> <figcaption>Hollow Knight: Silksong, downloading on my Nintendo Switch, a year ago!</figcaption> </figure> <p>This is day 32 of <a href="https://100DaysToOffload.com">#100DaysToOffload</a></p> <p> <a href="mailto:me@joelchrono.xyz?subject=A Year of Silksong">Reply to this post via email</a> | <a href="https://fosstodon.org/@joel/117242545637607826">Reply on Fediverse</a> </p> Greyscale in Doodle Scan - Robb Knight • Posts • Atom Feed https://rknight.me/blog/greyscale-in-doodle-scan/ 2026-09-09T13:46:28.000Z Robb Knight <p>Last night I was reading <a href="https://kokorobot.ca/site/processing_analog_artwork.html">this excellent post</a> about scanning pencil artwork and the first step the artist mentioned is setting the pallette to greyscale. This made me realise how useful that would be on <a href="https://doodlescan.rknight.me">Doodle Scan</a> — the black and white mode is <em>good</em> but only in some circumstances where the drawing is just lines, greyscale would be much more useful for illustrations with colour or shading.</p> <p>Like all the other features on Doodle Scan, it wasn't immediately obvious to me how to do this. After some digging and experimenting with changing RGB values, I realised the <a href="https://www.w3.org/WAI/GL/wiki/Relative_luminance">relative luminance</a> value I use to check for if the colour is light or dark can be rounded with <code>Math.round</code> to get the value I need. So <code>253.123</code> becomes <code>253</code> and I set the RGB value of that pixel to <code>253,253,253</code>.</p> <p>Below are examples of the three colour modes with default settings from <a href="https://doodlescan.rknight.me">Doodle Scan</a> and if you want a drawing a bit like this or anything you want really you can <a href="/stjude">donate to St Jude</a>.</p> <figure><img src="https://cdn.rknight.me/site/2026/doodle-scan-jeff-colour.jpg" alt="A dinosaur on a skateboard with a red shirt, blue shorts, and a yellow box with 12 in the right corner" /><figcaption>Colour version</figcaption></figure> <figure><img src="https://cdn.rknight.me/site/2026/doodle-scan-jeff-greyscale.jpg" alt="A dinosaur on a skateboard with a grey shirt, grey shorts, and a grey box with 12 in the right corner" /><figcaption>Greyscale version</figcaption></figure> <figure><img src="https://cdn.rknight.me/site/2026/doodle-scan-jeff-bw.jpg" alt="A dinosaur on a skateboard with a shirt and shorts which are both black, and a black box with 12 in the right corner" /><figcaption>Black and white version</figcaption></figure> A “proof” of Fermat’s Last Theorem that fits the margin - Trail of Bits Blog https://blog.trailofbits.com/2026/09/09/a-proof-of-fermats-last-theorem-that-fits-the-margin/ 2026-09-09T11:00:00.000Z Trail of Bits Blog <p>Fermat famously claimed to have a “truly marvelous proof” of his <a href="https://en.wikipedia.org/wiki/Fermat%27s_Last_Theorem">Last Theorem</a>, but he never wrote it down, insisting the margin of his page was too narrow to contain it. A few centuries later, Anthropic announced a complete <a href="https://www.anthropic.com/research/formalizing-fermats-last-theorem">formalization of Fermat’s Last Theorem using 13 million lines</a> of Lean code (clearly not what Fermat intended). Luckily, we found a wonderfully cursed <a href="https://github.com/leanprover/lean4/issues/14684">Lean bug</a>, shown below, that suggests the proof may have fit the margin after all. The issue affects all stable versions of Lean up to 4.33.1, and the patch is incorporated in v4.34.0-rc1.</p> <p> <figure> <img src="https://blog.trailofbits.com/2026/09/09/a-proof-of-fermats-last-theorem-that-fits-the-margin/proof-fermat-image_hu_f4c2a5f3789324fb.webp" alt="“Figure showing a “checked” proof of Fermat’s Last Theorem using Lean 4.33.1”" width="1200" height="677" loading="lazy" decoding="async" /> <figcaption>A “checked” proof of Fermat’s Last Theorem using Lean 4.33.1</figcaption> </figure> </p> <p>The blue checkmarks in the screenshot above would suggest that Lean considers this proof correct. This seems odd given the amount of work Sir Andrew Wiles put into this problem and the vast size of Claude’s proof. So what is going on?</p> <p>The “proof” clearly doesn’t make any sense and exploits an issue in Lean. We found the issue while using GPT-5.6 to experiment with a new skill for code review. We want to clarify up front that the issue is not a kernel <a href="https://github.com/leanprover/lean4/pull/14806">soundness issue</a>, but it happens to nicely fit any discussion of strings, lengths, and substrings.</p> <p>The issue affects <code>String.Pos.Raw.extract</code>, Lean’s low-level string-slicing function. When asked to extract a one-byte slice at an <a href="https://github.com/leanprover/lean4/blob/f3b06c705e6c85f5314019d5d3baab0fec5b580c/src/runtime/object.cpp#L2221-L2232">astronomically large position</a>, Lean’s <a href="https://github.com/leanprover/lean4/blob/f3b06c705e6c85f5314019d5d3baab0fec5b580c/src/Init/Data/String/Basic.lean#L3012-L3014">logical definition</a> returns <a href="https://github.com/leanprover/lean4/blob/f3b06c705e6c85f5314019d5d3baab0fec5b580c/src/Init/Data/String/Basic.lean#L3017">the empty string</a>. But the <a href="https://github.com/leanprover/lean4/blob/f3b06c705e6c85f5314019d5d3baab0fec5b580c/src/runtime/object.cpp#L2374">compiled native code</a> returns <a href="https://github.com/leanprover/lean4/blob/f3b06c705e6c85f5314019d5d3baab0fec5b580c/src/runtime/object.cpp#L2376">the entire original string</a>. That disagreement is enough to manufacture a contradiction. Lean’s ordinary evaluator “proves” that the tiny slice was empty, while native evaluation “proves” that the very same slice contained “a truly marvelous proof.” Put those together, and Lean concludes that the empty string equals a non-empty string. And once you have a contradiction, you can prove anything, including Fermat’s Last Theorem.</p> <p>On the bright side, the Lean team was considerably faster than mathematical history. About 90 minutes after we reported the issue, hargoniX opened a fix for the <a href="https://github.com/leanprover/lean4/pull/14687">memory-safety problem</a>, and it was merged roughly three hours after filing. The <a href="https://github.com/leanprover/lean4/pull/14717">remaining semantic mismatch</a> was fixed by Rob23oba five days after the report, closing the issue. We’d like to give a huge shoutout to hargoniX, Rob23oba, and the Lean team for the fast turnaround.</p> <p>As a reminder, when dealing with external proofs, follow Lean’s guidance for <a href="https://lean-lang.org/doc/reference/latest/ValidatingProofs/">validating a Lean proof</a>. In our proof-of-concept code above, <code>#print axioms flt</code> shows <code>'flt' depends on axioms: [propext, Classical.choice, Quot.sound, flt._native.native_decide.ax_1_1]</code>. The extra axiom <code>native_decide</code> adds the compiler to the trusted boundary, and therefore needs to be used with care. Machine-checked proofs will increasingly enable an unprecedented level of trust in mathematical results and critical software. However, more work is needed (e.g., <a href="https://github.com/digama0/lean4lean">lean4lean</a> and <a href="https://arena.lean-lang.org/">alternative kernel implementations</a>) to ensure that proofs aren’t deemed correct through exploitation of issues in theorem provers.</p> <p>Fermat’s theorem took 350+ years to prove. If you don’t want to wait that long for your code to be audited, <a href="https://trailofbits.com/contact/">contact us</a>.</p> JD CLI updated: now creates filesystem folders - Johnny.Decimal https://johnnydecimal.com/blog/0245-jd-cli-now-creates-folders/ 2026-09-09T07:35:50.000Z Johnny.Decimal <p>The <a href="https://johnnydecimal.com/jdhq/jd-cli">JD CLI</a> has been updated.</p> <p>It's migrated from using environment variables to the new <a href="https://johnnydecimal.com/jdhq/configuration">configuration file</a>.</p> <p>Now if you try to <code>jd 11.11</code> to a folder, and that folder doesn't exist, <em>and</em> your JDex is readable by the CLI – i.e. Markdown files on disk, i.e. Obsidian - then it'll create the folder for you.</p> <p>The <a href="https://johnnydecimal.com/jdhq/mcp-server">MCP server</a> has been updated to understand this tool and the configuration file. Just ask it to <code>help me install the jd cli</code>.</p> <p>Here's a short video walkthrough.</p> <div style="padding:56.25% 0 0 0;position:relative;"><iframe src="https://player.vimeo.com/video/1225173783?badge=0&autopause=0&player_id=0&app_id=58479" frameborder="0" allow="autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share" referrerpolicy="strict-origin-when-cross-origin" style="position:absolute;top:0;left:0;width:100%;height:100%;" title="W0213 Navigate your filesystem faster with the JD CLI"></iframe></div> <h2 id="if-you-installed-the-cli-before-today">If you installed the CLI before today</h2> <ol> <li> <p>Pull:</p> <pre class="astro-code astro-code-themes catppuccin-latte synthwave-84" style="--shiki-light:#4c4f69;--shiki-dark:#bbbbbb;--shiki-light-bg:#eff1f5;--shiki-dark-bg:#262335;overflow-x:auto" tabindex="0" data-language="sh"><code><span class="line"><span style="--shiki-light:#1E66F5;--shiki-light-font-style:italic;--shiki-dark:#FE4450;--shiki-dark-font-style:inherit">git</span><span style="--shiki-light:#40A02B;--shiki-dark:#F97E72"> -C</span><span style="--shiki-light:#40A02B;--shiki-dark:#BBBBBB"> ~/.jd/cli</span><span style="--shiki-light:#40A02B;--shiki-dark:#BBBBBB"> pull</span></span></code></pre> </li> <li> <p>In your <code>.zshrc</code> or <code>.bashrc</code>, find these lines. You might only have the first.</p> <pre class="astro-code astro-code-themes catppuccin-latte synthwave-84" style="--shiki-light:#4c4f69;--shiki-dark:#bbbbbb;--shiki-light-bg:#eff1f5;--shiki-dark-bg:#262335;overflow-x:auto" tabindex="0" data-language="sh"><code><span class="line"><span style="--shiki-light:#D20F39;--shiki-light-font-style:italic;--shiki-dark:#36F9F6;--shiki-dark-font-style:inherit">source</span><span style="--shiki-light:#40A02B;--shiki-dark:#BBBBBB"> ~/.jd/cli/jd-nav/jd-nav.sh</span></span> <span class="line"><span style="--shiki-light:#D20F39;--shiki-light-font-style:italic;--shiki-dark:#36F9F6;--shiki-dark-font-style:inherit">source</span><span style="--shiki-light:#40A02B;--shiki-dark:#BBBBBB"> ~/.jd/cli/jd-prompt/jd-prompt.zsh</span></span></code></pre> </li> <li> <p>Replace them both with this line.</p> <pre class="astro-code astro-code-themes catppuccin-latte synthwave-84" style="--shiki-light:#4c4f69;--shiki-dark:#bbbbbb;--shiki-light-bg:#eff1f5;--shiki-dark-bg:#262335;overflow-x:auto" tabindex="0" data-language="sh"><code><span class="line"><span style="--shiki-light:#D20F39;--shiki-light-font-style:italic;--shiki-dark:#36F9F6;--shiki-dark-font-style:inherit">source</span><span style="--shiki-light:#40A02B;--shiki-dark:#BBBBBB"> ~/.jd/cli/jd.sh</span></span></code></pre> </li> <li> <p>Start a new shell.</p> </li> </ol> Second year - James' Coffee Blog https://jamesg.blog/2026/09/09/second-year 2026-09-09T00:00:00.000Z James' Coffee Blog <p>I woke up in excitement this morning. <em>Today is the day I can start to access my course materials for next year.</em> My second year of university doesn’t officially start for another few weeks, but from today I can start reading through the introductory material. I spent the morning reading about the structure of the year in the art history and creative writing modules that I am taking: the course overview, how assignments are structured, the referencing requirements (which are going to get more intense in art history in particular, because I will be citing more artworks), and more.</p> <p>I am writing this in the afternoon, when the excitement from this morning still has not waned. If anything, it has grown more intense. I am so excited for the next year. I started reading the introduction to my creative writing textbook and already started to feel challenged in exactly the way I want. The course overview for the art history module – <em>Art and life before 1800</em> – piqued my interest in several places. In October we’ll be starting with a block on <em>Art and its Environments</em>, where we’ll be studying landscapes and forests and snowscapes and more. I was just thinking yesterday how much I love snowscapes. I wonder what I will learn about them next year. Across all of the art history work for next year, I am especially interested in learning about the role art occupied in society through history, a key theme throughout all of the blocks we will study.</p> <p>In creative writing, the main focuses will be fiction, poetry, and life writing. I am excited for all of these areas. The course also touches on building a writing practice. While I write often anyway, I have already found the exercises in creative writing have pushed me in new ways. This is precisely what I want from studying: to challenge myself and grow my skills in areas that interest me. There will also be materials on professional publication, which, while not a goal I have right now, will surely be interesting.</p> <p>After I caught my breath after a morning of reading, I realised that my first year of university is essentially complete. It will be a few weeks before I get the results from my final assignment, but there is no more work to do for my first year. <em>I did it! I finished my first year!</em> It feels somewhat surreal for my first year to be over, but here we are. Time flies. I am proud of all the work I did in my first year, and am looking forward to the next one.</p> <p>My first year, which was structured as a foundation in the humanities with opportunities to start exploring the subject area(s) we found most interesting in more depth toward the end of the year, was a whirlwind through art history and creative writing and history and religious studies and more. Every week there was something new to study. I studied <em>Jane Eyre</em>, <em>Antigone</em>, the Benin bronzes, <em>Van Gogh</em>, the foundations of Buddhism, and more. While I was eager to get to the art history topics last year, I loved the approach my school took to covering a wide area. It was the inclusion of creative writing in my first year that helped me build more confidence in my writing, especially in fiction, and ultimately led me to change my degree from a sole focus on art history to studying both art history and creative writing. This combination feels right for me.</p> <p>Here’s to another year of studying!</p> <script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a386a60bfe9b2cae',t:'MTc4ODk2MTY4Ng=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script> Less YouTube, Bandcamp Friday, Silksong returns - W36 - Joel's Log Files https://joelchrono.xyz/blog/w36 2026-09-08T21:50:00.000Z joelchrono <p>This was one of those weeks where I kind of expanded upon most of the main topics on their own blogposts already, so all I can do is summarize and share the links here! A couple extra things here and there too.</p> <p>Here’s some notes on what happened from September 1 to 7, 2026.</p> <ul> <li> <p>📺 I have decided to <a href="/blog/deleted-youtube-again/">limit my YouTube usage</a> to one hour per day on my phone. I used the <a href="https://unhook.app">Unhook</a> extension on both my phone and my computer, to remove the algorithmic feed and stick to subscriptions only.</p> </li> <li> <p>✂️ Unfortunately that also means I’ve had to cutdown on my Subscriptions! There were a lot of constant videos from certain types of channels that flood that page for some reason. I need to categorize a little more. Of course, I should also use YouTube as a search engine instead of relying on titles and thumbnails to grab my attention.</p> </li> <li> <p>🎙️ Thankfully, no YouTube means I have returned to a few podcasts to have in the background (or while walking) this week! Including <em>Revolutions</em> and <em>The Rest is History</em>.</p> </li> <li> <p>📰 Since I was already cleaning up my YouTube, I also spent some time checking my FreshRSS subscriptions and cleaning up some of the old ones. It is honestly kind of weird to have so many blogs I follow go 404 in the six or so years I’ve been around this bubble. I hope I can continue writing here for many more years.</p> </li> <li> <p>📱 A few weeks ago I switched away from <a href="https://kisslauncher.com">KISS Launcher</a>. My search for an ideal replacement is still undecided, right now I am switching between <a href="https://github.com/tanujnotes/Olauncher">OLauncher</a> and <a href="https://github.com/VaibhavLakhera/minimo-launcher">Minimo Launcher</a>, but I still miss KISS…</p> </li> <li> <p>📞 <a href="/blog/my-phone-number-does-not-work-anymore/">My phone line was blocked</a> by the government! This is a new measure taken to combat crime, by making every citizen in the country register themselves with their ID card and a bio-scan. I am still refusing to partake in this mess, by the way, I will write on some of that offline experience soon.</p> </li> <li> <p>📻 Bandcamp Friday happened! and I got myself a couple new purchases, some videogame soundtracks once again for some titles I have played, and one I have not!</p> <ul> <li><em>TOEM Original Game Soundtrack</em> by Jamal Green & Launchable Socks</li> <li><em>Dicey Dungeons Original Soundtrack</em> by Chipzel</li> <li><em>Neva Original Game Soundtrack</em> by Berlinist</li> </ul> </li> </ul> <figure> <img src="/assets/img/blogs/2026-09-08-week.webp" /> <figcaption>My 3DS with Fire Emblem Awakening, gameplay of Silksong and Party House, Coyote vs ACME's poster, and some leaves from a tree</figcaption> </figure> <h2 id="watching">Watching</h2> <ul> <li> <p><strong>Coyote vs ACME</strong> - This one was a great watch. Even as a kid of the 2000s, public TV channels in Mexico aired reruns of the original Looney Tunes for many, many years of my childhood. The Coyote and the Roadrunner were one of my favorite segments, and I’m incredibly happy to see how they used that concept and developed it here. This one gets my thumb of approval, it really managed to capture that nostalgia and use it for something truly awesome. Also the history behind the production of this movie is kind of crazy, and it even reflects on the themes of the movie itself, a must watch.</p> </li> <li> <p><strong>Ad Astra</strong> - I only watched this one partially, I will finish it today since my weeknotes are late. It’s a bit of a more serious Sci-Fi movie with a future humanity that is only starting to conquer the solar system, until some mysterious energy starts messing with electricity, ships and stations all over the place. It really reminded me of <em>Planetes</em>, featuring people born outside Earth, space terrorism and the like. The main plot focuses on Brad Pitt trying to find his missing Dad, Tommy Lee Jones, who was the best astronaut but went missing ages ago.</p> </li> </ul> <h2 id="reading">Reading</h2> <ul> <li> <p><strong>Blue Lock</strong> - Chapters 357-359. The match against England is proving to be rather interesting! With Blue Lock adopting a unique formation and Isagi trying to fit into it. The England team is a menace, a team that can’t be read or overcome in the same way that any other team has been before. It is kind of impressive to see that this far into the series.</p> </li> <li> <p><strong>My Wife is from a Thousand Years Ago</strong> - Chapters 287-288. Returned to this rom-com and it’s been pretty cozy and nice to read lately. The wedding feels closer than ever, and family shenanigans are happening too! But I still have 150+ chapters left so, we’ll see how it goes.</p> </li> <li> <p><strong>Spy x Family</strong> - Chapters 138-140. As reliable as ever, I love the humor and the dynamics of this manga. We returned to the Eden Academy and had some very fun and wholesome Anya moments there.</p> </li> <li> <p><strong>Centuria</strong> - Chapters 48-50. A bit of an unexpected battle ensued and a weapon is unveiled which is rather surprising. It is kind of epic!</p> </li> </ul> <h2 id="gaming">Gaming</h2> <ul> <li> <p><strong>Hollow Knight: Silksong</strong> - This game has gripped me all over again now that Act 3 has gotten started. The sequel to the beloved <em>Hollow Knight</em> continues to be an absolute masterpiece, and I’ll probably have to gush about it on a separate post, especially since it’s been a whole year since it’s release on September 4th, 2025. Looking forward to that! For now, I am looking for some Ant Queen boss or something like that, if what I hear of the rumors is true, there may be a super cool battle waiting for me.</p> </li> <li> <p><strong>Fire Emblem Awakening</strong> - After a little hiatus I finally decided to give attention to this game, and I have managed to make some decent progress on Chapter 19! unfortunately I ended up dying and having to reset. But well, now I know the truth. Besides the main story I also did the paralogue that unlocked Cynthia, the daughter of Somia, so I have another Pegasus Knight to level up! I still have a few relationships to develop though, we’ll see how it goes.</p> </li> <li><strong>UFO 50</strong> - On Sunday I had a bit of a fun time with a friend who visited my place. I don’t often get to do 2-player gaming so I decided to go for this one once more. We played a few interesting titles! Including: <ul> <li><strong>Party House</strong> - An awesome game about inviting people to your party, collecting popularity and money, and being able to host bigger and better parties, until you can fulfill an objective! There are a lot of mechanics and scenarios here, it’s a bit of a Deck-Building game, trying to invite certain people that have certain effects on your score and such. Incredibly fun and simple, I want it on my phone!</li> <li><strong>Pingolf</strong> - This is a very interesting 2D golf game with a bunch of courses to complete. It doesn’t have a lot of uniqueness going for it, but the aesthetics are great, the mechanics are very good and the score-chasing element will definitely make me return to it.</li> <li><strong>Lords of Diskonia</strong> - A turn-based game where your army is represented by pucks (like those from Air Hockey). The objective is to slide your pucks and hit enemies. Whoever pushes them off the map wins. Each chip has a certain amount of damage and some skills it can use! We only tried it once and had a fun time.</li> </ul> </li> <li><strong>Mario Party 3</strong> - We had an incomplete session with three friends that was going very well! One of them had to leave halfway through, which is why we switched to UFO 50. You can never go wrong with MP3!</li> </ul> <h2 id="around-the-web">Around the Web</h2> <h3 id="blog-posts">Blog Posts</h3> <ul> <li><a href="https://noisydeadlines.net/the-5-ws-of-reading?pk_campaign=rss-feed">The 5 Ws of Reading</a> - an interesting challenge for people who like reading books!</li> <li><a href="https://ljpuk.net/posts/lets-stop-buying-new-phones">Let’s stop buying new phones</a> - I couldn’t agree more, but I’m still tempted sometimes.</li> <li><a href="https://wrywriter.ca/posts/scifi-books-the-golden-oldies">SciFi Books: The Golden Oldies</a> - Jules Verne and H.G. Wells are an absolute must!</li> <li><a href="https://gabz.blog/posts/lets-talk-retro-doodads">Let’s talk retro doodads!</a> - Lots of cool gaming handheld emulators mentioned here, enjoy!</li> <li><a href="https://doserver.top/blog/my-last-few-weeks-in-germany/">My last few weeks in Germany</a> - lovely write-up from Daniel talking of his experience in another country and community.</li> </ul> <h3 id="youtube">YouTube</h3> <ul> <li><a href="https://youtu.be/SHWFnO7xR_E">The Golden Age of Mobile Gaming - Scott The Woz</a> - A trip down memory lane.</li> <li><a href="https://youtu.be/Ozqw1uAEDZc">How Rocky’s Models Were Made for Project Hail Mary</a> - Some cool practical props!</li> <li><a href="https://youtu.be/W5v_IrhO-1w">Why the Mariana Trench Still Terrifies Scientists</a> - Good documentary about sea exploration.</li> <li><a href="https://youtu.be/9mR4u1pFq2Q">What Edge of Tomorrow Understands About Aliens That Hollywood Doesn’t</a> - Cool monster design is cool.</li> </ul> <p>This is day 31 of <a href="https://100daystooffload.com">#100DaysToOffload</a></p> <p> <a href="mailto:me@joelchrono.xyz?subject=Less YouTube, Bandcamp Friday, Silksong returns - W36">Reply to this post via email</a> | <a href="https://fosstodon.org/@joel/117237715852101381">Reply on Fediverse</a> </p> Note published on September 8, 2026 at 8:51 PM UTC - Molly White's activity feed 6aa0755152b01ca28c3ff467 2026-09-08T20:51:29.000Z Molly White <article><div class="entry h-entry hentry"><header></header><div class="content e-content"><p>made some tiny stamps out of lino scraps to make labels for my jam jars</p><div class="media-wrapper"><a href="https://storage.mollywhite.net/micro/71df969c7b6c4c42b6ba_strawberry-lino.jpg" data-fslightbox=c7cd769a2a5934ab325d><img src="https://storage.mollywhite.net/micro/71df969c7b6c4c42b6ba_strawberry-lino.jpg" alt="Small (maybe 1.5" square) strawberry on a 4x6" white card. It's printed with a three-color multi-block lino (red base, green stem, black outline/seeds/shadows)" /></a></div></div><footer class="footer"><div class="flex-row post-meta"><div class="timestamp-block"><div class="timestamp">Posted: <a class="u-url" href="https://www.mollywhite.net/micro/entry/202609081648"><time class="dt-published" datetime="2026-09-08T20:51:29+00:00" title="September 8, 2026 at 8:51 PM UTC">September 8, 2026 at 8:51 PM UTC</time>. </a></div></div><div class="social-links"> <span> Also posted to: </span><a class="social-link u-syndication mastodon" href="https://hachyderm.io/@molly0xfff/117237395700207294" title="Mastodon" rel="syndication">Mastodon, </a><a class="social-link u-syndication bluesky" href="https://bsky.app/profile/molly.wiki/post/3muzvn3yfsw2b" title="Bluesky" rel="syndication">Bluesky</a></div></div><div class="bottomRow"><div class="tags">Tagged: <a class="tag p-category" href="https://www.mollywhite.net/micro/tag/art" title="See all micro posts tagged "art"" rel="category tag">art</a>, <a class="tag p-category" href="https://www.mollywhite.net/micro/tag/linocut" title="See all micro posts tagged "linocut"" rel="category tag">linocut</a>. </div></div></footer></div></article> Your TV is spying on you, and it's worse than you think. - Werd I/O 6aa038e5425e470001c5f1cd 2026-09-08T16:33:41.000Z Werd I/O <p>Link: <a href="https://www.theverge.com/tech/991190/lg-tv-spying-standby-recording-wi-fi-scanning-gamers-nexus"><em>LG TVs caught spying even when offline or on standby, by Dominic Preston in The Verge</em></a></p><p><a href="https://www.theverge.com/tech/991190/lg-tv-spying-standby-recording-wi-fi-scanning-gamers-nexus">This is an enormous abuse of trust</a>:</p><blockquote>“LG smart TVs are almost constantly logging and uploading data about owners and their homes, even when offline or on standby mode. […] Packet captures showed the TVs scanning the local area network for nearby hardware like phones or smartwatches, as well as logging location data and details of nearby Wi-Fi networks, and feeding the information back to LG Ad Solutions. Perhaps more concerningly, the TVs were capable of recording microphone audio when in standby; this continued even after the TV was disconnected from the internet, with audio files stored offline and uploaded once a connection was restored.”</blockquote><p>Most households invite at least one television into their homes. It’s almost impossible to buy one without smart TV features; because most television shows are streamed over the internet these days, they’re usually online. You could leave the TV offline while connecting it to a separate box like an Apple TV, but it’ll keep nagging you to connect.</p><p>The contract should look like this: you pay for a TV and it shows you stuff. The idea that it will scan your local network for devices, determine what content you like to watch, and maybe even <em>listen to you using a built-in microphone</em> is not something that anybody signs up for. Someone somewhere at LG has been so incentivized to make a graph go up and to the right that they have decided that basic ethical tenets like privacy and transparency aren’t worth holding on to.</p><p>That’s particularly important in a world where the Department of Homeland Security has created <em>Minority Report</em>-style <a href="https://www.404media.co/a-secretive-dhs-predictive-policing-unit-is-analyzing-americans-financial-habits-and-pulling-them-over/">Predictive Intelligence Targeting Teams who instruct police to pull people over based on profiled data like their financial activity</a>, despite there being no evidence that they have committed a crime. Data from disparate sources is routinely bought by law enforcement and agencies like DHS in order to create these sorts of profiles; a connected TV in your home could easily contribute. Are you watching the wrong kind of content? Automatic Content Recognition could rat you out. Are the devices connected to your home network outside of the norm? Up goes a flag.</p><p>So that’s homes. But most offices have TVs installed somewhere, too. Consider that an installed smart TV could easily be snooping on network devices, content, and even video calls conducted over these screens. Some more sophisticated offices will have them set to a less privileged network or insist on them remaining offline; most will dutifully connect them up. The result is a live microphone and content recognition tech installed in newsrooms, universities, non-profits, and businesses around the country.</p><p>Manufacturers like LG can sell this data. They will likely argue that it keeps TV prices down – and maybe that’s true. But <a href="https://decrypt.co/377637/lg-tv-might-be-listening-even-when-off">this reporting comes after LG promised regulators in Texas to stop collecting viewing data without informed consent</a>; <a href="https://atlas21.com/gamers-nexus-says-lg-tvs-capture-audio-and-scan-networks/">there’s a second mic that may continue recording even when the main microphone setting has been turned off</a>. They’ve shown they cannot be trusted. This kind of invisible data gathering should be illegal. Nobody signed up to be spied on; they just want to watch TV.</p> ActivityPub - Is it worth defending against replay attacks and message/signature time skew? - Terence Eden’s Blog https://shkspr.mobi/blog/?p=74622 2026-09-08T11:34:51.000Z Terence Eden’s Blog <p>Here's a problem that I've found with <a href="https://gitlab.com/edent/activity-bot/">ActivityBot</a> - my little ActivityPub server. Sometimes it receives messages which were originally sent <em>months</em> ago. Why does that happen and is it risky to accept and process them?</p> <p>My tl;dr is that it <em>probably</em> isn't worth worrying about. But I'd love someone to tell me why I'm wrong.</p> <p>Here's my thinking:</p> <p></p><nav role="doc-toc"><menu><li><h2 id="table-of-contents"><a href="https://shkspr.mobi/blog/2026/09/activitypub-is-it-worth-defending-against-replay-attacks-and-message-signature-time-skew/#table-of-contents">Table of Contents</a></h2><menu><li><a href="https://shkspr.mobi/blog/2026/09/activitypub-is-it-worth-defending-against-replay-attacks-and-message-signature-time-skew/#causes">Causes</a></li><li><a href="https://shkspr.mobi/blog/2026/09/activitypub-is-it-worth-defending-against-replay-attacks-and-message-signature-time-skew/#is-that-a-problem">Is that a problem?</a></li><li><a href="https://shkspr.mobi/blog/2026/09/activitypub-is-it-worth-defending-against-replay-attacks-and-message-signature-time-skew/#what-are-we-trying-to-protect-against">What are we trying to protect against?</a></li><li><a href="https://shkspr.mobi/blog/2026/09/activitypub-is-it-worth-defending-against-replay-attacks-and-message-signature-time-skew/#putting-it-all-together">Putting it all together</a></li><li><a href="https://shkspr.mobi/blog/2026/09/activitypub-is-it-worth-defending-against-replay-attacks-and-message-signature-time-skew/#no-youre-wrong-and-i-can-prove-it">No! You're wrong and I can prove it!</a></li></menu></li></menu></nav><p></p> <h2 id="causes"><a href="https://shkspr.mobi/blog/2026/09/activitypub-is-it-worth-defending-against-replay-attacks-and-message-signature-time-skew/#causes">Causes</a></h2> <p>All ActivityPub messages should have a "published" timestamp in their body. Some will have an "updated" timestamp. That tells you, unsurprisingly, when the message is alleged to have been originally published or updated. That time might be very different to the time you receive the message.</p> <p>There are, I think, three different reasons why a server might receive a message which has an out-of-date timestamp.</p> <p>The first is that sometimes servers are just slow. Processing thousands of messages at the same time means that some of those messages take a while to send. <a href="https://shkspr.mobi/blog/2023/09/how-far-did-my-post-go-on-the-fediverse/">ActivityPub is one big chain-mail</a> so it can take several minutes for a message to be sent to all your followers.</p> <p>Similarly, your server might be slow. If it doesn't acknowledge receipt of a message, the original server will try sending it again. Sometimes that can take a while.</p> <p>Finally, some servers take a relaxed view of standards. They send an update to an old message but keep the original publication date. Ideally, they'd use an "updated" timestamp but quite often they don't.</p> <p>For the purposes of checking the legitimacy of the message, <strong>you do not need to check when a message says it was published or updated</strong>. You might want to check it isn't an <em>obviously</em> bogus date like far in the future or impossibly far in the past - but that's up to you.</p> <p>It is normal that your server receives messages which appear to have been published at a totally different time from now.</p> <h2 id="is-that-a-problem"><a href="https://shkspr.mobi/blog/2026/09/activitypub-is-it-worth-defending-against-replay-attacks-and-message-signature-time-skew/#is-that-a-problem">Is that a problem?</a></h2> <p><em>Probably</em> not.</p> <p>As described above, there are various reasons why a message may be delayed in transit - or may appear to come from the distant past.</p> <p>What we <em>can</em> check is when the message was cryptographically signed by the sending server. This is independent of its published or updated timestamp.</p> <p>HTTP requests to your server will have a <code>date</code> header which looks like <code>Tue, 01 Sep 2026 15:54:21 GMT</code> - this is in the slightly peculiar and Anglocentric <a href="https://www.rfc-editor.org/info/rfc5322/#section-3.3">RFC 5322 format</a>.</p> <p>New style RFC 9421 headers will also have a <code>signature-input</code> header which will contain something like <code>created=1788278061</code>. That uses the slightly obscure <a href="https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_16">UNIX / POSIX time</a> which counts seconds since the "Epoch" of 1st January 1970.</p> <p>If you <a href="https://www.epochconverter.com/">convert the UNIX time</a> to something more modern, you should get an <em>identical</em> value to the <code>date</code> header.</p> <p>But that isn't always the case. For example, <a href="https://www.rfc-editor.org/rfc/rfc9421.html#:~:text=Tue%2C%2020%20Apr%202021%2002%3A07%3A55%20GMT,-Content%2DType">the RFC 9421 standard gives this example</a>:</p> <pre><code class="language-_">Date: Tue, 20 Apr 2021 02:07:55 GMT "@signature-params": ("@method" "@authority" "@path" \ "content-digest" "content-length" "content-type")\ ;created=1618884473;keyid="test-key-rsa-pss" </code></pre> <p>Converting <code>1618884473</code> to normal time gives Tue, 20 Apr 2021 02:07:<strong>53</strong> - a two second difference.</p> <p>If the <code>date</code> and <code>created</code> values differ significantly - that may indicate that the message is untrustworthy. Or that there was a delay between the signing and the sending.</p> <p>The spec says:</p> <blockquote><p>The Date header field value represents the timestamp of the HTTP message. However, the creation time of the signature itself is encoded in the created signature parameter. These two values can be different, depending on how the signature and the HTTP message are created and serialized. Applications processing signatures for valid time windows should use the created signature parameter for such calculations. An application could also put limits on how much skew there is between the Date field and the created signature parameter, in order to limit the application of a generated signature to different HTTP messages.</p> <p><a href="https://www.rfc-editor.org/rfc/rfc9421.html#section-7.2.4">7.2.4. Choosing Signature Parameters and Derived Components over HTTP Fields</a></p></blockquote> <p>But, of course, it doesn't tell you how much skew is problematic. It's up to you how much skew you're prepared to accept.</p> <p>So that's the difference between the sent time and the signed time. The next time to check is your own. As we've discussed, sometimes servers are slow sending things out. Would you accept a request that was signed five minutes ago? Five days ago? Five months ago? What amount of difference is dangerous?</p> <p>Here's what various services and sages have to say:</p> <h3 id="mastodon"><a href="https://shkspr.mobi/blog/2026/09/activitypub-is-it-worth-defending-against-replay-attacks-and-message-signature-time-skew/#mastodon">Mastodon</a></h3> <blockquote><p>The request contains a Date header. Compare it with current date and time within a reasonable time window to prevent replay attacks.</p> <p><a href="https://blog.joinmastodon.org/2018/07/how-to-make-friends-and-verify-requests/">How to make friends and verify requests</a></p></blockquote> <p>What is "reasonable"? The <a href="https://github.com/mastodon/mastodon/blob/89bc0eb42609463d4b11e1604dacc37332a0f5ab/app/lib/signed_request.rb#L5">source code</a> suggests one hour.</p> <h3 id="grishka"><a href="https://shkspr.mobi/blog/2026/09/activitypub-is-it-worth-defending-against-replay-attacks-and-message-signature-time-skew/#grishka">Grishka</a></h3> <blockquote><p>Time in the Date header must differ from the recipient server’s clock by no more than 30 seconds</p> <p><a href="https://grishka.me/blog/activitypub-from-scratch/">A bare-minimum ActivityPub server from scratch</a></p></blockquote> <h3 id="evan-prodromou"><a href="https://shkspr.mobi/blog/2026/09/activitypub-is-it-worth-defending-against-replay-attacks-and-message-signature-time-skew/#evan-prodromou">Evan Prodromou</a></h3> <blockquote><p><code>static #maxDateDiff = 5 * 60 * 1000 // 5 minutes</code></p> <p><a href="https://github.com/evanp/activitypub-bot/blob/main/lib%2Fhttpsignatureauthenticator.js#L8">activitypub-bot</a></p></blockquote> <h3 id="swicg"><a href="https://shkspr.mobi/blog/2026/09/activitypub-is-it-worth-defending-against-replay-attacks-and-message-signature-time-skew/#swicg">SWICG</a></h3> <blockquote><p>The standards don't give a concrete time window to use for this comparison. In practice, an hour plus a few minutes buffer in either direction may be a good value, to account for both clock skew and differences in time zone/daylight savings time configuration across systems.</p> <p><a href="https://swicg.github.io/activitypub-http-signature/#how-to-verify-a-signature">How To Verify a Signature</a></p></blockquote> <h3 id="others"><a href="https://shkspr.mobi/blog/2026/09/activitypub-is-it-worth-defending-against-replay-attacks-and-message-signature-time-skew/#others">Others</a></h3> <p>Without naming names, it looks like a bunch of popular servers don't check whether there's a significant difference between the date the request was signed and the date it was received.</p> <h3 id="summary"><a href="https://shkspr.mobi/blog/2026/09/activitypub-is-it-worth-defending-against-replay-attacks-and-message-signature-time-skew/#summary">Summary</a></h3> <p>Various documents and implementations recommend anything between 30 seconds to "a bit more than 60 minutes". Or they just ignore any date difference.</p> <p>What's the right answer? What happens if the signed date is significantly different from the current date?</p> <h2 id="what-are-we-trying-to-protect-against"><a href="https://shkspr.mobi/blog/2026/09/activitypub-is-it-worth-defending-against-replay-attacks-and-message-signature-time-skew/#what-are-we-trying-to-protect-against">What are we trying to protect against?</a></h2> <p>Replay Attacks. Suppose someone is listening to the communications between the sending server and your server. They copy the message that is sent to you. Later they send it again!</p> <p>At this point, you might be thinking "so what?" and… I'm inclined to agree with you!</p> <p>What's the worst that could happen if you received the same message multiple times? Two things that I can think of.</p> <p>Firstly, it might <em>not</em> be the same message. It is possible to send a new message but with old headers. An attacker could make someone post "I hate Taylor Swift" against their will and watch as legions of fans disembowel the victim.</p> <p>Except, I don't think this is likely. The signature in the header contains a hash of the message being sent. If you are properly validating the signature, a changed message will have a different hash from the one in the original message. You don't need to check timestamps, you just need to check if the hashes match.</p> <p>Secondly, <a href="https://www.freecodecamp.org/news/idempotence-explained">idempotence</a>. That's a fancy word for "pressing the button multiple times should only result in one action".</p> <p>What happens if a user appears to send you multiple "like" messages for a single post? You only record one like.</p> <p>What if they send multiple messages with the same content? Well, each will have a unique ID in the message - so you only post it once.</p> <p>What if they send multiple <em>anythings</em>? I can't think of any ActivityPub action which would not be idempotent.</p> <p>About the worst thing I can think of is this:</p> <ul> <li>Alice sends a message to you saying "I want to follow Bob".</li> <li>Mallory intercepts this message.</li> <li>You record Alice is now following Bob.</li> <li>Alice sends a message to you saying "I want to <em>unfollow</em> Bob".</li> <li>You record the severed relationship.</li> <li>Mallory replays the original follow message.</li> <li>You record Alice is now following Bob.</li> </ul> <p>It's also possible the following could happen:</p> <ul> <li>Alice posts a message saying "I love The Beatles".</li> <li>You record Alice's message and display it on the timeline.</li> <li>Alice updates her post to say "I love the Rolling Stones".</li> <li>Mallory intercepts this message.</li> <li>You record Alice's updated message and display the new version on the timeline.</li> <li>Alice updates her post yet again to say "I love the Spice Girls".</li> <li>You record Alice's updated message and display the new version on the timeline.</li> <li>Mallory replays the original update message.</li> <li>You now display that Alice loves the Stones rather than Spice Girls.</li> </ul> <p>Perhaps the same can happen with like/unlike, block/unblock, boost/unboost.</p> <p>But none of that is significantly prevented by checking the date.</p> <p>Ultimately, it is up to your sever to check the unique ID of each message and refuse to action any repeated messages. You may not want to trust the unique ID which is sent with the message. If that's the case, you can calculate your own - perhaps using a hash of the contents, the signature, or some other process which will generate an ID based on the message.</p> <h2 id="putting-it-all-together"><a href="https://shkspr.mobi/blog/2026/09/activitypub-is-it-worth-defending-against-replay-attacks-and-message-signature-time-skew/#putting-it-all-together">Putting it all together</a></h2> <p>Here's what you need to do to prevent replay attacks:</p> <ol> <li>Independently calculate the hash of the message received.</li> <li>Validate that your calculated hash matches the hash sent in the message's HTTP headers. <ul> <li>If not, this is a potential replay attack and the message must be ignored.</li> </ul></li> <li>Verify that the signature received in the message's HTTP headers includes the message hash and is cryptographically valid. <ul> <li>If not, the signature is invalid and the message must be ignored.</li> </ul></li> <li>Has the received message's unique ID already been processed? <ul> <li>If so, refuse to process it again.</li> </ul></li> </ol> <p>I don't see what checking the timestamp of the HTTP signature has to do with anything. Someone who has access to the original messages and their headers could send them milliseconds after the original delivery.</p> <p>I think it is probably <em>pragmatic</em> to give messages 60ish minutes grace before dropping them. Delays happen, but anything more significant than an hour <em>might</em> indicate a attack. But, equally, might just mean that the Internet is having a slow day.</p> <p>If you are correctly checking signatures and hashes, I don't think you need to worry about skew between signature date and delivery date.</p> <h2 id="no-youre-wrong-and-i-can-prove-it"><a href="https://shkspr.mobi/blog/2026/09/activitypub-is-it-worth-defending-against-replay-attacks-and-message-signature-time-skew/#no-youre-wrong-and-i-can-prove-it">No! You're wrong and I can prove it!</a></h2> <p>Please tell me where I have erred! Stick a comment in the box or drop me an email. If I've made a massive or subtle mistake, I'd love to know what.</p> <img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=74622&HTTP_REFERER=Atom" alt width="1" height="1" loading="eager"> Wonders of Web Weaving, Episode 18 - James' Coffee Blog https://jamesg.blog/2026/09/08/www-18 2026-09-08T00:00:00.000Z James' Coffee Blog <p><a href="https://web-weaving.jamesg.blog">The eighteenth episode of Wonders of Web Weaving is out</a>:</p> <blockquote> <p>In Episode 18, I chat with <a href="https://avas.space">Ava</a>, the author of <a href="https://blog.avas.space">blog.avas.space</a> about, among other things, data protection and privacy, consent in the context of privacy, the armchair of great blogging, and more.</p> </blockquote> <p>I hope you enjoy the episode!</p> <p><a href="https://web-weaving.jamesg.blog/subscribe/" rel="noreferrer"><em>Wonders of Web Weaving also has an RSS feed</em></a><em> you can use to follow along from wherever you get your podcasts.</em></p> <script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a37c3a95486ff0a4',t:'MTc4ODg1MjQyNw=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script> <a class="tag" href="https://avas.space">Ava</a> <a class="tag" href="https://blog.avas.space">blog.avas.space</a> <a class="tag" href="https://web-weaving.jamesg.blog">The eighteenth episode of Wonders of Web Weaving is out</a> <a class="tag" href="https://web-weaving.jamesg.blog/subscribe/">Wonders of Web Weaving also has an RSS feed</a> SBS meeting schedule: Tue 15/Sep moved +3h - Johnny.Decimal https://johnnydecimal.com/blog/0247-sbs-meeting-moved/ 2026-09-07T22:25:07.000Z Johnny.Decimal <p>We've moved <strong>next week's</strong> Small Business Zoom session <strong>forward 3 hours</strong>.</p> <p>This is the slot we designed to suit Decimals in the Americas, but at 15:00 the scheduled time doesn't suit those on the west coast who are still at work.</p> <p><strong>This session only</strong> has been moved to:</p> <ul> <li>18:00 Mon 14/Sep – Los Angeles (UTC-7)</li> <li>21:00 Mon 14/Sep – New York (UTC-4)</li> <li>01:00 Tue 15/Sep – UTC</li> <li>10:00 Tue 15/Sep – Tokyo (UTC+9)</li> <li>11:00 Tue 15/Sep – Canberra (UTC+10)</li> <li>13:00 Tue 15/Sep – Wellington (UTC+12)</li> <li><a href="https://www.worldtimebuddy.com/?qm=1&lid=5368361,5128581,2643743,2950159,292223,1880252,1850147,1835848,2172517,2193733&h=1850147&date=2026-9-15&sln=10-11&hf=0&c=1516">View a timezone chart</a></li> </ul> <h2 id="your-calendar-should-update">Your calendar should update</h2> <p>If you're <strong>subscribed</strong> to the <a href="https://johnnydecimal.com/support/knowledge-base/sbs-events-calendar">events calendar</a> (Business members only) this slot should have updated in your calendar.</p> <p>If it hasn't:</p> <ol> <li>Refresh the subscription.</li> <li>Confirm you're <strong>subscribed</strong> to the calendar and that you didn't import a point-in-time copy instead.</li> </ol> <h2 id="feedback-welcome">Feedback welcome</h2> <p>We try to pick times that suit the most people. Let us know if this doesn't suit, and what does. We'll keep experimenting.</p> 2026-09-07 20:39: Do you know what the hardest thing to do on earth is? Quantum physics? No.... - Kev Quirk https://kevquirk.com/2026-09-07-2039 2026-09-07T19:39:00.000Z Kev Quirk <p>Do you know what the <em>hardest</em> thing to do on earth is?</p> <p>Quantum physics? No.<br> Solving world hunger? Nope.<br> Getting Trump impeached? Nah.</p> <p>It's climbing the stairs on leg day! 🦵🏼</p> <div class="email-hidden"> <hr /> <p>Thanks for reading this post via RSS. RSS is ace, and so are you. ❤️</p> <p>You can <a href="mailto:19gy@qrk.one?subject=2026-09-07%2020%3A39">reply to this post by email</a>, or <a href="https://kevquirk.com/2026-09-07-2039#comments">leave a comment</a>.</p> </div> Skiing in Tūroa - The Weblog of fLaMEd https://flamedfury.com/posts/skiing-in-turoa/ 2026-09-07T08:32:09.000Z fLaMEd <p>What’s going on, Internet? This is a later post. It’s been a minute since <a href="https://flamedfury.com/posts/whakapapa-ski-trip/">I’ve been skiing</a>. We left the kids at home with their aunty and headed south to Ohakune.</p> <p>Was made aware before the trip that Ohakune’s main water pipe was recently damaged during an earthquake. Repairs were being made but this weekend the township was without water. Restaurants had to close, hotels and motels had to close and cancel reservations.</p> <p>We wanted to stay at the Powderhorn this trip for two nights, but the Monday night was fully booked so we couldn’t. Ended up working in our favour as they had to cancell all bookings.</p> <p>We ended up in a rental house that was owned and managed by a local couple. No running water, but we were able to flush the toilets with water from the spa pool and was hands etc with bottled water supplied by the council.</p> <figure slot="image"><picture> <source type="image/webp" srcset="https://flamedfury.com/assets/images/2026-08-13-skiing-in-turoa-06-480w.webp 480w, https://flamedfury.com/assets/images/2026-08-13-skiing-in-turoa-06-800w.webp 800w, https://flamedfury.com/assets/images/2026-08-13-skiing-in-turoa-06-1200w.webp 1200w" sizes="(max-width: 480px) 100vw, (max-width: 800px) 80vw, 1200px" /> <source type="image/jpeg" srcset="https://flamedfury.com/assets/images/2026-08-13-skiing-in-turoa-06-480w.jpeg 480w, https://flamedfury.com/assets/images/2026-08-13-skiing-in-turoa-06-800w.jpeg 800w, https://flamedfury.com/assets/images/2026-08-13-skiing-in-turoa-06-1200w.jpeg 1200w" sizes="(max-width: 480px) 100vw, (max-width: 800px) 80vw, 1200px" /><img src="https://flamedfury.com/assets/images/2026-08-13-skiing-in-turoa-06-1200w.jpeg" width="1200" height="675" alt="Snow-covered Mt Ruapehu under a streaky blue sky, seen over trees and the roof of a house in Ohakune." loading="lazy" decoding="async" eleventy:ignore="" /></picture><figcaption>The view of the mountain from the rental house.</figcaption></figure> <p>Not much was open in town for food but a few of the takeaways were open so we were able to get a decent feed.</p> <p>Weather wasn’t looking too flash for Monday up the mountain but it held out in the end. Sure visibility was rubbish off and on during the day, it snowed around lunch time, a great time to take a break, but the snow was pretty good up there.</p> <p>Like I mentioned, it had been a while (three years) since my last time up the mountain, I went up the top of the Movenpick chair lift and had a rough time getting down. The visibility was horrible up there for the first run.</p> <figure slot="image"><picture> <source type="image/webp" srcset="https://flamedfury.com/assets/images/2026-08-13-skiing-in-turoa-01-480w.webp 480w, https://flamedfury.com/assets/images/2026-08-13-skiing-in-turoa-01-800w.webp 800w, https://flamedfury.com/assets/images/2026-08-13-skiing-in-turoa-01-1200w.webp 1200w" sizes="(max-width: 480px) 100vw, (max-width: 800px) 80vw, 1200px" /> <source type="image/jpeg" srcset="https://flamedfury.com/assets/images/2026-08-13-skiing-in-turoa-01-480w.jpeg 480w, https://flamedfury.com/assets/images/2026-08-13-skiing-in-turoa-01-800w.jpeg 800w, https://flamedfury.com/assets/images/2026-08-13-skiing-in-turoa-01-1200w.jpeg 1200w" sizes="(max-width: 480px) 100vw, (max-width: 800px) 80vw, 1200px" /><img src="https://flamedfury.com/assets/images/2026-08-13-skiing-in-turoa-01-1200w.jpeg" width="1200" height="675" alt="A near whiteout on the snow, with only a tow rope line and a red safety net visible through the fog." loading="lazy" decoding="async" eleventy:ignore="" /></picture><figcaption>Visibility for the first run.</figcaption></figure> <p>I made it down to the top of the Park Lane chairlift and spent the morning at the Wintergarden tow rope and it’s gentle slop getting familiar with the skiis again.</p> <figure slot="image"><picture> <source type="image/webp" srcset="https://flamedfury.com/assets/images/2026-08-13-skiing-in-turoa-03-480w.webp 480w, https://flamedfury.com/assets/images/2026-08-13-skiing-in-turoa-03-800w.webp 800w, https://flamedfury.com/assets/images/2026-08-13-skiing-in-turoa-03-1200w.webp 1200w" sizes="(max-width: 480px) 100vw, (max-width: 800px) 80vw, 1200px" /> <source type="image/jpeg" srcset="https://flamedfury.com/assets/images/2026-08-13-skiing-in-turoa-03-480w.jpeg 480w, https://flamedfury.com/assets/images/2026-08-13-skiing-in-turoa-03-800w.jpeg 800w, https://flamedfury.com/assets/images/2026-08-13-skiing-in-turoa-03-1200w.jpeg 1200w" sizes="(max-width: 480px) 100vw, (max-width: 800px) 80vw, 1200px" /><img src="https://flamedfury.com/assets/images/2026-08-13-skiing-in-turoa-03-1200w.jpeg" width="1200" height="675" alt="Looking up at the chairlifts from the Wintergarden under heavy grey cloud, with the tow rope running up the right and skiers in the foreground." loading="lazy" decoding="async" eleventy:ignore="" /></picture><figcaption>The view from the Wintergarden, tow rope on the right.</figcaption></figure> <p>After lunch I head back up to the top of Park Lane and spent the next couple hours heading down the Park Lane chairlift.</p> <p>Once I was confident with that run I headed back up to the top of the Movenpick. The first part of the slope was a bit of a challenge but I struggled through and made it back to the top of Parklane to finish the run.</p> <figure slot="image"><picture> <source type="image/webp" srcset="https://flamedfury.com/assets/images/2026-08-13-skiing-in-turoa-05-480w.webp 480w, https://flamedfury.com/assets/images/2026-08-13-skiing-in-turoa-05-800w.webp 800w, https://flamedfury.com/assets/images/2026-08-13-skiing-in-turoa-05-1200w.webp 1200w" sizes="(max-width: 480px) 100vw, (max-width: 800px) 80vw, 1200px" /> <source type="image/jpeg" srcset="https://flamedfury.com/assets/images/2026-08-13-skiing-in-turoa-05-480w.jpeg 480w, https://flamedfury.com/assets/images/2026-08-13-skiing-in-turoa-05-800w.jpeg 800w, https://flamedfury.com/assets/images/2026-08-13-skiing-in-turoa-05-1200w.jpeg 1200w" sizes="(max-width: 480px) 100vw, (max-width: 800px) 80vw, 1200px" /><img src="https://flamedfury.com/assets/images/2026-08-13-skiing-in-turoa-05-1200w.jpeg" width="1200" height="675" alt="The base of the mountain with skiers gathered around the lift station, a snow cannon beside it, and the Movenpick and Parklane chairlifts climbing the rocky slope behind." loading="lazy" decoding="async" eleventy:ignore="" /></picture><figcaption>The base of the mountain, with the Movenpick and Parklane chairlifts heading up.</figcaption></figure> <p>One day up the mountain is not enough. Next trip I want to spend at least three days on the slopes, a couple hours of private lessons would do me well.</p> <p>Hey, thanks for reading this post in your feed reader! Want to chat? <a href="mailto:hello@flamedfury.com?subject=RE: Skiing in Tūroa">Reply by email</a> or add me on <a href="xmpp:flamed@omg.lol">XMPP</a>, or send a <a href="https://flamedfury.com/posts/skiing-in-turoa/#webmention">webmention</a>. Check out the <a href="https://flamedfury.com/posts/">posts archive</a> on the website.</p> Standard zero .05 now reserved for 'AI' - Johnny.Decimal https://johnnydecimal.com/blog/0246-standard-zero-05/ 2026-09-07T04:58:04.000Z Johnny.Decimal <p><a href="https://johnnydecimal.com/documentation/the-standard-zeros">Standard zero</a> <code>.05</code> has until now been reserved for expansion. I am claiming it for use by your AI agent. I'll duplicate the section from that page below.</p> <blockquote> <p>⚠️ This blog post is frozen in time. If you're reading this later than September 2026, <a href="https://johnnydecimal.com/documentation/the-standard-zeros#05-ai">view the latest text on the standard zeros page</a> in case it has been updated.</p> </blockquote> <h2 id="05-ai">.05 AI</h2> <p>A place for your AI agent.</p> <p>Agents work best when you write things down. Your JDex is an amazing communication tool: both you and your agent can read and write anything in it. Best memory ever.</p> <p>Sometimes it's useful to have a <em>dedicated</em> space that the agent controls. This is a place that it can store persistent information for recall across sessions.</p> <p>You can also use it to provide per-system instructions to your agent. For example at <code>00.05</code> I have a 'style guide' that tells it how I like my frontmatter properties to be organised (alphabetically).</p> <p>The <a href="https://johnnydecimal.com/jdhq/agent-skills">skills</a> and <a href="https://johnnydecimal.com/jdhq/mcp-server">MCP server</a> both assume they have control over <code>AC.05</code>.</p> <h3 id="emoji-">Emoji ✨</h3> <p>The standard emoji is – obviously – ✨</p> Note published on September 6, 2026 at 5:27 PM UTC - Molly White's activity feed 6a9da29452b01ca28c3ff3f4 2026-09-06T17:27:48.000Z Molly White <article><div class="entry h-entry hentry"><header></header><div class="content e-content"><p>make bad art</p><img src="https://www.mollywhite.net/assets/images/placeholder_social.png" alt="Illustration of Molly White sitting and typing on a laptop, on a purple background with 'Molly White' in white serif." style="display: none;"/></div><footer class="footer"><div class="flex-row post-meta"><div class="timestamp-block"><div class="timestamp">Posted: <a class="u-url" href="https://www.mollywhite.net/micro/entry/202609061327"><time class="dt-published" datetime="2026-09-06T17:27:48+00:00" title="September 6, 2026 at 5:27 PM UTC">September 6, 2026 at 5:27 PM UTC</time>. </a></div></div><div class="social-links"> <span> Also posted to: </span><a class="social-link u-syndication mastodon" href="https://hachyderm.io/@molly0xfff/117225270043571205" title="Mastodon" rel="syndication">Mastodon, </a><a class="social-link u-syndication bluesky" href="https://bsky.app/profile/molly.wiki/post/3muujbbylss2w" title="Bluesky" rel="syndication">Bluesky</a></div></div><div class="bottomRow"><div class="tags">Tagged: <a class="tag p-category" href="https://www.mollywhite.net/micro/tag/art" title="See all micro posts tagged "art"" rel="category tag">art</a>. </div></div></footer></div></article> Deleted YouTube again - Joel's Log Files https://joelchrono.xyz/blog/deleted-youtube-again 2026-09-06T13:53:52.000Z joelchrono <p>For a little while I have been using YouTube way more, and even paid for the Lite subscription model, simply to test it out.</p> <p>Honestly, it hasn’t been too bad, and I actually really, really enjoy a lot of the videos I’ve gotten through the algorithm.</p> <p>But of course, YouTube Shorts have caught up with me and continue to be a very annoying problem, wasting seconds, minutes and hours of my time at every moment.</p> <p>The algorithm does show some interesting things, or funny content I enjoy, but things go downhill pretty quickly with the usual AI-generated slop videos and recycled content.</p> <p>A few of the saving graces I’ve seen is shorts made from genuinely awesome videos that came out like 5 years ago, so I think it’s an interesting way to bring life to evergreen videos about science and the like.</p> <p>With Outer Wilds playthroughs and essays running rampat, my feed slowly phased into more space and astronomy themed topics, which has been pretty fun to get into until I realize half the videos are way too long for what they have to say and use genAI graphics for everything.</p> <p>So whatever, I just deleted YouTube and cancelled my subscription now. I will continue to use it via <a href="https://f-droid.org/packages/org.mozilla.fennec_fdroid/">Fennec Browser</a> and <a href="https://github.com/TeamNewPipe/NewPipe">Newpipe</a>, though maybe a full YouTube detox would be a good idea to try.</p> <p>Yesterday alone I wasted almost 6 hours on the platform, and I think like 4 of them were just Shorts. Even now I just had to have a video on the background while writing this, what is going on?</p> <p>You know what, I will try it, I will limit my YouTube time to one hour a day for the rest of the month. It’s possible I’ll fail completely, but hey, at least you will know if that happens and you are free to bully me for it. The weeknotes next Monday will also be the last ones where I share YouTube links this month, as I also feel like a part of me watches more videos because I have a need to find stuff worth sharing here. The less excuses I have the better!</p> <p>Alright, let’s do this.</p> <p>This is day 30 of <a href="https://100daystooffload.com">#100DaysToOffload</a></p> <p> <a href="mailto:me@joelchrono.xyz?subject=Deleted YouTube again">Reply to this post via email</a> | <a href="https://fosstodon.org/@joel/117224497221371041">Reply on Fediverse</a> </p> The purpose of DNS is to spread scams - Terence Eden’s Blog https://shkspr.mobi/blog/?p=74588 2026-09-06T11:34:20.000Z Terence Eden’s Blog <p>I imagine everyone here has received an unsolicited message telling them that their tax is overdue and that they urgently need to visit Genuine-Tax-Payment-Website.fart or that a parcel is delayed at customs and you can pay a small sum for its release at Almost-The-Right-Acronym.ak</p> <p>You know it is a scam. Most people just mark as spam and move on with their day. But a significant number of people don't. They hastily visit the site, tap in their credit card details, give it their mother's maiden name, confirm address, upload a nude selfie, and only then realise that they've been had.</p> <p>The Internet works at pretty close to the speed of light. You can register a .uk domain and a minute later it's accessible from the other side of the planet. Brilliant for users who want to quickly launch a website. Also brilliant for abusers who want to launch a spam campaign.</p> <p>By the time enough people have reported the scammers' domain as suspicious, it is too late. In the time it takes for a registrar to disable the domain, or for its name to make its way to the <a href="https://safebrowsing.google.com/">Safe Browsing List</a>, a million messages have already been sent and enough people have handed over their details.</p> <p>We're told that "<a href="https://en.wikipedia.org/wiki/The_purpose_of_a_system_is_what_it_does">the purpose of a system is what it does</a>". At the moment, the Domain Name System's purpose seems to be a vector for criminals to run scams on people at a terrifyingly high rate.</p> <h2 id="how-big-is-this-problem"><a href="https://shkspr.mobi/blog/2026/09/the-purpose-of-dns-is-to-spread-scams/#how-big-is-this-problem">How big is this problem?</a></h2> <p>BIG!</p> <p>There's a great blog post by Andrew Campling which reports on this startling claim:</p> <blockquote><p>The study found that at least 10% of all new gTLD domain names registered during the year had subsequently appeared on security blocklists by the time of analysis. It estimated that, taking account of subsequent blocklisting and associated domains not themselves blocklisted, the share of names registered by malicious actors <strong>may be closer to 20%</strong>.</p> <p><a href="https://labs.ripe.net/author/andrew_campling/dns-abuse-and-criminal-infrastructure-beyond-definitions-and-blocklists/">DNS Abuse and Criminal Infrastructure: Beyond Definitions and Blocklists</a> (emphasis added)</p></blockquote> <p>That links to a presentation by Interisle which contains some rather shocking statistics (<a href="https://www.icann.org/en/blogs/details/looking-beyond-the-numbers-understanding-malicious-domain-registration-data-10-08-2026-en">albeit with disputed methodology</a>). It looks at <em>generic</em> Top Level Domains (gTLD) - those are things like .com and .fun rather than country code TLDs (ccTLD) like .uk and .de.</p> <p>It says 85 million new registrations of gTLDs were made in 2025. Of those 8.5 million were added to blocklists by May 2025. It reckons that a 10% abuse rate is the likely floor for these numbers and it's probably closer to 20%. One in five newly registered domains with a gTLD are scams. That's a bloody crisis.</p> <p>13 TLDs had more than 50% of their registrations blocklisted.</p> <img src="https://shkspr.mobi/blog/wp-content/uploads/2026/08/gTLDs.webp" alt="Table listing the top 13 generic Top-Level Domains (gTLDs) with the highest percentage of blocklisted, malicious new domains created in 2025. Ranked from highest to lowest blocklist percentage, top entries include .LOCKER (72.9%), .LGBT (72.2%), and .TOWN (70.2%). The table detail includes TLD operators, registration totals, and specific malicious domain metrics." width="1162" height="954" class="aligncenter"> <p>I can understand why .bid and .loan are popular with scammers. But why .mobi?! What did I ever do to you, eh?</p> <p>Who are the scammers registering these through?</p> <img src="https://shkspr.mobi/blog/wp-content/uploads/2026/08/registrars.webp" alt="List of registrars. NameCheap, Gname, Dynadot, NameSilo, GoDaddy." width="910" height="390" class="aligncenter"> <p>Ah, our old friends at NameCheap. See <a href="https://shkspr.mobi/blog/2021/05/why-do-scammers-love-namecheap/">Why do scammers love NameCheap?</a></p> <p>If those five registrars had more effective policies, it might significantly dent the scammers' ability to ply their devious wares. Or they might just move on to other registrars.</p> <p>As the report points out:</p> <blockquote><p>suspension rates for blocklisted domains were 7.4% to 16.3%.</p></blockquote> <p><a href="https://interisle.net/s/FullReport_MaliciousRegistrationsintheDomainNameMarket_2026_rev.pdf">The full report is on the Interisle website</a>.</p> <h2 id="what-can-be-done"><a href="https://shkspr.mobi/blog/2026/09/the-purpose-of-dns-is-to-spread-scams/#what-can-be-done">What can be done?</a></h2> <p>I don't know.</p> <p>In the first instance, it might make sense for registrars to do strong Know Your Customer (KYC) checks on anyone buying a domain. But that stops anyone who wants to anonymously register <code>I-Hate-Nintendo.whatever</code> without risking the wrath of Intellectual Property lawyers.</p> <p>Also, criminals have access to stolen money and stolen cards. They can convince a hapless mule to register a domain on the criminals' behalf.</p> <p>Registrars could ask for an escrow payment. Pay €9 for the domain name put €900 in escrow. If your domain appears on a blocklist within the year, you forfeit the money. Criminals with stolen funds are unlikely to care but it would probably put off lots of people from getting a new domain.</p> <p>There are various banned words and phrases depending on the TLD. For example, <a href="https://shkspr.mobi/blog/2024/07/ss-tld-opening-for-direct-registrations/">South Sudan</a> has a list of political words which they don't want associated with their .ss ccTLD.</p> <p>But if one gTLD bans a word, a different one might not. A scammer doesn't care if the gTLD is .arse or .elbow - they just want the start of the domain to look legitimate.</p> <p>Some registrars have strings that they don't allow. In fairness to NameCheap, when I tried to register <code>dwp-payments-gov-uk.pizza</code> it told me that domain was banned. It wouldn't let me get any gTLD with that name.</p> <p>But all it takes is one registrar to be slightly lax and the scammers get through. Increasing the complexity of the rules is also a hell of a burden on smaller registrars.</p> <p>Besides, it's pretty easy to get a generic enough looking domain and stick the confusing bit on a subdomain. Here are a clutch mentioned in the report:</p> <ul> <li><code>https://gov.uk-dwpaph.bond/uk/</code></li> <li><code>https://gov.uk-dwpcjh.bond/uk/</code></li> <li><code>https://gov.uk-dwpclc.bond/uk</code></li> <li><code>https://gov.uk-dwpclw.bond/uk</code></li> <li><code>https://gov.uk-dwpclj.bond/uk/</code></li> </ul> <p>Perhaps there ought to be a delay before a new domain goes live to allow people to object to it? That would give governments, banks, delivery companies, and a dozen more "important" organisations a right to veto any "dodgy" looking domain.</p> <p>But suppose someone wants to register <code>gov-uk-stole-my-horse.horse</code> to protest the government's cruel policy of stealing horses - is that a legitimate use of a domain? What if the Darwin Pensioner Divas - a group of elderly singers - want to take payments for their new album of goth/punk covers, can the DPD delivery company veto <code>dpd-payments.music</code>?</p> <p>Do we want a domain name system where powerful companies control exactly which domains we can register? If I have an idea for a domain on a Friday night do I have to wait until Monday before it can be launched? Are those companies realistically able to parse millions of domains per year and have a low false-positive rate?</p> <p>All of these things are possible - but all of them come with an impact on legitimate users. To be clear, I don't know what the right answer is.</p> <h2 id="what-is-icann-doing-about-it"><a href="https://shkspr.mobi/blog/2026/09/the-purpose-of-dns-is-to-spread-scams/#what-is-icann-doing-about-it">What is ICANN doing about it?</a></h2> <p>Lots! It has been a few years since I've been to an ICANN meeting, but even back then the topic of abuse was high on the agenda. They appear to be looking at ways to coordinate abuse reports between various entities, along with some other policies which should hopefully work.</p> <p>There are two salient points from <a href="https://hosted-files.sched.co/icann86/b3/TRANSC_I86SQV_Mon08June2026__GNSO-DNS%20Abuse%20Mitigation%20PDP%201%20%281%20of%204%29-en.pdf">one of the discussions held at the recent meeting</a></p> <blockquote><p>If anybody thinks that in our current age of AI and as we move into different kinds of computing, DNS abuse is going to numerically stay steady and we will have a downward effect on that baseline 2027 number. I'm not sure that that's an accurate assumption. I think it's going to be the other thing, which is […] it's going to be easier to abuse the DNS.</p></blockquote> <p>And</p> <blockquote><p>Abusers are going to abuse because it's just too lucrative, because no matter what we do, they will find the way to make profit off of that, and will try to circumvent everything that we do. That is not a reason not to do it, though.</p></blockquote> <p>Quite!</p> <p>As I said, I don't know the answer to this. What I do know is, much like <a href="https://shkspr.mobi/blog/2025/08/is-it-possible-to-allow-sideloading-and-keep-users-safe/">Android's app ecosystem being a haven for scammers</a>, DNS is facing a crisis. When trust in a system goes, only chaos follows.</p> <p>I don't want to live in a world where I have to show my passport and pay thousands of pounds to register a domain which is only available after being vetted by private interests. But I also don't want to live in a world where scammers have effectively no deterrent from abusing millions of people.</p> <p>The purpose of a system is what it does. I hope DNS's purpose can become less dangerous while still remaining open.</p> <img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=74588&HTTP_REFERER=Atom" alt width="1" height="1" loading="eager">