Shellsharks Blogroll - BlogFlockhttps://blogflock.com/list/xJ8yq2026-09-09T13:46:28.000ZBlogFlockshellsharks
Greyscale in Doodle Scan
- Robb Knight • Posts • Atom Feedhttps://rknight.me/blog/greyscale-in-doodle-scan/2026-09-09T13:46:28.000ZRobb 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 Bloghttps://blog.trailofbits.com/2026/09/09/a-proof-of-fermats-last-theorem-that-fits-the-margin/2026-09-09T11:00:00.000ZTrail 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.Decimalhttps://johnnydecimal.com/blog/0245-jd-cli-now-creates-folders/2026-09-09T07:35:50.000ZJohnny.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 Bloghttps://jamesg.blog/2026/09/09/second-year2026-09-09T00:00:00.000ZJames' 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 Fileshttps://joelchrono.xyz/blog/w362026-09-08T21:50:00.000Zjoelchrono<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 feed6aa0755152b01ca28c3ff4672026-09-08T20:51:29.000ZMolly 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/O6aa038e5425e470001c5f1cd2026-09-08T16:33:41.000ZWerd 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 Bloghttps://shkspr.mobi/blog/?p=746222026-09-08T11:34:51.000ZTerence 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 Bloghttps://jamesg.blog/2026/09/08/www-182026-09-08T00:00:00.000ZJames' 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.Decimalhttps://johnnydecimal.com/blog/0247-sbs-meeting-moved/2026-09-07T22:25:07.000ZJohnny.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 Quirkhttps://kevquirk.com/2026-09-07-20392026-09-07T19:39:00.000ZKev 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 fLaMEdhttps://flamedfury.com/posts/skiing-in-turoa/2026-09-07T08:32:09.000ZfLaMEd<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.Decimalhttps://johnnydecimal.com/blog/0246-standard-zero-05/2026-09-07T04:58:04.000ZJohnny.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 feed6a9da29452b01ca28c3ff3f42026-09-06T17:27:48.000ZMolly 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 Fileshttps://joelchrono.xyz/blog/deleted-youtube-again2026-09-06T13:53:52.000Zjoelchrono<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 Bloghttps://shkspr.mobi/blog/?p=745882026-09-06T11:34:20.000ZTerence 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">Complements: Art history, writing - James' Coffee Bloghttps://jamesg.blog/2026/09/06/complements-art-history-writing2026-09-06T00:00:00.000ZJames' Coffee Blog
<p>Earlier this week I was chatting with a friend about the skills I am learning from art history. One of the most influential concepts I have learned is to “look closely”. The idea is to spend time with a single thing – to study it closely – and think about what you see in more depth. This helped formalise an experience I was already having in galleries: I didn’t want to see every piece as fast as I could, rather I wanted to slow down.</p><p style="text-align: center;">⁂ ⁂ ⁂ </p><p>Galleries, and the works within them, feel as if they have a certain magnetism, that magnetism sometimes varying over time. For instance, I was recently fascinated by a work of still life painted in the National Gallery of Scotland. I don’t usually gravitate toward still life paintings, but on that day I wanted to explore them more: to spend time with a genre with which I was less familiar, and to see what I could see.</p><p>Similarly, there are paintings that, no matter how many times I look, I see something new and beautiful: paintings that I only need to see in the corner of my eye before I stop and know I have to go over and look at the work in more detail. This year, the painting that has caught my attention the most is Turner’s sunrise over Norham Castle. The colours are transfixing. The scene is beautiful. The art is infinitely intriguing. I must have spent at least half an hour over several visits looking at this painting, and longer thinking about it.</p><p>I am studying both art history and creative writing next year. This is perhaps not as common of a mix as, for example, English Literature and creative writing, but mixing the study of art history and the theory and practice of creative writing feels right to me.</p><p>I haven’t coalesced a complete vision of the complements between these two subjects but, today, as I write, I feel like the concept – and application – of looking closely lends itself well to both my studies in art and my writing. Art history has helped me look closely. In writing, I similarly need to look closely at the world and capture as many details as possible, everything I see in the rhythm of the world, in Nature, in cities, and everything I feel, being a potential detail to use in a story.</p><p style="text-align: center;">⁂ ⁂ ⁂ </p><p>Studying art has helped me refine my visual description skills. This starts with thinking about the artwork. The kinds of questions I may end up answering are things like: What do I see? What is the art about? How do I know? How is a work composed? How do different parts within a work of art relate? How does the work at which I am looking compare to others I have seen? As I think, I enjoy writing down what I see. Other times, I enjoy just looking at a work, knowing that I don’t need to write anything to get something out of the experience.</p><p>These visual description skills blend in with my writing: the more I know what to look out for, the more details I know that I can write down, and the better I can incorporate those details into my writing. This connects with my creative writing where details about what I see can be an integral part of both life writing (an introspective kind of writing, which I enjoy) and creative writing (poetry, fiction, and more). Using written descriptions of art as part of storytelling even has its own term: <a href="https://en.wikipedia.org/wiki/Ekphrasis">ekphrasis</a>.</p><p style="text-align: center;">⁂ ⁂ ⁂ </p><p>Art galleries have also helped me wander more: to slow down.</p><p>When I am in a gallery, I like to go towards whatever stands out, and spend time with it – to wander a room and see what works appeal to me, to get up close with a piece and spend time with it, to walk closer and further away from a piece to see what I see. In many cases, I can see specific places I have seen paintings, my memories of the spaces being so vivid. Perhaps this is because I like to slow down in galleries. <sup class="footnote-reference" id="f-1"><a href="https://jamesg.blog/longform-feed#1">1</a></sup></p><p>Slowing down complements the pace at which I write and code. When it comes to writing and coding, I am often moving quickly: capturing ideas on paper, thinking about and formalising logic in code. I am moving fast because I love making things. In contrast, studying art invites me to slow down. Indeed, one of the most delightful experiences in galleries is when I have been looking at a piece for a few minutes and I notice something new. It is delightful to feel the process of seeing new things as you spend more time with something.</p><p>I am excited for the next year of my studies as a time to refine my visual description skills, to learn more foundations of the history of art, and to see and feel how writing and art history combine for me.</p>
<div class="footnote-definition" id="1"><sup class="footnote-definition-label" id="f-2">1</sup>
<p>If you are curious, I am the sort of person who likes to diligently look at every piece one by one in an art gallery, moving through the space slowly. I like slowing down.</p>
<a href="https://jamesg.blog/longform-feed#f-1">[↩]</a></div>
<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:'a36f92870baa2660',t:'MTc4ODcxOTcxNA=='};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://en.wikipedia.org/wiki/Ekphrasis">ekphrasis</a>
<a class="tag" href="https://jamesg.blog/longform-feed#1">1</a>
<a class="tag" href="https://jamesg.blog/longform-feed#f-1">[↩]</a>
Note published on September 5, 2026 at 3:19 PM UTC - Molly White's activity feed6a9c32ec52b01ca28c3ff3672026-09-05T15:19:08.000ZMolly White<article><div class="entry h-entry hentry"><header></header><div class="content e-content"><div class="quote"><blockquote>Other platforms will soon follow, a senior administration official told POLITICO on Tuesday. “We got Lake America changed on Google Maps, and many other maps are changing in a couple days. And Wikipedia is going to change as well,” said the official, who was granted anonymity to speak frankly.</blockquote></div><p>A Wikipedia editor put it well: "You almost want to pat them on the head and say 'Yes, of course it will' in the same way you'd tell a small child that Santa Claus will be delivering their presents."</p><div class="related-post"><div class="article h-cite hcite"><div class="title"><a class="u-url u-repost-of u-in-reply-to" href="https://www.politico.com/news/2026/09/02/tech-lake-ontario-01062631" rel="bookmark">“<span class="p-name">Trump's Lake America push forces tech to pick a side</span>”</a>. </div><div class="byline"><span class="p-author h-card">Owen Dahlkamp</span> in <i class="p-publication">Politico</i>. <span class="read-date"></span></div><blockquote class="summary p-summary entry-summary">Other platforms will soon follow, a senior administration official told POLITICO on Tuesday. “We got Lake America changed on Google Maps, and many other maps are changing in a couple days. And Wikipedia is going to change as well,” said the official, who was granted anonymity to speak frankly.</blockquote></div></div><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/202609051118"><time class="dt-published" datetime="2026-09-05T15:19:08+00:00" title="September 5, 2026 at 3:19 PM UTC">September 5, 2026 at 3:19 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/117219107071552031" title="Mastodon" rel="syndication">Mastodon, </a><a class="social-link u-syndication bluesky" href="https://bsky.app/profile/molly.wiki/post/3murrlnufd22w" 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/trump_administration" title="See all micro posts tagged "Trump administration"" rel="category tag">Trump administration</a>, <a class="tag p-category" href="https://www.mollywhite.net/micro/tag/wikipedia" title="See all micro posts tagged "Wikipedia"" rel="category tag">Wikipedia</a>. </div></div></footer></div></article>Note published on September 5, 2026 at 3:05 PM UTC - Molly White's activity feed6a9c2fb352b01ca28c3ff32e2026-09-05T15:05:23.000ZMolly White<article><div class="entry h-entry hentry"><header></header><div class="content e-content"><p>Huge congratulations to the US-based Wikimedia Foundation employees who voted with 92% support in favor of unionizing, and shoutout to the tireless work of the organizers.</p><div class="related-post"><div class="article h-cite hcite"><div class="title"><a class="u-url u-repost-of u-in-reply-to" href="https://wikiworkersunited.org/announcements/2026-09-04-us-wikimedia-foundation-workers-overwhelmingly-vote-to-form-union-with-cwa/" rel="bookmark">“<span class="p-name">Wikimedia Foundation Workers Overwhelmingly Vote to Form Union with CWA</span>”</a>. </div><div class="byline"><span class="p-author h-card">Wiki Workers United</span> in <i class="p-publication">Wiki Workers United</i>. <span class="read-date"></span></div><blockquote class="summary p-summary entry-summary">U.S. workers form first recognized unit as global union movement builds across Wikimedia Foundation</blockquote></div></div><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/202609051104"><time class="dt-published" datetime="2026-09-05T15:05:23+00:00" title="September 5, 2026 at 3:05 PM UTC">September 5, 2026 at 3:05 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/117219043199374157" title="Mastodon" rel="syndication">Mastodon, </a><a class="social-link u-syndication bluesky" href="https://bsky.app/profile/molly.wiki/post/3murqsajyls2w" 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/wikimedia" title="See all micro posts tagged "Wikimedia"" rel="category tag">Wikimedia</a>, <a class="tag p-category" href="https://www.mollywhite.net/micro/tag/workers_rights" title="See all micro posts tagged "workers' rights"" rel="category tag">workers' rights</a>. </div></div></footer></div></article>Book Review: The Passing of the Dragon and Other Stories by Ken Liu ★★★★☆ - Terence Eden’s Bloghttps://shkspr.mobi/blog/?p=746862026-09-05T11:34:47.000ZTerence Eden’s Blog<img src="https://shkspr.mobi/blog/wp-content/uploads/2026/09/9781035929306.webp" alt="Book cover." width="200" class="alignleft">
<p>This is a gorgeous set of short stories - and a good deal more accessible than some of the heavyweight prose Liu has previously been involved with. Some of the stories contain sentences which are complex jewels to be savoured.</p>
<p>What I particularly like is the way he moves between almost-prosaic Earth-bound stories to the the most extraordinary flights of fancy. One story might be set in a downtown art gallery, the next in the ice-rings of a far-off planet. The creeping feeling of senescence haunts the reader as they flit from story to story.</p>
<p>Much like his full-length novel <a href="https://shkspr.mobi/blog/2025/09/book-review-all-that-we-see-or-seem-by-ken-liu/">All That We See or Seem</a>, Liu has an incredible knack for tapping in to modern fears and weaving tall tales around them. There's a tenderness in all his character - even when a couple of the stories go nowhere, it is still pleasant to spend time in the worlds he has created.</p>
<p>It is, perhaps, missing a cohesive theme - the dragons come and go throughout the stories. Nevertheless, a compelling work chock full of fantastical ideas.</p>
<p>If you're in the mood for a wide and varied selection of stories, this is well worth picking up.</p>
<p>Many thanks to NetGalley for the review copy. Passing of the Dragon is available to buy now.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=74686&HTTP_REFERER=Atom" alt width="1" height="1" loading="eager">