Shellsharks Blogroll - BlogFlock2026-08-11T13:26:09.528ZBlogFlockAdepts of 0xCC, destructured, Aaron Parecki, Trail of Bits Blog, fLaMEd, Westenberg, James' Coffee Blog, gynvael.coldwind//vx.log (pl), joelchrono, Evan Boehs, cool-as-heck, Kev Quirk, Posts feed, Sophie Koonin, cmdr-nova@internet:~$, <span>Songs</span> on the Security of Networks, Werd I/O, Johnny.Decimal, Robb Knight, Molly White, Hey, it's Jason!, Terence Eden’s BlogGadget Review: Soundpeats POP Clip2 Earphones ★★★★⯪ - Terence Eden’s Bloghttps://shkspr.mobi/blog/?p=729722026-08-11T11:34:37.000Z<p>Last year, I reviewed a new type of Clip-On earphone - <a href="https://shkspr.mobi/blog/2025/11/gadget-review-soundpeats-clip1-cuff-headphones/">the Soundpeats Clip1 Cuff</a>. I was a bit sceptical, but was won around by their comfort. The good folks at Soundpeats have sent me their new version to review. I had a few niggles with the Clip1 - so let's see how the <a href="https://soundpeats.com/en-gb/products/soundpeats-pop-clip-physical-bttons-clip-on-earbuds">UU2 Clip2</a> compare.</p>
<img src="https://shkspr.mobi/blog/wp-content/uploads/2026/07/soundpeats-clip2-promo.webp" alt="A small cuff style headphone set, charging box, and short cable." width="1500" height="1500" class="aligncenter size-full wp-image-72976">
<h2 id="design"><a href="https://shkspr.mobi/blog/2026/08/gadget-review-soundpeats-pop-clip2-earphones/#design">Design</a></h2>
<p>The "cuff" design is fairly new to the UK - but is already popular in other parts of the world. Rather than sticking the buds in your earholes, they clip around the flappy bits of your ears. The aren't like a bulldog clip - more like a gentle caress. The speaker sits just outside your ear canal, so you can still hear ambient sounds from around you. Look, you do <em>not</em> want a close-up of my waxy lugs, so here's a model:</p>
<img src="https://shkspr.mobi/blog/wp-content/uploads/2026/07/model-wearing-ear-cuffs.webp" alt="model wearing ear cuffs." width="913" height="684" class="aligncenter size-full wp-image-72977">
<p>You don't have to wear them in that position. Mine tend to hang around my earlobes - your ears might be a different shape.</p>
<p>They are <em>ridiculously</em> comfortable. I've had them on for a several hour train journey and forgot they were there. They don't leave a mark, they don't ache, they don't pinch, and most importantly they don't fall off. Even if I shook my head vigorously or did any exercise, they stayed put.</p>
<p>I am happy to declare them the most comfortable headphones I own - even more so than my <a href="https://shkspr.mobi/blog/2020/11/review-aftershokz-titanium-bone-conducting-headphones/">Bone Conducting headset</a>.</p>
<p>But, of course, there are some downsides. The previous version had touch-only controls which were a bit shit. It was far too easy to accidentally brush your finger against your ears and skip a track. The Clip2 improves this somewhat by adding a small physical button to each headphone. You can set them to play/pause, skip tracks, adjust volume (if you can remember the precise sequence of taps you need).</p>
<p>Bluetooth range was good - I was able to wander all over my house without losing connection. Sound quality - even on the default setting - was excellent. You can push up the bass or fiddle with the equaliser if that'll make you happy. Battery life is going to depend on how hard you drive them and if you choose a more energy efficient codec or not. They lasted several hours in my test and recharged quickly in their included case. Naturally, the case has a USB-C connection so it'll use the same cable as all your other gadgets.</p>
<h2 id="android"><a href="https://shkspr.mobi/blog/2026/08/gadget-review-soundpeats-pop-clip2-earphones/#android">Android</a></h2>
<p>They just work. They paired instantly, accepted AAC as a high quality audio codec, the sound quality was excellent as was the microphone quality. Once I used the app to switch to <a href="https://www.whathifi.com/advice/ldac-what-is-it-how-can-you-get-it">LDAC</a>, the Clip2 restarted and Android started playing in the higher fidelity mode.</p>
<img src="https://shkspr.mobi/blog/wp-content/uploads/2026/07/LDAC.webp" alt="LDAC in Android." width="504" height="704" class="aligncenter size-full wp-image-72983">
<h3 id="app"><a href="https://shkspr.mobi/blog/2026/08/gadget-review-soundpeats-pop-clip2-earphones/#app">App</a></h3>
<p><em>*sigh*</em> Why is that hardware manufacturers make the crappiest software? You don't <em>need</em> the app - everything will work without it. But if you want to customise the buttons, change the EQ, or enable <a href="https://www.whathifi.com/advice/ldac-what-is-it-how-can-you-get-it">LDAC</a> you'll need it.</p>
<p>Annoyingly, you can't do <em>anything</em> unless you're logged in and have an Internet connection. Want to change the EQ while you're on a train with no signal? Tough.</p>
<p>The app also handles firmware updates - there was one waiting for me - but doesn't offer any information beyond the usual platitudes of bug fixes and stability improvements.</p>
<p>Note, you need the <a href="https://play.google.com/store/apps/details?id=com.xingkeqi.peats">PeatsAudio app</a> not the "Soundpeats" app.</p>
<p>Honestly, find an EQ you like, update the firmware, toggle the settings, then uninstall it.</p>
<p>There are <em>some</em> nice touches - like the personalised EQ test - but it is slim pickings. Here are some screenshots.</p>
<p><img src="https://shkspr.mobi/blog/wp-content/uploads/2026/07/eq.webp" alt="Various default EQ options." width="400" class="size-full wp-image-72984" style="display:inline"><img src="https://shkspr.mobi/blog/wp-content/uploads/2026/07/More-functions.webp" alt="Lots of functions in a settings screen." width="400" class="size-full wp-image-72985" style="display:inline"><img src="https://shkspr.mobi/blog/wp-content/uploads/2026/07/effects.webp" alt="Various sound effects." width="400" class="size-full wp-image-72982" style="display:inline"><img src="https://shkspr.mobi/blog/wp-content/uploads/2026/07/adaptive.webp" alt="Personalised EQ test." width="400" class="size-full wp-image-72981" style="display:inline"><img src="https://shkspr.mobi/blog/wp-content/uploads/2026/07/buttons.webp" alt="Various options triggered by tapping on buttons." width="400" class="alignnone size-full wp-image-72980" style="display:inline"></p>
<h2 id="linux"><a href="https://shkspr.mobi/blog/2026/08/gadget-review-soundpeats-pop-clip2-earphones/#linux">Linux</a></h2>
<p>Yup! Connected perfectly the first time and gave access to all the supported codecs.</p>
<img src="https://shkspr.mobi/blog/wp-content/uploads/2026/07/linux-soundpeats.webp" alt="Linux config screen showing AAC and SBC codecs." width="787" height="377" class="aligncenter size-full wp-image-72979">
<h2 id="a-few-niggles"><a href="https://shkspr.mobi/blog/2026/08/gadget-review-soundpeats-pop-clip2-earphones/#a-few-niggles">A Few Niggles</a></h2>
<p>Despite looking superficially similar to the Clip1 - these new ones don't fit into the charging case of the originals. That's unfortunate. I guess they don't want users mixing up pairs and getting confused?</p>
<p>Rather annoyingly, they don't pause the sound when you take them off. The old Clip1 would detect if it was in-ear and pause if you popped one out to chat to someone.</p>
<p>They supply a short USB-A to C lead. That's just e-Waste and shouldn't be included.</p>
<p>Because of the design they won't block out all external noise and there's no noise cancelling function. But that's offset by the fact that they do let you retain some awareness of your surroundings.</p>
<h2 id="price-and-final-thoughts"><a href="https://shkspr.mobi/blog/2026/08/gadget-review-soundpeats-pop-clip2-earphones/#price-and-final-thoughts">Price and Final Thoughts</a></h2>
<p>The Clip2 cuff headphones are usually around £60, but <a href="https://link.amazon/B00MTYd9T">are on offer now for about £48</a>. I think that's excellent value for money.</p>
<p>Readers of this blog can use code <code>SPUU2810</code> for 30% off until August 31, 2026.</p>
<p>I am an absolute convert to cuff-style. They don't tightly grip your head like bone-conducting ones, they're less noisy than rear-firing open-ear cans, and they're a good deal more comfortable than sticking something deep in your ear-wax chambers.</p>
<p>The app is a bit shit - but you'll probably only use it once. The buttons are slightly fiddly, but I can't see a way to make them any more tactile without sacrificing their small size.</p>
<p>Sounds quality - on Linux and Android - was excellent. They're perfect if you spend a long time with headphones on.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=72972&HTTP_REFERER=Atom" alt width="1" height="1" loading="eager">I Was a Guest on Web Weaving - Robb Knight • Posts • Atom Feedhttps://rknight.me/blog/i-was-a-guest-on-web-weaving/2026-08-11T08:41:57.000Z<div class="markdown-alert markdown-alert-note"><p class="markdown-alert-title"><svg class="octicon octicon-info mr-2" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path></svg>Update</p><p>This episode was recorded prior to me deciding to shut down EchoFeed</p>
</div>
<p><a href="https://jamesg.blog">James</a> invited me onto his podcast, <a href="https://web-weaving.jamesg.blog/">Web Weaving</a>, to discuss the IndieWeb, EchoFeed (<a href="https://rknight.me/blog/shutting-down-echofeed/">RIP</a>), stickers, pens, and some of my other web projects.</p>
<p>A full transcript is available on the website.</p>
<p><a href="https://web-weaving.jamesg.blog/14">Listen to Web Weaving 14: Robb</a></p>Wonders of Web Weaving, Episode 14 - James' Coffee Bloghttps://jamesg.blog/2026/08/11/www-142026-08-11T00:00:00.000Z
<p><a href="https://web-weaving.jamesg.blog/14" rel="noreferrer">The fourteenth episode of Wonders of Web Weaving is out</a>:</p><blockquote>In Episode 14, I chat with <a href="https://rknight.me.com">Robb</a>, the author of <a href="https://rknight.me">rknight.me</a> about, among other things, metaphors for websites, the importance of sharing things you like on the web, running an indie service (Echo Feed), and more.</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:'a2962d323e4a8703',t:'MTc4NjQ0MDE1Mw=='};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://rknight.me">rknight.me</a>
<a class="tag" href="https://rknight.me.com">Robb</a>
<a class="tag" href="https://web-weaving.jamesg.blog/14">The fourteenth 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>
Doodle Scan - Robb Knight • Posts • Atom Feedhttps://rknight.me/blog/doodle-scan/2026-08-10T20:46:01.000Z<p>While scanning my <a href="https://rknight.me/blog/types-of-time-travel-zine/">time travel zine</a> I thought it would be nice to include some drawings I've done as part of my website, similar to how <a href="https://ohhelloana.blog/">Ana</a> has on her site.</p>
<figure><img src="https://cdn.rknight.me/site/2026/anas-illstrations.jpg" alt="Two boxes on Anas website. One says cursed thoughts with a drawing of a bird, the other says blogroll and has a spider web drawing" /></figure>
<p>Whenever I've tried in the past, removing a background to standard that is good enough to put on another colour background is near impossible without spending a long time in Pixelmator fixing all the edge artifacts.</p>
<p>I came across <a href="https://removewhite.com/scan/">a couple</a> of <a href="https://pinetools.com/threshold-image">websites</a> that do this and I noticed that they do it all in-browser so I started digging around — they convert the uploaded image to a bitmap with <a href="https://developer.mozilla.org/en-US/docs/Web/API/Window/createImageBitmap"><code>createImageBitmap</code></a> and then going over every pixel and it's rgba values to determine if it should be kept, or made transparent. It was time to do some maths which I am famously not good at - most of what is below is my best estimate at explaining how this works.</p>
<p>tl;dr: The website is up at <a href="https://doodlescan.rknight.me">doodlescan.rknight.me</a> — read on for the technical nonsense. Also Jeff is back.</p>
<figure><img src="https://cdn.rknight.me/site/2026/doode-scan-logo.jpg" alt="A beige backround that says Doodle Scan at the top in red and a dinosaur holding a pencil below it." /></figure>
<h3>Removing the Background</h3>
<p>"Relative luminance" is the key to this part as <a href="https://www.w3.org/WAI/GL/wiki/Relative_luminance">defined by WCAG 2.x</a>. Take the RGB values and do the following calculation to get the relative luminance, a single value to compare against. I can't find where I read this now but green and blue are weighted higher because the human eye are more sensitive to those colours. An easy example is a grey where all the values are the same — given an RGB value of <code>51,51,51</code> the output will be <code>51</code>. For something like <a href="https://htmlcolorcodes.com/colors/sky-blue/">sky blue</a> the RGB is <code>130,200,222</code> we get <code>186.7064</code>.</p>
<pre class="language-js"><code class="language-js"><span class="token function-variable function">getLuminance</span> <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token parameter">r<span class="token punctuation">,</span> g<span class="token punctuation">,</span> b</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span><br /> <span class="token keyword">return</span> <span class="token number">0.2126</span> <span class="token operator">*</span> r <span class="token operator">+</span> <span class="token number">0.7152</span> <span class="token operator">*</span> g <span class="token operator">+</span> <span class="token number">0.0722</span> <span class="token operator">*</span> b <span class="token operator">=</span> <span class="token number">5154.213</span><br /><span class="token punctuation">}</span><br /><br /><span class="token keyword">const</span> r <span class="token operator">=</span> g <span class="token operator">=</span> b <span class="token operator">=</span> <span class="token number">51</span><br /><span class="token function">getLuminance</span><span class="token punctuation">(</span>r<span class="token punctuation">,</span> g<span class="token punctuation">,</span> b<span class="token punctuation">)</span> <span class="token comment">// 51</span><br /><br /><span class="token keyword">const</span> r <span class="token operator">=</span> <span class="token number">130</span><br /><span class="token keyword">const</span> g <span class="token operator">=</span> <span class="token number">200</span><br /><span class="token keyword">const</span> b <span class="token operator">=</span> <span class="token number">222</span><br /><br /><span class="token function">getLuminance</span><span class="token punctuation">(</span>r<span class="token punctuation">,</span> g<span class="token punctuation">,</span> b<span class="token punctuation">)</span> <span class="token comment">// 186.7064</span></code></pre>
<p>This example range of six colours from pure black to pure white gives an easy to understand example of how the threshold affects what gets removed. The default I set of <code>235</code> will only removed the pure white one but the lower than threshold gets, we only keep colours closer to black.</p>
<figure><img src="https://cdn.rknight.me/site/2026/doodle-scan-test-scan.jpg" alt="Six coloured squared starting at black getting increasingly lighter until the last one is white" /></figure>
<p>So for each pixel, get the relative luminance value, then compare it to the threshold. If it's lower than the threshold, it gets kept, otherwise it gets set to fully transparent. I'm also checking if it's transparent already and if it is, ignoring it.</p>
<pre class="language-js"><code class="language-js"><span class="token keyword">const</span> <span class="token punctuation">{</span> <span class="token literal-property property">r</span><span class="token operator">:</span> inkR<span class="token punctuation">,</span> <span class="token literal-property property">g</span><span class="token operator">:</span> inkG<span class="token punctuation">,</span> <span class="token literal-property property">b</span><span class="token operator">:</span> inkB <span class="token punctuation">}</span> <span class="token operator">=</span> <span class="token function">hexToRGB</span><span class="token punctuation">(</span>settings<span class="token punctuation">.</span>inkColour<span class="token punctuation">)</span><br /><span class="token keyword">const</span> <span class="token punctuation">{</span> <span class="token literal-property property">r</span><span class="token operator">:</span> paperR<span class="token punctuation">,</span> <span class="token literal-property property">g</span><span class="token operator">:</span> paperG<span class="token punctuation">,</span> <span class="token literal-property property">b</span><span class="token operator">:</span> paperB <span class="token punctuation">}</span> <span class="token operator">=</span> <span class="token function">hexToRGB</span><span class="token punctuation">(</span>settings<span class="token punctuation">.</span>paperColour<span class="token punctuation">)</span><br /><span class="token keyword">const</span> alpha <span class="token operator">=</span> settings<span class="token punctuation">.</span>transparent <span class="token operator">?</span> <span class="token number">0</span> <span class="token operator">:</span> <span class="token number">255</span><br /><br /><span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">let</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator"><</span> data<span class="token punctuation">.</span>length<span class="token punctuation">;</span> i <span class="token operator">+=</span> <span class="token number">4</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><br /> <span class="token keyword">let</span> lum <span class="token operator">=</span> <span class="token number">0.2126</span> <span class="token operator">*</span> data<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">+</span> <br /> <span class="token number">0.7152</span> <span class="token operator">*</span> data<span class="token punctuation">[</span>i <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">]</span> <span class="token operator">+</span> <br /> <span class="token number">0.0722</span> <span class="token operator">*</span> data<span class="token punctuation">[</span>i <span class="token operator">+</span> <span class="token number">2</span><span class="token punctuation">]</span><br /><br /> <span class="token keyword">const</span> isNotTransparent <span class="token operator">=</span> data<span class="token punctuation">[</span>i <span class="token operator">+</span> <span class="token number">3</span><span class="token punctuation">]</span> <span class="token operator">></span> <span class="token number">0</span><br /> <span class="token keyword">const</span> keep <span class="token operator">=</span> lum <span class="token operator"><</span> threshold <span class="token operator">&&</span> isNotTransparent<br /><br /> <span class="token keyword">if</span> <span class="token punctuation">(</span>ui<span class="token punctuation">.</span>controlBW<span class="token punctuation">.</span>checked<span class="token punctuation">)</span> <span class="token punctuation">{</span><br /> <span class="token comment">// For black and white/single colour</span><br /> <span class="token comment">// set the ink colour</span><br /> data<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">=</span> keep <span class="token operator">?</span> inkR <span class="token operator">:</span> paperR<br /> data<span class="token punctuation">[</span>i <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">]</span> <span class="token operator">=</span> keep <span class="token operator">?</span> inkG <span class="token operator">:</span> paperG<br /> data<span class="token punctuation">[</span>i <span class="token operator">+</span> <span class="token number">2</span><span class="token punctuation">]</span> <span class="token operator">=</span> keep <span class="token operator">?</span> inkB <span class="token operator">:</span> paperB<br /> data<span class="token punctuation">[</span>i <span class="token operator">+</span> <span class="token number">3</span><span class="token punctuation">]</span> <span class="token operator">=</span> keep <span class="token operator">?</span> <span class="token number">255</span> <span class="token operator">:</span> alpha<br /> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span><br /> <span class="token comment">// when keeping colour, keep the pixels colour</span><br /> data<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">=</span> keep <span class="token operator">?</span> data<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">:</span> paperR<br /> data<span class="token punctuation">[</span>i <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">]</span> <span class="token operator">=</span> keep <span class="token operator">?</span> data<span class="token punctuation">[</span>i <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">]</span> <span class="token operator">:</span> paperG<br /> data<span class="token punctuation">[</span>i <span class="token operator">+</span> <span class="token number">2</span><span class="token punctuation">]</span> <span class="token operator">=</span> keep <span class="token operator">?</span> data<span class="token punctuation">[</span>i <span class="token operator">+</span> <span class="token number">2</span><span class="token punctuation">]</span> <span class="token operator">:</span> paperB<br /> data<span class="token punctuation">[</span>i <span class="token operator">+</span> <span class="token number">3</span><span class="token punctuation">]</span> <span class="token operator">=</span> keep <span class="token operator">?</span> <span class="token number">255</span> <span class="token operator">:</span> alpha<br /> <span class="token punctuation">}</span><br /><span class="token punctuation">}</span></code></pre>
<p>I wanted a black ink only mode where it would set all kept pixels to black (or a colour of my choice) which is what that <code>if/else</code> is doing above. I also added options to set the paper colour because why not. I actually ended up using that feature to make the logo for the site.</p>
<p>A bonus of the threshold control is how much it helps in removing backgrounds on uneven scans or photos, like the example below. With the default threshold nothing gets removed but if I drop it to ~100 and switch to black and white mode, I'm able to remove most of the background while not losing too much detail on the drawings themselves. If this were more important I would use a proper scanner or light the image better but this will be handy for quick doodles.</p>
<figure><img src="https://cdn.rknight.me/site/2026/doodle-scan-uneven-comparison.jpg" alt="On the top is a badly lit photo of dotgrid paper with sketches of some people. The bottom shows the same image but with the paper removed" /></figure>
<h3>Edge Shrink</h3>
<p>I looked through how this worked on the other websites I found, read the code, made some notes, had a little cry, drew some diagrams, read more code, then I finally understood it. It looks at every pixel and if it has a transparent neighbour, then set it to transparent and do the same for each pass up to five times. This diagram I made explains better than I can about how it works over two passes.</p>
<figure><img src="https://cdn.rknight.me/site/2026/doodle-scan-edge-shrink.jpg" alt="sdfasd" /></figure>
<h3>Darken Lines</h3>
<p>This was the the part where I really had to focus to understand what this was doing. The darken lines slider sets a percentage which is then used to determine how much to darken the ink by. It involves getting the darkness or inverse luminance of the pixel, then calculating the amount to darken by by multiplying the darken value by darkness squared, multplied by the alpha level divided by 255 — as best I can tell this last bit reduces the effect on semi-transparent pixels. So yeah, maths. This feature is only useful when using colour mode.</p>
<pre class="language-js"><code class="language-js"><span class="token keyword">const</span> darkness <span class="token operator">=</span> <span class="token number">1</span> <span class="token operator">-</span> <span class="token punctuation">(</span><span class="token number">0.2126</span> <span class="token operator">*</span> r <span class="token operator">+</span> <span class="token number">0.7152</span> <span class="token operator">*</span> g <span class="token operator">+</span> <span class="token number">0.0722</span> <span class="token operator">*</span> b<span class="token punctuation">)</span> <span class="token operator">/</span> <span class="token number">255</span><br /><span class="token keyword">const</span> amountToDarken <span class="token operator">=</span> strength <span class="token operator">*</span> darkness <span class="token operator">*</span> darkness <span class="token operator">*</span> <span class="token punctuation">(</span>alpha <span class="token operator">/</span> <span class="token number">255</span><span class="token punctuation">)</span><br /><br />data<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">=</span> Math<span class="token punctuation">.</span><span class="token function">round</span><span class="token punctuation">(</span>r <span class="token operator">*</span> <span class="token punctuation">(</span><span class="token number">1</span> <span class="token operator">-</span> amountToDarken<span class="token punctuation">)</span><span class="token punctuation">)</span><br />data<span class="token punctuation">[</span>i <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">]</span> <span class="token operator">=</span> Math<span class="token punctuation">.</span><span class="token function">round</span><span class="token punctuation">(</span>g <span class="token operator">*</span> <span class="token punctuation">(</span><span class="token number">1</span> <span class="token operator">-</span> amountToDarken<span class="token punctuation">)</span><span class="token punctuation">)</span><br />data<span class="token punctuation">[</span>i <span class="token operator">+</span> <span class="token number">2</span><span class="token punctuation">]</span> <span class="token operator">=</span> Math<span class="token punctuation">.</span><span class="token function">round</span><span class="token punctuation">(</span>b <span class="token operator">*</span> <span class="token punctuation">(</span><span class="token number">1</span> <span class="token operator">-</span> amountToDarken<span class="token punctuation">)</span><span class="token punctuation">)</span></code></pre>
<h3>Out of the rabbit hole</h3>
<p>Now I'm "done" with this I can loop back around to where I started which was making some illustrations for my new website design and all I had to do was build an entirely new tool to do it. This will also be handy in September when where I'll be doing <a href="https://rknight.me/blog/get-okay/">drawings for St Jude</a> again.</p>Edinburgh Fringe: 15 Minutes of Shame ★★★★⯪ - Terence Eden’s Bloghttps://shkspr.mobi/blog/?p=738302026-08-10T20:43:10.000Z<p>Sex work is work, so we're told. There's no difference between picking up a night job stacking shelves and a night job jacking-off on screen. Right?</p>
<p>Perhaps a couple need a little bit of extra cash and the siren song of OnlyFans is <em>right</em> there. Let's fire up the webcam and release ourselves from financial drudgery!</p>
<p>Then reality hits.</p>
<p>The script by Sean Stillmaker sounds like it was ripped straight out of LinkedIn. Under a lesser cast, lines about synergising brand strategy to optimise the subscriber funnel would sound contrived; here they sound like hyper-savvy young adults rationalising their poor decisions. If influencers are the dominant cultural force in the world, then it seems right that their language now infiltrates dialogue in the same way "Valley Girl" speech conquered early 2000s TV and movies.</p>
<p>The cast - Ellen Pallant and Anton Bibby - flit about the stage with poise and grace. Their kinetic energy buzzes out into the audience who remained transfixed throughout the performance. They each have an intensity and passion which fills the space - fully bringing to life characters dominated by hubris and helplessness. Full praise must go to Adébayo Bolaji, the director, for finding a way to stage the show without it becoming tawdry and exploitative.</p>
<p>The political polemic around the exploitation of the working class (and of the working girl) isn't exactly subtle. But it fits right in with the themes of being in slavish thrall to both bosses, the algorithm, and - ultimately - the fans who love/hate you.</p>
<p>The ending feels a bit abrupt, but had the audience gleefully discussing it as we were expelled into the cold light of day.</p>
<iframe title="15 Minutes of Shame trailer" width="620" height="349" src="https://www.youtube.com/embed/W1Yq7uuyF5E?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen=""></iframe>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=73830&HTTP_REFERER=Atom" alt width="1" height="1" loading="eager">Edinburgh Fringe - Kat Ronson: Millennial Girl ★★★★☆ - Terence Eden’s Bloghttps://shkspr.mobi/blog/?p=738522026-08-10T17:45:36.000Z<p>OMG! If you remember A/S/Ling your way through MSN to fill in your MySpace top 8, then you'll love this show. You're also over 30 and, therefore, <em>old</em>. Ew.</p>
<img src="https://shkspr.mobi/blog/wp-content/uploads/2026/08/876f40e3-4575-4e7a-a55c-684af7c29fef.jpg" alt="A girl rendered in MS Paint." width="250" height="250" class="aligncenter size-full wp-image-73853">
<p>The stage is littered with a Nokia 3310, Bliss Magazine, and Charlie Red. Katie (15/F/UK) talks us through the complexities of her nascent love life, what shag band colours mean, and which quotes sum up millennial angst. All the while serenading us with her musical takes on the <strong>tragic</strong> Aniston/Pitt split.</p>
<p>Consistently funny and just the right amount of embarrassing.</p>
<p>As befits a work in progress, it is a <em>little</em> one note. That said, Katie is an expertly observed caricature of the size-zero obsessed, Vauxhall Corsa chasing girl that those of us of a certain vintage remember with fondness / body quaking cringe.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=73852&HTTP_REFERER=Atom" alt width="1" height="1" loading="eager">Edinburgh Fringe - Michael Brunström: William Tell vs the Algorithm ★★★☆☆ - Terence Eden’s Bloghttps://shkspr.mobi/blog/?p=738272026-08-10T15:57:27.000Z<p>The terror of AI has come to comedy. There are a dozen shows this year about the threat that technology poses to the way we live, laugh, and love.</p>
<p>In this case, AI stands for Austrian Imperialism and the fight is for Switzerland's independence.</p>
<p>Well, sort of. It gets a bit lost in an endless stream of rambly diversions. There's a fine line between surrealist comedy and utter nonsense. If you like seeing a man getting the audience to sing to a magical (albeit potentially traitorous) hat, attempting to pull up his trousers without his hands, and doing cuckoo impressions - this'll satisfy those cravings.</p>
<p>It does produce a steady stream of chuckles but suffers by being presented in an airless yurt.</p>
<p>The highlight for me was the confession that the comedian has "a rare form of synaesthesia which allows me to literally see colours!"</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=73827&HTTP_REFERER=Atom" alt width="1" height="1" loading="eager">Edinburgh Fringe - Rachel Creeger: Ultimate Jewish Mother 2026 ★★★★★ - Terence Eden’s Bloghttps://shkspr.mobi/blog/?p=738242026-08-10T13:56:32.000Z<p>My mum's friend Rachel has a one-woman show on at the Fringe. As, apparently, the only orthodox Jew on the UK comedy circuit she has constructed a fully interactive Jewish Mother experience.</p>
<p>Like several shows on the fringe, it relies on the audience writing questions on cards and the comedian riffing on them. Unlike other shows, Rachel has a huge stream of anecdotes and songs to weave into her answers. She has the easy and relaxed delivery of a seasoned professional who knows her material inside and out.</p>
<p>She is a delightfully deranged matriarch with strong options from the exact number of carcasses to throw into a chicken soup to how to get rid of your daughter's goyim boyfriend.</p>
<p>Tickets are pay-what-you-can and you'd be a schmuck if you missed it.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=73824&HTTP_REFERER=Atom" alt width="1" height="1" loading="eager">'Organising our small business' is now 'Working with Johnny.Decimal' - Johnny.Decimalhttps://johnnydecimal.com/support/updates/2026-08-10-working-with-johnny-decimal/2026-08-10T07:26:37.000Z<p>Preferring fewer, broader playlists (it's easier to manage), we renamed JDU's 'Organising our Small Business' to '<a href="https://johnnydecimal.com/jdu/wwjd">Working with Johnny.Decimal</a>'. This aligns it with <a href="https://www.youtube.com/playlist?list=PLtBN5zRaar6qyr3N_5R839uHpkoBAK3m6">YouTube</a>.</p>
<p>The JDU playlist will contain videos that YouTube doesn't – for example, today's '<a href="https://johnnydecimal.com/jdu/wwjd/2026-08-10-05-57-my-jdex-entries-and-notes">How I keep my JDex entries and notes</a>'. The JDU-only episodes will typically be less polished – this playlist will be a place I can throw up quick ideas, responses to your questions, that sort of thing.</p>Edinburgh Fringe: Smut Slam ★★★☆☆ - Terence Eden’s Bloghttps://shkspr.mobi/blog/?p=737992026-08-10T00:23:08.000Z<p>Fancy a quickie in <a href="https://www.thebansheelabyrinth.com/">Scotland's most haunted pub</a>? Smut Slam is a (mildly) interactive performance where a handful of speakers get to tell their dirtiest stories. The audience fills in cards with their questions or confessions which may be read out.</p>
<p>The format mostly works. There are different stories every night, so maybe we got a slightly uninspiring batch. Tales of sex parties, STIs, and broken sex-toys are fun enough but weren't exactly mind-blowing. The audience participation kind of slowed the pace down as each hastily scribbled card had to be quietly read to make sure it didn't violate the code of conduct.</p>
<p>I'm all for making spaces safe and inclusive - I just think the cards could have been vetted privately while a story was being told. That would have kept the pace up and given the stories a bit more space to breathe.</p>
<p>There are <a href="https://smutslam.com/">Smut Slams happening all over the world</a> and I reckon it's worth checking to see if there's one near you to see if it floats your boat. They've obviously built an audience which is hungry for more - but I found it a bit tepid.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=73799&HTTP_REFERER=Atom" alt width="1" height="1" loading="eager">Morning, sunrise - James' Coffee Bloghttps://jamesg.blog/2026/08/10/morning-sunrise2026-08-10T00:00:00.000Z
<p><em>The horizon is painted with a cool, warm glow. The sun has not yet risen; the hills are its blanket. The sky is a clear blue.</em></p><p>I woke up earlier than normal this morning. I find myself writing while gazing out the window, watching the sun rise, its light filling the room, illuminating the ideas of past days on my whiteboard, the titles of books I love, and the glass of water I poured earlier to help me ease into the morning.</p><p>When I woke up, I heard the song of a bird whose music I did not recognise. Birds continue to sing. The fresh morning air breezes through the window. Today the temperature is again lower. The world is wakening up. I am too.</p><p>Since I am not usually up at this time, I knew I wanted to watch the sun rise; to see the colours of morning. As I write, the yellow glow of the sun is intensifying, starting to shine on more of the places around me. The middle distance looks like it is tinged with a faint gold. Seemingly every time I look outside, there is something new to see; the world ever more full of colour, of light, of day.</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:'a28c82128c7445f4',t:'MTc4NjMzODc3Mg=='};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>
Edinburgh Fringe - Heated Rivalry: The Musical Parody! ★★★★★ - Terence Eden’s Bloghttps://shkspr.mobi/blog/?p=737782026-08-09T22:45:45.000Z<p>By my count there are at least <em>three</em> "Heated Rivalry" musical parodies on at the Fringe this year. The zeitgeist skates to where the puck was six months ago, I guess!</p>
<img src="https://shkspr.mobi/blog/wp-content/uploads/2026/08/heated.webp" alt="Three different musicals based on Heated Rivalry." width="504" height="446" class="aligncenter size-full wp-image-73780">
<p>There's also <a href="https://www.edfringe.com/tickets/whats-on/tonsil-hockey-live-in-edinburgh">a live version of a HR podcast</a> if you just can't get enough of their wacky ice-capades. Just how much sexy-hockey can one city take?</p>
<p>Produced by <a href="https://www.quickandfunnymusicals.com">Quick and Funny Musicals</a>, an American company specialising in <del>cash-ins</del> loving homages, this is surprisingly good! With songs like "Fuck Him Up The Butt (Metaphorically)" it isn't exactly subtle. The sex is acrobatic and - pixelated cocks aside - relatively raunchy.</p>
<p>If you've binge-watched Hollander and Rozanov's tender and humble love-affair, you'll you find delight in every scene. Lots of memorable moments are mined for their comedy value, and there are a decent amount of songs shared between the dozen-or-so cast members.</p>
<p>A couple of minor flubs couldn't mar the brilliance of the show. The cast really do give it their all (and give it to each other in a variety of positions). I'm pleased the intimacy co-ordinator was given appropriate appreciation.</p>
<p>Fair warning - there is a "splash zone" at the front of the seating for those of you who want to avoid/relish being lightly drenched in a certain hockey player's bodily fluids.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=73778&HTTP_REFERER=Atom" alt width="1" height="1" loading="eager">Edinburgh Fringe: 4 Aussies For Aussies - The Raging Bull ★★⯪☆☆ - Terence Eden’s Bloghttps://shkspr.mobi/blog/?p=737732026-08-09T16:00:04.000Z<p>Our first show at the Fringe! Caught by a rainstorm (in Scotland?!?!?) the app said this was the nearest comedy show to our sodden carcasses and it was free!</p>
<p>This is bang-average stand-up.</p>
<p>That isn't to disparage it at all. Four Australian blokes each doing 15 minutes of material - nothing particularly avant-garde or challenging. Just some decently funny (albeit well worn) observations about kids names, customer surveys at Tescos, and whether leaving skid marks is cultural heritage.</p>
<p>That said, I did have a soft spot for the comedian who walked on stage and dryly said, "Oh. Wow. A sitting ovation…"</p>
<p>For a free show on a cloudy Sunday it was perfectly fine. If you like straightforward stand-up, you can't go wrong with this.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=73773&HTTP_REFERER=Atom" alt width="1" height="1" loading="eager">Some more facts about me - Joel's Log Fileshttps://joelchrono.xyz/blog/some-more-random-facts-about-me2026-08-09T14:44:18.000Z<p>No introduction, no filler, just some facts. You can check some existing facts about me on <a href="/blog/some-facts-about-me/">this post from last year’s Blaugust</a> and this <a href="/blog/bqc-ten-pointless-facts-about-me/">other compilation</a>.</p>
<ul>
<li>
<p>Even though I am Mexican, there’s a lot of Mexican food everyone seems to love, but I just don’t like as much. I can eat it if I have to be polite, but yeah, I’d rather not. I don’t like <em>Mole</em> nor <em>Menudo</em>, even though both are quite popular and I’d recommend trying them out if you ever come visit this country. I also tend to avoid spicy food if possible.</p>
</li>
<li>
<p>I love origami as a hobby, this is not new information for most of you, but I do want to share my favorite origami model, which would be the Rat by Eric Joisel, he was one of the best origamists ever, and this model is one of the most expressive I know of, with a simplicity which I adore. There’s a <a href="https://www.happyfolding.com/files/Joisel-Rat_0.pdf">diagram available</a> if you want to give it a try, though it is of intermediate difficulty. In second place the Horse by Hideo Komatsu is lovely for opposite reasons, it is much more complex to fold, yet it looks as clean as a traditional crane. Both are fantastic. Check my <a href="/origami">origami page</a>—<em>though none of these models is pictured there</em>…</p>
</li>
<li>
<p>I love gaming, and most of my gaming is done in a handheld format, I currently possess a Nintendo Switch OLED, a PSP 3000, and Anbernic RG 35XXSP, a Miyoo Mini Flip and a New Nintendo 3DS XL, I also have a Miyoo Mini Plus that is currently on my sister’s care, and a Game Boy Advance SP which still works and was my first proper handheld—other than the cheap ones that came with 5 versions of tetris and blocky games I guess.</p>
</li>
<li>
<p>When I was in high school I pretty much introduced every one of my friends to <a href="https://en.wikipedia.org/wiki/Speedcubing">speedcubing</a>. I taught at least half a dozen of them how to solve the Rubik’s cubes and provided learning resources to many more, I did a couple of meet-ups and even went to a small event with a friend, teach algorithms, techniques to improve, etc. I would also recommend puzzles to get and would find the best local online stores to order from. As such I’d ask them to select what to buy and I would order a bunch of cubes at once to my house and distribute it from there. Looking back, I kind of promoted the hobby more than I realized and it was a sign of things to come… <em>cough cough</em></p>
</li>
<li>
<p>My favorite primary color is blue, and in case it isn’t clear by my profile picture and my website, my favorite color is turquoise or neon purple.</p>
</li>
<li>
<p>I have lived on four different states all over my country (México), the south, the north, and currently on the central region, all sorts of weather conditions and altitudes. Not too bad I’d say.</p>
</li>
<li>
<p>For some reason my first ever full anime was Neon Genesis Evangelion. I didn’t even know it was a mecha anime, I was not expecting what it would become later. Of course I was already exposed to some classics, such as <em>Dragon Ball</em>, <em>Captain Tsubasa</em> or <em>Yu-Gi-Oh</em>, which are constantly airing on public TV channels in Mexico and which I have never seen more than a couple episodes each. Evangelion was the first one I chose to watch consciously from start to finish.</p>
</li>
<li>
<p>Finishing games was not very common for me as a kid. Looking back, the first game I ever completed is probably <em>Halo 3</em> with my friends, though memory fails me. I would have to ponder some more on this… The earliest games since then is Ocarina of Time and Chrono Trigger in 2015-2016.</p>
</li>
<li>
<p>I have had four dogs, and only two of them at the moment. The first was Chicharido, a chihuaha I had for almost 14 years. I dug the grave myself, and it was surprisingly quick how I got over it after that. The second was Navi, who I barely got to have for a couple months due to a disease, she died first years ago,<a href="/blog/lost-dogs/">I wrote about that back then</a>. My two remaining dogs came after and got to be with Chicharito for a few years, they are 3 or so years old and I’m quite happy to have them.</p>
</li>
<li>
<p>My current YouTube obsession continues to be football. I keep watching documentaries and goal compilations from X or Y players or my national team, the World Cup does something to me, heeeelp</p>
</li>
</ul>
<p>This is day 13 of <a href="https://100daystooffload.com">#100DaysToOffload</a> and day 8 of <a href="https://nerdgirlthoughts.game.blog/2026/07/15/blaugust-2026-is-coming/">#Blaugust2026</a></p>
<p>
<a href="mailto:me@joelchrono.xyz?subject=Some more facts about me">Reply to this post via email</a> |
<a href="https://fosstodon.org/@joel/117067024816995988">Reply on Fediverse</a>
</p>Against Doomerism - Terence Eden’s Bloghttps://shkspr.mobi/blog/?p=725252026-08-09T11:34:12.000Z<p>There's a certain strain of commentator who is just <em>sure</em> that nothing can ever get better.</p>
<p>In amongst all the hullaballoo about the UK potentially banning under 16s from social media<sup id="fnref:ban"><a href="https://shkspr.mobi/blog/2026/08/against-doomerism/#fn:ban" class="footnote-ref" title="For the record, I think this is probably misguided. Although most American sites already ban under 13s from making an account, I am not sure that extending that to 16 is proportionate. But that's…" role="doc-noteref">0</a></sup>, I saw a prominent historian say:</p>
<blockquote><p>i assume banning kids from social media will be accompanied by a huge investment in teen-friendly communtiy [sic] spaces (like youth clubs) and social activities?</p>
<p>No?</p>
<p>Huh.</p></blockquote>
<p>But, here's the thing. He's wrong. You can argue about whether the UK's Labour Government is doing the right thing<sup id="fnref:right"><a href="https://shkspr.mobi/blog/2026/08/against-doomerism/#fn:right" class="footnote-ref" title="Again, whether you or I agree with all their policies isn't relevant here." role="doc-noteref">1</a></sup>, but they are pouring <em>huge</em> amounts of money and effort into youth provision.</p>
<ul>
<li><a href="https://www.gov.uk/government/news/uk-to-roll-out-dutch-style-employment-support-across-britain"> Young Brits are set to benefit from Dutch style employment support as the Government steps up localised support to tackle rising NEET numbers.</a>
<ul>
<li>"Almost 180 new Youth Hubs will begin opening from next week which will provide wraparound services – coordinating education, welfare, and employment support."</li>
</ul></li>
<li><a href="https://www.gov.uk/government/news/prime-minister-unveils-new-opportunities-for-young-people-to-re-connect-with-their-communities"> Prime Minister announces major expansion of youth services and real-world opportunities to re-connect young people with the world around them</a>
<ul>
<li>"Announcing a new £88 million package of support to transform opportunities for young people across the country, the Prime Minister will make clear that this government is picking this challenge up and seeing it for what it is – a worrying trend – and delivering real-life solutions for the long-term, investing in opportunities for young people."</li>
</ul></li>
<li><a href="https://www.bbc.com/news/articles/cp9v7z3j40eo">£30m pledged for youth club in each London borough</a>
<ul>
<li>"Sir Sadiq Khan said £30m of the £50m allocated in this year's budget for supporting young people would be used to fund a "Youth Lates" programme in the capital's 32 boroughs."</li>
</ul></li>
<li><a href="https://www.gov.uk/government/publications/youth-matters-your-national-youth-strategy/youth-matters-your-national-youth-strategy#chapter-2-places-to-go-and-things-to-do-1">Youth Matters: Your National Youth Strategy</a>
<ul>
<li>"spending nearly £70 million over the next 3 years to help local areas better support young people and develop a network of up to 50 Young Futures Hubs by March 2029"</li>
</ul></li>
</ul>
<p>When I raised this with him, the Doomer could only say it wasn't enough. When asked how much <em>would</em> be enough, there was no reply. I think that's because people like this don't want to engage with the world. They're desperate to show that <em>nothing</em> is being done. And, when it is pointed out that something <em>is</em> being done, all they can fall back on is that is it never enough.</p>
<p>If you push back even slightly on their Doomer views, you'll get a litany of complaints about how everything is taking too long (well, duh, there's a couple of decades worth of austerity to unpick) and how they have no faith in any of this making a difference (because they won't give it a chance) and that nothing is being done (even though they refuse to look at the evidence).</p>
<p>Similarly, I'm sure you've all seen someone moaning the the planet is fucked because we're doing nothing about it. But that simply isn't true:</p>
<blockquote><p>The UK's greenhouse gas emissions have fallen sharply: in 2024 they were 54% lower than in 1990, according to provisional data.</p>
<p>Source: <a href="https://www.bbc.co.uk/news/articles/cx238yyr40qo">https://www.bbc.co.uk/news/articles/cx238yyr40qo</a></p></blockquote>
<p>Everywhere you look there are signs of progress and hope.</p>
<p>Doomerism, by its nature, is a reactionary concept. It's like those weirdos who reply to every funny story on the web with "<a href="https://metro.co.uk/2019/03/11/why-do-men-keep-nominating-women-for-the-didnt-happen-of-the-year-awards-for-very-mundane-things-8770843/">didn't happen</a>". An utter unwillingness to acknowledge that - yeah - some stuff happens. The world doesn't change as quickly as you'd like and politicians are never quite as brave in government as they are when campaigning - but stuff gets done!</p>
<p>When the Mayor of London introduced various measures to prevent polluting vehicles from poisoning London, the Doomers said it was pointless. Today we know <a href="https://sphr.nihr.ac.uk/news-and-events/news/low-emission-and-congestion-charge-zones-linked-with-public-health-benefits/">it led to a substantial reduction in hospital admissions</a>.</p>
<p>You see Doomers bleating about how the <a href="https://www.transparency.org/en/news/panama-papers-10-years">Panama Papers</a> exposé led to nothing. That's contrary to <a href="https://www.icij.org/investigations/panama-papers/ten-years-after-the-panama-papers-enablers-and-tax-cheats-are-still-being-brought-to-justice/">all the people prosecuted</a>. Did everyone get the justice they deserve? No. But to reduce it to a nothingburger is the essence of Doomerism. "I don't remember anything important happening, therefore the world is terrible."</p>
<p>Doomerism always feels to me like a psyop designed to keep people dispirited. When everything is reduced to a "yeah, but <em>they</em> won't do anything" then you end up disenfranchising people.</p>
<p>Are there terrible things which need changing? Absolutely!</p>
<p>Are politicians doing everything that you specifically want? Probably not!</p>
<p>Are incremental changes happening if you bother looking for the evidence? Yes.</p>
<p>Why aren't these people looking at what is actually happening, reading about what is being tried, understanding what trade-offs are being considered? Is engaging with reality really that difficult?</p>
<p>I guess a nuanced or positive take doesn't get you as much social media engagement as a childish howl of rage.</p>
<div id="footnotes" role="doc-endnotes">
<hr aria-label="Footnotes">
<ol start="0">
<li id="fn:ban">
<p>For the record, I think this is probably misguided. Although most American sites already ban under 13s from making an account, I am not sure that extending that to 16 is proportionate. But that's tangential to my argument here. <a href="https://shkspr.mobi/blog/2026/08/against-doomerism/#fnref:ban" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
<li id="fn:right">
<p>Again, whether you or I agree with all their policies isn't relevant here. <a href="https://shkspr.mobi/blog/2026/08/against-doomerism/#fnref:right" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
</ol>
</div>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=72525&HTTP_REFERER=Atom" alt width="1" height="1" loading="eager">Note published on August 9, 2026 at 12:08 AM UTC - Molly White's activity feed6a77c4ec52b01ca28c3feebc2026-08-09T00:08:12.000Z<article><div class="entry h-entry hentry"><header></header><div class="content e-content"><p>well that sucks. apparently the Freedom To Read Foundation filed a trademark application for the phrase "free people read freely" a year and a half after i made the original lino print that i've made into stickers/etc.</p><div class="media-wrapper"><a href="https://storage.mollywhite.net/micro/86baefbd4dd4d1809a6a_Screenshot-2026-08-08-at-8.11.01---PM.png" data-fslightbox=87bcc821813d79332ff3><img src="https://storage.mollywhite.net/micro/86baefbd4dd4d1809a6a_Screenshot-2026-08-08-at-8.11.01---PM.png" alt="Why we're reaching outFreedom To Read Foundation recently let us know that they believe some of your listings infringe their intellectual
property (IP). In line with our Intellectual Property Policy,
we've carefully reviewed their report and have removed these listings from our marketplace." /></a></div><div class="media-wrapper"><a href="https://storage.mollywhite.net/micro/b08e1a6802d3ee538166_fprf-takedown.png" data-fslightbox=a84d71a1e965a8a2ac4a><img src="https://storage.mollywhite.net/micro/b08e1a6802d3ee538166_fprf-takedown.png" alt="Review the full report from Freedom To Read Foundation Freedom To Read Foundation Representative's Information [redacted] Freedom To Read Foundation Intellectual Property FREE PEOPLE READ FREELY trademark Trademark registration number: 7446426 " /></a></div><div class="media-wrapper"><a href="https://storage.mollywhite.net/micro/1c4ba7b9f517231f3c43_fprf-books.JPG" data-fslightbox=249fd8dc5ace96954287><img src="https://storage.mollywhite.net/micro/1c4ba7b9f517231f3c43_fprf-books.JPG" alt="A sticker made from a linocut print, which has the text “Free people read freely” in block capitals above a person in a dress reaching to take a book from a large bookshelf. The sticker is resting on a pile of old books." /></a></div><p>it's no big deal from a business perspective — i don't sell these stickers for much more than they cost, because i mostly just think it's an important message that i want to help people share. i've probably given away at least as many as i've sold, which i guess is now what i'll have to do with the rest.</p><p>and it's not my coinage, to be clear — it's from a fantastic 2023 speech by librarian Tracie D. Hall. but the artwork is mine, and wasn't infringing anyone's IP up until the FTRF filed this trademark application in March.</p></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/202608081945"><time class="dt-published" datetime="2026-08-09T00:08:12+00:00" title="August 9, 2026 at 12:08 AM UTC">August 9, 2026 at 12:08 AM UTC</time>. </a></div><div class="timestamp">Updated <time class="dt-updated" datetime="2026-08-09T00:14:58+00:00" title="August 9, 2026 at 12:14 AM UTC">August 9, 2026 at 12:14 AM UTC</time>.</div></div><div class="social-links"> <span> Also posted to: </span><a class="social-link u-syndication mastodon" href="https://hachyderm.io/@molly0xfff/117062655054712368" title="Mastodon" rel="syndication">Mastodon, </a><a class="social-link u-syndication bluesky" href="https://bsky.app/profile/molly.wiki/post/3msmci3i37222" 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/books" title="See all micro posts tagged "books"" rel="category tag">books</a>, <a class="tag p-category" href="https://www.mollywhite.net/micro/tag/free_speech" title="See all micro posts tagged "free speech"" rel="category tag">free speech</a>, <a class="tag p-category" href="https://www.mollywhite.net/micro/tag/intellectual_property" title="See all micro posts tagged "intellectual property"" rel="category tag">intellectual property</a>, <a class="tag p-category" href="https://www.mollywhite.net/micro/tag/libraries" title="See all micro posts tagged "libraries"" rel="category tag">libraries</a>, <a class="tag p-category" href="https://www.mollywhite.net/micro/tag/open_access" title="See all micro posts tagged "open access"" rel="category tag">open access</a>. </div></div></footer></div></article>Evening - James' Coffee Bloghttps://jamesg.blog/2026/08/09/evening-22026-08-09T00:00:00.000Z
<p><em>Herein, three chapters from today: two reflecting on the evening, and one looking back to the morning.</em></p><p>⁂ ⁂ ⁂</p><p>The sun shines through the window onto the coffee table — my typewriter and the Lucky Cat next to my typewriter are both illuminated; the cat waves at a fast, steady pace as the solar panel that receives the energy from the beaming sun. I look outside and see the shadows of the trees in the nearby field; the blue, blue sky with the occasional cloud floating behind the trees. I think how much I love the countryside. I smile. Joining a Zoom with a friend; listening to EDM while I catch up.</p><p>Looking around the room, I notice way the sun-kissed textured glass reflects on my guitar. I have never noticed that before. There is always something new to see, even in the most familiar of places.</p><p>⁂ ⁂ ⁂ </p><p>Thirty minutes later, I think about time: how the sun has moved, shining no longer on my typewriter but another part of the room. I still have the impression of the way the sun was shining before in my mind. Where the sun is now invites me to look out the window. I see the way the sun peeks through a cloud on the horizon. Much of the sky is blue; a paler blue that feels like it is mixed with white radiates around the sun. I think about the movement of time: how the sun moved and I, too, moved, but in a different way: I moved forward with conversation and sharing ideas – sharing the energy I have, just as the sun does.</p><p>⁂ ⁂ ⁂</p><p>Feeling relaxed and the tiredness that comes from a busy weekend – during which I made many web pages, seen new pieces of art, and felt the energy of being around both small groups of friends and around huge crowds – I look at my notes from this morning, the vignettes written as I watched and lived with the country side.</p><p>The smell of cinnamon in the coffee shop was delightful. The taste of the coffee I ordered – a decaf flat white – reminded me of my trip to Paris last year; I drank the coffee after coming in from the rain, and while looking out onto the trees. I have been so glad about the rain and the cooler weather over the last few days; I think Nature, and myself, both needed the change in weather.</p><p>This morning I also listened to Audrey Hobert’s music, whose latest album I have thoroughly enjoyed. I am only on my third or so listen so far, and look forward to the moment when I can sing entire songs of hers by heart.</p><p>Later in the morning, I started writing a poem; playing with words, with form, with structure. I smiled as I looked at the hills from a place where I can see more of the horizon than any other, where I can see for miles.</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:'a2892cea3ec255d3',t:'MTc4NjMwMzgyNw=='};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>
Types of Time Travel Zine - Robb Knight • Posts • Atom Feedhttps://rknight.me/blog/types-of-time-travel-zine/2026-08-08T19:07:00.000Z<figure><img src="https://cdn.rknight.me/site/2026/types-of-time-travel-zine-drafts.jpg" alt="Three pieces of paper on a green cutting board with illustrations about time travel on them" /></figure>
<p>I've wanted to make <a href="https://en.wikipedia.org/wiki/Zine">a zine</a> for a while — it has a nice combination of drawing, writing, and being a physical item that appeals to me but I couldn't find the right topic to tackle until I realised I'd already done the writing part of it with my post entitled <a href="https://rknight.me/blog/my-favourite-type-of-time-travel/"><em>My Favourite Type of Time Travel</em></a>.</p>
<p>The format I've come across most is the eight-page <a href="https://christinelarsenillustration.com/blarg/zines#foldable">foldable zine</a> which means including the cover there are eight pages of stuff to fill. As it turns out my time travel post had seven main types which was handy.</p>
<p>My plan was to draw directly to the single sheet of A4 paper, scan it it, and the zine be ready but I immediately did the the cover, which I really like, on entirely the wrong page. So The zine was actually done over four different pieces of paper as you can see in the photo at the top.</p>
<p>I scanned<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup> all the pages in, dropped them all in Pixelmator, and set out each page in the correct order. Doing it like this also allowed me to move about some things that weren't quite right and fix some mistakes but what you see is more of less exactly as I drew it.</p>
<p>You can download Types of Time Travel zine in <a href="https://cdn.rknight.me/zines/types-of-time-travel/types-of-time-travel-zine.pdf">PDF</a> or <a href="https://cdn.rknight.me/zines/types-of-time-travel/types-of-time-travel-zine-crushed.png">PNG</a> formats. I hope you enjoy it. As seems to be tradition with zine websites, I am including a link to <a href="https://cdn.rknight.me/zines/folding-a-zine.png">this illustration of unknown origin that shows how to fold an eight-page zine</a>.</p>
<p>I was surprised there's no web component or drop-in library to pass in a zine and make it readable easily online. Watch this space but for now you can read it below.</p>
<style>
.zine {
display: grid;
grid-template-columns: 1fr 1fr;
grid-gap: 10px;
}
@media (max-width: 500px) {
.zine { grid-template-columns: 1fr; }
}
.zine img {
margin-bottom: 0;
}
</style>
<div class="zine">
<img src="https://cdn.rknight.me/zines/types-of-time-travel/types-of-time-travel-zine-page-1.jpg" />
<img src="https://cdn.rknight.me/zines/types-of-time-travel/types-of-time-travel-zine-page-2-fixed.jpg" />
<img src="https://cdn.rknight.me/zines/types-of-time-travel/types-of-time-travel-zine-page-3-fixed.jpg" />
<img src="https://cdn.rknight.me/zines/types-of-time-travel/types-of-time-travel-zine-page-4-fixed.jpg" />
<img src="https://cdn.rknight.me/zines/types-of-time-travel/types-of-time-travel-zine-page-5-fixed.jpg" />
<img src="https://cdn.rknight.me/zines/types-of-time-travel/types-of-time-travel-zine-page-6.jpg" />
<img src="https://cdn.rknight.me/zines/types-of-time-travel/types-of-time-travel-zine-page-7.jpg" />
<img src="https://cdn.rknight.me/zines/types-of-time-travel/types-of-time-travel-zine-page-8.jpg" />
</div>
<hr class="footnotes-sep" />
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>This led me down <a href="https://rknight.me/notes/202608080716/">a rabbit hole</a> but that's a story for another day <a href="#fnref1" class="footnote-backref">⤾</a></p>
</li>
</ol>
</section>📝 2026-08-08 13:34: Wife: I need help clipping the goat's hooves. Here, hold this... Me: ... - Kev Quirkhttps://kevquirk.com/2026-08-08-13342026-08-08T12:34:00.000Z<p>Wife: I need help clipping the goat's hooves. Here, hold this...</p>
<p>Me: ...</p>
<p><img loading="lazy" src="https://kevquirk.com/content/images/2026-08-08-1334/1000011055.webp" alt="1000011055" /></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=%F0%9F%93%9D%202026-08-08%2013%3A34">reply to this post by email</a>, or <a href="https://kevquirk.com/2026-08-08-1334#comments">leave a comment</a>.</p>
</div>[RSS Club] I got an NLnet grant! - Terence Eden’s Bloghttps://shkspr.mobi/blog/?p=737572026-08-08T11:34:15.000Z<p><mark>Pssst! This post is only available to RSS/Atom subscribers. Tell your friends to subscribe </mark> 😊.</p>
<p>Just a quick one today, a more detailed blog coming soon - but I thought I'd give RSS Club Members (you!) a sneak peek.</p>
<p>A few months ago I saw a post on Mastodon from <a href="https://social.nlnet.nl/@nlnet">NLnet</a> - they were looking for Open Source projects to apply for grant funding. The deadline was less than 24 hours away, so I rushed in an application.</p>
<p>There was a ping-pong of emails where I detailed more about what I planned to do, and where they kept me abreast of their timescales.</p>
<p>Finally, after about 6 months, I received the most delightful email confirming my place in the programme!</p>
<p>I'm officially part of the <a href="https://nlnet.nl/thema/NGI0CommonsFund.html">NGI0 Commons Fund</a>.</p>
<p>So, what's the project? Regular readers will remember that I created <a href="https://shkspr.mobi/blog/2026/03/some-updates-to-activitybot/">ActivityBot</a> as a lightweight, single-file, fully featured ActivityPub server. The grant will enable me to improve the code, test the usability, have a security audit, do some accessibility work, and make it more robust.</p>
<p>I'm also going to need a logo 🤖</p>
<p>You can <a href="https://nlnet.nl/project/ActivityBot/">read more about the project on the NLnet site</a>.</p>
<hr>
<p>Because this is an RSS-only post, it doesn't support comments. You can <a href="https://edent.tel/">get in touch with me</a> if you'd like to say something nice.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=73757&HTTP_REFERER=Atom" alt width="1" height="1" loading="eager">