Shellsharks Blogroll - BlogFlockhttps://blogflock.com/list/xJ8yq2026-11-03T20:45:00.000ZBlogFlockshellsharksLive concert, vacation, Ghibli films - W44 - Joel's Log Fileshttps://joelchrono.xyz/blog/w442026-11-03T20:45:00.000Zjoelchrono<p>I basically took a whole week off, thus my weeknotes are late as well. I was behind on my Monthly Summary and this had to wait for a little longer. Nothing too bad though.</p>
<p>This week was jam-packed with stuff, lots of updates on things that happened, stuff I bought, places I went to, and food I ate, from October 27 to November 2, 2026!</p>
<ul>
<li>
<p>🛬 <a href="/blog/flight-log/">I flew on an airplane!</a> It was my first trip in about five (maybe eight) years, and well, even though the trip was only about an hour long, it was still a pretty cool experience to have after such a long time. It is also the first trip I took by myself, given previous trips were with family or friends.</p>
</li>
<li>
<p>🚘 My trip was to Monterrey! One of the biggest cities in Mexico with over five million people. I think the one thing I realized as an adult compared to my childhood there is the amount of time you spend just <em>stuck in traffic</em> in big cities. Taking like an hour just to go to some place nearby is kind of a pain. Thankfully it’s not the only thing we did there.</p>
</li>
<li>
<p>🌮 Tried all sorts of food that’s common there and that I had missed lately. One of my favorites is the <em>tostada siberiana</em>, as well as <em>gorditas</em>, <em>tacos de barbacoa</em>, <em>tortas</em> and <em>machaca con huevo</em>. I also tried a coffee shop called <em>Tim Horton</em> which seems to be more popular than Starbucks here, interesting stuff!—there’s none where I live.</p>
</li>
<li>
<p>📚 There were a couple of book purchases this time around. On the digital realM—via Kobo store—I acquired the <em>Star Wars Trilogy</em> novelizations, <em>Recursion</em> by Blake Crouch, <em>The Great Divorce</em> by C.S. Lewis, and <em>Making it So</em> by Patrick Stewart. In the physical realm, I picked <em>The Three Body Problem</em> by Cixin Liu from my sibling, as well as acquiring <em>The Pilgrim’s Progress</em> by John Bunyan and <em>The Screwtape Letters</em> by C.S. Lewis from a local library in Monterrey.</p>
</li>
<li>
<p>🎲 Also bought a cool Rubik’s cube—if a little expensive—that is actually squishy! That’s the only reason I got it. It actually turns! although it’s an absolute pain to do so, just a nice trinket to have as a cubing enthusiast.</p>
</li>
<li>
<p>📻 The whole trip I stayed with family friends who I’ve known for decades (they are pretty much aunt and uncle to me). It was pretty cozy. My uncle showed me a whole collection of old coins from all over the country, all over the US, and all over the world. As well as some old tech gadgets and things around his home. I had seen a lot of this during my younger years, but I never really saw the appeal of it at the time. It was nice to find new appreciation for it all.</p>
</li>
<li>
<p>🎙️ One of the most interesting gadgets was a portable voice recorder, which used micro-cassettes and AA batteries! It still worked just fine and I managed to store my voice on it. My voice stored in physical format! Pretty cool stuff I have to say.</p>
</li>
<li>
<p>🎶 Went to my first concert! It was a live peformance of the album <em>Eterno</em> (Eternal), featuring Marco Barrientos, Marcos Witt and Marcos Vidal—three of the most influential singers of christian worship music in Spanish. It was all about the evolution of worship from old hymns, choruses, and contemporary songs. The music was amazing, hymns that are centuries old, songs that I’ve heard for decades, some I’ve never listened to before. All along classical instruments beautifully performed, and modern ones later too. It was a wonderful experience for me, I ran out of breath singing along!</p>
</li>
<li>
<p>👨✈️ On my flight back home, it looks like they had oversold tickets, and I was going to have to book another flight. I was already calling people to pick me up when support let me know that someone had canceled their seats, which means I was able to get back home as planned!</p>
</li>
<li>
<p>🛞 Some friends picked me up from the airport, and on our way back home one of the tires flattened. Unfortunately, the car jack also gave out and we had to wait for some help to come. Thankfully a taxi showed up which let us borrow their car jack and we managed to continue the ride without issue. Quite the way to get home!</p>
</li>
</ul>
<figure>
<img src="/assets/img/blogs/2026-11-03-week.webp" />
<figcaption>A collage of pretty much all I mentioned, the concert, the flight, an old Motorola phone, snacks, food, screen caps, and more!</figcaption>
</figure>
<h2 id="watching">Watching</h2>
<p>🐛🛩️ <strong>Nausicaa of the Valley of the Wind</strong> - WOW WOW WOW. I watched this film on a whim, after hearing so much about it. All I knew is that it was often compared to <em>Dune</em> and NOTHING MORE. I am extremely happy that I went fully blind and ready to be amazed for this one because AMAZE ME IT DID. This movie has it all. Some extremely awesome sci-fi concepts, some fantastic artwork, an incredible soundtrack, a really captivating story, and a beautiful message as well. Give it a go please.</p>
<p>☁️🏰 <strong>Castle in the Sky</strong> - WOW WOW WOW. I had to keep going on my Ghibli journey and decided to check this. The only thing I knew about it was the name of the floating city is “Laputa”, which is a pretty bad word in Spanish. Other than that I was AMAZED BY THE WHOLE THING AGAIN. I was NOT expecting the direction this wonderful thing took. It really reminded me of <em>Breath of The Wild</em> (and definitely <em>Tears of the Kingdom</em> although I haven’t played it myself yet) and it was so wonderful. Watch Ghibli movies.</p>
<p>💀📓 <strong>Death Note</strong> - Episodes 7-31. I continued my journey through anime-land by returning and binge-watching some more <em>Death Note</em>. I got through pretty much the whole thing now. Only the last few chapters remain. I definitely feel how the later episodes got a little convoluted and messy compared to the first 25 or so. Nonetheless, I am here for the ride wherever it leads (I already know the manga but I still enjoy the drama that the voice acting and the soundtrack brings).</p>
<h2 id="reading">Reading</h2>
<p>🌌🪱 <strong>Dune Messiah</strong> - Well this book was pretty much already complete last week, I simply went through the last few chapters in half an hour or so, and yeah, that was some crazy stuff that unfolded all of a sudden, ending in the only way it could end. I really enjoyed the build-up and the writing and dialogue, as weird and challenging as it was, it kind of just felt right, I don’t know, but good book!</p>
<h2 id="gaming">Gaming</h2>
<p>🏰🦇 <strong>Castlevania: Symphony of the Night</strong> - I gave this a pretty good run while waiting at the airport and played it on and off during my vacation. This game is fantastic so far! Although it definitely has some aspects that you simply have to accept as what they are for the time. I have gotten plenty of unlockables and power-ups and discovered plenty of cool places. I’ve met some interesting characters with kinda whacky dialogue (and voice acting) and managed to get the Bat power-up at last. There are many secrets in this castle!</p>
<p>🗡🎲️ <strong>Slice & Dice</strong> - There was this very unexpected and huge update to this game that added HUNDREDS of new characters, power-ups, enemies and mechanics. Basically mods made by the community that were added to the base game by the developer. This has been absolutely incredible to see and it makes an already huge roguelike even more chaotic and fun. I am looking forward to doing some more runs of this gem.</p>
<h2 id="around-the-web">Around the Web</h2>
<p>I pretty much went offline on my blog reading during all of the week. I could be looking for something to share today but I’d rather not pretend like I read any blogposts. I did watch some YouTube videos though so you can check these:</p>
<ul>
<li>
<p><a href="https://youtu.be/YQDdj01QPi4">Gunnm - Battle Angel Alita - Motorball CGI 3D VFX Short 銃夢</a> - A CGI short film from the year 2000 featuring Alita doing some sick moves. Only three minutes of PS1-style FMV graphics!</p>
</li>
<li>
<p><a href="https://youtu.be/9t2fV52jMA8">Running Minecraft Until It Beats Itself</a> - This was a wild video to watch and I really had fun seeing how everything happened on it. Billions of years of simulation, this is what the internet is all about!</p>
</li>
<li>
<p><a href="https://youtu.be/XrZ4Vozni3o">They sold us a lie (and it’s still working)</a> - Putting the blame on climate change on the people rather than corporations and lack of policies, evil stuff!</p>
</li>
<li>
<p><a href="https://youtu.be/YwmJTP5X1c0">How are people reading so many books?</a> - I was feeling self-conscious about how I feel happy to have read three books in a month when some people seem to read dozens, but I feel ok now.</p>
</li>
</ul>
<p>This is day 62 of <a href="https://100daystooffload.com">#100DaysToOffload</a></p>
<p>
<a href="mailto:me@joelchrono.xyz?subject=Live concert, vacation, Ghibli films - W44">Reply to this post via email</a> |
<a href="https://fosstodon.org/@joel/117554697829354377">Reply on Fediverse</a>
</p>Just a little AI resistance, as a treat - Terence Eden’s Bloghttps://shkspr.mobi/blog/?p=735362026-11-03T12:34:31.000ZTerence Eden’s Blog<p>At the recent EMFCamp, I bumped in to <a href="https://www.kcl.ac.uk/people/kate-devlin">Professor Kate Devlin</a> who was talking a little about the <a href="https://airesistlist.org/">AI Resist List</a>. I think one of the useful things we can do is loudly complain about shitty uses of AI. Here's an example.</p>
<p>As mentioned in a previous post, I'm <a href="https://shkspr.mobi/blog/2026/07/google-calendar-unable-to-launch-event-caused-by-missing-dtstamp/">contacting companies which send malformed calendar invites</a>. One of the organisation I contacted was the British online supermarket Ocado. They don't have an easy way to contact their technical team, and no obvious paths to raise a bug report, so I filled in their usual customer service feedback form. I included a clear statement of the problem and a detailed technical analysis of why I thought it was a problem with their service.</p>
<p>After sending in my message, I received this back from "Lulu" at Ocado:</p>
<blockquote><p>Thanks for getting in touch and sharing this feedback about our calendar files.</p>
<p>You're entirely right—having a technical glitch pop up when you're trying to organise your delivery is a real pain, so I've made sure to pass your feedback on to our technical and webshop team.</p>
<p>We really appreciate you taking the time to help us improve our service. I hope you have a wonderful rest of your day</p></blockquote>
<p>I mean, that's AI right? It starts with the classic tell of a <a href="https://github.com/anthropics/claude-code/issues/3382">sycophantic agreement</a>.</p>
<p>Next up is the em-dash. <a href="https://www.nytimes.com/2026/06/10/books/review/em-dash-chatbot-human-language.html">Beloved by chatbots</a> but almost unheard of in British English style guides.</p>
<p>Finally (and this is hard to quantify) it just doesn't <em>feel</em> like a customer service response. They're usually poorly spelled, have dodgy grammar, and ask a bunch of irrelevant questions. The message gave me no confidence that anyone had looked at the problem and I doubted it had been passed on to a technically competent human.</p>
<p>I immediately got a customer satisfaction survey. Usually I give top marks to humans because, even though <a href="https://shkspr.mobi/blog/2024/01/whats-the-incentive-to-tell-the-truth-on-surveys/">Net Promoter Score is bullshit</a>, I don't want customer service agents to suffer the indignity of a bad review. But in this survey I vented my spleen - giving crappy 1 ⭐ scores on every metric and complaining vociferously about how <em>rude</em> it is to use an AI to deal with a genuine complaint.</p>
<p>I was both surprised and delighted to receive this back a few days after my invective was sent:</p>
<blockquote><p>I saw your survey comment about getting a robotic, AI-generated response previously, and I wanted to reach out personally to apologise. There is nothing more frustrating than pointing out a legitimate bug only to feel like you're talking to a brick wall. I promise you there is a real person typing this out!</p>
<p>Second, I wanted to send a massive thank you for the incredibly detailed diagnostic. It is rare to get feedback that tells us <em>exactly</em> what is broken and how to fix it.</p>
<p>I can assure you that this has been passed to our team to look into. Your feedback is going to make things much smoother for a lot of people, and we really appreciate you taking the extra time to help us get it right.</p>
<p>Thank you again, I do hope that this issue is resolved quickly. If there is anything else I can help with in the meantime, please don't hesitate to get in touch.</p></blockquote>
<p>Perhaps I'm being touchingly naïve, but that <em>feels</em> a lot more human, right? The grammar isn't perfect, the sentences are a bit more rambly, and it appears to have actually engaged with the contents of my message.</p>
<p>I get that having a million irate customer service messages is a hassle. Using AI to triage them probably makes business sense, summarising the verbose ones could be useful for customer service agents, and totting up general themes is almost certainly a sensible way to gather metrics without overloading the workforce.</p>
<p>But using an AI to reply to a human is just disrespectful. It says the organisation values their customer's time at less than their own.</p>
<p>It's OK to call out shitty AI responses and insist that a human engages with you.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=73536&HTTP_REFERER=Atom" alt width="1" height="1" loading="eager">The cryptography behind electronic voting (and why paper ballots are still essential) - Trail of Bits Bloghttps://blog.trailofbits.com/2026/11/03/the-cryptography-behind-electronic-voting-and-why-paper-ballots-are-still-essential/2026-11-03T12:00:00.000ZTrail of Bits Blog<p>As millions of Americans vote in today’s U.S. midterms, most will use paper ballots, which are protected by strict chain-of-custody protocols and, in some cases, statistical audits. You may wonder why we still use paper for our elections and voting systems when tasks like banking, tax filing, and document signing have moved away from paper-based legacy systems and become fully electronic. The short answer: security.</p>
<p>That may come as a surprise to some. After all, cryptography and other security advancements have enabled secure electronic systems for many applications. In fact, cryptography can be used to provide two essential safeguards in elections: keeping (1) individual votes secret while (2) making the final tally independently verifiable. This is exactly the approach of cryptographic protocols like <a href="https://vote.heliosvoting.org/">Helios</a> and <a href="https://electionguard.vote/">ElectionGuard</a>. However, Helios intentionally targets lower-risk and lower-coercion settings rather than high-stakes public elections. ElectionGuard, by contrast, is intended for public elections, but not as a replacement for a paper-based system; it is used as a cryptographic layer integrated with traditional voting infrastructure.</p>
<p>In this blog post, we’ll explain how cryptographic techniques can help protect ballot secrecy and prevent manipulation in electronic voting systems, and explore the limitations of these systems. Although cryptography can strengthen election verifiability and have other strong security properties, it cannot fully replace the security and trust of existing paper ballot systems in general elections.</p>
<h2 id="the-challenges-of-electronic-voting">The challenges of electronic voting</h2>
<p>The National Academy of Sciences’ excellent <a href="https://www.nationalacademies.org/read/25120">2018 report</a> on election security concludes that electronic ballot return (also known as online voting or internet voting) <strong>should not be used in general elections</strong>, since <em>“no known technology guarantees the secrecy, security, and verifiability of a marked ballot transmitted over the Internet.”</em></p>
<p>The difficulty of this problem makes sense when you consider the strong security guarantees any election system requires:</p>
<ol>
<li>
<p>Voter privacy must be maintained, even if a voter has a financial incentive to disclose their vote to a third party.</p>
</li>
<li>
<p>Ballot integrity must be maintained. This becomes especially challenging in the electronic setting because, in general, the voter does not hold a cryptographic identity and cannot sign their ballot cryptographically. Oh, and the electronic voting client and server may be compromised anyway.</p>
</li>
<li>
<p>Voters shouldn’t be able to vote more than once, but this is hard to verify without associating votes with their voters. This becomes even more challenging electronically when, again, voters often lack a digital cryptographic identity.</p>
</li>
<li>
<p>Everyone should be able to trust (and ideally verify) that the election result correctly reflects the voters’ intent.</p>
</li>
</ol>
<p>Paper-based voting systems must solve these problems, too. The first three requirements are typically met through standard physical security measures you see in paper ballot election locations: voters identify themselves to polling workers (preventing multiple votes from one person), are given a ballot without their name on it and a secure location to fill it in (protecting voter privacy), and personally hand their ballot to a polling worker and watch as their ballot is submitted for counting (ballot integrity). As with any security controls, there are threats that can compromise these protections; however, compromising them at a nationwide scale is extremely expensive, difficult, and noisy (i.e., detectable) to election observers, making these controls especially effective for large national elections. The final requirement is the most difficult to achieve for paper-based systems, and voters typically have to trust that election workers compute the final tallies honestly, and that chain-of-custody controls coupled with post-election audits would detect any attempt to compromise the election outcome. Cryptography can be used in conjunction with paper-based systems to help strengthen the trust in this final requirement, using what’s known as end-to-end verifiability, as we will explore later in the post.</p>
<p>Electronic systems introduce an existentially dangerous failure mode not present in modern, sensible paper-based systems: a supply-chain or 0-day vulnerability that can scale across many voting machines and jurisdictions could allow one person to single-handedly control and influence the outcome of an election (and, depending on the system and exact vulnerability, possibly while evading detection). In traditional paper-based systems, this risk is sharply constrained by independent physical records and physical security controls. It’s much more difficult for a single person to meaningfully change an election’s outcome while evading detection in this system.</p>
<p>Software security alone is not enough to secure electronic voting systems, though; the key design principle is not only to implement robust security controls but also to design your system so that all failures of those controls are detectable. This can’t be solved only using software whose correctness must be trusted. This property is known as <a href="https://en.wikipedia.org/wiki/Software_independence">software independence</a>: changes in the election outcome caused by changes or errors (or vulnerabilities) in voting software must be detectable. In practice, this is typically achieved using evidence that can be verified independently of the voting software, such as a paper ballot audit trail.</p>
<h2 id="inside-the-design-and-cryptographic-safeguards-of-electronic-voting-systems">Inside the design and cryptographic safeguards of electronic voting systems</h2>
<p>Now that we’ve introduced the challenges of electronic voting, let’s explore how modern system designs aim to address them. We will focus our discussion on two electronic voting systems in particular: Helios and ElectionGuard. Helios is a complete voting protocol that targets low-stakes elections where coercion is not a concern. Famously, it is used by the International Association for Cryptologic Research to <a href="https://iacr.org/elections/">elect its board of directors</a>. ElectionGuard aims to provide end-to-end verifiability on top of existing election infrastructure, and has been tested alongside systems based on paper ballots in <a href="https://electionguard.vote/elections/College_Park_Maryland_2023/">College Park Maryland</a>, <a href="https://electionguard.vote/elections/Preston_Idaho_2022/">Preston Idaho</a>, and <a href="https://electionguard.vote/elections/Fulton_Wisconsin_2020/">Fulton Wisconsin</a>. Let’s look at how these systems use cryptography to provide voter privacy, ballot integrity, and end-to-end verifiability.</p>
<h3 id="protecting-voter-privacy">Protecting voter privacy</h3>
<p>Encryption is a natural choice to preserve voter privacy and ensure that cast votes cannot be read by anyone else: by having the voting client encrypt ballots before they are returned, we protect them from being read in transit. But who controls the key we encrypt to? If we encrypt ballots to a public key controlled by the backend server, it could just decrypt each ballot when it is received, which would immediately reveal how users voted. (Even if the ballot is sent anonymously, the backend would still know how users at a particular voting station voted; it would just not be able to associate individual ballots with the corresponding voters.)</p>
<p>One way of solving this problem is to threshold-share the keypair used for encryption, and split the private key between $N$ trusted election officials. This means that a predetermined quorum $t+1\ \leq N$ of the trustees have to be involved in order to decrypt ciphertexts. Using a homomorphic encryption scheme offers further protection for individual encrypted ballots: it allows the backend to compute an encrypted tally from the encrypted votes and only decrypt the final result. As long as $N-t$ election officials are honest, this protects the confidentiality of cast votes from the voting client to the inclusion in the final tally<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>.</p>
<table>
<thead>
<tr>
<th style="text-align: center">${{E}_{K}({x}_{1}+\ \ldots \ +{x}_{N})\ ={E}_{K}({x}_{1})\ \oplus \ \ldots \ \oplus {E}_{K}({x}_{N})}_{}$</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
<p><em>With homomorphic encryption, the server can compute the encryption of the sum of the individual votes ${x}_{i}$ as the sum of the encrypted votes ${E}_{K}({x}_{i})$.</em></p>
<p>Schemes like Helios and ElectionGuard use a version of exponential ElGamal to encrypt individual choices on the ballot<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup>. If the threshold-shared election key is $K\ =\ {g}^{k}$, the choice $x$ is encrypted as ${E}_{K}(x)\ =\ ({g}^{r},\ {K}^{r}{g}^{x})$, where $r$ is a random scalar. This scheme is additively homomorphic using pointwise multiplication of ciphertexts, as shown below.</p>
<table>
<thead>
<tr>
<th style="text-align: center">${E}_{K}(x)\ \oplus {E}_{K}(y)\ {=}_{}({g}^{r}{\cdot g}^{s},{K}^{r}{g}^{x}\cdot {K}^{s}{g}^{y})\ =\ ({g}^{r+s},\ {K}^{r+s}{g}^{x+y})={E}_{K}(x+y)$</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
<p><em>Exponential ElGamal is additively homomorphic if we define $\oplus$ as pointwise multiplication of ciphertexts.</em></p>
<p>Note that decryption yields ${g}^{x}$ rather than $x$, which is typically hard to invert. However, since $x$ is comparatively small in this case, we can use brute force (or tables) to recover the exponent.</p>
<p>As an example, if we use 0 to indicate <em>No</em> and 1 to indicate <em>Yes</em>, we can compute the number of <em>Yes</em>-votes by summing the individual encrypted votes as described above, and then decrypting the encrypted tally to reveal the result. However, if we don’t ensure that individual ciphertexts are well-formed, a compromised client could simply encrypt the value 1,000,000 to vote <em>Yes</em> a million times. To prevent this, clients must include a zero-knowledge proof ensuring that the encrypted ballot contains a permitted value (or a permitted combination of values).</p>
<h3 id="protecting-against-a-compromised-voting-client">Protecting against a compromised voting client</h3>
<p>What if the voting client is hacked and alters the voters’ choices before they are encrypted, or drops the ballot completely? To protect against client compromise, the voter needs a way to ensure that the backend received their ballot, and that the choices recorded and encrypted by the software client correspond to how they actually voted.</p>
<p>This can be achieved in different ways. Helios and ElectionGuard use a mechanism known as <em>Benaloh’s challenge method</em>. The underlying idea is that when the ballot is encrypted, the voter obtains a commitment to the encrypted ballot and is then allowed to challenge and spoil their ballot. If they do, the ballot is opened and the voter can verify that their choices were recorded correctly and that the commitment corresponds to the encrypted ballot. The device has to reveal the commitment to the voter before learning whether or not the voter wants to challenge the encrypted ballot. Otherwise, it could present a correct commitment only when it is challenged. Moreover, it must be possible to obtain some external validation that the committed ciphertext actually encrypts the voter’s intended choices. Otherwise, the voting client can simply lie and present a plaintext that doesn’t match the commitment.</p>
<p>When the voter is satisfied that the voting client records their choices honestly, they record their choices one last time and cast their ballot, which is then published to a public bulletin board. The voter can use their commitment to check that their encrypted ballot is included in the published election record.</p>
<p>While this protocol provides a method to detect a compromised voting client that tampers with the voter’s choices or drops ballots, it still requires that a significant portion of voters exercise the mechanism in order to ensure that compromised clients are detected with high-enough probability<sup id="fnref:3"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup>. Moreover, it does not protect against other types of compromise, like a voting client surreptitiously sending the voter’s plaintext ballot to a third-party server.</p>
<p>Additional issues must be solved in order for this method to be secure. One is the problem of voter authentication: how does the voting client ensure that the voter is eligible to vote, and how do we ensure that only one vote is cast? Additionally, there is the previously mentioned problem of coercion: how do we protect voters from being strong-armed into voting for a specific candidate or issue when voting stations may be spread out all over the world?</p>
<p>Authenticating voters is generally a difficult problem in countries (like the U.S.) that do not have a widely used national ID. However, there are options available for specific groups of voters. For example, some voting systems designed for overseas military voters use the Common Access Card to allow service members to identify themselves. Protecting voters against coercion typically requires that voters are able to vote without being supervised, which seems like a difficult problem to solve using cryptography.</p>
<h3 id="protecting-against-a-compromised-backend">Protecting against a compromised backend</h3>
<p>What if the backend server is faulty or compromised by an attacker? With encryption, the backend aggregates the encrypted votes into an election record, computes the encrypted final tally over the encrypted votes, and then lets election officials decrypt the result. Encryption protects voter privacy, but it doesn’t stop the server from dropping, altering, or injecting votes into the election record. How could we allow voters to verify that this did not happen?</p>
<p>If the election record is public (and we can ensure that everyone shares a consistent view of it), voters can verify that their encrypted vote is included in the record using their commitment to their encrypted ballot, as described above. This provides a mechanism to detect a compromised server which attempts to drop or alter votes. Again, we need to rely on active participation from many voters to ensure that a compromise is detected, since a voter can only detect if their individual ballot has been dropped or tampered with.</p>
<p>ElectionGuard extends this idea to allow voters to detect a change in any of the ballots cast before theirs by chaining ballot commitments generated on the same device. Without chaining, the commitment is essentially computed as a hash of the voter’s encrypted ballot. With chaining, ballot commitments are chained as follows:</p>
<table>
<thead>
<tr>
<th style="text-align: center">${c}_{1}=H({c}_{0}\ ,\ {B}_{1})$ ${c}_{2}=H({c}_{1}\ ,\ {B}_{2})$ ${c}_{3}=H({c}_{2\ },\ {B}_{3})$ $\vdots$</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
<p><em>When ballot commitments are computed as a chain, the hash chain is published together with the election record. Here,</em> ${B}_{i}$ <em>is voter $i$’s encrypted ballot.</em></p>
<p>This means that any changes are propagated forward, allowing voters to detect tampering with earlier votes cast using the same voting client.</p>
<p>Detecting a compromised server that injects additional votes is more difficult and usually requires external data, like voter participation records, to solve. It is not enough to associate encrypted ballots with voter identities, since a malicious server could pad the election record with ballots corresponding to abstaining voters.</p>
<p>Once the election record is trusted, it is possible to use zero-knowledge proofs to verify that the final result is computed correctly from the published election record. Since anyone can compute the encrypted tally from the election record, we only need to prove that the final aggregate ciphertext was decrypted correctly.</p>
<h3 id="what-cryptography-solves-that-paper-ballots-cant-do-alone-end-to-end-verifiability">What cryptography solves that paper ballots can’t do alone: end-to-end verifiability</h3>
<p>Recall our fourth requirement for election systems, which we admitted was most difficult to achieve for paper-based systems: Everyone should be able to trust (and ideally verify) that the election result correctly reflects the voters’ intent.</p>
<p>This requirement is usually formalized in terms of <em>end-to-end verifiability</em>, which means that the following should be possible:</p>
<ol>
<li>Each voter should be able to verify that their choices have been correctly recorded.</li>
<li><em>Anyone</em> should be able to verify that the final tally is computed correctly from the election record.</li>
</ol>
<p>Taken together, these two mechanisms allow voters to independently verify that their vote contributed to the election outcome, without relying on a particular piece of software or hardware (which may be hacked), or external observers (who may not be trustworthy). This property isn’t achievable in exclusively paper-based election systems without introducing some level of trust in humans/institutions overseeing the election. For example, without trusting anyone, how do you know what happens to your paper ballot after you and your vote both leave the voting location? The reason you won’t know this in an exclusively paper-based system is simple: in order to protect vote secrecy, when you submit your ballot to be counted with the other ballots, you intentionally break the link between your identity and your ballot.</p>
<p>Well, using cryptography, you can introduce a mechanism to verify that a cryptographic representation of your vote was included in the election record while still preserving voter privacy! This mechanism is exactly what was described above: encrypt the ballots and publish them to a public bulletin so that voters can privately check that their vote was both included and not tampered with. This allows you to enhance trust in existing paper-based election systems without compromising their security properties. This is the exact design choice behind ElectionGuard.</p>
<h2 id="we-wont-be-replacing-paper-ballots-any-time-soon">We won’t be replacing paper ballots any time soon</h2>
<p>Helios and ElectionGuard both build on the ideas outlined above, but their use cases differ. Helios explicitly targets settings with low coercion risk and advises against use in high-stakes public elections. ElectionGuard, on the other hand, is built to provide end-to-end verifiability on top of an existing paper-based voting system. Neither protocol makes a general claim to solve the problem of electronic voting because neither achieves the security of status quo paper-based systems purely electronically.</p>
<p>There is widespread agreement among experts on election security that paper ballots are essential for protecting the security and integrity of general elections, and that likely will not change anytime soon. However, cryptographic techniques like the ones described in this post can still be used alongside paper ballots to improve trust in the election outcome by improving the result’s public verifiability and auditability.</p>
<p>If you’re using cryptography to build a new voting system, please <a href="https://trailofbits.com/contact/">reach out</a>. We want to hear about it!</p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>A higher threshold is not always better. Helios requiring all trustees to participate to decrypt the election result caused the IACR to have to rerun their 2025 election after it found that one of the trustees had <a href="https://www.iacr.org/news/item/27138">inadvertently lost their share of the key</a>. <a href="#fnref:1" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
<li id="fn:2">
<p>Helios and ElectionGuard differ slightly in how they implement encryption. Here, we describe the method used in Helios since it’s closer to standard ElGamal. <a href="#fnref:2" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
<li id="fn:3">
<p>As an example, if a compromised voting client tampers with 1000 votes, and voters challenge one encrypted vote in one hundred on average, the probability of the attack remaining undetected would be 0.991000 ≈ 4.3 ∙10-5. However, it is also important to consider what recourse a voter has if tampering is detected. This determines whether they are apt to raise concerns, or simply shrug their shoulders and try again. <a href="#fnref:3" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
</ol>
</div>What there is to see - James' Coffee Bloghttps://jamesg.blog/2026/11/03/what-there-is-to-see2026-11-03T00:00:00.000ZJames' Coffee Blog
<p>A browning leaf fell from the tree with grace<br/>
“I had no idea leaves could be so tiny.”<br/>
A large yellow leaf fell into my embrace<br/>
“This is my dream – ever colourful and shiny.”<br/></p>
<p>Stacks of leaves lie at the feet of their past<br/>
Layers of reds and yellows – veins of time<br/>
Ever maturing with life ever vast<br/>
From sunrise to evenfall – may Day shine.<br/></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:'a54e6ee20fd7fc73',t:'MTc5Mzc0MDkzMw=='};var l=window.parent.location,o;try{o=new URL(l.origin).origin}catch(e){try{o=new URL(new URL(l.href).origin).origin}catch(e){o=''}}var u='/cdn-cgi/challenge-platform/scripts/jsd/main.js?ray=a54e6ee20fd7fc73',a=document.createElement('script');a.src=o?new URL(u,o).href:u;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>
Chatbot election answers are dominated by one right-wing dude and an army of AI slop. - Werd I/O6ae8fa3296b83f000160c1022026-11-02T21:01:38.000ZWerd I/O<p>Link: <a href="https://www.washingtonpost.com/technology/2026/10/30/how-an-obscure-website-became-force-americas-election-information-machine/"><em>How an obscure website became a force in America’s election information machine, by Ian Duncan and Kevin Schaul in the Washington Post</em></a></p><p>There hasn’t been enough discussion about the proliferation of reference sites that are built not for humans but to influence chatbot answers. Take <a href="https://theballotbrief.com/">the Ballot Brief</a>, which was designed to influence questions about the election:</p><blockquote>“In tests by The Washington Post, ChatGPT cited the Ballot Brief in 22 percent of its answers to questions about the election. Microsoft’s Copilot cited it in 75 percent of answers. […] Anthropic’s Claude initially turned to established voter guides run by nonprofits — but started frequently linking to the Ballot Brief in The Post’s second round of tests.”</blockquote><p>The Ballot Brief is, in itself, built using AI, with one guy — Ben Torres Ezrick — in control. Here in the US, <a href="https://www.pewresearch.org/internet/2026/06/17/americans-and-ai-2026-chatbots-smart-devices-and-views-on-impact/">42% of adults use AI to ask questions</a>, including about the election. That gives Torres Ezrick outsize influence on information people receive that may influence how they use their vote. Given that Torres Ezrick’s most recent position was Chief Marketing Officer at the far-right video streaming service Rumble, that should probably give us some pause.</p><p>And even without that potential rightward skew, the Ballot Brief consists of a bunch of content created at scale using AI with little oversight. So inevitably, there are mistakes:</p><blockquote>“The Post identified numerous mistakes on the Ballot Brief. Sen. Jon Husted (R-Ohio) was credited with supporting a bill that passed before he took office — an error that Copilot repeated in a response to The Post. Two Robert Garcias running in California were collapsed into one profile. And several House members were listed with incorrect committee jobs.”</blockquote><p>The web has already been insufferable for years because of SEO; this has only gotten worse with the rise of AI-generated marketing content. Now it stands to become a battleground as various entrenched interests fight to have their perspectives represented in chatbot results.</p><p>Should newsrooms counteract this with their own set of open, validated information? Or is it an unwinnable arms race that is bound to be dominated by moneyed interests? I’m not sure. But the web is certainly no longer just a place for humans to publish and be heard.</p>Lorem Ipsum Dot Gov Dot UK - Terence Eden’s Bloghttps://shkspr.mobi/blog/?p=759392026-11-02T12:34:00.000ZTerence Eden’s Blog<p>I love testing in production. The thrill of accidentally publishing some dummy data - or taking down an entire website - is similar to skydiving without a parachute. Exquisite excitement followed by heart-stopping terror.</p>
<p>Before going live with a new website or service, it's sensible to test how text looks on it. Most people don't test with <em>readable</em> text - it's too easy for management to start reading the content rather than looking at the layout. So the default is <a href="https://www.lipsum.com/">the Latin text "Lorem ipsum"</a>. Latin looks enough like English to get a feel for how text will render - but most people can't read it so they gloss over the words and look at the layout.</p>
<p>Say, it sure would be annoying if those dummy pages ever made their way to production, right?!?</p>
<!--
👋👋👋👋👋👋👋👋👋
You're now a member of Comment Club! This content is only available to the groovy gang who read HTML comments.
I'm pretty sure I once wrote a variant of this blog post, but I can't find it now. Perhaps I wrote something internal when I worked for the UK Government? Either way, I hope you have fun searching for placeholder text on *your* Government's website 🤣
As is custom, we now recite the three rules of Comment Club…
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 future blog posts 😃
TTFN.
-->
<p><a href="https://blogs.fcdo.gov.uk/lorem-ipsum-dolor-sit-amet-5/"><img src="https://shkspr.mobi/blog/wp-content/uploads/2026/11/lorem-ipsum-dolor-sit-amet-5-–-Foreign-Commonwealth-Development-Office-Blogs.webp" alt="FCDO blog post with dummy text." width="1178" height="954" class="aligncenter"></a></p>
<p>One of the things that's fascinating about seeing testing data in a live environment is that you get a small peek behind the curtain of how a site was made. A tiny glimpse into the minds of the people who made it.</p>
<p>Who was Alice? Did she enjoy her time working on the <a href="https://www.londoncouncils.gov.uk/test-page-example-all-components-do-not-delete">London Councils' website</a>?</p>
<p><a href="https://www.londoncouncils.gov.uk/test-page-example-all-components-do-not-delete"><img src="https://shkspr.mobi/blog/wp-content/uploads/2026/11/Test-Page-Example-of-all-components-DO-NOT-DELETE-London-Councils.webp" alt="Lorem ipsum text, and a link to "Alice Test Docx"." width="1177" height="973" class="aligncenter"></a></p>
<p>Was she friends with <a href="https://www.lambeth.gov.uk/henrys-test-subsite-overview">Henry at Lambeth council</a>? We may never know.</p>
<p>Some of the placeholders eventually become load-bearing. For reasons which remain inscrutable to those who follow, the Elders declared some pages must remain sacrosanct <em>forever!</em></p>
<p><a href="https://www.hta.gov.uk/news/news-do-not-delete"><img src="https://shkspr.mobi/blog/wp-content/uploads/2026/11/DO-NOT-DELETE.-Human-Tissue-Authority.webp" alt="A page of dummy text on the Human Tissue Authority website with the title "DO NOT DELETE"." width="1177" height="973" class="aligncenter"></a></p>
<p>What would happen if that page were deleted? Would you dare risk it?</p>
<p>Sometimes finding a test page leads to a dead end. A <a href="https://www.knutsfordtowncouncil.gov.uk/council-">stub of a page</a> which should have been purged before go-live.</p>
<p><a href="https://www.knutsfordtowncouncil.gov.uk/council-"><img src="https://shkspr.mobi/blog/wp-content/uploads/2026/11/Council-Knutsford-Town-Council.webp" alt="Knutsford town council page with dummy text." width="1177" height="973" class="aligncenter"></a></p>
<p>But other times it can lead us to a page hinting at something more. Deeper tests of long-forgotten functionality.</p>
<p><a href="https://customer.surreycc.gov.uk/article/824/Events"><img src="https://shkspr.mobi/blog/wp-content/uploads/2026/11/Events-Surrey-County-Council.webp" alt="Surrey Council events page with lorem text and links to attendee plugin pages. One link says aaaaaaaa." width="997" height="1345" class="aligncenter"></a></p>
<p>What did those plugins do? Aaaaaaaa indeed!</p>
<p>The purpose of this post isn't to point and laugh, it's to show that searching for dummy data is a good way to find interesting things. It might show you a style-guide, or lead to you to a forgotten and outdated plugin, or it might lead you to an <a href="https://pre.redirect.contractawardservice.gca.gov.uk/digital-outcomes/opportunities">entire pre-production environment</a>.</p>
<p><a href="https://pre.redirect.contractawardservice.gca.gov.uk/digital-outcomes/opportunities"><img src="https://shkspr.mobi/blog/wp-content/uploads/2026/11/preprod-gca.webp" alt="Digital Outcomes page with a large "pre prod" banner and dummy text. This is a composite image." width="1009" height="746" class="aligncenter"></a></p>
<p>Finally, this image was on one of the FCDO blog posts. I assume that means it is available under the <a href="https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/">Open Government Licence</a> and, therefore, <a href="https://www.redbubble.com/shop/ap/184149181?ref=studio-promote">I can start T-Shirt production immediately</a>!</p>
<p><a href="https://www.redbubble.com/shop/ap/184149181?ref=studio-promote"><img src="https://shkspr.mobi/blog/wp-content/uploads/2026/11/lorem-ipsum-dolor-sit-amet.webp" alt="The keep calm and carry on poster, but with the words Lorem Ipsum Dolor Sit Amet." width="600" height="700" class="aligncenter"></a></p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=75939&HTTP_REFERER=Atom" alt width="1" height="1" loading="eager">
St Jude Drawings Gallery
- Robb Knight • Posts • Atom Feedhttps://rknight.me/blog/st-jude-drawings-gallery/2026-11-02T12:28:00.000ZRobb Knight<p>Now it's been a month of so since the end of <a href="https://rknight.me/blog/st-jude-2026-recap/">St Jude September</a> I think enough time has passed that I think everyone's drawings should have arrived now so I can share them. It's hard to pick a favourite but here's a selection of them I wanted to highlight here because I enjoy them. I won't be including Jimothy because I included him in the last post, not because I don't love him.</p>
<figure><img src="https://cdn.rknight.me/site/2026/st-jude-drawings-collage.jpg" alt="A selection of drawings including a Snoopy, Pokemon, panda, some animals dabbing, and a sea snail" /></figure>
<p>I can't wait to do this again next year. I scanned all the drawings this year so I've put them all up on <a href="https://rknight.me/stjude/2026-gallery/">the 2026 gallery</a> for your perusal.</p>Backporting security fixes at scale with Codex - Trail of Bits Bloghttps://blog.trailofbits.com/2026/11/02/backporting-security-fixes-at-scale-with-codex/2026-11-02T12:00:00.000ZTrail of Bits Blog<p>Stable Linux releases lack existing security fixes because backporting them is time-consuming and often thankless work. We’re using Codex to reduce the backporting process time from days to hours per fix, empowering human patch reviewers to rapidly submit fixes for critical software like Ubuntu Long Term Support, Fedora, and the Linux kernel. By October 29, our project helped deliver fixes for <a href="https://trailofbits.github.io/ptp-linux-stable-cve-dashboard/">149 distinct CVEs</a> into stable Linux kernel releases, and <a href="https://bugzilla.redhat.com/show_bug.cgi?id=2520165">several</a> <a href="https://bugzilla.redhat.com/show_bug.cgi?id=2531860">fixes</a> to Fedora and Ubuntu packages.</p>
<p>Deploying fixes to older software requires multiple steps, including adapting fixes to older code, checking dependencies, and ensuring the fix did not introduce new bugs. A single task (like tracking down a bug in a bad commit) can take <a href="https://lkml.rescloud.iu.edu/hypermail/linux/kernel/2610.1/04212.html">a week or more</a> of effort that no one sees or appreciates.</p>
<p>Our Codex workflow has reduced the human effort required to prepare and review fixes. Excluding project-specific initial setup, preparing and reviewing a straightforward backport takes about 30 minutes of human attention; a more involved case can take around three hours. The workflow’s approach is twofold: agents perform activities like identifying missing fixes, adapting patches, assembling validation evidence, running tests, and preparing submission packets, while engineers review the patches and submit them to maintainers.</p>
<p>Those estimates only cover patch preparation and review; regression testing and maintainer acceptance remain essential. But the reduced human commitment makes a substantial class of neglected security work practical to undertake. The patch backlog is large, but we now have a practical way to work through it.</p>
<h2 id="do-we-have-to-decide-between-stability-and-security">Do we have to decide between stability and security?</h2>
<p>Software has bugs, and we try to fix them when we can. The first place the fix happens is in the latest version of the software. Unfortunately, that’s often the <em>only</em> place where the fix happens.</p>
<p>Backporting is the process of getting a fix from the latest source code to older versions. Fixes for big-name, critical bugs are indeed often backported quickly. But for many other bugs, the backporting process never happens. It is easy to understand why: software packaging is often done by volunteers who are already overworked, and backporting is frustrating, thankless work that gets little credit or publicity. For open source projects staffed by teams of volunteers, backports are (understandably) a low priority. As XFS developer Dave Chinner once described, this work is “<a href="https://lists.openwall.net/linux-kernel/2018/03/28/86">effectively a full time job</a>” that simply goes undone without sufficient resources.</p>
<p>The lack of backports is a problem because almost no one runs the latest and greatest version of software that’s been freshly built with today’s code changes. People <em>overwhelmingly</em> prefer slightly older, more tested software packaged in “long term stable” releases. For example, <a href="https://ubuntu.com/project/docs/release-team/ubuntu-releases/#lts-releases">about 95%</a> of Ubuntu Linux installations are of the Long Term Support (LTS) variety. When looking at installed Linux kernel packages from Debian’s <a href="https://popcon.debian.org/">popcon</a>, the overwhelming majority are based on older stable trees:</p>
<p>
<figure>
<img src="https://blog.trailofbits.com/2026/11/02/backporting-security-fixes-at-scale-with-codex/backporting_image1_hu_4b767af928294590.webp"
alt="“A Codex-generated graph of recently installed kernel packages from Debian’s popcon”"
width="1070"
height="834"
loading="lazy"
decoding="async" />
<figcaption>Figure 1: A Codex-generated graph of recently installed kernel packages from Debian’s popcon. The overwhelming majority (about 96%) are older, stable releases, and not the latest kernel series.</figcaption>
</figure>
</p>
<p>Users are faced with a decision: they can either stick with a stable, familiar version of software that has security flaws, or upgrade to a newer version that fixes those flaws but introduces other changes and new features they may not want.</p>
<p>Many people <em>purposely</em> do not update to new releases; I think this is entirely justified and normal end-user behavior. Just recently, I updated my Mac to macOS 27 and couldn’t use a printer that had worked flawlessly for years (until Codex wrote a new, compatible printer driver). Similar situations effectively require older software.</p>
<p>We should not have to make a choice between stability and security.</p>
<h2 id="thousands-of-known-cves-lack-stable-branch-fixes">Thousands of known CVEs lack stable-branch fixes</h2>
<p>A swarm of cyber-capable AI agents can cut through a network of stable, known-vulnerable software like a hot knife through butter. The scale of the problem is such that the software you are currently running likely contains unfixed security bugs that can be exploited by modern AI agents. As AI-assisted bug hunting makes it easier to identify vulnerabilities in older code, reducing this backlog becomes increasingly important. This is not merely theoretical. A fix for the latest high-profile bug, <a href="https://atlasum.net/blog/cve-2026-98432-linux-ipv4-tcp-uaf">CVE-2026-98432</a> (a critical remotely exploitable flaw in the Linux TCP stack), still had not landed in distribution kernels weeks after being patched upstream. That bug is high-profile enough that it will soon be fixed everywhere. But fixes for more obscure bugs never get backported. I saw this during my <a href="https://blog.trailofbits.com/2026/08/26/vms-wont-contain-cyber-capable-agents/">sandbox escape research</a>, and an old vulnerability in stable software was used as a part of the <a href="https://www.hacktron.ai/blog/hacking-openai">recently disclosed OpenAI hack</a>.</p>
<p>Let’s quantify the scale of the missing backport problem. To make counting simple, we can limit ourselves to known bugs (with assigned CVEs) that are patched in the latest release but missing from stable packages. For this example, we’ll look at the Linux kernel, Ubuntu 26.04 LTS and Debian 13 Stable. I’m not singling out those projects—they are all run very well! I’m using them because they have documentation and accounting for unfixed CVEs. Other projects lack this transparency.</p>
<p>Let’s look at the number of outstanding CVEs in the Linux kernel, by stable branch. The table below shows CVEs per supported stable branch that do not have a fix in that branch, but do have it in a newer branch. (Hence, older branches by definition have more unfixed CVEs.) The source is the <a href="https://kernel.googlesource.com/pub/scm/linux/security/vulns/">kernel CVE team’s vulns.git</a> as of September 18, 2026. This is not an exact bug count, as it both over- and under-counts due to several technicalities. It is also not a measure of exploitability. Rather, it’s a measuring stick showing that a substantial amount of known CVEs have not been fixed in stable kernel branches:</p>
<table>
<thead>
<tr>
<th style="text-align: center">Branch</th>
<th style="text-align: center">Unfixed CVEs</th>
<th style="text-align: center">% CVEs with an NVD Score</th>
<th style="text-align: center">High or Critical Severity</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: center">5.10.y</td>
<td style="text-align: center">2,006</td>
<td style="text-align: center">55.8%</td>
<td style="text-align: center">213 (19.0%)</td>
</tr>
<tr>
<td style="text-align: center">5.15.y</td>
<td style="text-align: center">1,889</td>
<td style="text-align: center">51.5%</td>
<td style="text-align: center">195 (20.0%)</td>
</tr>
<tr>
<td style="text-align: center">6.1.y</td>
<td style="text-align: center">1,329</td>
<td style="text-align: center">43.9%</td>
<td style="text-align: center">99 (17.0%)</td>
</tr>
<tr>
<td style="text-align: center">6.6.y</td>
<td style="text-align: center">1,012</td>
<td style="text-align: center">35.6%</td>
<td style="text-align: center">65 (18.1%)</td>
</tr>
<tr>
<td style="text-align: center">6.12.y</td>
<td style="text-align: center">686</td>
<td style="text-align: center">22.3%</td>
<td style="text-align: center">21 (13.7%)</td>
</tr>
<tr>
<td style="text-align: center">6.18.y</td>
<td style="text-align: center">337</td>
<td style="text-align: center">15.1%</td>
<td style="text-align: center">3 (5.9%)</td>
</tr>
</tbody>
</table>
<p>The package landscape is not any better. These are non-kernel CVEs reported as open or affected in Debian 13 and Ubuntu 26.04 (raw data via their <a href="https://security-tracker.debian.org/tracker/data/json">respective</a> <a href="https://github.com/canonical/ubuntu-security-notices">bulk</a> CVE data feeds, compiled by Codex). These are distro-metadata findings, not individually source-confirmed vulnerabilities. Again, this is not meant to be an exact bug count, but more of a measuring stick indicating how many unfixed vulnerabilities remain in stable software packages:</p>
<table>
<thead>
<tr>
<th style="text-align: center">Distribution</th>
<th style="text-align: center">Source Packages with Unfixed CVEs</th>
<th style="text-align: center">Unique CVEs</th>
<th style="text-align: center">High or Critical Severity</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: center">Debian 13</td>
<td style="text-align: center">1,128</td>
<td style="text-align: center">4,562</td>
<td style="text-align: center">1,822 (39.9%)</td>
</tr>
<tr>
<td style="text-align: center">Ubuntu 26.04</td>
<td style="text-align: center">1,028</td>
<td style="text-align: center">770</td>
<td style="text-align: center">335 (43.5%)</td>
</tr>
</tbody>
</table>
<h2 id="engineers-and-ai-can-accelerate-backporting">Engineers and AI can accelerate backporting</h2>
<p>We realized this was an issue and have been fixing it proactively. First, we started with the equivalent of finding money on the sidewalk: there are bug fixes to known CVEs that apply cleanly to the stable kernel trees, but the fix was just never pulled into the kernel. We used Codex with GPT-5.6 to find these fixes, and asked the maintainers to apply the existing patches. They did, graciously. We then moved on to backporting patches that don’t apply as-is, starting with the most trivial to validate and review, and are slowly moving towards more complex changes. So far 149 CVE fixes in stable trees are currently applied; <a href="https://trailofbits.github.io/ptp-linux-stable-cve-dashboard/">the list on our backport tracker just keeps growing</a>.</p>
<p>We’ve done the same for Linux distributions: we used Codex and GPT-5.6 to identify known vulnerabilities in shipping stable packages, and then backport and validate a fix. We have begun reaching out to Linux distributions with an initial batch of patches.</p>
<p>If you run an open-source project or a Linux distribution and would like help backporting security fixes, please apply at <a href="https://trailofbits.com/patch-the-planet">trailofbits.com/patch-the-planet</a> and we’ll be glad to assist.</p>
<p>The big upside of stable software that does not add features is that we can, in theory, fix bugs before attackers exploit them. So, let’s continue to patch the planet!</p>Rest of World tells vital stories about the impact of tech on the world. We may lose it anyway. - Werd I/O6ae7e81055c15e0001ad12772026-11-02T01:32:00.000ZWerd I/O<p>Link: <a href="https://www.semafor.com/article/10/25/2026/rest-of-world-faces-prospect-of-shutting-down"><em>Rest of World faces prospect of shutting down, by Max Tani in Semafor</em></a></p><p>I was distraught to hear that <a href="https://restofworld.org">Rest of World</a> may have to shut down in January. Since its launch, I’ve relied on its coverage about the impact of technology and the tech industry on communities and geographies that often fall outside of a Western lens. And I’ve become a huge fan of its Chief Product Officer <a href="https://donohoe.dev/">Michael Donohoe</a>, who I think is one of the best product and engineering people working in journalism (or in any industry). Working with a small team, he’s built a site and underlying tech that punches way above its weight.</p><p>On one level, the forces that have created issues for Rest of World aren’t unique to it: declining search and social referrals, intermediation by AI chatbots, and a fixation with the Trump administration at the expense of other topics.</p><p>But then, <a href="https://www.semafor.com/article/10/25/2026/rest-of-world-faces-prospect-of-shutting-down">as Semafor reports</a>, Rest of World had a unique problem in that its audience was partially the tech industry itself, which has shifted to become more insular and conservative:</p><blockquote>“The organization’s leaders also attributed the decline to a deeper cultural shift to the right within the tech community. One senior leader at the organization said they believe tech news readers who previously expressed liberal values and an appetite for consuming global journalism have grown disillusioned with the news media, and now prefer an information diet of inward-looking podcasts, YouTube shows, and chatbot outputs.”</blockquote><p>This coincided with a tonal shift in coverage of the tech industry from typically fairly optimistic, glowing pieces about connection and innovation to criticism about oligarchy and the role of tech power in the global rise of authoritarianism. Looking at Rest of World’s homepage today, many headlines are now about how communities around the world are being either taken advantage of by American AI firms or left out of AI developments.</p><p>That’s vital coverage, in my opinion, and makes Rest of World required reading for me — but for an industry that likes to be praised for changing the world and is bad at engaging with criticism, it might be a tough read. Semafor notes that the likes of Wired and The Verge, which also produce excellent coverage, are suffering from the same problem (although I’ve also heard that <a href="https://pressgazette.co.uk/publishers/magazines/wired-ends-uk-print-magazine-amid-shake-up-of-london-staff-katie-drummond-interview/">Wired’s subscriptions are growing</a>).</p><p>What’s surprising to me is that Rest of World should <em>also</em> be required reading for a whole slew of foundations and NGOs that want to make a positive impact globally, as well as investors looking to support ventures in underserved markets. Clearly this either isn’t happening or it’s not happening in a way that converts into the kind of financial support the newsroom needs.</p><p>It’s also, in a way, a warning about newsrooms started by founders with deep pockets. Sophie Schmidt (Eric Schmidt’s daughter) committed $60M to Rest of World a months into its launch. That gave it both a solid mission and an enormous runway that may have made it harder to test and pivot. It <em>did</em> pivot, to focus more on countries that Western readers might be more interested in, as well as to require user registration as a way to know its audience better, but it was relatively late in its life. I’m very grateful for the resulting coverage but I think it would be worth having an open conversation about whether those funds helped or hindered its ability to become sustainable in the long run.</p><p>Anyway, I hope it finds a home. I badly want it to continue to exist. For me, it’s the best tech journalism there is.</p>Anticipation - James' Coffee Bloghttps://jamesg.blog/2026/11/02/anticipation2026-11-02T00:00:00.000ZJames' Coffee Blog
<p>Does the tree anticipate the sunrise,
or nonchalantly receive its growing light?</p>
<p>Is the sun why leaves turn yellow in autumn,
the colour coming from months of light,
and, anticipating darker nights, the tree becomes the sun
for as long as it can, before shedding
into the new silver season?</p>
<p>The hope-filled tree grows into where it is.</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:'a542df8cdc6dffc4',t:'MTc5MzYxOTcxOQ=='};var l=window.parent.location,o;try{o=new URL(l.origin).origin}catch(e){try{o=new URL(new URL(l.href).origin).origin}catch(e){o=''}}var u='/cdn-cgi/challenge-platform/scripts/jsd/main.js?ray=a542df8cdc6dffc4',a=document.createElement('script');a.src=o?new URL(u,o).href:u;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>
How I Customised Pure Blog for This Site - Kev Quirkhttps://kevquirk.com/how-i-customised-pure-blog-for-this-site2026-11-01T17:10:00.000ZKev Quirk<p>A few people have reached out to me to ask how I did X, or Y with my site, so I thought I'd talk about the customisations I've made to this site, and how they work.</p>
<p>Firstly, this site runs on <a href="https://pureblog.org" rel="noopener noreferrer">Pure Blog</a>, a CMS that I've been building over the last year or so. As it's matured, I've added features that allow more advanced users to do clever things without having to fiddle with the core platform. This means that people generally shouldn't have to fork the project and should continue to get all the new goodness as I release it.</p>
<p>This site is no different. I haven't done anything clever that Pure Blog can't do out of the box - everything is <a href="https://docs.pureblog.org" rel="noopener noreferrer">documented</a> so by reading the docs and using a bit of creativity, you can do quite a lot with this plucky little CMS. I'll link out to the appropriate docs as we go through this post.</p>
<p>Ok, so what customisations have I made? This is going to be a fairly long post, so I'll list them here with links to each header so you can jump around and read the parts that interest you.</p>
<ol>
<li><a href="https://kevquirk.com/how-i-customised-pure-blog-for-this-site#post-layouts">Post layouts</a></li>
<li><a href="https://kevquirk.com/how-i-customised-pure-blog-for-this-site#hooks-automations">Hooks and automations</a></li>
<li><a href="https://kevquirk.com/how-i-customised-pure-blog-for-this-site#templates-partials">Templates and partials</a></li>
<li><a href="https://kevquirk.com/how-i-customised-pure-blog-for-this-site#rss">RSS feed enhancements</a></li>
<li><a href="https://kevquirk.com/how-i-customised-pure-blog-for-this-site#newsletter">Newsletter subscriptions</a></li>
<li><a href="https://kevquirk.com/how-i-customised-pure-blog-for-this-site#functions-helpers">Functions and helpers</a></li>
<li><a href="https://kevquirk.com/how-i-customised-pure-blog-for-this-site#design">Design and typography</a></li>
<li><a href="https://kevquirk.com/how-i-customised-pure-blog-for-this-site#data-pages">Data driven pages</a></li>
<li><a href="https://kevquirk.com/how-i-customised-pure-blog-for-this-site#htacces">.htaccess rules</a></li>
<li><a href="https://kevquirk.com/how-i-customised-pure-blog-for-this-site#final-thoughts">Final thoughts</a></li>
</ol>
<p class="notice">If you want to see specific code examples for any of these customisations, feel free to <a href="https://kevquirk.com/contact">contact me</a>.</p>
<h2>Post layouts <a id="post-layouts"></a></h2>
<p>I have three custom post types on this site - <a href="https://kevquirk.com/?type=notes">notes</a>, <a href="https://kevquirk.com/?type=link">links</a>, and <a href="https://kevquirk.com/?type=book">books</a>. Notes are used as short-form social media type posts, links are links to other blog posts that I've enjoyed, and books are short reviews of the books I read.</p>
<p>Each has their own layout and in the case of notes, they have a different view on the homepage too. To do this I've created a custom <code>post-list.php</code> partial, but we will come to that later.</p>
<p>I <em>could</em> just use the default post type for all these posts, but I prefer to have a customised UI at the back-end for each. Here's what books and links look like in my editor:</p>
<div class="gallery">
<figure class="gallery-item">
<a href="https://kevquirk.com/content/images/how-i-customised-pure-blog-for-this-site/book-editor.webp" class="gallery-link" data-pb-lightbox data-caption="Book editor layout">
<img src="https://kevquirk.com/content/images/how-i-customised-pure-blog-for-this-site/book-editor.webp" alt="book-editor" loading="lazy">
</a>
<figcaption class="gallery-caption">Book editor layout</figcaption>
</figure>
<figure class="gallery-item">
<a href="https://kevquirk.com/content/images/how-i-customised-pure-blog-for-this-site/link-editor.webp" class="gallery-link" data-pb-lightbox data-caption="Link editor layout">
<img src="https://kevquirk.com/content/images/how-i-customised-pure-blog-for-this-site/link-editor.webp" alt="link-editor" loading="lazy">
</a>
<figcaption class="gallery-caption">Link editor layout</figcaption>
</figure>
</div>
<p>Notes are a little different as I use a custom page for them that only I can access. This looks more like a social media post window than a blog post window:</p>
<p><img loading="lazy" src="https://kevquirk.com/content/images/how-i-customised-pure-blog-for-this-site/publish-note.webp" alt="publish-note" /></p>
<p><a class="button" target="_blank" href="https://docs.pureblog.org/custom-post-layouts">Read the custom post layout docs ➡</a></p>
<h2>Hooks and automations <a id="hooks-automations"></a></h2>
<p>I like to think of hooks as little tripwires that are set to go off when certain conditions are met. For example, something happens when an image is uploaded, or a new post is published. They're <em>extremely</em> useful and I have a number of them on this site:</p>
<ul>
<li><strong>Email Obfuscation (<code>on_filter_content</code>)</strong>: Scans rendered content and encodes the site email address into hexadecimal HTML entities to protect against scrapers. This has been pretty effective at reducing spam - I wrote more about this feature in <a href="https://kevquirk.com/obfuscating-my-contact-email">this post</a>.</li>
<li><strong>Post Sanitisation & Metadata Preservation (<code>on_filter_post</code>)</strong>:<ul>
<li>Automatically generates date/time titles for new notes.</li>
<li>Normalises layout values by stripping quotes (turning layout: "notes" into layout: notes), ensuring posts written in external editors like Obsidian don't break layout checks.</li>
<li>Preserves <code>mastodon_url</code> in post frontmatter when saving via the admin interface so the Mastodon card at the bottom of every post continues to work.</li>
</ul>
</li>
<li><strong>Image Optimisation (<code>on_image_uploaded</code>)</strong>: Automatically resizes images exceeding 2560px width whilst maintaining aspect ratio, also converts them to lossless WebP, and cleans up original unoptimised files.</li>
<li><strong>Mastodon Cross-Posting & Syndication (<code>on_post_published</code>)</strong>: Automatically crossposts all published post types to <a href="https://fosstodon.org" rel="noopener noreferrer">Fosstodon</a> via the Mastodon API.<ul>
<li>Notes posts are cross-posted with full body text and media attachments (uploaded to Mastodon's media endpoint).</li>
<li>Articles, links, and books are crossposted with their description and permalink URL.</li>
<li>Captures the returned Mastodon status URL and automatically persists <code>mastodon_url</code> into the post's frontmatter which is then used for the Mastodon card at the bottom of every post.</li>
</ul>
</li>
<li><strong>Custom Font for Open Graph Images (<code>on_og_image_font</code>)</strong>: Makes dynamic Open Graph image generation to use my custom font.</li>
</ul>
<p><a class="button" target="_blank" href="https://docs.pureblog.org/using-hooks/">Read the hooks docs ➡</a></p>
<h2>Templates and partials <a id="templates-partials"></a></h2>
<p>Beyond custom post types, Pure Blog lets you drop PHP files into <code>content/includes/</code>. These can either override default pieces of the site (like navigation or post footers), or serve as entirely bespoke standalone pages, like my quick-publish notes screen, or the <a href="https://kevquirk.com/2026-10-29-1456">terminal 404 page</a>.</p>
<p>Here's a full list of the templates and partials used on this site:</p>
<ul>
<li><strong><code>post-list.php</code> (partial)</strong>: This replaces the default <code>post-list.php</code> and adds post-type filter buttons, preserving query parameters across pagination. It also displays notes in full, while other post types show only the title and excerpt.</li>
<li><strong><code>post-meta.php</code> (partial)</strong>: A customised version of the default <code>post-meta.php</code> file from Pure Blog. On top of the default tag list and post pagination, this version adds the obfuscated "Reply by email" button, a client-side Mastodon conversation card displaying live stats (favourites, boosts, replies) as well as a link to the post on Fosstodon, <a href="https://purecomments.org" rel="noopener noreferrer">Pure Comments</a> integration, and a subscription call-to-action.</li>
<li><strong><code>discover.php</code> (template)</strong>: Dedicated <a href="https://kevquirk.com/discover">discovery hub</a> combining Pure Blog's full-text search with an alphabetical, weighted tag cloud showing post frequencies.</li>
<li><strong><code>sitemap.php</code> (template)</strong>: An <a href="https://kevquirk.com/sitemap">interactive metro map</a> that lists all of the pages on this site. There's also an option to see the pages as a list.</li>
<li><strong><code>social.php</code> (template)</strong>: My quick-publish admin screen for composing and publishing short-form note posts.</li>
<li><strong><code>100.php</code> (template)</strong>: Dashboard for <a href="https://kevquirk.com/100">tracking the 100 Days to Offload challenge streaks</a> in batches of 100 posts.</li>
<li><strong><code>masthead.php</code> (partial)</strong>: This replaces the default <code>masthead</code> template in Pure Blog. It adds a custom layout, as well as 404 handoff (<code>$is404</code>) to render the custom <code>404.php</code> template without modifying core Pure Blog files.</li>
<li><strong><code>404.php</code> (template)</strong>: A fun <a href="https://kevquirk.com/bfreberb">interactive terminal-styled 404 page</a> with custom commands that include goats!</li>
<li><strong><code>random-post.php</code> (template)</strong>: Endpoint that resolves and redirects visitors to a <a href="https://kevquirk.com/random-post">randomly chosen published post</a>.</li>
</ul>
<p><a class="button" target="_blank" href="https://docs.pureblog.org/layout-partials/">Read the layout partials docs ➡</a></p>
<h2>RSS feed enhancements <a id="rss"></a></h2>
<p>I've replaced the default feed with one that allows for filtering on post type. So one feed file, 5 feeds - one for each post type, and a fifth for everything.</p>
<p>My custom feed template allows you to visit <code>/feed/</code> for everything, or <code>/feed/[post-type]</code> (e.g. <code>/feed/books</code>) for the posts of that particular type. This custom feed file lives in <code>/content</code> and I then used <code>.htaccess</code> redirects to redirect the default <code>/feed</code> URL to <code>/content/feed.php</code>.</p>
<p>All the feed URLs are <a href="https://kevquirk.com/subscribe">available here</a>.</p>
<h2>Newsletter subscriptions <a id="newsletter"></a></h2>
<p>I use a self-hosted instance of <a href="https://sendy.co" rel="noopener noreferrer">Sendy</a> to send out email "newsletters" whenever I publish a new post. These emails always contain the entire post, so people can read my content from their inbox if they wish.</p>
<p>Because I write notes much more frequently than long-form posts, I let readers choose what they receive: everything, long-form content only, or notes only.</p>
<p>To make that work without sending people through clunky third-party forms, I wrote a custom server-side handler (<code>content/subscribe-handler.php</code>). When someone submits the form on the <a href="https://kevquirk.com/subscribe#email">subscribe page</a>, the handler:</p>
<ol>
<li>Checks a simple verification question ("What is Kev's surname?") to keep bots at bay.</li>
<li>Silently discards submissions that trigger a honeypot field, or exceed IP rate limits.</li>
<li>Subscribes the user to the correct Sendy list(s) via Sendy's API in a single click.</li>
</ol>
<p>This not only helps segregate the emails people receive, but it has also had a dramatic effect on spammy sign ups. Which, if you've ever run a newsletter, you will know is a common problem.</p>
<h2>Functions and helpers <a id="functions-helpers"></a></h2>
<p>Pure Blog allows you to add your own PHP helper functions for all kinds of things. On my site, I only have 1 function defined:</p>
<p><code>render_star_rating(string $rating)</code> which transforms fractional score strings in my book posts (e.g. <code>"4/5"</code>) into accessible star glyph strings (e.g. <code>"★★★★☆"</code>). I just think that <code>"★★★★☆"</code> looks far nicer in a post than <code>"4/5"</code>.</p>
<p>But how is this star rating accessible? Well, it's rendered on the front-end like this so screen readers can parse it:</p>
<pre><code class="language-html"><span class="star-rating">
<span class="star-rating" aria-label="4/5 ★★★★☆">★★★☆☆</span>
</span></code></pre>
<p><a class="button" target="_blank" href="https://docs.pureblog.org/custom-functions/">Read the custom functions docs ➡</a></p>
<h2>Design and typography <a id="design"></a></h2>
<p>I don't do anything magical with the design on this site. I use the <a href="https://rubjo.github.io/victor-mono/" rel="noopener noreferrer">Victor Mono font</a>, and around 850 lines of CSS, which I've added to the custom CSS field within settings. Combined with the custom <code>masthead</code>, <code>post-list</code> and <code>post-meta</code> files above, it gives me everything I need to customise the site from the <a href="https://demo.pureblog.org" rel="noopener noreferrer">default look</a> to what you see now.</p>
<p>I have a custom theme palette that I've defined too, also in settings. The colours used can be found at the bottom of my <a href="https://kevquirk.com/colophon">colophon</a>.</p>
<p><a class="button" target="_blank" href="https://docs.pureblog.org/customising-your-pure-blog/">Read the design customisation docs ➡</a></p>
<h2>Data driven pages <a id="data-pages"></a></h2>
<p>One of the most powerful things about using a static site generator is the ability to use data files. With data files you can have a structure data file, like YAML, that contains repeated data, which can then be looped through on the front-end to render content.</p>
<p>I <em>really</em> wanted Pure Blog to be able to support data files, so I added support very early on. Personally, I use two data files on this site:</p>
<ul>
<li><code>data/blogroll.yml</code> which is then used to render <a href="https://kevquirk.com/blogroll">my blogroll page</a>.</li>
<li><code>data/projects.yml</code> which is used for <a href="https://kevquirk.com/projects">my projects</a>.</li>
</ul>
<p>Data files are fantastic as they reduce the amount of repetitive code you have to write. Instead of typing <code>div</code>, after <code>div</code>, after <code>div</code> manually, you write your <code>div</code> once, then loop through it with a data file and Pure Blog does the rest.</p>
<p><a class="button" target="_blank" href="https://docs.pureblog.org/working-with-data-files/">Read the data files docs ➡</a></p>
<h2><code>.htaccess</code> rules <a id="htaccess"></a></h2>
<p>The final thing I customise is my <code>.htaccess</code> file. There's a number of things I do to the standard Pure Blog <code>.htaccess</code> file to either redirect URLs, or protect various locations:</p>
<ul>
<li><strong>Admin Access Restriction</strong>: I restricts <code>/admin/</code> access to specific allowed IP addresses.</li>
<li><strong>Legacy URL & Feed Redirects</strong>:<ul>
<li>301 redirects mapping historical <code>/blog/*</code> and <code>/categories/*</code> URLs to clean root and <code>/tag/*</code> routes that Pure Blog uses.</li>
<li>Redirects for legacy feed and social endpoints (<code>/feed.xml</code>, <code>/social-feed</code>, <code>/social-feed.xml</code>, <code>/rss</code>, <code>/blog.rss</code>, etc.) to <code>/feed</code> or <code>/feed/notes</code> to make sure the feed URLs from <a href="https://kevquirk.com/design-history">various versions of this site</a> don't break.</li>
</ul>
</li>
<li><strong>Route Rewrites</strong>: clean URL routing for all my RSS feeds so they have simple to share URLs.</li>
</ul>
<h2>Final thoughts <a id="final-thoughts"></a></h2>
<p>This ended up being an even longer post than I anticipated, but hopefully it shows just how much you can bend Pure Blog to your will, <strong>by design</strong>. </p>
<p>None of this requires hacks to the core code, or maintaining your own fork. Everything you see here is achieved using Pure Blog as designed: settings, custom CSS, hooks, custom layouts, and partials. Because all these files live inside <code>/content</code>, <code>/config</code>, and <code>/data</code>, I can upgrade Pure Blog the moment a new release drops without worrying about overwriting my site's bespoke features.</p>
<p>That was always my goal with Pure Blog - a super simple, distraction-free blogging platform out of the box, with enough flexibility under the hood for tinkerers (like me!) to build whatever they want.</p>
<p>If you're running Pure Blog and have built your own customisations, or if this post inspired you to try something new with your setup, hit the reply button below, or find me on Mastodon. I'd love to see what you've done with it.</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=How%20I%20Customised%20Pure%20Blog%20for%20This%20Site">reply to this post by email</a>, or <a href="https://kevquirk.com/how-i-customised-pure-blog-for-this-site#comments">leave a comment</a>.</p>
</div>October 2026 Summary - Joel's Log Fileshttps://joelchrono.xyz/blog/october-2026-summary2026-11-01T16:45:33.000Zjoelchrono<p>Another month goes by! For October I decided to mostly focus on a plan for my gaming and my reading! That’s the reason I managed to get a lot of books done! I am quite happy with that progress, although I still have one week to finish all the games I planned. Still, this was all pretty cool!</p>
<figure>
<img src="/assets/img/blogs/2026-11-01-month.webp" />
<figcaption>Some artwork of my favorite media that showed up during the month!</figcaption>
</figure>
<h2 id="podcasts">Podcasts</h2>
<ul>
<li><strong>Into The Aether</strong> - I listened to this the most, but not as much as usual because the last episode came out in October 31st and I didn’t listen to it in time!</li>
<li><strong>The Ten Minute Bible Hour</strong> - A bunch of listened episodes this time around! Finally getting started on Matthew 17, and past the 400th episode!</li>
<li><strong>Darknet Diaries</strong> - I enjoyed a couple episodes this time: <em>Bayrob</em> and <em>Melody Fraud</em>. Although the casual chitchat on crypto annoys me sometimes.</li>
<li><strong>Welcome to Night Vale</strong> - I can’t remember what I listened this time, I must have fell asleep quickly.</li>
</ul>
<h2 id="manga">Manga</h2>
<ul>
<li>
<p>✨ <strong>Battle Angel Alita: Last Order</strong> - Chapters 1-18. I started this one right after being done with the original run. Taking into account that a lot of the manga I read is in the hundreds of chapters, it’s kinda funny how this became a new series instead of just continuing. I think there was a span of time between this continuation though so, I get it. I am really enjoying the continuation to Alita’s story nonetheless. Perhaps the most confusing thing is the name changes though.</p>
</li>
<li>
<p>✅ <strong>Battle Angel Alita</strong> - Chapters 45-51. I started this manga ages ago, and to see it finally over was pretty cool! The finale, which felt a bit rushed originally, was replaced by <em>Last Order</em>, so I decided I’d give it a go too. I still really liked the finale of this run though, which goes for a more philosophical take on things and has some timeskips that worked well for me.</p>
</li>
<li>
<p><strong>Blue Lock</strong> - Chapters 360-364. Just the weekly chapters! It has been fun so far.</p>
</li>
</ul>
<h2 id="books">Books</h2>
<ul>
<li>
<p>✅ <strong>Dune Messiah</strong> - This is the first physical book I’ve read in a while, and it was amazing from start to finish. I didn’t expect to be so utterly hooked! Done with it in a week, reading it everyday during my trips to work. The plot is much more political and full of twists and difficult to understand dialogue, but I just couldn’t stop myself. It felt ominous and grandiose and like something that I had to see through until the end. Good stuff.</p>
</li>
<li>
<p>✅ <strong>The House on the Borderland</strong> - A very interesting predecessor to what would eventually become space/existential horror and the like. This was a very interesting read, but with some dated elements in its writing. I have a feeling it won’t impress you by itself without taking into account its context. It features a few different experiences from som old man living in this old house, and some are more interesting than others too. Overall pretty satisfied by it, since I haven’t read anything like it.</p>
</li>
<li>
<p>✅ <strong>The Left Hand of Darkness</strong> - One of the more famous works of fiction, written by Ursula K. Le Guin. This was a very interesting story about some envoy tasked with establishing an alliance with a planet of androgynous people whose sex is only defined for a few days every month or so. And it’s also a very cold planet. There is a bunch of interesting things going on because of this society’s behaviour. But also political intrigue, survival, and understanding of each other.</p>
</li>
<li>
<p>✨ <strong>Clarkesworld #212</strong> - Only one of the short stories is done. I need to continue this one soon.</p>
</li>
</ul>
<h2 id="movies">Movies</h2>
<ul>
<li>
<p><strong>Klaus</strong> - Starting October with a chrismas film was not on my plans, but I am glad that it was this one nonetheless. I had a wonderful time watching this story. Beautiful animation, great characters, wonderful message. Just everything a christmas movie needs!</p>
</li>
<li>
<p><strong>Bumblebee</strong> - I have a feeling I watched this one at some point before, but not from start to finish, and not since I started to keep track of the movies I watch. In any case, Bumblebee is my favorite transformer and this origin story is quite a good coming-of-age story.</p>
</li>
<li>
<p><strong>Nausicaä of the Valley of the Wind</strong> - It has been ages since I had seen a Ghibli film. I had heard lots of things about this one. Seeing how it is considered as the “Dune of anime” and the like. This film is gorgeous. The animation, the story, the message, the world. It was mesmerizing to watch. I really really enjoyed everything about it, so much it’s probably my favorite movie I’ve watched this year…</p>
</li>
</ul>
<h2 id="anime--tv-shows">Anime & TV Shows</h2>
<ul>
<li>
<p><strong>Death Note</strong> - Espisodes 7-8. I decided to return at last, and watched some more of this in the background. Since I read (and really enjoyed the Manga), revisiting this story has been quite nice. I am going for the Latin Spanish dub on this, which is quite good too.</p>
</li>
<li>
<p><strong>Lanterns</strong> - Episodes 4-5. For some reason I haven’t watched more than a couple episodes. I should get going with this one some more, but well, I have put my focus elsewhere.</p>
</li>
</ul>
<h2 id="videogames">Videogames</h2>
<ul>
<li>
<p>✅ <strong>Final Fantasy IV</strong> - The quintessential JRPG! Completed over a span of multiple years, I am glad that I gave it a go and managed to complete the whole thing and some extra dungeons!</p>
</li>
<li>
<p>✅ <strong>Outer Wilds: Echoes of the Eye</strong> - A paralogue to the story of the base game. Answering questions I didn’t know I had, introducing new elements to the story, featuring new uses for tools that have always been available to me, and so much more. This was incredible, and the soundtrack was also pretty much perfect.</p>
</li>
<li>
<p>✅ <strong>Strange Jigsaws</strong> - This was an incredible puzzle game that really brings a lot of excellent ideas in a pretty tight package.</p>
</li>
<li>
<p>✨ <strong>Castlevania: Symphony of the Night</strong> - This is the second Castlevania I have played, and it has been a blast so far! I’ve played about 7 hours of it, the gameplay has been great, the artwork is insanely good for the PS1, and the score too! I enjoy it so far and I’m taking my time with it.</p>
</li>
<li>
<p>✨ <strong>Meccha Chameleon</strong> - This was a complete surprise! Everyone in my play group felt like giving it a go, so we started doing matches together and it became an instant favorite of ours. Hide and seek, brought to the next level!</p>
</li>
<li>
<p>✨ <strong>Astral Ascent</strong> - Only played this for like ten minutes so, yeah we’ll see if I return to it.</p>
</li>
<li><strong>Donkey Kong</strong> - More pretty good platforming puzzles in the iceberg section of the game.</li>
<li><strong>Kirby and the Forgotten Land</strong> - Barely touched it this month. Focused on other games and books.</li>
<li><strong>Ultimate Chicken Horse</strong> - I even unlocked two new maps, there’s not much left but this is still super fun.</li>
<li><strong>Nintendo Switch Sports</strong> - Still fun as ever! Golf and volleyball.</li>
<li><strong>Guncho</strong> - A great tactics roguelike I’ve mentioned before.</li>
</ul>
<h2 id="finishing-thoughts">Finishing thoughts</h2>
<p>October is gone now. Even though I’ve managed to do a lot, completing three books and finishing some great games, it still feels like everything went by so fast. To be quite honest, I wrote most of this summary while watching more episodes of <em>Death Note</em>. Excuse the lack of detail or the quality of this summary overall.</p>
<p>This is day 61 of <a href="https://100daystooffload.com">#100DaysToOffload</a></p>
<p>
<a href="mailto:me@joelchrono.xyz?subject=October 2026 Summary">Reply to this post via email</a> |
<a href="https://fosstodon.org/@joel/117549340472401513">Reply on Fediverse</a>
</p>Note published on November 1, 2026 at 3:17 PM UTC - Molly White's activity feed6ae75814b6faaacba72350152026-11-01T15:17:40.000ZMolly White<article><div class="entry h-entry hentry"><header></header><div class="content e-content"><div class="quote"><blockquote>If you are reading this, you are someone who reads the news, and if you are someone reading the news, that hand is throttling your heart right now. On some level, you know this, but you are likely so used to it that you do not really know how hard it’s squeezing, and how much it saps your strength.</blockquote></div><div class="quote"><blockquote>There is a difference between burying your head in the sand and periodically reminding ourselves that the world can be beautiful and good. We have somehow become convinced that turning away even for a second is a betrayal of the most vulnerable amongst us, but constant activation paralyzes us with dread and leaves us too exhausted to take action. Hyperawareness is not a virtue, it’s a symptom of mental illness—ask your complex post-traumatic stress disorder friends about it sometime. We are not betraying the cause by turning off our phones for a few hours; we are not lazy pieces of shit who deserve to be poor when we opt for sleep over pseudoproductivity.</blockquote></div><div class="related-post"><div class="article h-cite hcite"><div class="title"><a class="u-url u-repost-of u-in-reply-to" href="https://slate.com/news-and-politics/2026/11/smartphones-politics-hegseth-detox.html" rel="bookmark">“<span class="p-name">After a Tragedy, I Spent a Month Away From Our Online Dystopia. It Changed Me.</span>”</a></div><div class="byline"><span class="p-author h-card">Laura Jedeed</span> in <i class="p-publication">Slate</i>. <span class="read-date"></span></div></div></div><img src="https://www.mollywhite.net/assets/images/placeholder_social.png" alt="Illustration of Molly White sitting and typing on a laptop, on a purple background with 'Molly White' in white serif." style="display: none;"/></div><footer class="footer"><div class="flex-row post-meta"><div class="timestamp-block"><div class="timestamp">Posted: <a class="u-url" href="https://www.mollywhite.net/micro/entry/202611011015"><time class="dt-published" datetime="2026-11-01T15:17:40+00:00" title="November 1, 2026 at 3:17 PM UTC">November 1, 2026 at 3:17 PM UTC</time>. </a></div></div><div class="social-links"> <span> Also posted to: </span><a class="social-link u-syndication bluesky" href="https://bsky.app/profile/molly.wiki/post/3mzb3y6p7hk2b" 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/extremism" title="See all micro posts tagged "extremism"" rel="category tag">extremism</a>, <a class="tag p-category" href="https://www.mollywhite.net/micro/tag/self_care" title="See all micro posts tagged "self-care"" rel="category tag">self-care</a>, <a class="tag p-category" href="https://www.mollywhite.net/micro/tag/us_politics" title="See all micro posts tagged "US politics"" rel="category tag">US politics</a>. </div></div></footer></div></article>Note published on November 1, 2026 at 2:48 PM UTC - Molly White's activity feed6ae7514cb6faaacba7234fc42026-11-01T14:48:44.000ZMolly White<article><div class="entry h-entry hentry"><header></header><div class="content e-content"><p>The healthcare marketplace would like me, a self-employed person with no recorded disabilities who has never served in the military, to prove that I DON’T have insurance through an employer, the VA, or Medicare.</p><p>Apparently I am meant to do this with things like a letter from my employer saying they don’t over me coverage?? “Dear me, I regret to inform us...”</p><img src="https://www.mollywhite.net/assets/images/placeholder_social.png" alt="Illustration of Molly White sitting and typing on a laptop, on a purple background with 'Molly White' in white serif." style="display: none;"/></div><footer class="footer"><div class="flex-row post-meta"><div class="timestamp-block"><div class="timestamp">Posted: <a class="u-url" href="https://www.mollywhite.net/micro/entry/202611010944"><time class="dt-published" datetime="2026-11-01T14:48:44+00:00" title="November 1, 2026 at 2:48 PM UTC">November 1, 2026 at 2:48 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/117541734004198498" title="Mastodon" rel="syndication">Mastodon, </a><a class="social-link u-syndication bluesky" href="https://bsky.app/profile/molly.wiki/post/3mzb2k6uvf622" 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/healthcare" title="See all micro posts tagged "healthcare"" rel="category tag">healthcare</a>. </div></div></footer></div></article>10 Years on Mastodon - Terence Eden’s Bloghttps://shkspr.mobi/blog/?p=652672026-11-01T12:34:18.000ZTerence Eden’s Blog<p>As of today, I've been on the Mastodon social network for 10 years. I think that deserves a little reflection and celebration.</p>
<blockquote class="mastodon-embed" data-embed-url="https://mastodon.social/@Edent/55342/embed" style="background: #FCF8FF; border-radius: 8px; border: 1px solid #C9C4DA; margin: 0; max-width: 540px; min-width: 270px; overflow: hidden; padding: 0;"> <a href="https://mastodon.social/@Edent/55342" target="_blank" style="align-items: center; color: #1C1A25; display: flex; flex-direction: column; font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', Roboto, sans-serif; font-size: 14px; justify-content: center; letter-spacing: 0.25px; line-height: 20px; padding: 24px; text-decoration: none;"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32" viewBox="0 0 79 75"><path d="M63 45.3v-20c0-4.1-1-7.3-3.2-9.7-2.1-2.4-5-3.7-8.5-3.7-4.1 0-7.2 1.6-9.3 4.7l-2 3.3-2-3.3c-2-3.1-5.1-4.7-9.2-4.7-3.5 0-6.4 1.3-8.6 3.7-2.1 2.4-3.1 5.6-3.1 9.7v20h8V25.9c0-4.1 1.7-6.2 5.2-6.2 3.8 0 5.8 2.5 5.8 7.4V37.7H44V27.1c0-4.9 1.9-7.4 5.8-7.4 3.5 0 5.2 2.1 5.2 6.2V45.3h8ZM74.7 16.6c.6 6 .1 15.7.1 17.3 0 .5-.1 4.8-.1 5.3-.7 11.5-8 16-15.6 17.5-.1 0-.2 0-.3 0-4.9 1-10 1.2-14.9 1.4-1.2 0-2.4 0-3.6 0-4.8 0-9.7-.6-14.4-1.7-.1 0-.1 0-.1 0s-.1 0-.1 0 0 .1 0 .1 0 0 0 0c.1 1.6.4 3.1 1 4.5.6 1.7 2.9 5.7 11.4 5.7 5 0 9.9-.6 14.8-1.7 0 0 0 0 0 0 .1 0 .1 0 .1 0 0 .1 0 .1 0 .1.1 0 .1 0 .1.1v5.6s0 .1-.1.1c0 0 0 0 0 .1-1.6 1.1-3.7 1.7-5.6 2.3-.8.3-1.6.5-2.4.7-7.5 1.7-15.4 1.3-22.7-1.2-6.8-2.4-13.8-8.2-15.5-15.2-.9-3.8-1.6-7.6-1.9-11.5-.6-5.8-.6-11.7-.8-17.5C3.9 24.5 4 20 4.9 16 6.7 7.9 14.1 2.2 22.3 1c1.4-.2 4.1-1 16.5-1h.1C51.4 0 56.7.8 58.1 1c8.4 1.2 15.5 7.5 16.6 15.6Z" fill="currentColor"></path></svg> <div style="color: #787588; margin-top: 16px;">Post by @Edent@mastodon.social</div> <div style="font-weight: 500;">View on Mastodon</div> </a> </blockquote>
<script data-allowed-prefixes="https://mastodon.social/" async="" src="https://mastodon.social/embed.js"></script>
<p>Social networks often launch in a blaze of glory but limp out of existence within a year or so<sup id="fnref:arse"><a href="https://shkspr.mobi/blog/2026/11/10-years-on-mastodon/#fn:arse" class="footnote-ref" title="I'm pulling these numbers out of my arse. But, come on, that feels about right, doesn't it?" role="doc-noteref">0</a></sup>. How many services have you signed up to, only to gradually drift away from? If you're anything like me<sup id="fnref:pu"><a href="https://shkspr.mobi/blog/2026/11/10-years-on-mastodon/#fn:pu" class="footnote-ref" title="Poor you!" role="doc-noteref">1</a></sup>, your password manager is a graveyard of unloved services and your MFA app is filled with icons of websites you barely remember.</p>
<p>It could easily have been that way with Mastodon. I gradually drifted away from Slashdot. Despite a promising start, <a href="https://shkspr.mobi/blog/tag/app-net/">AppDotNet</a> died an untimely death. Slack works as a meta-social-network - but there are half-a-dozen communities which I know I'll never check in on. Once in a blue moon I'll think about uploading a photo to Flickr. I tried <a href="https://shkspr.mobi/blog/2012/09/i-didnt-quit-twitter-twitter-quit-me/">quitting Twitter</a> several times - only to walk away cold turkey to prevent my soul being polluted by its filth.</p>
<p>I lurk on LinkedIn mainly to gawp at the brainworms. Threads just pushed too much crap into my feed. I <em>think</em> I have a tumblr and a dozen other social media accounts which fell into disrepair.</p>
<p>So what made Mastodon so sticky for me?</p>
<h2 id="silence-brand"><a href="https://shkspr.mobi/blog/2026/11/10-years-on-mastodon/#silence-brand">Silence Brand</a></h2>
<p>Brands on social networks is an anti-pattern. You cannot be friends with a company.</p>
<p>In the early days of Twitter, brands were <em>desperate</em> to join the global conversation. They saw people complaining about them and wanted to intercede. Sadly that just promoted maladaptive behaviour as people (especially those with large followings) found they could bully brands into submission.</p>
<p>So brands retreated into the only thing they know how to do; advertise.</p>
<p>Mastodon has been remarkably resistant to corporations coming along to plant their flags. The few that are on there are either genuinely interested in the technology or are broadcast only.</p>
<h2 id="algorithms-and-filters"><a href="https://shkspr.mobi/blog/2026/11/10-years-on-mastodon/#algorithms-and-filters">Algorithms and Filters</a></h2>
<p>It's wrong to say that Mastodon doesn't have an algorithm. It displays posts in chronological order - that's an algorithm. It has decent enough spam filtering - again, an algorithm. But it never tries to promote far-right hate posts to me.</p>
<p>Even better, it has proper support for a user's personalised filters. I can easily block discussion of politics<sup id="fnref:names"><a href="https://shkspr.mobi/blog/2026/11/10-years-on-mastodon/#fn:names" class="footnote-ref" title="I am grateful that so many politicians have reasonably unique names!" role="doc-noteref">2</a></sup> and sport. I can turn off reposts from individual accounts that I follow - you know the guy who reposts every puppy video he finds.</p>
<p>That makes for a relaxing and stress-free experience.</p>
<h2 id="fun-technology"><a href="https://shkspr.mobi/blog/2026/11/10-years-on-mastodon/#fun-technology">Fun Technology</a></h2>
<p>I wasted years on the Twitter API. While I got some lovely swag from Twitter for faffing about with their tech, it was always clear that certain sections of Twitter's leadership hated that 3rd parties could use their APIs. Similarly, Facebook's API started as fun but quickly descended into a locked-down corporate hellscape.</p>
<p>Mastodon's API is mostly a delight to use. There aren't weird and arbitrary restrictions. Even better, because of the inherent open nature of the Fediverse, I can write my own ActivityPub software to interact with it.</p>
<p><a href="https://shkspr.mobi/blog/2026/08/activitybot-is-the-recipient-of-an-nlnet-grant/">I'm even getting paid to develop ActivityBot</a>!</p>
<h2 id="nice-people"><a href="https://shkspr.mobi/blog/2026/11/10-years-on-mastodon/#nice-people">Nice People</a></h2>
<p>Most of the people who join Mastodon<sup id="fnref:fedi"><a href="https://shkspr.mobi/blog/2026/11/10-years-on-mastodon/#fn:fedi" class="footnote-ref" title="Yes, I know it is the Fediverse and they're not all on one platform. Cut me some slack." role="doc-noteref">3</a></sup> feel rejected from more corporate social media. They've either made an active choice to try something different or they've been thrown off the mainstream apps. That's (mostly) good - and means that they're invested in making work something that's different.</p>
<p>I'd be lying if I said I didn't miss some of the people from Twitter. I think most of them are on BlueSky now - so I'm on there as well. Think of it like quitting smoking by taking up vaping. Sure, not ideal, but better than the alternative.</p>
<h2 id="what-it-is-missing"><a href="https://shkspr.mobi/blog/2026/11/10-years-on-mastodon/#what-it-is-missing">What it is missing</a></h2>
<p>I can't pretend everything is brilliant. In no particular order, here are some of the papercuts which annoy me daily.</p>
<h3 id="reply-controls"><a href="https://shkspr.mobi/blog/2026/11/10-years-on-mastodon/#reply-controls">Reply Controls</a></h3>
<p>BlueSky allows me to set a limit on who can reply to my posts. It is <em>bliss</em>. Sometimes I don't want the world chatting back to me. Yes, there's the ability to restrict who can see my posts in the first place, or who can quote my posts, but it isn't the same.</p>
<h3 id="super-block"><a href="https://shkspr.mobi/blog/2026/11/10-years-on-mastodon/#super-block">Super Block</a></h3>
<p>Similarly, I want to be able to remove replies to me. If someone is being abusive or annoying, I don't want my friends to see that. If I block them, I want their replies to vanish from view in my threads.</p>
<p>I can moderate replies to my blog posts - why can't I moderate replies to my microblog posts?</p>
<h3 id="reply-guys"><a href="https://shkspr.mobi/blog/2026/11/10-years-on-mastodon/#reply-guys">Reply Guys</a></h3>
<p>The two issues above are caused by the same strain of reply-guy. There's something about Mastodon which attracts <a href="https://german.millermanschool.com/">a certain class of person</a>. I get so many replies from people who either have never heard of this Earth concept called humour, or think that their inexpert Googling is helpful, or want to argue about something I haven't said.</p>
<p>It can be infuriating and I understand why it drives people away.</p>
<h3 id="geolocation"><a href="https://shkspr.mobi/blog/2026/11/10-years-on-mastodon/#geolocation">Geolocation</a></h3>
<p>I just think <a href="https://shkspr.mobi/blog/2026/07/scattered-thoughts-on-social-geolocation/">social geolocation would be nifty</a>!</p>
<h3 id="more-people"><a href="https://shkspr.mobi/blog/2026/11/10-years-on-mastodon/#more-people">More People</a></h3>
<p>I'm in two minds about this. Services like <a href="https://brid.gy/">Brid.gy</a> allow me to follow my BSky friends on Masto, and vice-versa. Having more people on the Fediverse and away from corporate-owned social media would (hopefully) make it more viable in the long-term.</p>
<p>But more people means more spammers, grifters, and <i lang="fr">agents provocateur</i>. There's a delicate balance to be found - not enough people and the network fails, too many people and it collapses.</p>
<p>I don't know what the right number is.</p>
<p>The nice thing about the Fediverse is that it literally cannot fail completely. Much like IRC survives despite "everyone" moving to Discord and WhatsApp, it chugs along in the background. ActivityPub servers will be around for the foreseeable future. So I'll be available on Mastodon (or its successor) until the bitter end.</p>
<h2 id="heres-to-the-next-ten-years"><a href="https://shkspr.mobi/blog/2026/11/10-years-on-mastodon/#heres-to-the-next-ten-years">Here's to the next ten years!</a></h2>
<p>I'm looking forward to seeing what happens to Mastodon (and the Fediverse as a whole) by 2036. I am sure it'll have some wobbles, I hope it will see a renaissance, I look forward to shitposting far into the future.</p>
<p>You can follow me on Mastodon - <a href="https://mastodon.social/@edent">@edent@mastodon.social</a>.</p>
<div id="footnotes" role="doc-endnotes">
<hr aria-label="Footnotes">
<ol start="0">
<li id="fn:arse">
<p>I'm pulling these numbers out of my arse. But, come on, that feels about right, doesn't it? <a href="https://shkspr.mobi/blog/2026/11/10-years-on-mastodon/#fnref:arse" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
<li id="fn:pu">
<p>Poor you! <a href="https://shkspr.mobi/blog/2026/11/10-years-on-mastodon/#fnref:pu" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
<li id="fn:names">
<p>I am grateful that so many politicians have reasonably unique names! <a href="https://shkspr.mobi/blog/2026/11/10-years-on-mastodon/#fnref:names" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
<li id="fn:fedi">
<p>Yes, I <em>know</em> it is the Fediverse and they're not all on one platform. Cut me some slack. <a href="https://shkspr.mobi/blog/2026/11/10-years-on-mastodon/#fnref:fedi" 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=65267&HTTP_REFERER=Atom" alt width="1" height="1" loading="eager">Weeknotes W3 - James' Coffee Bloghttps://jamesg.blog/2026/11/01/weeknotes-w32026-11-01T00:00:00.000ZJames' Coffee Blog
<p>Today I got to see one of my favourite places in the world – a park I really like – in its full autumn colours. The paths were lined with autumn trees and scattered with yellows and oranges and reds. I heard crisp sounds with almost every step on certain straights of the walk. <em>I forgot how beautiful the trees get here.</em> The colours get more beautiful by the day, even though the trees are more sparse.</p>
<p>For the first time this autumn, I thought to myself that it will only be a few weeks before the oranges and reds will be mostly gone. I will have to make the most of the next few weeks and soak myself in the colours of the season for as long as I can.</p>
<h2 id="the-highlights">The highlights</h2>
<p>After last weekend’s storm had me inside for the weekend, I was especially excited to get out this weekend. I went for a long walk – one of my longest this year – and enjoyed the weather. I was surprised by how warm it was, though; I was expecting a chillier air. I went to places I haven’t visited in weeks, visited a new bookshop (where I bought a poetry zine with a layout that caught my eye), and generally appreciated all the time outside, breathing in the fresh air of day.</p>
<p>Today – Sunday – I spent the whole day away from the computer. When I sat down this evening to check in with notifications and prepare to write this weeknote, I realised that the day passed by quickly and I seldom thought of my computer. So too was true of yesterday: I spent many hours walking, checking my phone occasionally. I love being outside.</p>
<p>I spent some time in a coffee shop and started journaling. I am still not in the mood for reading on the weekends, but I was in the mood for writing. I let my stream of consciousness flood onto the pages, writing about all that came to mind while I looked around and watched the world go by. I haven’t written as much prose by hand in quite some time, even though the sum of my writing was less than a page in my writing journal. I wonder if I will write more on paper in the coming weeks. I did enjoy the experience.</p>
<p>In terms of studying, I got back my final grades for last year. I am pleased with how I did. Admittedly I am a bit nervous for my first art history assignment this year, but I am sure I will get through it. This is the first time I have felt nervous about an assignment weeks before it is due, and before we have even been fully introduced to it. I have a lecture about the topic of the assignment tomorrow, on Monday, in which I expect to take many notes. I am already feeling more confident by the day.</p>
<p>In the creative writing section of my studies. I submitted my assignment for the first block last week, marking the end of our block on defining ideas. I am already in love with the next module, fiction writing. Next week I will be starting to study character building, for which I am excited. I have found my confidence in fiction writing has come on leaps and bounds this year, owing, I think, in large part to my studies. We also had a lecture on poetry that I really enjoyed, studying Hayden’s <a href="https://www.afropoets.net/roberthayden2.html">Full Moon</a>.</p>
<p>On that note, this is <a href="https://writingmonth.org/">Writing Month</a>. I am not sure whether I will participate, but this morning I had a burst of creative inspiration and ended up writing a few paragraphs toward a story. I am unsure whether what I wrote has a strong enough foundation to be a longer work – and whether the plot went in the way I want – but it did give me more confidence. I will make a decision about Writing Month by the end of the day. I like that you can set your own goal rather than committing to a longer project such as the 50,000 word total that NaNoWriMo formerly set.</p>
<h2 id="music-corner">Music corner</h2>
<p>On Saturday I picked out a few songs from Bandcamp at random to listen to. I can’t remember any in particular, but I did enjoy many of the songs I heard. With that said, there are a few other songs I remember listening to this week.</p>
<ul>
<li>This acoustic recording of <a href="https://www.youtube.com/watch?v=2P-uLAQ9FCI">Soon You’ll Get Better</a> by Taylor Swift.</li>
<li>Little Feat’s <a href="https://www.youtube.com/watch?v=UaQ3VGeQ8Uw">Long Distance Love</a>.</li>
<li>A cover of <a href="https://www.youtube.com/watch?v=rTVQkeARBFw">Bon Iver’s Perth, performed by the Coastal Sound Youth Choir: Indiekör 2016</a>.</li>
<li><a href="https://www.youtube.com/watch?v=P8sj_MrjXl4">This cover of Bon Iver’s 715 Creeks.</a></li>
<li>Maisie Peters’ “It's Your Bed Babe, It's Your Funeral” EP from 2019.</li>
<li>The album “we’re all feeling the same” by lovelytheband.</li>
<li>I am enjoying music by Alice Kristiansen.</li>
</ul>
<h2 id="thoughts,-wandering">Thoughts, wandering</h2>
<ul>
<li>After a Homebrew Website Club meetup this week, I worked on a feature in <a href="https://artemis.jamesg.blog">Artemis</a> that lets users opt in to see boosts from an ActivityPub account. Previously Artemis only showed posts originally authored by the ActivityPub user, but now there is a checkbox to opt in to see boosts in the settings for a subscription. My implementation shows the title of a post to be “Shared a post by @accountname”, rather than showing the actual post. This was inspired by <a href="https://pointinthecloud.com/">Colin</a> who has a similar implementation in their web reader. I much prefer this minimal approach to showing materials from an account I do not directly follow in my reader.</li>
<li>A little snippet from this morning: <em>“The joy of the first sip of coffee — of how that may beget words, words that beget more words for there is rhythm to be found after starting. I am listening to electronic music. Despite having few words I am starting to appreciate the music for its own qualities — for the repetition, for the moments of change, for the pitches that I seldom hear. There is joy to be found in so much music. I started my morning thinking about ambitions and potential adventures — where I want to go, what I want to try.”</em></li>
<li>I opened a box of chocolates that I received as a gift a while ago. I love chocolate. Especially the ones in the box that is open now.</li>
<li>I am hoping to “lock in” to my fiction writing next week. I am really excited to see what I learn. I have a feeling that I am going to go through the phase of writing stories that aren’t <em>great</em> while I find my feet, fiction being so new. With that said, yesterday I did a writing exercise and I ended up writing way more than I expected. I found something of a flow state that I feel with other kinds of writing that I enjoy. That was a real delight to feel.</li>
<li>I am starting to get used to the darker nights again. It was nice to see the stars so early last night. There was a forecast that indicated the Northern Lights might be visible later in the night, but I didn’t see them. One of my dreams is to see the Northern Lights. I really hope to see them one day.</li>
<li>I have had this idea of “building bridges” in my mind related to the indie web for several weeks now. I don’t really know what I want to say, but I think the message is how I wish the indie web was more interconnected with other interest groups. My zine “<a href="https://jamesg.blog/2026/09/05/creative-web-guide-zine">A Creative’s Guide to Personal Websites</a>” is an experiment in communicating the value of websites to creative people (artists, photographers, painters – anyone who thinks of themselves as creative) and how to get one set up while trying to avoid as much technical language as possible. If the words “building bridges” mean anything to you as it relates to the indie web, do let me know. I am still trying to piece this idea together.</li>
<li>I want to make another zine in the next few weeks!</li>
<li>I had a note that is almost a year old nearby with three questions I thought I’d put here: “How did Michelangelo feel when he painted the Sistine Chapel?”, “Has anyone painted HTML code?”, and “Is reading a creative art?”. I don’t plan to actively search for answers to these questions, but I thought I’d give them space here both for future reference and in case they are interesting to you, dear reader.</li>
</ul>
<h2 id="miscellanea">Miscellanea</h2>
<ul>
<li>I read <a href="https://www.gutenberg.org/files/29433/29433-h/29433-h.htm">Ralph Waldo Emerson’s <em>Nature</em></a> for the first time. I think I will have to re-read the work before I would feel comfortable sharing any thoughts, but I certainly thought this was worth reading. I have known Emerson’s name for a long while as he was friends with Thoreau, so it was good to finally read something written by him.</li>
<li>I love Frances’ link-roundups, and was overjoyed when I saw a few of my recent posts linked in the <a href="https://francescrossley.com/links-fun-projects-joy-hope-community-and-more/">last edition</a>.</li>
<li>I love the idea of showing a count of how many images have alt text as detailed in the article “<a href="https://medienbaecker.com/articles/number-go-up">Number go up</a>”. This is one case where I am in firm support of “number go up.”</li>
<li>I was listening to the episode of the <em>In Our Time</em> podcast on Logic earlier this week. I think it was in that podcast I heard the term “<a href="https://en.wikipedia.org/wiki/Syncategorematic_term">syncategorematic term</a>”. The term was so full of character I knew I had to bookmark it.</li>
<li>I love the <a href="https://breadandpuppet.org/cheap-art/why-cheap-art-manifesto">Why Cheap Art manifesto</a> by Bread and Puppet.</li>
<li>The 3D virtual museum linked in “<a href="https://dostoynikov.bearblog.dev/virtual-museum-for-my-wifes-artworks/">Virtual museum for my wife's artworks</a>” is <em>unbelievable.</em> I have never experienced a museum on the web like I have that one.</li>
<li>The “<a href="https://www.w3.org/blog/2026/historical-www-talk-archives-made-complete/">Historical www-talk archives made complete</a>” publication by the W3C is worth perusing. The “<a href="https://lists.w3.org/Archives/Public/www-talk/1993Apr/0035.html">Guido van Rossum writes a web robot that "tries to map out the entire web", distributed along with python 0.9.8</a>” link caught my attention in particular.</li>
<li>I haven’t read this piece in full, but I bookmarked “<a href="https://www.bbc.co.uk/future/article/20261023-how-solar-became-bigger-than-nuclear">'It's offensively cheap': How solar power is quietly becoming bigger than nuclear</a>” so I could link to it. Quoting from the piece: “By 2030, the IEA thinks solar power generation will have reached double that of 2025's levels, with solar overtaking hydro to become the world's third-largest electricity source.”</li>
</ul>
<p><em>Thank you for reading! <a href="https://jamesg.blog/email">My inbox is open</a> if you have any recommendations or ideas that follow from this weeknote.</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:'a53daa675859e811',t:'MTc5MzU2NTExMw=='};var l=window.parent.location,o;try{o=new URL(l.origin).origin}catch(e){try{o=new URL(new URL(l.href).origin).origin}catch(e){o=''}}var u='/cdn-cgi/challenge-platform/scripts/jsd/main.js?ray=a53daa675859e811',a=document.createElement('script');a.src=o?new URL(u,o).href:u;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://artemis.jamesg.blog">Artemis</a>
<a class="tag" href="https://breadandpuppet.org/cheap-art/why-cheap-art-manifesto">Why Cheap Art manifesto</a>
<a class="tag" href="https://dostoynikov.bearblog.dev/virtual-museum-for-my-wifes-artworks/">Virtual museum for my wife's artworks</a>
<a class="tag" href="https://en.wikipedia.org/wiki/Syncategorematic_term">syncategorematic term</a>
<a class="tag" href="https://francescrossley.com/links-fun-projects-joy-hope-community-and-more/">last edition</a>
<a class="tag" href="https://jamesg.blog/2026/09/05/creative-web-guide-zine">A Creative’s Guide to Personal Websites</a>
<a class="tag" href="https://jamesg.blog/email">My inbox is open</a>
<a class="tag" href="https://lists.w3.org/Archives/Public/www-talk/1993Apr/0035.html">Guido van Rossum writes a web robot that "tries to map out the entire web", distributed along with python 0.9.8</a>
<a class="tag" href="https://medienbaecker.com/articles/number-go-up">Number go up</a>
<a class="tag" href="https://pointinthecloud.com/">Colin</a>
<a class="tag" href="https://writingmonth.org/">Writing Month</a>
<a class="tag" href="https://www.afropoets.net/roberthayden2.html">Full Moon</a>
<a class="tag" href="https://www.bbc.co.uk/future/article/20261023-how-solar-became-bigger-than-nuclear">'It's offensively cheap': How solar power is quietly becoming bigger than nuclear</a>
<a class="tag" href="https://www.gutenberg.org/files/29433/29433-h/29433-h.htm">Ralph Waldo Emerson’s Nature</a>
<a class="tag" href="https://www.w3.org/blog/2026/historical-www-talk-archives-made-complete/">Historical www-talk archives made complete</a>
<a class="tag" href="https://www.youtube.com/watch?v=2P-uLAQ9FCI">Soon You’ll Get Better</a>
<a class="tag" href="https://www.youtube.com/watch?v=P8sj_MrjXl4">This cover of Bon Iver’s 715 Creeks.</a>
<a class="tag" href="https://www.youtube.com/watch?v=UaQ3VGeQ8Uw">Long Distance Love</a>
<a class="tag" href="https://www.youtube.com/watch?v=rTVQkeARBFw">Bon Iver’s Perth, performed by the Coastal Sound Youth Choir: Indiekör 2016</a>
in their season - James' Coffee Bloghttps://jamesg.blog/2026/11/01/in-their-season2026-11-01T00:00:00.000ZJames' Coffee Blog
<p>The leaves are in their “flying season".<br/>
Coating the skies in colour, brilliantly.</p>
<p>The trees are in their “wintering season".<br/>
Branches bearing and silvering, beautifully.</p>
<p>The sunrises are in their “November season".<br/>
Pink comes later in the day, unpredictably.</p>
<p>Leaves, trees, sunrises and all, perpetually<br/>
Delighting day, cyclically.</p>
Discoverability Is Only Solved If You Can Be Discovered - Kev Quirkhttps://kevquirk.com/discoverability-is-only-solved-if-you-can-be-discovered2026-10-31T13:58:00.000ZKev Quirk<div class="link card"><h2>Discoverability Is Only Solved If You Can Be Discovered</h2><p class="post-author">by Widdershins</p><p>This is a follow up to <a href="https://kevquirk.com/socialspec-seems-pointless">my post</a> where Widdershins talks about how they agree with certain parts of my argument, but that the discoverability piece is flawed.</p><p><a class="button" target="_blank" href="https://widdershins.verja.net/discoverability-is-only-solved-if-you-can-be-discovered/">Read post ➡</a></p></div>
<hr>
<p>Saw this in my RSS feed and thought it was an interesting take that's worth sharing - also Widdershins' blog is excellent. I'd recommend adding it to your feed reader.</p>
<p>I think the argument around other people controlling the gate to discoverability is a sound one, generally, but sites like <a href="https://bubbles.town" rel="noopener noreferrer">Bubbles</a> tend to add most sites, unless they're somehow obnoxious. So inclusion (and therefore discoverability) is only <a href="https://bubbles.town/faq" rel="noopener noreferrer">an email away</a>. Having said that, one person's obnoxious is another person's heaven, so it's all subjective.</p>
<p>Either way, it's an interesting debate and I'm glad we're having it. Go check out Widdershins' blog too!</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=Discoverability%20Is%20Only%20Solved%20If%20You%20Can%20Be%20Discovered">reply to this post by email</a>, or <a href="https://kevquirk.com/discoverability-is-only-solved-if-you-can-be-discovered#comments">leave a comment</a>.</p>
</div>Open Tabs October 2026 - The Weblog of fLaMEdhttps://flamedfury.com/posts/open-tabs-october-2026/2026-10-31T13:00:07.000ZfLaMEd<p>What’s going on, Internet? If you don’t follow my <a href="https://flamedfury.com/bookmarks/">Bookmarks</a> through the <a href="https://flamedfury.com/feeds/">feed</a>, then here’s the bookmarks from October. Enjoy.</p>
<p>Bit of a theme this month, the old web was messier and more fun, and running a site now keeps getting harder.</p>
<ul class="list">
<li>Jenny O’Connor on <a href="https://gurlworld.com/the-internet-used-to-be-embarrassing-and-thats-why-it-was-good/" rel="noopener">why the embarrassing internet was the good internet</a>. My old fan pages agree.</li>
<li>Winnie Lim on <a href="https://winnielim.org/journal/running-a-personal-website-is-not-fun-anymore/" rel="noopener">why running a personal website is not fun anymore</a>. Rough read. Between AI bots scraping the fuck out of the open web and hackers using AI agents to find holes, no wonder.</li>
<li>Aaron’s <a href="https://earlyweblinks.com/" rel="noopener">Early Web Links</a> is a one-person directory of personal homepages, covering all types of personal websites.</li>
<li>wulfpaper on <a href="https://wulfpaper.net/log/websites-shouldnt-be-hard/" rel="noopener">why making websites shouldn’t seem so hard</a>. Start with the writing, worry about code and design later.</li>
<li><a href="https://divergentrays.com/graphics" rel="noopener">A big alphabetised list of old linkware webset graphics sites</a>. Handy if you’re after that old-school look.</li>
</ul>
<p>For more, check out the <a href="https://flamedfury.com/bookmarks/">bookmarks</a> archive, and subscribe to the <a href="https://flamedfury.com/feeds/">feeds</a> if you want these as they happen.</p>
<p>Hey, thanks for reading this post in your feed reader! Want to chat? <a href="mailto:hello@flamedfury.com?subject=RE: Open Tabs October 2026">Reply by email</a> or add me on <a href="xmpp:flamed@omg.lol">XMPP</a>, or send a <a href="https://flamedfury.com/posts/open-tabs-october-2026/#webmention">webmention</a>. Check out the <a href="https://flamedfury.com/posts/">posts archive</a> on the website.</p>
Gig Review: The Witcher in Concert ★★★★☆ - Terence Eden’s Bloghttps://shkspr.mobi/blog/?p=770632026-10-31T12:34:18.000ZTerence Eden’s Blog<p>The most common way people experience classical style music these days is via movies and video-games. After seeing <a href="https://shkspr.mobi/blog/2019/11/review-the-force-awakens-live-in-concert/">The Force Awakens - live in concert</a>, I've become rather a fan of watching movies performed with a live soundtrack.</p>
<p>But what about watching a <em>video game</em> with orchestral accompaniment? We travelled up to Wolverhampton to see "The Witcher":</p>
<blockquote><p>A one-of-a-kind live event that transforms the lasting legacy and emotional storytelling of The Witcher 3: Wild Hunt into an immersive concert</p></blockquote>
<!--
👋👋👋👋👋👋👋👋👋
Welcome to Comment Club! This top secret bonus material is only available to people who read my HTML comments.
This was a TOP SECRET date with my wife. She didn't know what we were going to see or where we were going to see it. I'll admit, Wolverhampton isn't the most romantic destination for a mini-break! But the show was an excellent night out.
What's the best concert you've been to with a date?
OK, 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 looking out for more comments in future blog posts 😃
TTFN.
-->
<p>Obviously you can't have someone sat there with a PS5 controller while a band plays (although that'd be a hell of a Twitch stream!) instead a large screen projects various cut-scenes and in-game footage. It works pretty well - most of the popular scenes are in there (Geralt in the bathtub got a big cheer) although there was no hyper-extended Gwent session. The videos were a <em>little</em> repetitive. Some of the music is obviously composed to be swelling in the background and so repeated shots of swords looking cool or Geralt looking grumpy were sprinkled throughout.</p>
<p>The highlight was seeing <a href="https://percival.pl/percival/?lang=en">Percival Schuttenbach</a> play a variety of instruments with absolute joy and gusto. The entire band look like they're having a whale of a time, and the conductor encouraged us to whoop and cheer for our favourite scenes (with perhaps a few boos for some of the more notorious enemies).</p>
<p>As soundtracks go, it isn't particularly varied. There's a decent mix of tunes, some with singing, but they do tend to blur into one after a while. Nevertheless, a brilliant time for fans of the game who want to soak up the music.</p>
<p>The Witcher in Concert is on tour around the world now.</p>
<iframe title="The Witcher in Concert | Trailer" width="620" height="349" src="https://www.youtube.com/embed/VTsQzz2ukXA?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>
<h2 id="pre-and-post-show"><a href="https://shkspr.mobi/blog/2026/10/gig-review-the-witcher-in-concert/#pre-and-post-show">Pre- and Post-Show</a></h2>
<p>There was a merchandise stall hidden in one corner of the venue. Between doors opening and the start of the show (about an hour) a video looped through three screens - one of which encouraged up to share our photos with a hashtag. That's fine, but a few more videos wouldn't have gone amiss.</p>
<p>After the show, the conductor said the band would stick around for selfies - which was nice of them.</p>
<p>A touring show like this probably can't spare too much space for large scale models for people to pose with, or a couple of cosplayers to photograph, but it might have been nice if there were <em>something</em> to interact with before and after the show.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=77063&HTTP_REFERER=Atom" alt width="1" height="1" loading="eager">