Shellsharks Blogroll - BlogFlock https://blogflock.com/list/xJ8yq 2026-10-24T19:45:00.000Z BlogFlock shellsharks The physical book experience - Joel's Log Files https://joelchrono.xyz/blog/the-physical-book-experience 2026-10-24T19:45:00.000Z joelchrono <p>Since I am done with <em>The Left Hand of Darkness</em> and with <em>The House on the Borderland</em>—both with a pending review coming soon—I decided I would give Frank Herbert’s <em>Dune Messiah</em> a shot at last.</p> <p>Even though I have a digital copy, I owned this one in paperback format, and decided to go with the analog experience!</p> <p>My edition is pocket sized (it fits on the back pocket of my jeans at least) and the first thing I did before I started reading it was make a papercover for it, which helps with preservation and privacy.</p> <p>I have to say, the experience has been very enjoyable so far. I have read 55% of the book by now during my work commute and I’m completely gripped to it.</p> <p>On my previous two reads I would often get sleepy mid-paragraph. Maybe I’m simply very invested on this story, but I think that there are a couple things I have to do with a paperback that keep my mind’s subconscious occupied a bit.</p> <ul> <li>Grip the book itself without covering the text.</li> <li>Keep the book open with both hands or with a specific hold.</li> <li>Make sure the sunlight hits the page I’m reading at a good angle.</li> <li>Make sure there is any light at all to be able to read.</li> <li>Keep the bookmark out of the way, and place it once I’m done.</li> <li>Write down the page count since there are no stats.</li> <li>Look up words I don’t understand by other means.</li> </ul> <p>One thing that happened unexpectedly was creasing the spine of the book. I hadn’t really considered the difference in quality between pocket-sized and slightly bigger paperbacks. My copy of <em>Dune</em> (the first book) stays open and won’t crease the spine, meanwhile the pocket edition of <em>Messiah</em> won’t stay open by itself. The low quality binding is annoying, and the crease was painful, but then again, such is life sometimes. Besides, a book is made to be used!</p> <p>In the end, reading physically has some caveats, but there’s a lot to appreciate about it. Despite the issues of cheaply made books nowadays, most of the ones I own are bigger and better made. I’m looking forward to checking those out, since we can only go up from there!</p> <p>This is day 58 of <a href="https://100DaysToOffload.com">#100DaysToOffload</a></p> <p> <a href="mailto:me@joelchrono.xyz?subject=The physical book experience">Reply to this post via email</a> | <a href="https://fosstodon.org/@joel/117497609066784551">Reply on Fediverse</a> </p> 2026-10-24 19:47: Hooman. I believe it is dinner time. - Kev Quirk https://kevquirk.com/2026-10-24-1947 2026-10-24T18:47:00.000Z Kev Quirk <p>Hooman. I believe it is dinner time.</p> <p><img loading="lazy" src="https://kevquirk.com/content/images/2026-10-24-1947/1000012709.webp" alt="1000012709" /></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-10-24%2019%3A47">reply to this post by email</a>, or <a href="https://kevquirk.com/2026-10-24-1947#comments">leave a comment</a>.</p> </div> Book Review: Get Ahead of Being Dead by Evie King ★★★★☆ - Terence Eden’s Blog https://shkspr.mobi/blog/?p=76286 2026-10-24T11:34:25.000Z Terence Eden’s Blog <img src="https://shkspr.mobi/blog/wp-content/uploads/2026/10/get-ahead-of-being-dead.webp" alt="Book cover featuring living and dying flowers." width="200" class="alignleft"> <p>After reading Evie King's previous book <a href="https://shkspr.mobi/blog/2026/02/book-review-ashes-to-admin-tales-from-the-caseload-of-a-council-funeral-officer-by-evie-king/">Ashes To Admin - Tales from the Caseload of a Council Funeral Officer</a> I was eager to read her not-quite-a-sequel.</p> <p>We know what happens after death; paperwork. Gas bills need to be cancelled, funeral wishes need to be carried out, money needs to be apportioned between warring family members. When you die, you won't be there to experience the annoyance and distress - but other people will. So do you help them or not?</p> <p>This book is a chatty and informal guide to how to set out your wishes - including that you have no wishes.</p> <p>Much like her previous book, it cheerfully mixes anecdotes about death with a powerful political message about how we treat the dead (and, I suppose, nearly dead).</p> <p>It is one of those rare eBooks which is probably better as a <em>paper</em> book because the end of every chapter has a few dozen questions to fill in. Some are seemingly banal (library card number) and other potentially a little distressing (who do you <em>not</em> want invited to your funeral). The aim is to keep the answers somewhere prominent so that, come the inevitable, there's a one-stop-shop for all your deadmin.</p> <p>Evie does an excellent job of making the slightly terrifying first steps accessible and approachable. It's fully trans, non-binary, and poly inclusive. It doesn't shy away from some of the more uncomfortable aspects of death, but it really does feel like the author is having a coffee & natter with you.</p> <p>The style won't be for everyone. I think I'd rather have this as just a plain list of questions. But, then again, I <em>did</em> find it compelling to read the stories about what happens when things go wrong. So maybe I don't know myself as well as I think. Say, what song <em>do</em> I want playing at my funeral?</p> <!-- 👋👋👋👋👋👋👋👋👋 Welcome to Comment Club! If this is your first time - hello! This content is only available to people who read my HTML comments. There's an a cappella version of "Because" by The Beatles. That'll do as a funeral song. But, I kinda guess I won't be there to enjoy it, so I'll play it for myself now. Anyway, the three rules of Comment Club are… 1. You must not tell anyone about Comment Club - let them find out about it themselves. 2. You *must* add some Comment Club Content to at least one of your blog posts. Doesn't have to be much, just a little note will do. 3. You should drop an email to anyone whose comments you've read. Start by sending me a friendly message at comment.club@shkspr.mobi Keep your eyes peeled for more comments in my other blog posts 😃 TTFN. --> <p>There's no doubt this is a slightly challenging and provocative read - but you should absolutely buy a copy for yourself and fill it in. Whether you buy it for your friends and relatives…</p> <img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=76286&HTTP_REFERER=Atom" alt width="1" height="1" loading="eager"> Pure Comments and the Fediverse - Kev Quirk https://kevquirk.com/pure-comments-and-the-fediverse 2026-10-24T09:51:00.000Z Kev Quirk <p>I recently wrote about <a href="https://kevquirk.com/privacy-and-webmentions">Privacy and Webmentions</a> to make the case — mostly to myself — for adding Fediverse integration to <a href="https://purecomments.org" rel="noopener noreferrer">Pure Comments</a>.</p> <p>A few people pushed back in the comments, but my position could generally be summarised with <em>"if it's a public post, it's fair game."</em></p> <p>Then this morning I read <a href="https://manuelmoreale.com/thoughts/thinking-about-privacy-and-webmentions" rel="noopener noreferrer">this post by Manu</a> and it's completely changed my opinion.</p> <p>Having now read <a href="https://www.w3.org/TR/webmention/" rel="noopener noreferrer">the Webmention spec</a> it <em>never</em> presents Webmentions as being "comments". At all times they're referred to as "notifications". More specifically:</p> <blockquote> <p>A Webmention is a notification that one URL links to another. For example, Alice writes an interesting post on her blog. Bob then writes a response to her post on his own site, linking back to Alice's original post. Bob's publishing software sends a Webmention to Alice notifying that her article was replied to, and Alice's software can show that reply as a comment on the original post.</p> <p><cite>The Webmention spec</cite></p> </blockquote> <p>That's <em>not</em> what I implemented in Pure Comments.</p> <h2>So what's the plan?</h2> <p><strong>My plan is to completely remove all Fediverse functionality from Pure Comments in the next release</strong>. The existing Webmention endpoint will remain so that Pure Comments can still send/receive Webmention notifications to/from other blogs.</p> <p>Pure Comments will no longer integrate with the Fediverse at all.</p> <p>This will also be a <em>massive</em> simplification of the Pure Comments code, so I'm looking forward to that as the Fediverse integration is very difficult to manage, and honestly I've already implemented a couple of "hacks" to fix small issues. So I won't be too sad to see it go from a development perspective.</p> <p>Some people are going to be pissed off at this - many like the Fedi integration, and I like it too. But having read Manu's perspective, I agree with him.</p> <p>If you're using the Pure Comments Fedi integration and want to keep using it after the next release, my advice would be to either fork Pure Comments, or stay on the current version.</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=Pure%20Comments%20and%20the%20Fediverse">reply to this post by email</a>, or <a href="https://kevquirk.com/pure-comments-and-the-fediverse#comments">leave a comment</a>.</p> </div> Morning coffee - James' Coffee Blog https://jamesg.blog/2026/10/24/morning-coffee 2026-10-24T00:00:00.000Z James' Coffee Blog <p>For the last month I have had a bag of coffee in the cupboard with enough beans to make one or two cups. I usually drink tea on weekdays, and prefer to have coffee while I am out and about, but because there is a storm forecast, and we had a storm yesterday evening too, I thought I would stay cosy this morning and take a slower day. <em>This coffee will come in handy.</em></p> <p>When I went to make my coffee this morning, I had to prepare all my equipment that had been stowed away in my cupboards behind and next to the tea tins and other things I use daily. In my head I had the list of all I would need. Coffee beans, a conical coffee brewer that makes delicious coffee, my gooseneck kettle, filter papers. It felt like past James had done future James a favour by not drinking the coffee on any passing day, rather waiting for the right moment.</p> <p style="text-align: center;">⁂ ⁂ ⁂</p> <p>Outside the trees are still and the sky is pink, following a night of heavier winds and many hours of rain. I am admiring how the pink clouds complement the yellow leaves on the tall trees who hold onto their colour despite the winds of yesterday.</p> <p>I cusp my warm cup of coffee between my two hands, feeling the warmth of a new 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:'a4f79f9f8fa6eaed',t:'MTc5MjgzMDY2OA=='};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> Published on Citation Needed: "On Meidas Defense: cryptocurrency, sanctions, and Trump quid pro quo" - Molly White's activity feed 6adbbf1c2be334bbcec395dc 2026-10-23T20:10:04.000Z Molly White <article class="entry h-entry hentry"><header><div class="description">Published an issue of <a href="https://www.citationneeded.news/"><i>Citation Needed</i></a>: </div><h2 class="p-name"><a class="u-syndication" href="https://www.citationneeded.news/meidas-defense-interview" rel="syndication">On Meidas Defense: cryptocurrency, sanctions, and Trump quid pro quo </a></h2></header><div class="content e-content"><div class="media-wrapper"><a href="https://www.citationneeded.news/meidas-defense-interview"><img src="https://www.citationneeded.news/content/images/2026/10/meidas-interview.png" alt="A still from a split-screen video of Joe Plenzler interviewing Molly White"/></a></div><div class="p-summary"><p>Last week I joined Joe Plenzler on the Meidas Defense podcast to talk about crypto. Meidas Defense is the MeidasTouch Network’s national security show, so we spent more time than I usually do on crypto as a geopolitical problem, in addition to a consumer protection one. The full episode and transcript are up on the Meidas newsletter, and there’s a shorter cut on YouTube: The use of crypto for sanctions evasion isn’t something I’ve covered in depth yet, and so this was a great opportunity to d</p></div></div><footer class="footer"><div class="flex-row post-meta"><div class="timestamp">Posted: <a class="u-url" href="https://www.citationneeded.news/meidas-defense-interview"><time class="dt-published" datetime="2026-10-23T20:10:04+00:00" title="October 23, 2026 at 8:10 PM UTC">October 23, 2026 at 8:10 PM UTC</time>. </a></div><div class="social-links"> </div></div><div class="bottomRow"><div class="tags"></div></div></footer></article> Final Fantasy IV - I finally beat one! - Joel's Log Files https://joelchrono.xyz/blog/final-fantasy-iv 2026-10-23T14:40:00.000Z joelchrono <p>I have known of <em>Final Fantasy</em> for ages now. It was one of the first franchises I discovered by myself, outside the usual <em>Nintendo</em> games, <em>FIFA</em> or <em>Halo</em>. I remember learning about RPGs and figuring out what turn based combat was, I thought that such a granular level of control over character actions would be kinda neat, although I ended up focusing a bit more on Pokemon.</p> <p>Downloading a ROM of <em>Final Fantasy I & II</em> for Game Boy Advance, to play on my <a href="/blog/the-smartphones-i've-owned-so-far/#2013">HTC ChaChaCha</a> and mapping its physical keys to control the game is quite the memory! But I died and died and died and I gave up on that first game. I was still too green, unfamiliar with what old games were like. Pokemon let me continue after dying, going back to a Pokecenter, but here? I could die and lose everything. I could only save from the world map, and I never bothered to learn how.</p> <p>Later I also realized that the first games on the franchises were rather punishing, and that FFIV is where they start to actually focus on a story too. I did choose to focus on FFVI and FFVII though, since they were the best ones, so I played them for a while and made decent progress on them, so I took my time to get to IV. It’s funny how it ended up as the first Final Fantasy I beat!</p> <p>At some point early in 2022, my family and I went on a trip, and I brought my PSP with me! Back then I didn’t write blogposts as often as I do now, and I didn’t keep track of my gaming either.</p> <p>But looking at my save data, that’s when I finally decided to give <em>Final Fantasy IV: The Compete Collection</em> a spin at last. I had heard it was the best way to enjoy the classic, so the time finally came.</p> <p>Enough backstory, how’s the actual game?</p> <p><img src="/assets/img/blogs/2026-10-23-artwork.webp" /></p> <h2 id="story">Story</h2> <p>This game has an actual story! Though the main focus is on Cecil, a Dark Knight that leads the Red Wings, a group of Flying Ships serving the kingdom of Baron, alongside Kain, his childhood friend who also commands the Dragoons. The story begins when Cecil questions the actions he’s ordered to do, which result on destruction and despair wherever the Red Wings go.</p> <p>We meet multiple characters along the way, which will join the party as the game continues, all of them will have defined classes and traits. So each one has equipment and unique characteristics. Some of the characters will be affected by the actions you did before, some will not trust you, and others you’ll have to meet and help out with their journeys. With a dozen playable characters, not all of them get to shine as much as the main cast, some are straight up kinda useless, but there’s some great designs and strategies to many of them too.</p> <p>The story itself is a bit of a classic hero’s journey, with Cecil facing his own actions and trying to make ammends while traveling all over the world to fix some of the mayhem he has caused, and doing everything they can to stop the big bad guy from bringing catastrophe on the planet.</p> <p>It is not the most incredible story every, but it’s a classic one with plenty of fun tropes, romance moments, funny dialogue and the like. I really had fun going through all of it, and it even turns into a bit of a Sci-Fi by the end.</p> <h2 id="gameplay">Gameplay</h2> <p>This is the first game in the series that featured the ATB combat system. Instead of the back and forth of waiting for your turn, there’s a bar that needs to fill up before you can perform an action. The party and the enemies have these ATB meters. This means that you can end up hit multiple times if you take too long to attack of use some spell. There is a “Wait” mode that let’s you choose at your own leisure, which I quickly turned on.</p> <p>Other than combat however, you will also explore around the map where you can move freely, although some areas require certain vehicles to get past. The usual gist.</p> <p>Of course, there’s also random encounters, in the world and during dungeons.</p> <p>Dungeons vary in theme, but they all amount to the same classic tropes. Secret passages, lots of chests, lots of monsters-in-a-box, and some story sequence or cool item by the end. We’ll explore caves, mountains, castles, sewers, and all the typical stuff.</p> <p>It’s a turn based JRPG, and this one doesn’t have anything new or unique by modern standards. What it has is a classic formula that mostly holds up to this day.</p> <p>If I were to complain about something. I wish they had done diagonal movement as an option. The grid style movement was really annoying at times.</p> <figure> <img src="/assets/img/blogs/2026-10-23-ffiv-1.webp" /> <figcaption>Inside one of the dungeons of the game! Ain't my PSP pretty though?</figcaption> </figure> <h2 id="music">Music</h2> <p>The soundtrack of Final Fantasy is instantly recognizable. Nobuo Uematsu composed an absolute masterpiece, not surprising at all, to be honest.</p> <p>The PSP remake of this game turned the classic SNES score and brought it to modern times. This entry even let’s you choose between the original and the modern soundtrack, so there’s no reason to complain. I played with the enhanced score, and had a wonderful time.</p> <p>My favorite piece has to be <a href="https://youtu.be/omC3c0La714">Theme of Love</a>, call me a romantic, I just can’t help it. There’s people out there who walked down the aisle with this one!</p> <p>Anyway, all of it is pretty fantastic. I think there were a couple sections with weird themes though, that last dungeon feels a little goofy to me because of the music, but nothing major!</p> <h2 id="art">Art</h2> <p>Once again, the PSP remake features very detailed sprites that are a far cry from the original spritework back in the SNES days. People seem to have mixed opinions about it, but given how bare bones the Pixel Remasters are. I think public opinion has started to change towards updates with higher resolution sprites. I think the style used by the Dragon Quest I, II and II HD-2D remakes made people see that high-res pixel art really does have a place!</p> <p>I really enjoy the look of pretty much everything, and the character designs are awesome. Playing on an original PSP, with the original screen resolution and everything, I couldn’t find any flaws. I have to say, the monster designs here look absolutely stunning, especially the bosses which already made for excellent pixel art on the original game, look better than ever here.</p> <p>I scrolled through the Bestiary multiple times during breaks here because of how cool the designs were.</p> <p>The game does feature high definition cutscenes with 3D animation at times. I think they are really cool additions to the game.</p> <p>During combat, some spells and attack will include 3D animation too, on top of the spritework, and they don’t feel out of place at all, I really enjoyed how smooth they were, adding to the cool factor of it all.</p> <figure> <img src="/assets/img/blogs/2026-10-23-ffiv-2.webp" /> <figcaption>The combat screen, look at that gorgeous sprite artwork, and how cool my PSP is!</figcaption> </figure> <h2 id="overall">Overall</h2> <p>It feels to have so little to say about each aspect of this title. There’s rarely anything new to it compared to <em>Chrono Trigger</em> and later <em>Final Fantasy</em> entries. This is pretty much a game that ticks all the boxes, and does everything you would expect when you think “Turn Based SNES JRPG.”</p> <p>This is the first Final Fantasy I’ve ever completed, despite 40+ hours on FFVI and almost 20 hours on FFVII. It is kind of fitting that the first one had to be the classic. The one where everything else builts on top of. The first one in the series that was released for an american audience.</p> <p>While the original trilogy can feel kind of aimless. From here on, there are characters and plots and reasons. Even though some of it doesn’t make sense, and some things just happens, it still works out, because it’s an old game and you can imagine and fill in the blanks for yourself.</p> <p>I actually think I may revisit this one. It is a masterpiece, especially at nailing the fundamentals, it just has that nice sense of progression and familiarity to it. It’s also less than 30 hours long, on the short side for the genre, which helps a bunch to go through it all fast—even if it took me four years to do that.</p> <p>Anyway, definitely check this out. I think the PSP version is genuinely the best one, featuring auto battle mode, excellent artwork, a nice script—though some say it’s tampered compared to the original—and all the extra dungeons and cutscenes that are lacking in the Pixel Remaster. It was very nice to have a few extra rounds using previous characters and getting new weapons and equipment for them there. Although I did the finale with the original party, of course!</p> <p>I played this on my PSP and ended up with a playtime of about 33 hours, 12 of which were played in the span of a month! This game really managed to grip me all over again, and it kept me hooked until I rolled credits. Now there’s an extra dungeon waiting for me with new bosses and all that. There’s also <em>Interlude</em> and <em>The After Years</em>, which are whole new stories inside of FFIV’s universe. I may get to them one day, but I’m plenty happy with the base game as it is!</p> <p>This is day 57 of <a href="https://100DaysToOffload.com">#100DaysToOffload</a></p> <p> <a href="mailto:me@joelchrono.xyz?subject=Final Fantasy IV - I finally beat one!">Reply to this post via email</a> | <a href="https://fosstodon.org/@joel/117491389923247293">Reply on Fediverse</a> </p> Notable links: September 23, 2026 - Werd I/O 6adb5aa56f97950001d03a29 2026-10-23T13:09:44.000Z Werd I/O <img src="https://storage.ghost.io/c/18/7c/187cc681-d3f3-49fc-87de-b01d06b76821/content/images/2026/10/patrycja-jadach-iqV7tItUkXk-unsplash.jpg" alt="Notable links: September 23, 2026"><p><em>Most Fridays, I share a handful of pieces that caught my eye at the intersection of technology, media, and society.</em></p><p><em>Did someone forward this to you? </em><a href="https://werd.io/notable-links-october-16-2026/#/portal" rel="noreferrer"><em>Subscribe for free</em></a><em>.</em></p><hr><div class="kg-card kg-callout-card kg-callout-card-green"><div class="kg-callout-text">I sat down with New_ Public to talk about building in the open, local news, the open social web, and more. <a href="https://newpublic.substack.com/p/why-this-platform-is-for-everyone" rel="noreferrer">I enjoyed the conversation very much; here it is</a>.</div></div><hr><h3 id="the-news-ai-field-report"><a href="https://cronkite.asu.edu/knightcenter/field-report-AI-in-news" rel="noreferrer">The News + AI Field Report</a></h3><p>The <a href="https://cronkite.asu.edu/knightcenter/field-report-AI-in-news">News + AI Field Report for 2022-2025</a>, produced by <a href="https://www.djordje.padejski.net/">Djordje Padejski</a> in conjunction with <a href="https://knightcenter.asu.edu/">ASU’s Knight Center for the Future of News</a>, is a landmark analysis of how newsrooms are experimenting with AI. The <a href="https://aimap.futureof.news/">interactive app</a> is also a really useful way to explore the 160 projects covered by this research.</p><p>I’ve been mulling over one of the findings described in the summary:</p><blockquote>“Newsrooms are most worried about the business threat from AI and have built the least for it. Interviews reveal widespread anxiety about the effects of AI on site traffic, audience behavior and news business models. Yet relatively few projects focus on revenue, subscriptions or fundraising.”</blockquote><p>20% of projects were business-related, but every fundraising project and over half of the business projects were grantees in the American Journalism Project’s AI programs. If those newsrooms are stripped out, the numbers drop significantly.</p><p>I think there’s a subtext worth talking about: I suspect the innovation projects listed here (that weren’t a part of a specific cohort) are a temperature check on how newsrooms are building technology / product experiments in general. If that’s the case, it implies that news is sticking to its comfort zone and spending much more time innovating on editorial concerns, and much less time experimenting with solutions for its existential business threats.</p><p>Reader-facing chatbots are a different angle on this: I’d call them a way for newsrooms to say they’re experimenting with AI without actually addressing a core user need. Newsroom websites are absolutely not where the chat layer should live (except, perhaps, for the use cases that provide deeper archive search for subscribers): AI users already have their own chatbots, which are the interfaces for <em>all</em> their AI-powered information. There are deeper ways AI could address user needs; the trick is that they would involve experimenting with the fundamental ways newsrooms do business. In turn, that requires both a willingness to do so, and much deeper collaboration between teams to make it happen.</p><p>So then the question becomes: how do we not just beef up journalism’s experiments in its business models, but the excitement and appetite to do so? Often the product teams that might be the owners of these kinds of experiments don’t (quite reasonably) own business models; how can those teams collaborate effectively? Funding from AJP clearly made a difference — is outside scaffolding required for this work to take place? How might product teams empower every team in the newsroom to run experiments?</p><p>These are much bigger questions than AI – and they’re questions newsrooms probably should be grappling with. In the meantime, I’m very grateful this analysis exists, and I hope it’s renewed to capture the year that follows.</p><hr><h3 id="the-three-layer-cake-public-interest-information-in-an-ai-intermediated-age"><a href="https://www.journalismfutures.org/three-layer-cake" rel="noreferrer">The Three-Layer Cake: Public-Interest Information in an AI-Intermediated Age</a></h3><p>Gina Chua and Adiel Kaplan at the Tow-Knight Center for Journalism Futures have put together a report summarizing a year of convenings and conversations about how journalism might react to its intermediation by AI. I was privileged to take part and to read a draft version of this report.</p><p>I love the framing here: the three-layer cake is digestible (so to speak), and I think the conclusions are sound. The worrisome thing for journalism is that most newsrooms live in the <em>creation</em> layer — the creators who supply the information which informs answers and summaries — which is also the part of the stack where participants have the least leverage.</p><p>So we need open, shared, common infrastructure. I think we also need strong portability standards. I’d argue that another word for the <em>consumption</em> layer as described here is <em>profiling</em>; tools at the consumption layer need to know a lot about their users so they can provide the most relevant information.</p><p>As the report says:</p><blockquote>“This is the layer that holds the relationship with the end user, where their data resides and the understanding of their information needs and desires accumulates and deepens over time. Owning that relationship will be one of the prizes of the AI age; not only will it unlock deep knowledge of individuals, it could lock them into particular providers.”</blockquote><p>And any solution needs to keep this in mind:</p><blockquote>“At the consumption layer, [points of leverage] involve working to ensure that the knowledge of people’s wants and needs is not the monopoly of organizations that may not have the public’s interest at heart.”</blockquote><p>Profile data is accumulated, private, and usually non-portable. The consumption layer also represents the greatest risk to creators from platform business decisions, both in terms of the business models of those platforms and which creators they choose to feature. Open portability standards and protocols — combined with full user control of their data — can scale, create useful competition, and empower users in the process.</p><hr><h3 id="team-dynamics-weaken-when-employees-turn-to-ai-instead-of-colleagues"><a href="https://hbr.org/2026/10/team-dynamics-weaken-when-employees-turn-to-ai-instead-of-colleagues" rel="noreferrer">Team Dynamics Weaken When Employees Turn to AI Instead of Colleagues</a></h3><p>Relationships take time, effort, and practice to keep alive. So in a sense, it shouldn’t be a surprise to see this finding from a survey of more than a thousand desk workers across 20 industries:</p><blockquote>“The more they turned to AI instead of a teammate, the more their trust in each other and their ability to coordinate seemed to erode.”</blockquote><p>It turns out that if you start asking an AI system instead of your colleague, coordination and trust drop by at least 20%. These technologies are still relatively new; I imagine that over time this will continue to drop. People who feel isolated in their work today will feel more so as this trend solidifies. Similarly, people who feel untrusted today will only feel more so as their teams continue to ask AI systems instead of them.</p><p>That doesn’t mean AI is always inherently bad. Like all work processes, it demands that we think hard about culture: what kinds of behaviors and feelings do we want to promote? What’s important to the organization? And do we care more about an individual’s productivity than creating a high-performing team? (We shouldn’t.)</p><p>This also rings true:</p><blockquote>“People consistently underestimate how enjoyable a human conversation turns out to be. Whether the motivation is fear of judgment or a desire not to impose, avoiding a colleague is hardly a new workplace behavior. AI now provides an alluring alternative that forgoes the social and emotional costs of getting support.”</blockquote><p>One way we can counteract this is by making asking for help (and giving it) an explicit norm in our team cultures, and leading by example by doing it ourselves. In remote or hybrid teams that rely on tools like Slack, that also means doing it in a non-private channel, so that other team members can see it and it can become normalized.</p><p>Although a bit of a cliché and genuinely heinous if they’re done poorly, I think standups can also be really helpful here, if you can do them live. Here, everyone goes round a circle and talks briefly about what they’re working on, with explicit needs for help made as part of the update. Implicit requests for help can be answered once everyone has gone around the circle.</p><p>Can AI help? Totally. As the authors discuss in this piece, you can use technology to help conversations to happen asynchronously, particularly on teams that spread across multiple timezones, and it can actively facilitate connections between people.</p><p>Let’s do that, instead of displacing our people and our relationships. AI can be a facilitator between people, but it should never be an intermediator: our relationships, our communities, and our companies will suffer.</p><hr><h3 id="some-final-words-on-foursquare"><a href="https://teendrama.substack.com/p/some-final-words-on-foursquare" rel="noreferrer">Some final words on Foursquare</a></h3><p>I freaking loved Foursquare. It was a wonderful way to explore cities with the help of my friends: in the same way that Upcoming was my best way of figuring out which events I should be going to, Foursquare let me know which restaurants, bars, parks, etc, were worth checking out. If Chris ranked a cocktail bar, you know it was amazing. Aaron always found the best coffee spots. And so on: my friends were better recommenders than any other source I had.</p><p>My own map lists every state and country I’ve been to over the last few decades. If I’m back in Amsterdam, I can figure out which Indonesian food place I really loved, because there it is on my map. (It’s <a href="https://paonbali.nl/">Paon Bali</a>, by the way. You’re welcome.)</p><p>So this was sad to see as an outcome. I think there are a bunch of important lessons here – not least the dangers of raising too much too soon without tethering the business to revenue. But at the same time, Foursquare launched during a startup explosion, and this kind of fundraising was the norm; I don’t fault Dennis for his decisions. The bigger problem seems to have been the private equity leadership more recently. I can’t think of a time when private equity <em>hasn’t</em> led to toxic leadership and a strip-mined company with an inequitable deal for employees.</p><p>Which leads me to an obvious problem. That check-in data is intimate stuff. It probably shouldn’t be something private equity can just inherit and do <em>whatever</em> with. Journalists and activists should hopefully not have been using Foursquare to check in; if they did, that data can almost certainly have been bought for analysis. And then a future-facing question: how might we have these kinds of social effects <em>without</em> sacrificing privacy?</p><p>Regardless, I’m pouring one out for Foursquare. I loved it. Thanks to everyone involved for building something that I found genuinely meaningful.</p> More phishing messages via Booking.com and Novotel - Terence Eden’s Blog https://shkspr.mobi/blog/?p=76842 2026-10-23T11:34:15.000Z Terence Eden’s Blog <p>A few days ago I booked a Novotel hotel on Booking.com - two days later I received these phishing messages via WhatsApp. Both knew my exact name, phone number, location of stay, and date of stay.</p> <p>Luckily, both were fairly inept. Let's take a quick look at them.</p> <p>The first came from a Portuguese business account.</p> <img src="https://shkspr.mobi/blog/wp-content/uploads/2026/10/Spam1.webp" alt="Spam message from a Portuguese business." width="490" height="1452" class="aligncenter"> <p>Obviously the name doesn't match that of the large chain hotel I booked with. The domain name doesn't look anything like what I'd expect from either Booking.com or Novotel. They note this isn't an emergency - presumably to bypass the warnings that you shouldn't act on any message trying to convey a sense of urgency. The "Cancel" button on the bottom makes this look more genuine though.</p> <p>The second one is slightly different.</p> <img src="https://shkspr.mobi/blog/wp-content/uploads/2026/10/Spam2.webp" alt="A similar message from a UK spammer." width="504" height="1101" class="aligncenter"> <p>This is from a much more generic business account, albeit a UK-based one. The date is formatted differently. There's no cancel button. But the wording is identical.</p> <p>So are these both from the <em>same</em> scammer?</p> <p>The domains were both registered on the same day - the 21st of October - within hours of each other. They're both protected by CloudFlare, but were registered at two different registrars - one Chinese and one Japanese. Lots of scammers use CloudFlare (who seem to relish in being the protectors of all sorts of unsavoury characters). A smart scammer would register their domains on multiple registrars to avoid all of them getting banned at once. So that's a bit inconclusive.</p> <p>Looking at the source code for the pages, they appear to be identical.</p> <p>That means one of two things:</p> <ol> <li>There is one incompetent scammer who doesn't keep a record of which messages they've sent to which victims.</li> <li>There are multiple scammers who are all using the same "off the shelf" phishing kit.</li> </ol> <p>But how did my data leak in the first place?</p> <p>The first place to look, as always, is within. My Booking.com account uses a strong and unique password. It has a unique email address tied to it. I have MFA via an authenticator app. I regularly use the "Sign out of other sessions" options in the Booking.com app.</p> <p>My email is similarly secure. And, frankly, if scammers were in there then they could do a lot more damage than sending me a phishing link!</p> <p>That leaves either Booking.com, Novotel, or one of their systems.</p> <p>It's fair to say this is a <em>persistent</em> problem with Booking.com - they were <a href="https://www.smashingsecurity.com/346-how-hackers-are-breaching-booking-com-and-the-untrustworthy-reviews/">breached in 2023</a> and these sorts of phishing attacks <a href="https://www.reddit.com/r/Bookingcom/comments/1sji0gf/serious_security_breach_confirmed_by_bookingcom/">happen regularly</a>.</p> <p>Although I couldn't find any record of Accor (the owners of Novotel) being breached, it's fair to say <a href="https://www.surinenglish.com/spain/the-aepd-fines-hotel-7000-euros-for-20240704075826-nt.html">other hotels suffer from this problem</a>. It seems depressingly easy to con or bribe a worker into allowing scammers access into a booking system.</p> <p>This sort of "<a href="https://www.ap.org/news-highlights/spotlights/2026/travel-scams-are-getting-harder-to-spot-heres-how-to-stay-safe/">reservation hijacking</a>" is now depressingly common.</p> <p>There's a slight twist in the tale. A few moments after I made the original reservation, I received this message directly from the hotel via the Booking.com messaging system:</p> <img src="https://shkspr.mobi/blog/wp-content/uploads/2026/10/Property-Message.webp" alt="Dear Terence, This hotel will never send you a message or email ask for you to pay or we will cancel your rooms. You have booked via booking.com and will not be able to check in on line - please disregard any email regarding online check in or payment. If you have received such a message please ignore this and contact the hotel directly. Kind regards. Reservations" width="660" height="780" class="aligncenter"> <p>I can only assume that Novotel are aware of the persistent problem they're facing and this is their attempt to deflect blame.</p> <p>So I called the hotel (using the number on their website) and they confirmed my reservation. When I mentioned the phishing messages the hotel were very quick to tell me they were a scam, that I shouldn't click any links, and to delete them right away. I did ask if they'd suffered a data breach but, understandably, they don't tell receptionists that.</p> <p>I've reported the problem to both Accor and Booking.com - we'll see who comes up with the most convincing explanation.</p> <p>Stay safe out there!</p> <img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=76842&HTTP_REFERER=Atom" alt width="1" height="1" loading="eager"> Weeknote #2023 - Robb Knight • Posts • Atom Feed https://rknight.me/blog/weeknote-2023/ 2026-10-23T10:56:15.000Z Robb Knight <p>I've started work on a card game and I have no idea what I'm doing so if anyone has any good articles to check out, send them my way.</p> <p>I was personally attacked at the weekend while driving through Basingstoke and saw a sign for a museum exhibit entitled "<a href="https://www.hampshireculture.org.uk/event/i-grew-90s-exhibition"><em>I Grew Up 90s</em></a>". Given the 90s were only 10 years ago<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>, this seems premature.</p> <figure><img src="https://cdn.rknight.me/site/2026/90s-museum-exhibit.jpg" alt="A museum exhibit with a Blockbuster shelf of videos with a big sign above and a poster for There's Something About Mary" /></figure> <p><a href="https://dns.museum">DNS Museum</a> is a <em>reference for the odd, inventive, and always impractical things people have done with DNS</em>. <a href="https://dns.museum/exhibits/dns-calculator">Maths over DNS anyone?</a>.</p> <p>Speaking of DNS, <a href="https://recordrelay.net">Record Relay</a> is an experiment to see how long a chain can be made with TXT records. I'm number two. And a few others.</p> <p>Sophie wrote a <a href="https://localghost.dev/blog/digital-recipe-management-for-fastidious-cooks/">great post about storing recipes</a> including this incredible line "<em>originally storing them in Evernote, which is what we did in the 2010s</em>". Remember Evernote? I'm trying out <a href="https://mealie.io">Mealie</a> at the moment and I like that it costs me nothing but I could make my life easier with a more advanced app like Paprika.</p> <p>I <a href="https://social.lol/@robb/117467084179453508">tooted at Dan</a> because we were both listening to Ms Rachel's album and he posted back this eldritch horror of an image featuring me, him, and Ry.</p> <figure><img src="https://cdn.rknight.me/site/2026/ms-rachel-with-dan-robb-ry.jpg" alt="Ms Rachels album cover but Ms Rachel is Dan, Mr Aron is Robb, and the bear is Ry" /></figure> <p>Keenan wrote <a href="https://gkeenan.co/avgb/four-months-in-poland/">a great post</a><sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup> about their adventures moving to Poland and buying lemons, among other things.</p> <p>I really like <a href="https://gatheringinlight.com/pages/tools">this analog defaults post</a>.</p> <p><a href="https://xkcd.com/3314/">XKCD was on point on Wednesday morning</a>.</p> <p><a href="https://rknight.me/notes/202610211108/">This is my favourite Inktober</a> I've done so far.</p> <p><a href="https://podzi.app/fonts/everhand/">Everhand</a> is a handwriting font that has three versions of every letter so no two letters are the same next to each other. Incredible stuff.</p> <hr class="footnotes-sep" /> <section class="footnotes"> <ol class="footnotes-list"> <li id="fn1" class="footnote-item"><p>Shut up. <a href="#fnref1" class="footnote-backref">⤾</a></p> </li> <li id="fn2" class="footnote-item"><p>All their posts are great, talented git <a href="#fnref2" class="footnote-backref">⤾</a></p> </li> </ol> </section> 2026-10-23 11:56: I've never really tracked my #100DaysToOffload effort very well, so I decided to create a... - Kev Quirk https://kevquirk.com/2026-10-23-1156 2026-10-23T10:56:00.000Z Kev Quirk <p>I've never really tracked my #100DaysToOffload effort very well, so I decided to create a page to help me track it. Turns out I've completed the challenge 7 times!</p> <p><a href="https://kevquirk.com/100">https://kevquirk.com/100</a></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-10-23%2011%3A56">reply to this post by email</a>, or <a href="https://kevquirk.com/2026-10-23-1156#comments">leave a comment</a>.</p> </div> Fix Kindle Stuck in Sign In Loop - Robb Knight • Posts • Atom Feed https://rknight.me/blog/fix-kindle-stuck-in-sign-in-loop/ 2026-10-23T08:30:23.000Z Robb Knight <p>I recently bought my wife a new Kindle so I grabbed her old one to sign into my account. I put my username and password in, then it would ask for my 2FA code which I would enter and it would always go back to the sign in screen again. I did this thrice before moving onto other fixes.</p> <p>I tried all the usual troubleshooting like updating it, checking the time and date was correct, and nothing worked. Then I recalled my old Xbox not being able to sign in if 2FA was on I turned it off and it worked. Why it's prompting for a 2FA code if it doesn't support it I'll never know.</p> <p>Anyway, back to never finding time to read and yes, I turned 2FA back on.</p> My desk - James' Coffee Blog https://jamesg.blog/2026/10/23/my-desk 2026-10-23T00:00:00.000Z James' Coffee Blog <p><em>After "<a href="https://jamesg.blog/2024/03/19/the-my-desk">The (My) Desk</a>" from March, 2024.</em></p> <p>As I was leaving my desk for the day, getting ready to have a cup of tea in bed and wind down for the evening, I caught a glance of a half-folded zine on my desk. The zine has been there for a few days, quietly telling a story that only this evening I was able to hear: this desk is becoming. <em>This desk is full of life.</em></p> <p>Situated in a cold, white room, <a href="https://jamesg.blog/2024/03/19/the-my-desk">my desk has felt distant</a> at times. When I sit there, in its comfortable chair, I see all the essentials a desk needs, and yet perhaps the most beautiful part of sitting at the desk is not the desk itself but the view – how the space encourages me to look outside. I don’t mind the white walls because the green hills more than make up for it. But maybe now is the time I should find a print and add colour to the space.</p> <p>I looked at my desk that I have seen a thousand times before with new eyes. The space has changed a lot over the last year. An unfolded zine – a representation of the idea of a work-in-progress – takes up space. My creative writing textbook, too, takes up space, within which there are 600 pages of techniques and studies and stories with which I will spend countless hours this year. Today, I have a reference book – Katy Hessel’s How to Live an Artful Life – sitting on my desk, to which I looked for inspiration earlier. Another book rests on the desk that I referenced earlier this week.</p> <p>My desk is becoming a space for works-in-progress: a space that occupies books and stories, a place that reflects my ever-more artistic outlook on the world. My desk feels more like my own. An origami butterfly rests on the elevated surface of my monitor stand. A chatterbox sits next to it, too. <em>I love making things with paper. I love making things that people can hold.</em></p> <p>Earlier today my desk was home to my typewriter where I wrote a story in a way I have never written a story before. I let words and sentences blend together. I let myself go to the edge of the paper. I let myself work with a new form. The document became infused with time, representing my thoughts in one afternoon where the physical world was in the foreground and the digital world was in my background. I made something physical today, at my desk. <em>I love making things that people can hold.</em></p> <p>This year my desk has been the home of conversations and of poetry, of learning and essays, of lectures and community. I may prefer to write in my armchair – and occasionally in bed, illuminated only by the glow of a night-lit screen and white-lit keyboard – but my desk is starting to feel now, after years, like it is more of a place, a place from where I can see the world around, where I can make something people can hold; a place for my works-in-progress.</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:'a4f38ecb6db2592d',t:'MTc5Mjc4ODAzNg=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script> <a class="tag" href="https://jamesg.blog/2024/03/19/the-my-desk">The (My) Desk</a> <a class="tag" href="https://jamesg.blog/2024/03/19/the-my-desk">my desk has felt distant</a> News will be intermediated by AI. What's next? - Werd I/O 6ada56526f97950001d0380b 2026-10-22T18:30:42.000Z Werd I/O <p>Link: <a href="https://www.journalismfutures.org/three-layer-cake"><em>The Three-Layer Cake: Public-Interest Information in an AI-Intermediated Age, by Gina Chua and Adiel Kaplan at the Tow-Knight Center for Journalism Futures</em></a></p><p>Gina Chua and Adiel Kaplan at the Tow-Knight Center for Journalism Futures have put together a report summarizing a year of convenings and conversations about how journalism might react to its intermediation by AI. I was privileged to take part and to read a draft version of this report.</p><p>I love the framing here: the three-layer cake is digestible (so to speak), and I think the conclusions are sound. The worrisome thing for journalism is that most newsrooms live in the <em>creation</em> layer — the creators who supply the information which informs answers and summaries — which is also the part of the stack where participants have the least leverage.</p><p>So we need open, shared, common infrastructure. I think we also need strong portability standards. I’d argue that another word for the <em>consumption</em> layer as described here is <em>profiling</em>; tools at the consumption layer need to know a lot about their users so they can provide the most relevant information.</p><p>As the report says:</p><blockquote>“This is the layer that holds the relationship with the end user, where their data resides and the understanding of their information needs and desires accumulates and deepens over time. Owning that relationship will be one of the prizes of the AI age; not only will it unlock deep knowledge of individuals, it could lock them into particular providers.”</blockquote><p>And any solution needs to keep this in mind:</p><blockquote>“At the consumption layer, [points of leverage] involve working to ensure that the knowledge of people’s wants and needs is not the monopoly of organizations that may not have the public’s interest at heart.”</blockquote><p>Profile data is accumulated, private, and usually non-portable. The consumption layer also represents the greatest risk to creators from platform business decisions, both in terms of the business models of those platforms and which creators they choose to feature. Open portability standards and protocols — combined with full user control of their data — can scale, create useful competition, and empower users in the process.</p> Read "AI Is Changing Everything About Hacking. No One Knows What Happens Next" - Molly White's activity feed 6ada2e8a914413745264549c 2026-10-22T15:40:58.000Z Molly White <article class="entry h-entry hentry"><header><div class="description">Read: </div></header><div class="content e-content"><div class="article h-cite hcite"><div class="title"><a class="u-url u-repost-of" href="https://www.404media.co/php2shell-black-october-ai-is-changing-everything-about-hacking-no-one-knows-what-happens-next/" rel="bookmark">“<span class="p-name">AI Is Changing Everything About Hacking. No One Knows What Happens Next</span>”</a>. </div><div class="byline"><span class="p-author h-card">Jason Koebler</span> in <i class="p-publication">404 Media</i>. <span class="read-date"> Published <time class="dt-published published" datetime="2026-10-22">October 22, 2026</time>.</span></div><blockquote class="summary p-summary entry-summary">So much is happening, and so quickly, that it has been difficult for me — someone who has been reporting and editing stories on security and hacking for a decade — to fully understand what’s going on, to have a sense of what could happen next, or predict where this is going. And I think that that is largely where we are at the moment, as I am writing this.  But it has become clear that AI, broadly defined, has fundamentally changed both offensive hacking and defensive cybersecurity. This is not because AI has become sentient or because human beings have lost control of it or because of “swarms” of “rogue agents,” but because AI is proving something that we have always known: much of the software that runs the internet, our devices, our accounts, and our lives is vulnerable, or out of date, or has security flaws that human beings never noticed, or was installed by someone at a company who left the company six years ago and has been replaced four times and no one knows how to find them now or how to update it.</blockquote><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><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">Posted: <time class="dt-published" datetime="2026-10-22T15:40:58+00:00" title="October 22, 2026 at 3:40 PM UTC">October 22, 2026 at 3:40 PM UTC</time>. </div></div><div class="bottomRow"><div class="tags">Tagged: <a class="tag p-category" href="https://www.mollywhite.net/feed/tag/artificial_intelligence" title="See all feed posts tagged "artificial intelligence"" rel="category tag">artificial intelligence</a>, <a class="tag p-category" href="https://www.mollywhite.net/feed/tag/cybersecurity" title="See all feed posts tagged "cybersecurity"" rel="category tag">cybersecurity</a>. </div></div></footer></article> Note published on October 22, 2026 at 2:38 PM UTC - Molly White's activity feed 6ada1fee0ebbcef1160d5713 2026-10-22T14:38:38.000Z Molly White <article><div class="entry h-entry hentry"><header></header><div class="content e-content"><p>a sight for sore eyes</p><div class="media-wrapper"><a href="https://storage.mollywhite.net/micro/62a9f648f9dd9754e25b_Screenshot-2026-10-22-at-10.33.42---AM.png" data-fslightbox=aa3e8a6610b66a7e452a><img src="https://storage.mollywhite.net/micro/62a9f648f9dd9754e25b_Screenshot-2026-10-22-at-10.33.42---AM.png" alt="molly@grayson:~$ php -v Command 'php' not found, but can be installed with:" /></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/202610221037"><time class="dt-published" datetime="2026-10-22T14:38:38+00:00" title="October 22, 2026 at 2:38 PM UTC">October 22, 2026 at 2:38 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/117485071325404559" title="Mastodon" rel="syndication">Mastodon, </a><a class="social-link u-syndication bluesky" href="https://bsky.app/profile/molly.wiki/post/3myhv2p4ccc23" 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/cybersecurity" title="See all micro posts tagged "cybersecurity"" rel="category tag">cybersecurity</a>. </div></div></footer></div></article> 2026-10-22 14:13: So. Hooman. Are you ready for our meeting? - Kev Quirk https://kevquirk.com/2026-10-22-1413 2026-10-22T13:13:00.000Z Kev Quirk <p>So. Hooman. Are you ready for our meeting?</p> <p><img loading="lazy" src="https://kevquirk.com/content/images/2026-10-22-1413/1000012586.webp" alt="1000012586" /></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-10-22%2014%3A13">reply to this post by email</a>, or <a href="https://kevquirk.com/2026-10-22-1413#comments">leave a comment</a>.</p> </div> Gadget Review: Mokin 17 Port USB-C Tower ★★☆☆☆ - Terence Eden’s Blog https://shkspr.mobi/blog/?p=76136 2026-10-22T11:34:36.000Z Terence Eden’s Blog <p>The good folks at Mokin have sent me their new USB-C hub and it is a <em>beast</em>.</p> <img src="https://shkspr.mobi/blog/wp-content/uploads/2026/09/product-shot.webp" alt="Photo of the front and back of the hub." width="1024" height="576" class="aligncenter"> <p>This is the <a href="https://mokinglobal.com/products/mokin-17-in-1-usb-c-docking-station-for-triple-monitors-with-smart-lcd">MODK2403</a> - the latest in their line of high-tech USB-C docks. It does close to everything you could want <em>and</em> has an LCD monitor for showing the weather.</p> <p>Errr… What?</p> <p>OK, a quick product shots, then on to the specs.</p> <img src="https://shkspr.mobi/blog/wp-content/uploads/2026/09/All-the-ports.webp" alt="All the ports." width="1024" height="771" class="aligncenter"> <p>On to the ports:</p> <ul> <li>Triple display <ul> <li>Either 3x HDMI or 1x HDMI and 2x DisplayPort</li> </ul></li> <li>4x USB-A <ul> <li>2x 2.0 480Mbps, 1x 3.0 5Gbps, 1x 3.1 10Gbps</li> </ul></li> <li>2x USB-C <ul> <li>1x 3.0 5Gbps, 1x 3.1 10Gbps</li> </ul></li> <li>USB-C PD input <ul> <li>100W</li> </ul></li> <li>USB-C to host computer <ul> <li>USB-C to C cable included</li> </ul></li> <li>Ethernet port <ul> <li>1Gbps</li> </ul></li> <li>SD and microSD</li> <li>3.5m Audio Jack</li> <li>Suction cup</li> </ul> <p>Yup! At the bottom of the tower is a silicone surround which allows it to firmly plant on any flat surface. It's strong enough to take any gentle nudges without toppling over, but easy enough to lift off if you need to move the unit.</p> <img src="https://shkspr.mobi/blog/wp-content/uploads/2026/09/suction.webp" alt="A square suction cup." width="1024" height="768" class="aligncenter"> <p>It is <em>slightly</em> cheeky to describe this as 17 ports. The two DisplayPorts are tied to the HDMI ports - so you can only have 3 screens active at a time, not five. But as each screen can do 4K @ 60Hz, I'll let it slide.</p> <h2 id="screen"><a href="https://shkspr.mobi/blog/2026/10/gadget-review-mokin-17-port-usb-c-tower/#screen">Screen</a></h2> <p>There's a black and white screen included which can show you a bunch of information. Tap the power-button on top to cycle between them.</p> <p>Which ports are connected:</p> <img src="https://shkspr.mobi/blog/wp-content/uploads/2026/09/Whats-plugged-in.webp" alt="A list of ports. Some are illuminated." width="1024" height="768" class="aligncenter"> <p>Screen resolution of attached devices: <img src="https://shkspr.mobi/blog/wp-content/uploads/2026/09/Displayinfo.webp" alt="Screen resolution, size, and refresh rate." width="1024" height="768" class="aligncenter"></p> <p>Total power draw: <img src="https://shkspr.mobi/blog/wp-content/uploads/2026/09/what-watts.webp" alt="A weird smiley face showing 49 Watts." width="1024" height="768" class="aligncenter"></p> <p>WiFi set up: <img src="https://shkspr.mobi/blog/wp-content/uploads/2026/09/WiFi-Info.webp" alt="WiFi Info." width="1024" height="768" class="aligncenter"></p> <p>Wait? What! If you connect to the hub's WiFi, you get this set-up screen.</p> <img src="https://shkspr.mobi/blog/wp-content/uploads/2026/09/WiFi-setup.webp" alt="A long settings screen to allow WiFi and set various options." width="504" height="1344" class="aligncenter"> <p>Once it is connected, it'll show you the weather in your area:</p> <img src="https://shkspr.mobi/blog/wp-content/uploads/2026/09/Weather-no-location.webp" alt="Weather and time." width="1024" height="768" class="aligncenter"> <p>I'm not <em>entirely</em> convinced about whether that's useful. Although you can change the units from ℉ to ℃, and show or hide your area, there's no other customisation available. No 24 hour clock, no date formatting, nothing. There's also no privacy policy or indication of which weather provider it is connecting to.</p> <p>The screen switches off after a few minutes - so it isn't a constant distraction. Tapping the top button turns it on again.</p> <p>Double-pressing the power-button switches the external monitors off. Which is useful for privacy I guess?</p> <h2 id="linux-info"><a href="https://shkspr.mobi/blog/2026/10/gadget-review-mokin-17-port-usb-c-tower/#linux-info">Linux Info</a></h2> <p>Worked perfectly with my Linux laptop. I drove two external screens via DisplayPort, a bunch of USB peripherals, Ethernet, etc.</p> <p>A full read-out gives:</p> <pre><code class="language-_">0bda:8153 Realtek Semiconductor Corp. RTL8153 Gigabit Ethernet Adapter 0bda:0411 Realtek Semiconductor Corp. Hub 2109:0822 VIA Labs, Inc. USB3.1 Hub 2109:8822 VIA Labs, Inc. USB Billboard Device 0020:0b21 Generic AB13X USB Audio 0bda:1100 Realtek Semiconductor Corp. HID Device 0bda:5411 Realtek Semiconductor Corp. RTS5411 Hub 1a86:8095 QinHeng Electronics USB Hub 303a:1001 Espressif USB JTAG/serial debug unit 2109:2822 VIA Labs, Inc. USB2.0 Hub </code></pre> <h2 id="speed"><a href="https://shkspr.mobi/blog/2026/10/gadget-review-mokin-17-port-usb-c-tower/#speed">Speed</a></h2> <p>I have 1Gbps broadband, and I was able to get 850Mbps through the Mokin's Ethernet port. That's pretty much what I'd expect.</p> <p>Copying files via USB-C to a Pixel phone topped out at about 200MBps, which was a little underwhelming, but fast enough for my needs. I tried a variety of cables, including the bundled one.</p> <h2 id="sound"><a href="https://shkspr.mobi/blog/2026/10/gadget-review-mokin-17-port-usb-c-tower/#sound">Sound</a></h2> <p>The AB13X USB Audio presents as both analogue and S/PDIF. There was no meaningful difference between the two in terms of sound quality. There was minimal hum on output when nothing was being played.</p> <h2 id="wifi-and-security"><a href="https://shkspr.mobi/blog/2026/10/gadget-review-mokin-17-port-usb-c-tower/#wifi-and-security">WiFi and Security</a></h2> <p>I'm slightly uneasy about the built-in WiFi connection this hub offers. It is primarily used for showing the weather on screen, but it can also be used to upload new firmware.</p> <p>Worryingly, it has a weak default password set - <code>mokin123</code>. I think that might be <a href="https://www.gov.uk/government/news/new-laws-to-protect-consumers-from-cyber-criminals-come-into-force-in-the-uk">against the law</a>. The password can be changed by the user - but I wonder how many people will bother?</p> <p>When I mentioned this to Mokin, they replied:</p> <blockquote><p>After the initial password is set, the user can change the password themselves rather than continuing to use a fixed default password.</p></blockquote> <p>I don't think that's good enough to protect users.</p> <p>Similarly, the SSID can be hidden and is randomised, but I wonder if that's suitable defence against a determined hacker?</p> <p>I'm glad that the unit doesn't hijack the Ethernet connection - but who knows what a future firmware update might do.</p> <p>There's also a <code>303a:1001 Espressif USB JTAG/serial debug unit</code> exposed on the hub. I tried connecting to it with <code>esptool</code> and the hub crashed! I had to pull out the power to get it to restart. I'm not smart enough to probe it further, but I can't help wondering why it is there.</p> <p>Finally, there's a mysterious <code>0bda:1100 Realtek Semiconductor Corp. HID Device</code>. I thought that was used for blanking the external screens when the power-button is double-pressed, but that didn't register on <code>evtest</code>. So what is it for? I don't like the idea of a random Human Interface Device (usually a keyboard or mouse) being attached to my computer.</p> <p>I spoke to Mokin about it and they said:</p> <blockquote><p>our technical manager confirmed that these two entries are reserved for future firmware updates.</p></blockquote> <p>Personally, I would expect these to be disabled if they aren't going to be used.</p> <h2 id="privacy"><a href="https://shkspr.mobi/blog/2026/10/gadget-review-mokin-17-port-usb-c-tower/#privacy">Privacy</a></h2> <p>With any device which connects to the Internet, you have to be concerned about what data it is collecting, storing, and transmitting. I asked Mokin if they had a privacy policy related to their weather service. They said:</p> <blockquote><p>There is no need to worry about your personal or location information being uploaded or stored remotely. The relevant user information is stored locally on the device.</p> <p>The weather/location information is provided through Google services, and no personal information is uploaded or stored by us. Therefore, there should be no privacy or data security concern from our side.</p></blockquote> <p>I don't find that terribly convincing. At the very least they should tell users who their weather provider is and what their privacy says. I assume that the device is doing a GeoIP lookup before sending the request to Google - again, that should be explained to users.</p> <p>I've no evidence that the hub is collecting data about what is attached and then sending it off somewhere - but without a privacy policy from Mokin, who can say?</p> <h2 id="cracking-it-open"><a href="https://shkspr.mobi/blog/2026/10/gadget-review-mokin-17-port-usb-c-tower/#cracking-it-open">Cracking It Open</a></h2> <p>The suction cup at the bottom is only lightly glued on and peeled off easily. Underneath are four screws.</p> <img src="https://shkspr.mobi/blog/wp-content/uploads/2026/10/Bottom-Screws.webp" alt="Four cross head screws." width="512" height="531" class="aligncenter"> <p>The base removes easily, exposing the three circuit boards.</p> <img src="https://shkspr.mobi/blog/wp-content/uploads/2026/10/Internal-guts.webp" alt="Two circuit boards with a middle board and some wires." width="2048" height="1824" class="aligncenter"> <p>Here's a close up:</p> <img src="https://shkspr.mobi/blog/wp-content/uploads/2026/10/guts.webp" alt="Close up of the circuits." width="2048" height="1798" class="aligncenter"> <p>I couldn't easily get them out, and the front plastic was held on securely. I'm sure it would be possible to snap off, but I didn't want to damage it.</p> <h2 id="price-and-final-thoughts"><a href="https://shkspr.mobi/blog/2026/10/gadget-review-mokin-17-port-usb-c-tower/#price-and-final-thoughts">Price and Final Thoughts</a></h2> <p>It's usually about <a href="https://mokinglobal.com/products/mokin-17-in-1-usb-c-docking-station-for-triple-monitors-with-smart-lcd">£90 from the manufacturer</a> or around <a href="https://link.amazon/B08w3yaiS">£70 from Amazon</a>.</p> <p>You can get a basic hub for less than half that price - but what you're paying for here having <em>all the ports</em>. It's an attractive package, well designed, quiet, and unobtrusive.</p> <p>The screen is moderately useful - being able to see which ports are in use was handy, as was seeing the total power draw. The screen debugging was also handy. I'm not that interested in the weather, but I can see how it would be helpful as a single-use screen.</p> <p>I have significant concerns about the always-on WiFi, especially given its easy to guess password. I've contacted the manufacturer to see if anything can be done about that but they don't seem interested in fixing it. The lack of privacy policy is also worrying.</p> <p>Similarly, the HID and JTAG are also something I wouldn't expect to see on a hub like this. Ideally they should be disabled if not in use.</p> <p>In terms of ports and performance, this can't be beat. But I would be reluctant to connect it to my home WiFi network.</p> <img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=76136&HTTP_REFERER=Atom" alt width="1" height="1" loading="eager"> Converting YAML to Jekyll collection - Joel's Log Files https://joelchrono.xyz/blog/converting-yaml-to-jekyll-collection 2026-10-22T03:36:01.000Z joelchrono <p>I was reading a blogpost by AetherAnne where she spent some time manually <a href="https://aetheranne.ca/tumblelog/2026/i-could-have-used-ai/">turning a YAML file into a Jekyll collection.</a> Doing things by hand is a wonderful thing, but well, sometimes a bash script works too!</p> <p>I don’t know why I hadn’t done this myself already for <a href="/bookshelf/">my books</a>. Especially because I already had <a href="/blog/using-jekyll-collections-to-share-origami/">used Jekyll collections for my origami</a> before. Check that out in case anything here is unfamiliar to you. I am assuming a bunch of terms that only make sense if you use Jekyll or YAML or parsing and such.</p> <p>In any case, my YAML file looked like this:</p> <div class="language-yml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="pi">-</span> <span class="na">title</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Dune</span><span class="nv"> </span><span class="s">Messiah"</span> <span class="na">author</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Frank</span><span class="nv"> </span><span class="s">Herbert"</span> <span class="na">cover</span><span class="pi">:</span> <span class="s2">"</span><span class="s">/assets/img/books/dune-messiah.jpg"</span> <span class="na">start</span><span class="pi">:</span> <span class="s2">"</span><span class="s">2026-10-20"</span> <span class="na">end</span><span class="pi">:</span> <span class="s2">"</span><span class="s">2026-10-20"</span> <span class="na">progress</span><span class="pi">:</span> <span class="m">15</span> <span class="na">summary</span><span class="pi">:</span> <span class="s2">"</span><span class="s">a</span><span class="nv"> </span><span class="s">summary"</span> </code></pre></div></div> <p>Like AetherAnne, I also considered using some LLM tool to do this, it would have taken a single prompt and would probably work just fine, and few people would have judged me too harshly for it. But again, why not actually try and do it myself, and maybe <a href="https://tracydurnell.com/2026/09/26/learning-scripting-by-scraping-my-own-website/">learn something?</a></p> <p>First I had to figure out how to read a yaml file with bash. I could have done some stuff with the usual <code class="language-plaintext highlighter-rouge">echo</code> and <code class="language-plaintext highlighter-rouge">cut</code> or <code class="language-plaintext highlighter-rouge">awk</code>, but I looked it up and discovered that <code class="language-plaintext highlighter-rouge">yq</code> would do the trick rather cleanly. This only took some basic online research!</p> <p><em>I probably could have done an equivalent function but again, not the point</em></p> <p>Afterwards I needed to remember how to do a for loop in bash. Thankfully I found <a href="https://www.w3schools.com/bash/bash_loops.php">this tutorial from W3Schools</a></p> <p>So I tried this little script to see if I got the logic right:</p> <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">title</span><span class="o">=</span><span class="si">$(</span>yq <span class="s1">'.[].title'</span> books.yml<span class="si">)</span> <span class="k">for </span>i <span class="k">in</span> <span class="nv">$title</span><span class="p">;</span> <span class="k">do </span><span class="nb">echo</span> <span class="nv">$i</span> <span class="k">done</span> </code></pre></div></div> <p><em>…It didn’t work.</em></p> <p>The output ended up looking like this:</p> <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>"Dune Messiah" "The Left Hand of Darkness" </code></pre></div></div> <p>I guess it was taking the whole string of characters and… not doing what I wanted!</p> <p>But hey, that’s how coding works, the computer is doing as it is told, I am the one who misunderstands here.</p> <p>I figured I would do a bit of a cheat code after seeing the examples in the article I linked, and use a range for the loop to go through. I knew I had a total of 57 books logged, so I did the obvious from there.</p> <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">for </span>i <span class="k">in</span> <span class="o">{</span>0..56<span class="o">}</span><span class="p">;</span> <span class="k">do </span><span class="nv">title</span><span class="o">=</span><span class="si">$(</span>yq <span class="s1">'.['</span><span class="nv">$i</span><span class="s1">'].title'</span> books.yml<span class="si">)</span> <span class="nb">echo</span> <span class="nv">$title</span> <span class="k">done</span> </code></pre></div></div> <p>This worked as expected! Now the output was:</p> <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>"Dune Messiah" "The Left Hand of Darkness" </code></pre></div></div> <p>It was a bit slow but I didn’t mind one bit. Some smarter people would do a line count to see how many files there are and such, but hey, this works.</p> <p>Since I got the main thing going, I revisited some of my older scripts where I do some similar stuff and applied it.</p> <p>I needed to figure out how to make a filename. This wasn’t different from what I already do to generate my permalinks from the title of my posts. Excuse the ugly variable:</p> <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">filen</span><span class="o">=</span><span class="si">$(</span><span class="nb">echo</span> <span class="nv">$title</span> | <span class="nb">tr</span> <span class="s2">" ,.!"</span> <span class="s2">"-"</span>| <span class="nb">awk</span> <span class="s1">'{print tolower($0)}'</span><span class="si">)</span> </code></pre></div></div> <p>Check my article about <a href="/blog/rofi-automated-blog/">my rofi script to generate my posts</a> in case you are curious about that.</p> <p>In any case, now everything is done. Here is the whole script:</p> <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">for </span>i <span class="k">in</span> <span class="o">{</span>0..56<span class="o">}</span><span class="p">;</span> <span class="k">do </span><span class="nv">title</span><span class="o">=</span><span class="si">$(</span>yq <span class="s1">'.['</span><span class="nv">$i</span><span class="s1">'].title'</span> books.yml<span class="si">)</span> <span class="nv">filen</span><span class="o">=</span><span class="si">$(</span><span class="nb">echo</span> <span class="nv">$title</span> | <span class="nb">tr</span> <span class="s2">" ,.!"</span> <span class="s2">"-"</span>| <span class="nb">awk</span> <span class="s1">'{print tolower($0)}'</span><span class="si">)</span> <span class="nv">author</span><span class="o">=</span><span class="si">$(</span>yq <span class="s1">'.['</span><span class="nv">$i</span><span class="s1">'].author'</span> books.yml<span class="si">)</span> <span class="nv">cover</span><span class="o">=</span><span class="si">$(</span>yq <span class="s1">'.['</span><span class="nv">$i</span><span class="s1">'].cover'</span> books.yml<span class="si">)</span> <span class="nv">start</span><span class="o">=</span><span class="si">$(</span>yq <span class="s1">'.['</span><span class="nv">$i</span><span class="s1">'].start'</span> books.yml<span class="si">)</span> <span class="nv">ending</span><span class="o">=</span><span class="si">$(</span>yq <span class="s1">'.['</span><span class="nv">$i</span><span class="s1">'].end'</span> books.yml<span class="si">)</span> <span class="nv">desc</span><span class="o">=</span><span class="si">$(</span>yq <span class="s1">'.['</span><span class="nv">$i</span><span class="s1">'].summary'</span> books.yml<span class="si">)</span> <span class="nb">echo</span> <span class="nv">$filen</span>.md <span class="nb">echo</span> <span class="nt">-e</span> <span class="s2">"---</span><span class="se">\n</span><span class="s2">layout: book</span><span class="se">\n</span><span class="s2">title: </span><span class="nv">$title</span><span class="se">\n</span><span class="s2">author: </span><span class="nv">$author</span><span class="se">\n</span><span class="s2">cover: </span><span class="nv">$cover</span><span class="se">\n</span><span class="s2">start: </span><span class="nv">$start</span><span class="se">\n</span><span class="s2">end: </span><span class="nv">$ending</span><span class="se">\n</span><span class="s2">description: </span><span class="nv">$desc</span><span class="se">\n</span><span class="s2">---"</span> <span class="o">>></span> ./test/<span class="nv">$filen</span>.md <span class="k">done</span> </code></pre></div></div> <p>This is not a script that will work with any format or for any edgecases, in fact, it doesn’t even do things as I expected: all the filenames ended up as <code class="language-plaintext highlighter-rouge">"name-of-book".md</code></p> <p>So those extra quote marks were rather ugly, but by this point I just used the built-in <a href="https://docs.xfce.org/xfce/thunar/bulk-renamer/start">Bulk Rename</a> tool in Thunar file manager and called it a day.</p> <p>It is my script, it got me where I needed, and I worked from there. I created the <code class="language-plaintext highlighter-rouge">_books</code> folder in my website root directory, I did a super quick modification to the liquid syntax to generate my booklog, enabled the <code class="language-plaintext highlighter-rouge">"books"</code> collection on <code class="language-plaintext highlighter-rouge">_config.yml</code>, and called it a day.</p> <p>Now I kind of have to do this with my videogames…</p> <p>This is day 56 of <a href="https://100daystooffload.com">#100DaysToOffload</a></p> <p> <a href="mailto:me@joelchrono.xyz?subject=Converting YAML to Jekyll collection">Reply to this post via email</a> | <a href="https://fosstodon.org/@joel/117482668130598307">Reply on Fediverse</a> </p> Walking - James' Coffee Blog https://jamesg.blog/2026/10/22/walking 2026-10-22T00:00:00.000Z James' Coffee Blog <p><em>I stopped in awe.</em></p> <p>Looking up, I saw a tall tree whose base was yellow and top was red, with all of its leaves glistening in the golden sun that made its way through the clouds we have seen in recent days. An adjacent tree had a combination of green leaves and barren branches, prompting me to wonder why. <em>These are two different types of trees.</em> I know not their names, but all trees are beautiful.</p> <p>The path was full of colour. I took a deep breath of the cold air. Was I also trying to breathe in the colour of the day, and the energy that brought the trees to life today? Filling my lungs and propelling my walk, the air blew away difficult thoughts and opened my mind to new ones: falling leaves danced through the sky, contributing to the bed of colour that I like to imagine keeps the grasses warm as they adjust to the cooler weather.</p> <p>An idle thought occupies my mind for a moment. <em>The present is a theme and a focus of my work.</em> I like looking to the world each day and writing what I see; what I feel with the passing moments.</p> <p><em>What if leaves were stars, flickering in the light of day?</em> From where I stand – from where I walk – the trees are high in the sky, their leaves twinkling as they move with the wind and catch the light of the day. I think about how the way I look at trees is similar to how I look at architecture. I look up, in awe. With time I have come to realise that everything I see in the world has many dimensions to appreciate.</p> <p><em>If the leaves were stars, we would be walking perpetually among stars. Who would we be? The sun, radiating warm energy? The moon, casting a cool calm glow? Jupiter? I like to think I’d be myself.</em></p> <p>Every season has its own sounds, and its own textures. I trawl through crispy leaves to hear the crunch, a sound that is made possible by Autumn. My attention turned to the ground, to all the colours. Then I looked up again and saw a hill that, yesterday I saw – and today, and every day, I see – in a new way.</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:'a4e85e877c94de7e',t:'MTc5MjY3MDcxNg=='};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>