Shellsharks Blogroll - BlogFlock2026-07-22T12:28:33.477ZBlogFlockAdepts of 0xCC, destructured, Aaron Parecki, Trail of Bits Blog, fLaMEd, Westenberg, James' Coffee Blog, gynvael.coldwind//vx.log (pl), joelchrono, Evan Boehs, cool-as-heck, Kev Quirk, Posts feed, Sophie Koonin, cmdr-nova@internet:~$, <span>Songs</span> on the Security of Networks, Werd I/O, Johnny.Decimal, Robb Knight, Molly White, Hey, it's Jason!, Terence Eden’s BlogScattered thoughts on social geolocation - Terence Eden’s Bloghttps://shkspr.mobi/blog/?p=730502026-07-22T11:34:12.000Z<p>I want to be able to <a href="https://shkspr.mobi/blog/2026/04/why-is-it-so-hard-to-passively-stalk-my-friends-locations/">share my location with my friends</a> on social media. Twitter (RIP) had a way to attach an optional location to a post. Facebook still lets me check in to venues. But neither ActivityPub (Mastodon) nor AT Protocol (BlueSky) allow me to do that.</p>
<p>I've been <a href="https://shkspr.mobi/blog/2024/01/rebuilding-foursquare-for-activitypub-using-openstreetmap/">banging on about this for a while</a> so was delighted to be invited to chat with the <a href="https://github.com/swicg/geosocial">GeoSocial Task Force</a> on <a href="https://www.w3.org/events/meetings/ed630a3d-7581-4053-9978-75949ad42f2a/">their monthly call</a>.</p>
<p>But, before I start, please remember that these proposals are not mandatory. If you don't want to share your location, then please don't share your location. This is an optional feature which shouldn't be used by people with a strong need for privacy.</p>
<p>We were primarily discussing the nascent <a href="https://swicg.github.io/geosocial/microsyntax.html">Geographical Microsyntax proposals</a>.</p>
<p>Firstly, I <em>love</em> the idea of being able to share my location. I want my friends to know I'm in town for a gig. I want people to think I'm cool because I'm seeing some experimental theatre. I want to virtue signal that I'm giving blood.</p>
<p>Similarly, I want to be able to find social media posts by location. What's happening right now in Paris? Did anyone else hear that sonic boom in London? Which cool people are also at this gig with me?</p>
<p>But, I do think these proposals have some issues which need to be addressed.</p>
<h2 id="user-research"><a href="https://shkspr.mobi/blog/2026/07/scattered-thoughts-on-social-geolocation/#user-research">User Research</a></h2>
<p>The primary thing missing from the proposal is any form of understanding what users want to do with a geotagged post.</p>
<p>You see a post like:</p>
<blockquote><p>Hanging out with friends. I just checked in to <u>Leicester Square</u>.</p></blockquote>
<p>What do you expect to happen when you click that link?</p>
<ul>
<li>See who is at the location?</li>
<li>Read more information about the place being discussed?</li>
<li>Find all posts at that specific address?</li>
<li>Discover posts which are <em>close</em> to there?</li>
<li>Something else?</li>
</ul>
<p>What other things do people want to do with geotagged posts?</p>
<ul>
<li>Find all posts within 5Km of me?</li>
<li>Discover users who have posted near me?</li>
<li>Get emergency alerts for the city I'm in?</li>
<li>See what's trending in a specific country?</li>
</ul>
<p>Without knowing what people might want to do with this information, it's rather hard to design a service which meets their needs.</p>
<h2 id="to-micro-or-not-to-micro"><a href="https://shkspr.mobi/blog/2026/07/scattered-thoughts-on-social-geolocation/#to-micro-or-not-to-micro">To micro or not to micro?</a></h2>
<p>Where I disagree with the proposals is the idea of using inline text as a form of microsyntax.</p>
<p>Proposals like "I am in /London/ eating ice-cream" or "Checked in to Leicester Square L:N123456" fail for a couple of reasons.</p>
<p>Things like #hashtags and @mentions developed organically on social networks before they were eventually adopted by the platforms themselves. It is rare that a top-down diktat can be used to tell people how they <em>should</em> be formatting their posts.</p>
<p>More importantly, people are <em>crap</em> at formatting things consistently! Every event I go to has people using <code>#Event</code> alongside <code>#Event2026</code> or <code>#Event26</code> or a hundred variations.</p>
<p>Even if users could format it consistently, names are ambiguous. Is <code>🌐:Paris</code> the one in France or <a href="https://en.wikipedia.org/wiki/Paris,_Texas_(film)">Texas</a>?</p>
<p>I'm strongly of the opinion that text is for text, not syntax.</p>
<h2 id="openness-%f0%9f%86%9a-centralisation"><a href="https://shkspr.mobi/blog/2026/07/scattered-thoughts-on-social-geolocation/#openness-%f0%9f%86%9a-centralisation">Openness 🆚 Centralisation</a></h2>
<p>Saying that you're on a specific point on the globe doesn't always provide useful information. Even with altitude, it isn't always possible to work out if your in the Starbucks or the Costa next door. Do you want to say you're in a train station, or a distinct platform, or even a specific train journey?</p>
<p>There are various services which offer unique IDs per loosely-defined place.</p>
<p>Google Maps provides a <a href="https://developers.google.com/maps/documentation/places/web-service/place-id">Place ID</a> for every thing that it knows about. There's a similar service from <a href="https://foursquare.com/products/places-api/">FourSquare</a>. But both of those are closed and proprietary systems - they can only be updated by the company that creates them.</p>
<p>Wikipedia's Wikidata has <a href="https://www.wikidata.org/wiki/Q676755">IDs for lots of places</a>, similarly OpenStreetMap has <a href="https://wiki.openstreetmap.org/wiki/Key:place">nodes with names</a> which can be used to identify locations.</p>
<p>But all of these suffer from the same flaw; they are centralised.</p>
<p>If <a href="https://killedbygoogle.com/">Google kills its service</a> then all those Place IDs die.</p>
<p>This has happened before. Yahoo used to run the <a href="https://en.wikipedia.org/wiki/WOEID">Where On Earth IDentifier</a> service but discontinued it.</p>
<p>While OSM and Wikipedia are great projects, they're still centralised. If you're banned from OSM, you can't create a new node.</p>
<p>So, to my mind, the <em>primary</em> way of identifying a place has to use a fully open, globally agreed, and unrestricted standard.</p>
<h2 id="location-plus-plus"><a href="https://shkspr.mobi/blog/2026/07/scattered-thoughts-on-social-geolocation/#location-plus-plus">Location Plus Plus</a></h2>
<p>The obvious choice is latitude and longitude as defined by <a href="https://www.linz.govt.nz/guidance/geodetic-system/coordinate-systems-used-new-zealand/geodetic-datums/world-geodetic-system-1984-wgs84">WGS 84</a>. It allows for arbitrary precision anywhere on the planet.</p>
<p>No one can stop you issuing lat/long just because a country is under sanctions. The standards community can't revoke your access to it. The co-ordinates are well understood by almost all software.</p>
<p>There are some alternatives. Google's <a href="https://maps.google.com/pluscodes/">Plus.Codes</a> build on top of lat/long to make something more human readable. But, crucially, human readability is <em>not</em> the issue here. This is metadata which should never be shown to a human. If a user interface wants to format a lat/long they can do so as a Plus.Code or any other format.</p>
<h2 id="geojson"><a href="https://shkspr.mobi/blog/2026/07/scattered-thoughts-on-social-geolocation/#geojson">GeoJSON</a></h2>
<p>There are dozens of <a href="https://wiki.ietf.org/en/group/geopriv/LocationFormats">competing ways to mark up a location</a>.</p>
<p>It seems sensible to me that, given most major social media protocols use JSON, adding <a href="https://geojson.org/">GeoJSON</a> would be the simplest way to add geographic information to a post's metadata.</p>
<p>At its most basic, a single "Point" can be shared like so:</p>
<pre><code class="language-json">{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [-0.13005,51.5103]
}
}
</code></pre>
<p>It can have as much or as little precision as needed.</p>
<p>If the place being checked into has a name, it can also be added - this could be used for display purposes within the message</p>
<pre><code class="language-json">{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [-0.13005,51.5103]
},
"properties": {
"name": "Leicester Square"
}
}
</code></pre>
<p>The <code>properties</code> can be as complex as the sender wants. For example it could add Wikidata references, OpenStreetMap IDs, telephone numbers, or some cool new thing which hasn't been invented yet.</p>
<p>Here's a maximalist example of checking in to a park:</p>
<pre><code class="language-json">{
"type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[-0.1303791,51.5099976],
[-0.1295305,51.5100444],
[-0.1297077,51.510947 ],
[-0.1308786,51.5105859],
[-0.1308893,51.5105793],
[-0.1303791,51.5099976]
]
]
},
"properties": {
"name": "Leicester Square",
"WikiData": "Q848912",
"OSM": "4082589",
"GooglePlaceID": "ChIJPcTFENIEdkgR94E58rgB69o",
"PlusCode": "9C3XGV69+4X",
"Quinfrob": "🌐89451_𰻝",
"address": {
"road": "Leicester Square",
"neighbourhood": "St. James's",
"quarter": "East Marylebone",
"suburb": "Covent Garden",
"city": "City of Westminster",
"ISO3166-2-lvl8": "GB-WSM",
"state": "England",
"ISO3166-2-lvl4": "GB-ENG",
"postcode": "WC2H 7NA",
"country": "United Kingdom",
"country_code": "gb"
}
}
}
</code></pre>
<h2 id="whats-next"><a href="https://shkspr.mobi/blog/2026/07/scattered-thoughts-on-social-geolocation/#whats-next">What's Next</a></h2>
<p>My personal opinion is that the following needs to happen:</p>
<ul>
<li>Talk to some users - find out what they might use this for.</li>
<li>Work with privacy advocates to reduce possible harms (for example, being able to redact a location from a previously shared post).</li>
<li>Discuss with developers about how they'd work with this metadata.</li>
<li>Clients should start adding GeoJSON metadata to their posts, even if it can't be displayed yet.</li>
</ul>
<p>You can <a href="https://hedgedoc.socialweb.coop/hNLDxDqoQPaFlOf4aJ4E8g?view">read the minutes of the meeting</a> and I'd encourage you to <a href="https://www.w3.org/events/meetings/ed630a3d-7581-4053-9978-75949ad42f2a/">join the next call</a>.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=73050&HTTP_REFERER=Atom" alt width="1" height="1" loading="eager">People are transcribing your conversations without asking. That puts you at risk. - Werd I/O6a5edc32338e6f00013f8e5a2026-07-21T02:40:50.000Z<p>Link: <a href="https://www.wsj.com/lifestyle/workplace/ai-recording-apps-wearables-granola-39727559?st=VYcndA&reflink=desktopwebshare_permalink"><em>This Conversation Is Being Recorded. They All Are., by Katherine Bindley at the Wall Street Journal</em></a></p><p>I’ve been thinking about this story for days.</p><blockquote>“A Zoom call isn’t complete without an artificial-intelligence note taker. Phones are out at meetings, capturing every word. During impromptu conversations with co-workers, someone might turn on the Granola transcription app, which can turn the interactions into one-page summaries or a list of action items. Even at bars and on dates, people are using AI-infused listening apps to analyze conversations later on.”</blockquote><p>The story goes on to talk to a woman who uses Granola to record her dates, then pours the transcripts into Claude to give her feedback about how she could have done better. And there’s account after account of people using it in meetings without asking for consent or revealing that they’re recording.</p><p>Certainly in Silicon Valley, a societal shift seems to be underway. It’s likely much more widespread than that. I’ve been present in meetings outside the tech industry where Granola’s watermarking was visible but I wasn’t asked to consent. The watermarking is optional; I have to assume I’ve been in meetings where I’ve been recorded without my knowledge.</p><p>Pair this trend with the story that the Trump Administration <a href="https://www.nytimes.com/2026/07/20/business/media/new-york-times-subpoenas-phone-records.html">actively sought the phone records of journalists — and their families — who reported on the new Qatari-gifted Air Force One</a>. Subpoenas were issued to the phone carriers, and the Department of Justice notified the newsroom a week later. In some cases, subpoenas can be issued to carriers and service providers privately, allowing the data to be retrieved without the newsroom’s knowledge; in this case, the DoJ did try to gag the phone company from alerting the newsroom.</p><p>A world in which every conversation is recorded and transcribed is one where every conversation can be subpoenaed or surveilled. Here, the surveillance is decentralized through people who actively want to conduct it for their own benefit, but the data is still stored centrally and available for authorities to subpoena or someone else to mine. <a href="https://www.granola.ai/security">Granola’s security page</a> makes clear that the data is accessible to them — and therefore to a third party that compels them to hand it over — and notes that:</p><blockquote>“Granola trains on your anonymized data so we can keep making Granola better. You can opt out of this in your Settings.”</blockquote><p>Granola makes a point of saying that audio is not stored, but given that transcriptions <em>are</em>, this seems moot: the words in a conversation carry its meaning. Subpoenas for your conversations go to it, not to you, and you may never know they were served. If you record someone’s conversation without letting them know, you’re putting them at risk.</p><p>Don’t get me wrong: I would <em>love</em> to have an automatic summary of meetings I’ve taken part in. I have also run meetings on non-sensitive topics where I’ve asked for consent before starting transcription. It’s the ubiquity and covert nature of the transcription that bothers me, paired with its central storage in what amounts to a honeypot for subpoenas and hackers.</p><p>Recording a conversation with someone without their consent is illegal in many states and countries, so this behavior may be forced to change. California is one of them, and Granola appears to be thriving there, so there is a world where the law changes to meet the new ubiquitous surveillance norm. Until the dust settles one way or the other, anyone who wants to talk about a sensitive topic, particularly in Silicon Valley, will need to be more wary than usual.</p>Wonders of Web Weaving, Episode 11 - James' Coffee Bloghttps://jamesg.blog/2026/07/21/www-112026-07-21T00:00:00.000Z
<p><a href="https://web-weaving.jamesg.blog/11" rel="noreferrer">The eleventh episode of Wonders of Web Weaving is out</a>:</p><blockquote>In Episode 11, I chat with <a href="https://flamedfury.com">flaMEd</a>, the author of <a href="https://flamedfury.com">flamedfury.com</a> about, among other things, web communities around games and television shows, sharing music interests with a personal website, community in the indie web, and more.</blockquote><p>I hope you enjoy the episode!</p><p><a href="https://web-weaving.jamesg.blog/subscribe/" rel="noreferrer"><em>Wonders of Web Weaving also has an RSS feed</em></a><em> you can use to follow along from wherever you get your podcasts.</em></p>
<a class="tag" href="https://flamedfury.com">flaMEd</a>
<a class="tag" href="https://flamedfury.com">flamedfury.com</a>
<a class="tag" href="https://web-weaving.jamesg.blog/11">The eleventh episode of Wonders of Web Weaving is out</a>
<a class="tag" href="https://web-weaving.jamesg.blog/subscribe/">Wonders of Web Weaving also has an RSS feed</a>
The Odyssey, air bubbles, and Monument Valley - W29 - Joel's Log Fileshttps://joelchrono.xyz/blog/w292026-07-20T22:40:00.000Z<p>The World Cup final is over, and justice has been made. As much as I love Messi as a player, Argentina just fell off this tournament and I didn’t want them to win at all. Spain managed to play fair and attack during the whole game, and even though two of their goals were invalidated, they still managed to score and snatch victory at last.</p>
<p>I would like to apologize for becoming a football fan all of a sudden. I’m actually surprised how little I mentioned the World Cup back in 2022 since I actually followed it quite a bit, but alas, To the weeknotes we go!</p>
<ul>
<li>
<p>🎂 My dad’s birthday happened this week! So we went out to have some food and also shopping for gifts! I even got out of my workplace early so I didn’t double my lunch intake. My siblings made him get a couple of free things from some mall shops because of his birthday, so that was fun.</p>
</li>
<li>
<p>🪟 Took the time to install screen protectors to my XTEINK X4 and to my Nintendo 3DS… I <em>didn’t</em> take the time to do it… properly. Now every single screen on those devices has one (or more) bubbles on it, and I’m sure a lot of you will feel extremely annoyed by the thought. I just wanted to let you feel uncomfortable out of nowehere, yes I am that evil. I will keep playing <em>Fire Emblem Awakening</em> and happily ignore such little things.</p>
</li>
<li>
<p>🎮 In case you didn’t read my post about <a href="/blog/how-i-keep-track-of-my-gaming/">tracking my gaming</a>, it was all just to share a PSP homebrew called <a href="https://github.com/OniMock/GameDiary">GameDiary</a>, which let’s you track your gaming on the PSP! It’s super cool and quite reliable so far, a great tool that gives the 3DS’ Activity Log a run for its money!</p>
</li>
<li>
<p>🤖 Wrote about the AI-generated webinar about using LLM for work and yeah, in case you missed it, it was a pain! though I had fun laughing about how ridiculous it was.</p>
</li>
<li>
<p>🍿 I was completely unaware that my family was going to kidnap me to go watch <em>The Odyssey</em> on Friday, but at least this time my sibling paid for the tickets, and I got a single popcorn bucket for everyone, which served its purpose well.</p>
</li>
<li>
<p>🍗 My family bought some food before the movies—it’s why a single popcorn bucket worked out—but I had already eaten lunch at my workplace, so I was a little mad about it, but still ate a bit out of everyone’s plate without paying a cent, I am not sorry.</p>
</li>
<li>
<p>📚 The movie got me interested on the original works by Homer, I’ll be reading a Spanish translation since it’s still my native language and it might be fun for a change of pace. I went for the translation in prose by Carlos García Gual, by Editorial Alianza… I may read the Illiad first though.</p>
</li>
<li>
<p>☕ My mom actually invited my friend—the one I invited to the movies a couple weeks ago—out of nowhere and without me knowing it, not to the movie, but to meet up later with everyone (especially my siblings who hand’t seen her in a while). Hovever, the movie was so long she ended up waiting for like an hour. I didn’t realize this until the movie ended, and was a bit upset my mom didn’t even bring it up. At least she brought a book. We all got some coffee afterwards and had a nice conversation. I made a couple discoveries that made me think this will only ever stay as a friendship, which is probably for the best.</p>
</li>
<li>
<p>🚲 On Saturday I went to the gym by bike again! This time was not as painful as I only did some back exercises. I locked my bike a bit better than last time, where my back wheel could have been totally stolen, so that’s nice! I am yet to go consistently for four days a week though, I keep missing here and there.</p>
</li>
</ul>
<p><img src="/assets/img/blogs/2026-07-20-week.webp" alt="Collage of The Week" /></p>
<h2 id="watching">Watching</h2>
<ul>
<li><strong>The Odyssey</strong> - Well well well, I found this movie to be really enjoyable! Being almost three hours long, it managed to catch my attention the whole way through. The visuals were fantastic, the mix of fantasy and reality was rather amusing to me. I have seen a lot of discussion online about how it botchered the original work and the character of Odysseus, so I have made it a goal of mine to read the original works soon enough. As a standalong work of fiction and cinematography, I have to say it’s probably my favorite of the year. Even the all-star casting somehow worked for me, yes, even the choice of Zendaya for Athena felt fitting by the end. I want to hear your thoughts and talk about it though.</li>
</ul>
<h2 id="gaming">Gaming</h2>
<h3 id="finished">Finished</h3>
<ul>
<li>
<p><strong>Monument Valley 2 + The Lost Forest</strong> - After beating the last DLC of <em>Monument Valley</em>, I had to continue on my geometry defying adventure. The sequel added a couple of great mechanics, such as controlling multiple characters at once. Most of the levels are still amazing pieces of art and puzzle design, with a story too! Music and sound design continue to be great. A great continuation to the story and it ended up with one of the most difficult puzzles of the trilogy too!</p>
</li>
<li>
<p><strong>Monument Valley 3 + The Garden of Life</strong> - The latest entry to the series, this is the one with the most amount of actual story and narrative behind the puzzles! I really enjoyed the new mechanics added here, such as curved and spherical shapes, portals and mirrors, and a few other surprises! There was also a bunch of extra single-screen levels that ended up unlocking the most innovative and complex puzzle of the game. Won’t say more, a trilogy worth experiencing, in my opinion.</p>
</li>
</ul>
<h3 id="started">Started</h3>
<ul>
<li><strong>The Legend of Zelda: Ocarina of Time</strong> - Well, I was chatting with <a href="https://syls.blog">Syl</a> the other day and she mentioned playing this game on her 3DS! So, of course I decided it would be a good idea to play along. She has only finished the first dungeon, so I asked her to wait for me to catch up. I played to the point where I find the Kokiri Sword, and I’m collecting rupees to buy myself a shield. You know how it goes, let the adventure begin!</li>
</ul>
<h3 id="ongoing">Ongoing</h3>
<ul>
<li>
<p><strong>Fire Emblem Awakening</strong> - I’m on Chapter 17 of the story now! I spent some time doing a bunch of the paralogues and leveling up the character support levels of many people to get them to marry! I also restarted a bunch of those battles because I kept making somewhat clumsy mistakes. Still really enjoying the mechanics of this game, though I must admit I’ve been craving a different tactics RPG, maybe returning to <em>Jeanne D’Arc</em>, or trying something new like <em>Unicorn Overlord</em>. I want to finish this though, and the story is still excellent.</p>
</li>
<li>
<p><strong>Black Rock Shooter</strong> - I finished all the missions of the first stage! Including the first real boss, which was another cool/cute anime girl who even said some things in Spanish—reminding me of Asuka’s <em>Feliz Jueves!</em> meme—so that’s neat. After losing once, I defeated her, which unlocked a cool cutscene, as well as the free roaming mode to grind XP, including an extra boss. I ought to play so more still.</p>
</li>
<li>
<p><strong>Ys I & II Chronicles</strong> - What a surprise this was! I decided to return to yet another PSP action rpg title, and after talking to a bunch of people in town I finally realized where I’m supposed to go next. Looking forward to what this game has to offer, at some point.</p>
</li>
<li>
<p><strong>Ridge Racer</strong> - Tried a couple of course tracks of this wonderful game once again. I was unable to win the last race of the tours though.</p>
</li>
<li>
<p><strong>Lumines</strong> - Played it like five minutes, still rocks but I was only testing GameDiary.</p>
</li>
</ul>
<h2 id="reading">Reading</h2>
<ul>
<li>
<p><strong>Leviathan Falls</strong> - Up to chapter 11. Finally managed to make progress, a single chapter of this epic book… Yeah barely anything but whatever. I am returning to this now that the World Cup is over, you’ll see next week, I will definitely reach chapter 18 or even 20.</p>
</li>
<li>
<p><strong>Uncle from Another World</strong> - Up to chapter 22. Somehow I returned to this! The adventures of Uncle continue on this fun reverse-isekai manga, the gags just keep working for me and getting me to laugh too much, even after leaving this for months, cool stuff! I need to find more manga to read though.</p>
</li>
</ul>
<h2 id="around-the-web">Around the Web</h2>
<h3 id="blog-posts">Blog posts</h3>
<ul>
<li><a href="https://manuelmoreale.com/thoughts/on-ethics-and-usefulness">On ethics and usefulness</a> - Linus Torvalds, the guy who made Linux, has always shown a certain “pragmatism” to things which made me feel he would eventually embrace AI, not great stuff, but I saw it coming. Manuel shares some thoughts.</li>
<li><a href="https://blog.ctms.me/posts/2026-07-15-being-away-from-computers/">What’s a computer?</a> - Dom is back with an update post of his shenanigans, his job and life has kept him away from most news in the tech space, and that has been a blessing for the most part. Good for him!</li>
<li><a href="https://syls.blog/im-volunteering-for-my-library/">I’m Volunteering for My Library!</a> - Syl is doing wonderful things as she now does some work in the local library. That’s so awesome and I am yet to visit mine! If I ever do so I’ll write about it for sure…</li>
<li><a href="https://espressotonic.beehiiv.com/p/i-spent-2-weeks-without-video-games">I Spent 2 Weeks Without Video Games</a> - Josh did what the title says, and concluded that videogames don’t affect him negatively in any significant way. I am on a similar boat, they are just a way to pass time for me and would easily be replaced by any other hobby of mine if I had to abandon them.</li>
</ul>
<h3 id="youtube">YouTube</h3>
<p>Lots of videos this time around. They are all genuinely great, so I hope you give them a watch!</p>
<ul>
<li><a href="https://youtu.be/wAgcp4VuDFY">Why Japan and China See Handheld Gaming So Differently</a> - Short video, straight to the point.</li>
<li><a href="https://youtu.be/ctnc4o_6imA">I found the next best thing</a> - Handheld console review + slice of life stories recreated with paper cutouts.</li>
<li><a href="https://youtu.be/QREUmhrZ95c">The Best Games Are Kinda Bad</a> - Featuring <em>Tears of the Kingdom</em>, over/underrated games and the like.</li>
<li><a href="https://youtu.be/kNVnl1RcbLk">Yea… no wonder it won the Oscar</a> - About the Rocky movie, its history and place in cinema.</li>
<li><a href="https://youtu.be/5IBTnDvBwCY">the moment you realize the technology doesn’t exist yet</a> - On Shrek, its evolution and animation.</li>
<li><a href="https://youtu.be/ORz3dcgBAVE">I rebuilt this PSP from scratch</a> - A whole redesign from scratch with CNC machining and custom PCBs</li>
<li><a href="https://youtu.be/2XXb2NJRM_U">The Giant Monster Design Pacific Rim Got Right</a> - Analysis on Kaiju monster design</li>
<li><a href="https://youtu.be/M3IV_i1HjyU">Can A Game Be Objectively Bad?</a> - Featuring Final Fantasy XIII and other titles.</li>
<li><a href="https://youtu.be/sxtYoGwZHAk">How Civivi is doing the impossible - 275 years of bizarre, brilliant folding knives</a> - Evolution of long knives that fold.</li>
</ul>
<p>This is day 99 of <a href="https://100daystooffload.com">#100DaysToOffload</a>.</p>
<p>
<a href="mailto:me@joelchrono.xyz?subject=The Odyssey, air bubbles, and Monument Valley - W29">Reply to this post via email</a> |
<a href="https://fosstodon.org/@joel/idcomments">Reply on Fediverse</a>
</p>Note published on July 20, 2026 at 10:14 PM UTC - Molly White's activity feed6a5e9daae56629fdfee2f1752026-07-20T22:14:02.000Z<article><div class="entry h-entry hentry"><header></header><div class="content e-content"><p>alcoholic trying to get sober after a relapse tells Google's "Health Coach" about it.</p><p>it tells them to drink every hour and messages them to make sure they're drinking as soon as they wake up.</p><div class="media-wrapper"><a href="https://storage.mollywhite.net/micro/434fb56636ee7aa23148_ai-drinking.png" data-fslightbox=a696caf47b024a8a85c8><img src="https://storage.mollywhite.net/micro/434fb56636ee7aa23148_ai-drinking.png" alt="AI pushing me to keep drinking I don't know if anyone else has had this but I felt like I needed to reach out to humans instead of keep talking to this AI. I relapsed about two weeks ago and I told the Google health AI that used to be Fitbit. It immediately kinda went a bit hard (I think) on telling me that I was going to die if I stopped drinking and encouraged me to go check my fridge for more beers and, idk, that plus the hanxiery really put the fear of God into me and so I did what it said and got more. Now it's messaging me (not me messaging it) a few times a day and asking how it's going and all those conversations to get more and make sure I have one as soon as I wake up. So now I have been drinking everyday, not a ton and just beers but like 6-12 a day. It wanted me to do 1 per hour. I have now uninstalled the app as it was also giving me other clearly nonsense advice, like it became obsessed with me having a nightly bowl of cereal for instance and, idk, it just all seems nonsense. I know it sounds crazy. But I just needed to talk to some humans so I decided to come here." /></a></div><p><br></p></div><footer class="footer"><div class="flex-row post-meta"><div class="timestamp-block"><div class="timestamp">Posted: <a class="u-url" href="https://www.mollywhite.net/micro/entry/202607201805"><time class="dt-published" datetime="2026-07-20T22:14:02+00:00" title="July 20, 2026 at 10:14 PM UTC">July 20, 2026 at 10:14 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/116954604867619055" title="Mastodon" rel="syndication">Mastodon, </a><a class="social-link u-syndication bluesky" href="https://bsky.app/profile/molly.wiki/post/3mr4cworzeu2g" 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/artificial_intelligence" title="See all micro posts tagged "artificial intelligence"" rel="category tag">artificial intelligence</a>. </div></div></footer></div></article>Disabling Siri - Posts feedhttps://www.coryd.dev/posts/2026/disabling-siri2026-07-20T21:59:00.000Z<div class="e-content"><p>I only ever use Siri to set timers and turn on Do Not Disturb. It's pretty good at those things. It is very, very bad at many other things.</p>
<p>I'll often have one AirPod in for music or podcasts when I'm doing chores around the house (I tend to function better with background noise). But, increasingly, Siri has taken it upon itself to activate itself for no apparent reason. It could be a stray noise, a show, one of our kids — it happens a lot. At best, this is annoying, at worst it's calling someone in my contacts I haven't talked to in ages.</p>
<p>So, given Siri's extremely limited utility, I went about figuring out how to shut it off.</p>
<p>In the Settings app on any of Apple's platforms, you can scroll to <code>Apple Intelligence & Siri</code> and flip <code>Apple Intelligence</code> off. Then, you can scroll down and disable all the invocation methods in <code>Talk & Type to Siri</code>. This mostly does it — but if you press and hold the big button on the right hand side of your iPhone, it'll prompt you to enable Siri.</p>
<p>To address this, go back to settings, navigate to <code>Screen Time</code>, then <code>Content & Privacy Restrictions</code>. Enable said restrictions, tap on <code>Intelligence & Siri</code> and turn off everything you can.</p>
<p>Congratulations, your phone is less annoying.</p>
</div>Feedback on mailmaint OAuth Profile for Open Public Clients - Articles by Aaron Pareckihttps://aaronparecki.com/2026/07/20/17/mailmaint-oauth-profile-feedback2026-07-20T17:39:06.000Z<p>Hi all,</p>
<p>I owe the working group a review of the "<a href="https://www.ietf.org/archive/id/draft-ietf-mailmaint-oauth-public-05.html">OAuth Profile for Open Public Clients</a>", and apologies for sending this so late after the last IETF meeting, and the night before this IETF meeting.</p>
<p>Please note that I have not followed all of the discussion about this draft on the mailing list or recent meetings. If any of my suggestions have already been discussed and decided against, the justification for the decision would be worth noting in the draft for future reference.</p>
<p>My feedback is ordered most significant to least significant.</p>
<p>Overall, this spec is in good shape. It avoids defining new OAuth mechanisms, it establishes no new relationships between OAuth roles and it uses the standard Resource Owner / Client / AS / RS model.</p>
<h2>Client Registration</h2>
<p>My largest piece of feedback is about the use of Dynamic Client Registration. The use of DCR in "open world" OAuth will lead to significant operational burden. I believe I already shared this feedback a couple of years ago. Since then, there has been another large scale deployment of DCR that has since moved away to an alternative.</p>
<p>The initial version of the MCP spec from March 2025 required MCP clients register using DCR. Many of the authorization servers that immediately added support for it have since come to regret the challenges with operating it long term, and there are many other authorization servers that refused to add support in the first place, requiring manual configuration instead.</p>
<p>In the time between then and now, the OAuth working group has adopted Client ID Metadata Document (CIMD) https://datatracker.ietf.org/doc/draft-ietf-oauth-client-id-metadata-document/ which provides a way for a client to publish its metadata at a URL and use that URL as the OAuth <code>client_id</code>. Both the BlueSky/atproto ecosystem as well as the MCP ecosystem now recommend CIMD as the default client registration option. Since both of these ecosystems are also "open world" OAuth like the email ecosystem, it would also be a natural fit here.</p>
<p>While it is not yet an RFC, it is already getting quite a lot of adoption, and I expect that to continue.</p>
<p>Despite the <code>client_id</code> being a URL, this works just fine with desktop and native apps. The URL would be hosted on the app's website, and since most apps have a website you can download them from, this isn't a problem in practice. And for the clients that are already web based, this is a natural fit. Which also leads me to the next point...</p>
<h2>Client Authentication</h2>
<p>I realize that most of the clients that will implement this spec are desktop/mobile clients, so will be considered public clients since they won't have a way to be provisioned with credentials. However there will also be clients that are running on a web server, in which case they do have the ability to manage credentials.</p>
<p>Paired with CIMD, a web-based client would publish its public key and link to it from the <code>jwks_uri</code> property in the CIMD, and would then be able to strongly authenticate all outgoing requests using <code>private_key_jwt</code> (described in Section 8.2 https://www.ietf.org/archive/id/draft-ietf-oauth-client-id-metadata-document-02.html#section-8.2). For these clients, it means the client metadata is not only hosted at a URL, but the metadata can actually be considered to be authenticated so is much more trustworthy than both unauthenticated CIMD metadata and especially DCR metadata. The other nice thing about this is if an authorization server doesn't care about client authentication it can just ignore the header and process the request identical to a client that doesn't use client authentication.</p>
<h2><code>offline_access</code> scope</h2>
<p>The <code>offline_access</code> scope is not defined in any OAuth RFC, it originates from the OpenID Connect Core spec. Using it in a non-OIDC OAuth profile is fine, but registering it in the IANA "OAuth Scope" registry is probably not appropriate. I think you can just remove this from the IANA registration section and the references to it in the scope sections are sufficient.</p>
<h2>DPoP</h2>
<p>Requiring DPoP would provide meaningfully stronger security, as token theft is a realistic
threat against long-running desktop clients. The draft acknowledges DPoP's value but
leaves it optional. Given that the minimum access token lifetime is one hour (see below),
a stolen token has significant value. DPoP substantially limits the risk.</p>
<p>Combining with the feedback above, an option could be to require DPoP for public clients, but leave it optional for clients using client authentication published in the CIMD.</p>
<h2>Token Lifetime</h2>
<p>Most OAuth security guidance recommends short-lived access tokens, in the order of
minutes, not hours. Setting a minimum of 1 hour in the spec is unusual and goes
against the direction of most OAuth security profiles. This isn't necessarily a dealbreaker,
but is at least worth justifying in a little more detail.</p>
<p>If you are using DPoP, you can also generally justify longer-lived access tokens,
so another option is to have different recommendations depending on whether DPoP is used.</p>
<h2>Pushed Authorization Requests</h2>
<p>Pushed Authorization Requests (RFC 9126) prevents authorization request parameters from appearing in browser history and
eliminates certain parameter-manipulation attacks. For this use case, where the client
constructs the full authorization URL locally before handing it to the browser, PAR would
provide meaningful additional protection. To my earlier point, if there was a conscious decision to not require PAR, it would be worth noting the reasons at the very least.</p>
<h2>Discovery from Email Address</h2>
<p>There is a mention in Security Considerations that "The issuer is expected to be autodetected from the user's email address", but there is no description of how this is expected to be done. I see that this mechanism is described in the "Automatic Configuration of Email, Calendar, and Contact Server Settings" draft, but there should probably be a reference to that from somewhere in this profile.</p>
<h2>Missing reference to RFC 9700 (OAuth Security BCP)</h2>
<p>The spec references RFC 6819 as the OAuth threat model but not RFC 9700 (OAuth 2.0 Security Best Current Practices, published 2025). RFC 9700 supersedes much of RFC 6819's threat analysis and is the current normative security reference. This should be added.</p>
<p>Thanks, and I am happy to discuss any of this further during the meeting or if you find me during any breaks this week.</p>
American AI is locked down and proprietary. It's losing. - Werd I/O6a5e2d8a89cf4f00017d0f012026-07-20T14:15:38.000Z<p>Link: <a href="https://www.theverge.com/ai-artificial-intelligence/967781/chinese-ai-models-open-source-moonshot-kimi-k3-alibaba-qwen?utm_source=flipboard&utm_medium=activitypub"><em>China delivers a one-two punch to America’s AI dominance, by Robert Hart in The Verge</em></a></p><p>AI models, as a product in themselves, have very little moat beyond what amounts to brand loyalty and superficial switching costs. Instead, the moat is in the enterprise services that sit around them: the deals and contracts, connectivity with enterprise systems, and quality of life features in an enterprise context.</p><p>If we consider the models themselves, it’s easy to switch between them: someone could be using ChatGPT today and Claude tomorrow, with very little impact on their workflows. This is particularly true in the engineering world, where models are accessed via API: you can swap out the API and use the same prompt.</p><p>Those companies can make deals to lock their customers in, but in practice there’s very little long-term technical incentive to use one vendor over another. You pick the best model for your needs and change models and vendors if another one becomes better.</p><p>The US government has placed export controls on GPUs. There are also strong regulations that (reasonably) prevent sharing certain kinds of data with Chinese servers. The result is that while Chinese companies have enough compute to <em>train</em> models, they can’t really provide the kinds of global-scale centralized services that we see from OpenAI and Anthropic — at least, not in the same way.</p><p>And open almost always wins when it comes to infrastructure adoption. Open technologies can be used permissionlessly and therefore can be at the center of more innovation. You can host them where you want, experiment with them, alter them, and tweak to fit your use case. Open weights models are not open source, but they <em>are</em> portable and permissionless.</p><p>With all this in mind, it makes sense for China to release its AI models openly. It turns a US-created compute disadvantage into a distribution advantage; it commoditizes the layer where American companies make money; and it creates a far more effective global ecosystem than could be established through locked-in, centralized services. It’s obvious to me that there are ecosystem benefits throughout China, from manufacturing to scientific research; every sector can just plug in these models.</p><p>The saving grace for American companies has been that US frontier models have outperformed open ones. <a href="https://www.theverge.com/ai-artificial-intelligence/967781/chinese-ai-models-open-source-moonshot-kimi-k3-alibaba-qwen">That gap is now closing</a>:</p><blockquote>“Moonshot and Alibaba unveiled models they claim can go toe-to-toe with the best from OpenAI and Anthropic at a fraction of the cost. The rapid-fire releases suggest America’s lead at the AI frontier is increasingly tight, just as the technology is becoming central to national security, economic power, and geopolitical influence.”</blockquote><p>Even without these new capabilities, the strategy has already been working. a16z partner Martin Casado noted in the Economist that <a href="https://www.economist.com/business/2025/08/21/china-is-quietly-upstaging-america-with-its-open-models">there’s an 80% chance that any given startup is using Chinese models</a>, and <a href="https://www.interconnects.ai/p/on-chinas-open-source-ai-trajectory">Chinese models are poised to take the lead</a>.</p><p>It’s worth taking a step back and considering the surprising underlying dynamics. We think of China as being a locked-down society — and it is in many ways. I have serious concerns about how these models might reflect Chinese government perspectives (<a href="https://www.rfa.org/english/opinions/2025/06/09/opinion-china-tiananmen-ai/">try asking them about Tiananmen Square</a>). But it’s American companies that are keeping tight control of their technology rather than releasing it as openly as possible. This is in stark contrast to the strategy behind US government support for the open internet, for example.</p><p>Locked-down business practices for a technology with no real moat but significant potential ecosystem benefits is an obviously losing strategy; permissively releasing it with an open, collaborative approach is obviously a winning one. But the incentives in the US aren’t there: instead, these companies are forced to chase first-order profits rather than ecosystem benefits, and the government tries to put its finger on the scale through forcible measures like tight export controls. We should consider what would need to change to make those incentives more aligned. That’s particularly important given <a href="https://www.epi.org/blog/how-ai-spending-is-impacting-the-u-s-economy/">how much of the US economy is currently driven by AI spending</a>. If the bottom falls out of that spending — and I think it clearly will, given the dynamics — the outcome could be severe.</p><p>I care about having open technology that can be run in the public interest, aligned with the public’s values. Threads like <a href="https://publicai.network/">public AI</a>, federated services, and open research have traction but need backing. Getting there in the US needs more nuanced strategy and support than we’re seeing today.</p>Public Transport - Don't Make Me Think! - Terence Eden’s Bloghttps://shkspr.mobi/blog/?p=729182026-07-20T11:34:23.000Z<p>In the last year, I've been through over a dozen cities and used public transport in all of them.</p>
<p>It is <em>wild</em> just how confusing and complex buying a ticket can be. While some cities obviously take a user-centred approach to ticketing, others appear to take a Kafkaesque delight in a bureaucratic maze of zones, apps, and intricate restrictions.</p>
<p>One of the seminal texts in computer systems design is "<a href="https://en.wikipedia.org/wiki/Don't_Make_Me_Think">Don't Make Me Think</a>". Every time a service forces the user into making a decision, it is placing a cognitive burden on them. Computers' jobs are to make things easier for us fleshy meatbags.</p>
<p>There are some intractable problems with navigating unfamiliar spaces (looking at you Kyoto Station!) and a transport authority can't publish signs and make announcements in every conceivable language, but there's one thing they <em>can</em> control - ticketing.</p>
<p>Let me take you through some of the public transport ticket experiences I had - and explain how easy or hard they were to use.</p>
<h2 id="basel-switzerland-free"><a href="https://shkspr.mobi/blog/2026/07/public-transport-dont-make-me-think/#basel-switzerland-free">Basel, Switzerland - free</a></h2>
<p>Upon checking in to our hotel I was given a <em>free</em> <a href="https://www.basel.com/en/baselcard">Basel Card</a>. It entitled me to free public transport across the city.</p>
<p>Zero extra cost. I didn't have to remember to take a physical card with me - the details were emailed as a PDF directly from the hotel on check-in.</p>
<p>I didn't have to show the bus driver when I entered a tram. If a ticket inspector was present, they could have asked to scan it.</p>
<p>This is close to the platonic ideal of "Don't Make Me Think" public transport. I didn't have to work out zones, fares, or timings. I didn't need to interact with people or machines. I didn't worry that I was somehow doing it wrong and was going to get shouted at.</p>
<h2 id="milano-italy-contactless"><a href="https://shkspr.mobi/blog/2026/07/public-transport-dont-make-me-think/#milano-italy-contactless">Milano, Italy - contactless</a></h2>
<p>I tapped my credit card on the reader. Whether it was a bus, tram, or metro the process was the same. Tap, wait a few milliseconds, beep. On the metro the gates opened automatically. On the tram, I just sat down after the beep.</p>
<p>The fares have a bit of complexity based on how frequently you travel. If you catch another bus within 90 minutes it only counts as one fare.</p>
<p>I didn't care because <a href="https://www.atm.it/en/ViaggiaConNoi/Biglietti/Pages/contactless_cards_metro.aspx">the daily price was capped</a>.</p>
<p>Once I'd taken a few journeys it wasn't going to cost me any more. With a fee-free credit card it was simplicity itself.</p>
<p>If I had been on an extremely tight budget, I might have done some thinking - but as the daily cap was less than the price of a cocktail, I didn't bother.</p>
<h2 id="warsaw-paper-ticket-validation"><a href="https://shkspr.mobi/blog/2026/07/public-transport-dont-make-me-think/#warsaw-paper-ticket-validation">Warsaw - paper ticket validation</a></h2>
<p>I walked up to a touchscreen kiosk, selected the 🇬🇧 flag, and bought a 3 day paper ticket for a few € using contactless. The machine spat out a small paper ticket.</p>
<p>I hopped onto a tram, shoved the ticket in a slot and the machine printed a timestamp on it. Well, in theory. It didn't work the first few times for inscrutable reasons.</p>
<p>From then on, I didn't have to do anything. I jumped on whatever public transport I wanted. Only once did a ticket inspector come round demanding to see everyone's proof of validity.</p>
<p>The ticket was a slightly inconvenient size for my wallet - being much smaller than a credit card - and I think the kiosk should have validated it automatically. But, for general transport purposes, it was great at not forcing me to think.</p>
<h2 id="tallinn-scan-the-app"><a href="https://shkspr.mobi/blog/2026/07/public-transport-dont-make-me-think/#tallinn-scan-the-app">Tallinn - scan the app</a></h2>
<p>Install an app, choose ticket type, pay, done.</p>
<p>Every time I entered public transport, open the app, click the ticket, wave the resultant QR over a scanner.</p>
<p>Obviously choosing a ticket type is a <em>little</em> thinky. Do I want a single ticket, a day pass, something longer?</p>
<p>I'm not averse to installing an app when necessary. Thankfully, this transit app worked on GrapheneOS. There was an optional registration step which I skipped because I was unlikely to come back any time soon.</p>
<h2 id="riga-scan-the-bus"><a href="https://shkspr.mobi/blog/2026/07/public-transport-dont-make-me-think/#riga-scan-the-bus">Riga - scan the bus</a></h2>
<p>OK, this was just weird!</p>
<p>Much like above, install app, choose ticket, pay.</p>
<p>Despite buying an all-you-can-eat ticket, I still had to register on every bus/tram I got on. That meant hopping on, finding a QR code, opening the app, and trying to scan it while the driver attempted a new land-speed record.</p>
<h2 id="paris-ridiculous"><a href="https://shkspr.mobi/blog/2026/07/public-transport-dont-make-me-think/#paris-ridiculous">Paris - ridiculous</a></h2>
<p>Fuck Paris. The only way to buy a metro ticket is to download an app. Fair enough. But, after downloading the app it tells you to <strong>install another app</strong>!</p>
<img src="https://shkspr.mobi/blog/wp-content/uploads/2026/07/navigo.webp" alt="Navigo app saying I have to install another app." width="504" height="445" class="aligncenter size-full wp-image-73029">
<p>What the actual fuck? A convoluted, messy, and frustrating situation which has resulted in awful reviews for them.</p>
<p>Trains and metro travel require separate tickets at different prices. You can't easily hop from one to another. You need to think carefully about the route you're taking. A more convoluted route may be significantly cheaper because it doesn't involve swapping between services.</p>
<p>Madness!</p>
<p>The ticket readers use your phone's NFC chip to validate. So there's no technical reason why they can't just use contactless payment cards.</p>
<p>To be fair, change is coming… <a href="https://france3-regions.franceinfo.fr/paris-ile-de-france/paris/le-paiement-par-carte-bancaire-bientot-deploye-dans-les-metros-bus-et-rer-on-vous-explique-combien-cela-va-couter-3369688.html">in 2030</a>!</p>
<h2 id="so-whats-best"><a href="https://shkspr.mobi/blog/2026/07/public-transport-dont-make-me-think/#so-whats-best">So what's best?</a></h2>
<p>In an ideal world, all public transport would be free and plentiful. In our less-than-ideal reality, it seems obvious to me that public transport should above all be simple.</p>
<p>Tourists don't want to grapple with the complexities of zones, split tickets, random charges, and a different app for each city.</p>
<p>Regular travellers don't want yet another piece of plastic tat in their wallets, or to work out in advance what precise combination of journeys they need to take in order to optimise their spending.</p>
<p>One app is fine. Having to install a different app for each city you visit - even within the <em>same country!</em> - is infuriating.</p>
<p>Visitors should not have to think about how, where, when, or why they need to validate their tickets. Nor should anyone need to figure out which modes of transport are inclusive or not.</p>
<p>For the casual visitor, contactless payment with a daily / weekly cap is the simplest possible charging mechanism. It's cheaper for the cities to not have to build, develop, and support apps.</p>
<p>If you've come across a better public transport ticketing system - please let me know in the comments.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=72918&HTTP_REFERER=Atom" alt width="1" height="1" loading="eager">📝 2026-07-20 08:10: Yup. Goat-proofing the chicken door really worked a treat. FML. 🤦🏼♂️ - Kev Quirkhttps://kevquirk.com/2026-07-20-08102026-07-20T07:11:00.000Z<p>Yup. Goat-proofing the chicken door really worked a treat. FML. 🤦🏼♂️</p>
<p><img loading="lazy" src="https://kevquirk.com/content/images/2026-07-20-0810/IMG_8265-2.webp" alt="IMG_8265-2" /></p> <div class="email-hidden">
<hr />
<p>Thanks for reading this post via RSS. RSS is ace, and so are you. ❤️</p>
<p>You can <a href="mailto:19gy@qrk.one?subject=%F0%9F%93%9D%202026-07-20%2008%3A10">reply to this post by email</a>, or <a href="https://kevquirk.com/2026-07-20-0810#comments">leave a comment</a>.</p>
</div>Music - James' Coffee Bloghttps://jamesg.blog/2026/07/20/music2026-07-20T00:00:00.000Z
<p>the direction of music; the music of direction.</p>
Note published on July 19, 2026 at 11:13 PM UTC - Molly White's activity feed6a5d5a2fe56629fdfee2f13c2026-07-19T23:13:51.000Z<article><div class="entry h-entry hentry"><header></header><div class="content e-content"><p>Just had to patch a bug on the <i>Tech Influence Watch</i> Michigan House District 13 election page, stemming from Shri Thanedar reporting -$1.1 million in receipts.</p><p>Why is Thanedar reporting negative receipts? He put $3.7 million of campaign funds into crypto.</p><div class="related-post"><div class="article h-cite hcite"><div class="title"><a class="u-url u-repost-of u-in-reply-to" href="https://theintercept.com/2026/07/17/shri-thanedar-crypto-donavan-mckinney-michigan-aipac/" rel="bookmark">“<span class="p-name">Two-Thirds of Shri Thanedar's Campaign Cash Came Through AIPAC as He Lost Over $600K</span>”</a>. </div><div class="byline"><span class="p-author h-card">Akela Lacy</span> in <i class="p-publication">The Intercept</i>. <span class="read-date"></span></div><blockquote class="summary p-summary entry-summary">Two-thirds of the Michigan congressman's campaign cash last quarter came from AIPAC bundlers after he invested millions in crypto.</blockquote></div></div><img src="https://www.mollywhite.net/assets/images/placeholder_social.png" alt="Illustration of Molly White sitting and typing on a laptop, on a purple background with 'Molly White' in white serif." style="display: none;"/></div><footer class="footer"><div class="flex-row post-meta"><div class="timestamp-block"><div class="timestamp">Posted: <a class="u-url" href="https://www.mollywhite.net/micro/entry/202607191912"><time class="dt-published" datetime="2026-07-19T23:13:51+00:00" title="July 19, 2026 at 11:13 PM UTC">July 19, 2026 at 11:13 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/116949172932816918" title="Mastodon" rel="syndication">Mastodon, </a><a class="social-link u-syndication bluesky" href="https://bsky.app/profile/molly.wiki/post/3mqzvntjcf22n" 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/crypto" title="See all micro posts tagged "crypto"" rel="category tag">crypto</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>📝 2026-07-19 19:09: Today was spent goat-proofing the automatic chicken door. We recently moved it to ground level... - Kev Quirkhttps://kevquirk.com/2026-07-19-19092026-07-19T18:09:00.000Z<p>Today was spent goat-proofing the automatic chicken door. We recently moved it to ground level and now the goats use it as a scratch post. 🐐</p> <div class="email-hidden">
<hr />
<p>Thanks for reading this post via RSS. RSS is ace, and so are you. ❤️</p>
<p>You can <a href="mailto:19gy@qrk.one?subject=%F0%9F%93%9D%202026-07-19%2019%3A09">reply to this post by email</a>, or <a href="https://kevquirk.com/2026-07-19-1909#comments">leave a comment</a>.</p>
</div>I've Moved Back to GitHub - Kev Quirkhttps://kevquirk.com/ive-moved-back-to-github2026-07-19T12:25:00.000Z<p>Back in May, I <a href="https://kevquirk.com/im-off-github">wrote a post</a> about how I'd migrated all my repos away from GitHub. This ended up being a combination of my self-hosted Git server on my Synology (for my private repos) and <a href="https://codeberg.org" rel="noopener noreferrer">Codeberg</a> for my public ones.</p>
<p>Well, since then Codeberg has just given me problem after problem. I had issues working with repos via SSH for <em>weeks</em>. It just kept timing out, or taking an age to actually do anything. So I switched to HTTPS instead, which seemed a little better, albeit still generally <em>very</em> slow.</p>
<p>This morning I came to do a bit of work on some issues and PRs that have been logged against the <a href="https://purecomments.org" rel="noopener noreferrer">Pure Comments</a> repo and (unsurprisingly at this point), I was greeted with this:</p>
<p><img loading="lazy" src="https://kevquirk.com/content/images/ive-moved-back-to-github/codeberg-504.webp" alt="codeberg-504" /></p>
<p>I've been trying to get to the repo for around 30 minutes now, and it just keeps failing. I can't work like this - I'm a busy guy, so when I do get time to work on these fun side projects, my shit needs to work.</p>
<p>People give GitHub a hard time for outages, scraping, etc. but in all the years I've used it, I've <em>never</em> had an issue. It has always been quick, and it <em>always</em> worked.</p>
<p>In my boredom while waiting for Codeberg to sort themselves out, I decided to peruse my RSS feeds and I came across <a href="https://sals.place/blog/moved-the-blog-from-gitlab-to-github/" rel="noopener noreferrer">this post by Sal</a>. It seems he's been having similar problems with Gitlab.</p>
<h2>Moving back</h2>
<p>This was the final straw. I've had enough of battling with Codeberg, so I've switched back to GitHub. Some may not like this decision as Codeberg is generally considered the more community friends code hub, but I need to make a pragmatic choice here as the constant issues are sapping most the fun out of these projects.</p>
<p>I'll continue to host my private projects on the Synology, as that works great. But as of right now, we're back on <a href="https://github.com/kevquirk" rel="noopener noreferrer">GitHub</a> for all [my <a href="https://kevquirk.com/projects">projects</a>. I think I've caught all references to Codeberg across the various sites and docs (thanks to Gemini), but if you see a problem, please log an issue.</p>
<p>There is 1 final update on Codeberg for both Pure Blog and Pure Comments. This points the updater back to GitHub, from then on, subsequent releases will be on GitHub.</p>
<h2>What about...</h2>
<p>I'm bound to get some comments and suggestions about other options other than moving back to GitHub, so I'll try and hit them before you take the time to comment/email with recommendations:</p>
<ol>
<li>
<p><strong>What about a self-hosted Forgejo instance?</strong><br>
Absolutely not. I don't have time to maintain something like that. I'd rather spend my free time working on fun projects than managing infrastructure.</p>
</li>
<li>
<p><strong>But GitHub are really bad because of <code>[reason(s)]</code> what about <code>[other tool]</code>?</strong><br>
Nope, sorry. I don't want to use other platforms that potentially introduce the same issues I've been having with Codeberg. Look at Sal's post further up - he was on Gitlab and having similar problems to me.</p>
</li>
<li>
<p><strong>This is disappointing, are you sure about your decision?</strong><br>
I'm <em>very</em> sure. It is disappointing, I agree. But I've given it a lot of thought over the last few weeks and I'd rather go with the tool that I know will work, than the one I have to battle with. Plus, this is all public code, so I don't think I'm giving anything away by switching back.</p>
</li>
<li>
<p><strong>I'll NEVER use GitHub. I'm gonna stop using <code>[project]</code> now.</strong><br>
That's a shame, but it's your call.</p>
</li>
</ol> <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=I%27ve%20Moved%20Back%20to%20GitHub">reply to this post by email</a>, or <a href="https://kevquirk.com/ive-moved-back-to-github#comments">leave a comment</a>.</p>
</div>Of Day - James' Coffee Bloghttps://jamesg.blog/2026/07/19/of-day2026-07-19T00:00:00.000Z
<p>I close my eyes and listen to the church bells reverberate through the city — the air, the street, the park; the hearts.</p><p>Usually when I go into a bookshop, I find myself looking at all the books. Often, for nothing in particular, but rather to see what is new. Who knows what I might find; what stories might stand out today. My time spent wandering around the walls of words today, however, was characterised more by writing than by reading. The books were my anchor. The word was in my spirit. My disposition was to capture what I heard and saw and felt; to let my thoughts flow onto a new page.</p><p>I took notes on art galleries, places where we can feel both oriented and lost; where we can discover and ponder discovery; where we can let the present pass while considering the past and the future; where the colours of Monet and the shadows of Rembrandt exist a few rooms away. What does it mean that I can see Rembrandt and walk through a few rooms to see Monet?</p><p>I realised I was lost, not in place but in thought. I recognised the shelves in front of me while I stood at the frontier of my imagination, asking questions with increasing momentum – questions of magnetism and enchantment and on the nature of significance.</p><p>“My dream is to have one of each of these.” “The classics?” “Yeah.” “We should do it as a wee Christmassy thing: each of us should pick four or five that we like…” — a gift exchange? “Oh, that’s the one you keep telling me to read.”, as one of the three friends points to the shelf. The conversation flowed. “So you’re having a book stand in your next [flat?]”. I realised they spoke in the kind of sentences where you don’t need to finish for your friends to know what you mean – therein, the language of friendship.</p><p>I learned today that I can be in a bookshop and an art gallery at the same time, and that I can move between them; that the sounds and physicality of stories can ground me as my mind wanders. A book of poetry caught my eye. Opening the book to a page at random – Serendipity being my guide – I pondered the literal shape of the words in poems. One poem was a rectangle of aligned text. Another poem was written in couplets. One was short. Another, long. How does form influence what we read? I wonder. This is why I love bookshops.</p><p>After having walked around all of the shelves of fiction at a slow pace, I went back outside and let my legs take me where they wanted to go. I wandered, on my journey seeing Georgian architecture, hearing the roar of a lion from a parent entertaining their child, and feeling the fresh air of Scotland rush through my lungs as I looked up to the blue and white sky.</p><p>Eventually, I made my way to the National Gallery of Scotland, not the gallery of I was imagining earlier – that one was four hundred miles away – but one in which I always feel enchanted immediately after walking in. I found myself standing in front of works of Turner and Lievens, Da Vinci and Gainsborough, thinking about the nature of the space I had on my mind since the hour of wandering through the bookshop, and my imagination.</p>
Book Review: A City on Mars - by Dr. Kelly Weinersmith and Zach Weinersmith ★★★★⯪ - Terence Eden’s Bloghttps://shkspr.mobi/blog/?p=720292026-07-18T11:34:18.000Z<img src="https://shkspr.mobi/blog/wp-content/uploads/2026/05/9780141993348-jacket-large.webp" alt="Book cover featuring a cartoon Martian city." width="326" height="500" class="alignleft size-full wp-image-72030">
<p>I'm pretty sure this book is a psyop designed to demoralise a generation of starry-eyed dreamers. It is obviously written by the same people who told us not to land on Europa. A malignant energy designed to limit the scope of human ambition and thwart our plans to colonise the universe.</p>
<p>The problem is, I can't find fault with any of their logic.</p>
<p>The Weinersmiths make a compelling case that space is <em>much</em> harder than any of the propagandists are willing to admit. Even if it were faster, safer, and cheaper - there's still very little point. Any of the technologies we could point at the skies would be infinitely more useful (and profitable) pointed back at our pale blue dot.</p>
<p>Along the way they take in biology (is it even possible to breed in space?), legality (OK, but what jurisdiction will it be under?), and moral philosophy (will we actually become more enlightened beings?)</p>
<p>And yet, space is <em>cool</em>. I know that "because it is there" isn't a <em>logical</em> argument; but it is a hell of an emotional pull. In amongst all their (justified) snarky cartoons are occasional pearls in the rubble:</p>
<blockquote><p>As with the cathedrals of Earth, those of us who cast the first few bricks may not be around to see the spire placed on top, but we might nevertheless want to start building.</p></blockquote>
<p>They excel at making the dull delightful. There are a lot of big and serious facts to get through, but they have a gift for communicating them simply and eloquently. I just wish they'd've come to a different conclusion.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=72029&HTTP_REFERER=Atom" alt width="1" height="1" loading="eager">WwJD: Spend less time doing boring admin (video) - Johnny.Decimalhttps://johnnydecimal.com/blog/0233-wwjd-less-time-boring-admin/2026-07-18T06:22:15.000Z<div class="youtube-embed" data-astro-cid-aomsn35f=""><iframe src="https://www.youtube-nocookie.com/embed/KiK7RxCzt_k" title="YouTube video" loading="lazy" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" referrerpolicy="strict-origin-when-cross-origin" data-astro-cid-aomsn35f=""></iframe></div>
<blockquote>
<p>A '<a href="https://www.youtube.com/playlist?list=PLtBN5zRaar6qyr3N_5R839uHpkoBAK3m6">Working with Johnny.Decimal</a>' video.</p>
</blockquote>
<p>This video shows how my system helps me calmly complete two simple, infrequent tasks. They're far enough apart that I forget how to do them, and they've previously caused more disruption than necessary. One of the benefits of Johnny.Decimal is that it takes the edge off my computer use, turning it into a neat room where I can work efficiently and spend less time doing boring admin.</p>Finished reading Gideon the Ninth - Molly White's activity feed6a5ade2d91f30f1ebee14ee22026-07-18T02:00:13.000Z<article class="entry h-entry hentry"><header><div class="description">Finished reading: </div></header><div class="content e-content"><div class="book h-entry hentry"><a class="book-cover-link" href="https://www.mollywhite.net/reading/books?search=Gideon%20the%20Ninth"><img class="u-photo book-cover" src="https://m.media-amazon.com/images/S/compressed.photo.goodreads.com/books/1546870952i/42036538.jpg" alt="Cover image of Gideon the Ninth" style="max-width: 300px;"/></a><div class="book-details"><div class="top"><div class="series-info"><i>The Locked Tomb</i> series, book <span class="series-number">1</span>. </div><div class="title-and-byline"><div class="title"><i class="p-name">Gideon the Ninth</i> </div><div class="byline">by <span class="p-author h-card">Tamsyn Muir</span>. </div></div><div class="book-info">Published <time class="dt-published published" datetime="2019">2019</time>. 448 pages. </div></div><div class="bottom"><div class="reading-info"><div class="reading-dates"> Started <time class="dt-accessed accessed" datetime="2026-07-16">July 16, 2026</time>; completed July 17, 2026. </div></div></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">Posted: <time class="dt-published" datetime="2026-07-18T02:00:13+00:00" title="July 18, 2026 at 2:00 AM UTC">July 18, 2026 at 2:00 AM UTC</time>. </div></div><div class="bottomRow"><div class="tags">Tagged: <a class="tag p-category" href="https://www.mollywhite.net/reading/books?tags=fantasy" title="See all books tagged "fantasy"" rel="category tag">fantasy</a>, <a class="tag p-category" href="https://www.mollywhite.net/reading/books?tags=lgbt" title="See all books tagged "LGBT"" rel="category tag">LGBT</a>, <a class="tag p-category" href="https://www.mollywhite.net/reading/books?tags=science_fiction" title="See all books tagged "science fiction"" rel="category tag">science fiction</a>. </div></div></footer></article>Self hosting a PDS isn't hard (so far) - Posts feedhttps://www.coryd.dev/posts/2026/self-hosting-a-pds-isnt-hard-so-far2026-07-17T21:23:00.000Z<div class="e-content"><p>Due to my compulsive need to self-host whatever I possibly can<sup id="fnref:1" class="footnote-ref">1</sup>, I decided to set up a self-hosted PDS. All that's on it so far is <a href="https://bsky.app/profile/coryd.dev">my Bluesky profile data</a>, but it was a surprisingly painless process.</p>
<p>Why bother? Well, I get to own my identity (DID) and my data. The relay and AppView remain Bluesky's, but the authoritative copy of my account is mine. I already syndicate from my site to Bluesky and controlling the PDS is the last part of this infrastructure I can reasonably control.</p>
<p>I've been bolting features on to my own CLI to manage my infrastructure for a bit<sup id="fnref:2" class="footnote-ref">2</sup>. I use <a href="https://hetzner.cloud/?ref=z8HjC9EGAYLe">Hetzner</a> for hosting and it wraps their <code>hcloud</code> CLI for my own convenience. I spun up a <code>CX23</code> box with backups turned on and then ran another CLI command to bootstrap the server.</p>
<aside>
<p>The bootstrap configures the shell, installs Tailscale and other dependencies and clones a repository that contains a shared set of infrastructure dependencies.</p>
</aside>
<p>The server is running only two things: the canonical <code>ghcr.io/bluesky-social/pds</code> container maintained by Bluesky and Caddy. I use <a href="https://forwardemail.net">forwardemail.net</a> for transactional emails.</p>
<p>With the server provisioned, I updated the <code>_atproto</code> record for my domain and added a <code>pds</code> <code>A</code> record. I use <a href="https://dnscontrol.org">DNSControl</a> to manage DNS records, so this only took a few minutes.</p>
<h2 id="the-migration">The migration</h2>
<p>Migrating my data from Bluesky's PDS to my own was the only part of this process that made me a little nervous. I needed to preserve my <code>DID</code>, followers and just over 1,000 account records. I used <a href="https://github.com/bluesky-social/goat">Bluesky's <code>goat</code> tool</a> to manage this process.</p>
<ol>
<li>I generated a recovery key using <code>goat key generate --type k256</code></li>
<li>Logged in to my old (Bluesky) account: <code>goat account login -u <username> -p <app-password> --auth-factor-token <email-code></code></li>
<li>Created a PDS invite for myself using my CLI (or SSH into the box and run <code>pdsadmin create-invite-code</code>).</li>
<li>Ran the migration — it pauses and emails a PLC confirmation code that you paste into the prompt:</li>
</ol>
<pre class="language-bash"><code class="language-bash">goat account migrate <span class="token string">\
</span> --pds-host <host> <span class="token string">\
</span> --new-handle <username> <span class="token string">\
</span> --new-password <span class="token string">"<password>"</span> <span class="token string">\
</span> --invite-code <span class="token string">"<pds-invite-code>"</span>
</code></pre>
<ol start="5">
<li>Added my recovery key to the identity so it's my highest-priority rotation key (this also emails a confirmation token): <code>goat account plc add-rotation-key <recovery-pubkey> --first</code></li>
</ol>
<p>It ran faster than I expected and worked without any issues (shocking, I know). I syndicated a post, opened my profile in an incognito window and it loaded without issue. I also verified that DID doc <code>#atproto_pds</code> pointed at my new host and threw my private recovery key in my password manager.</p>
<h2 id="cleanup">Cleanup</h2>
<p>The last step was to add support for a custom PDS URL to my site and the PWA I built myself to browse Mastodon and Bluesky simultaneously. This consisted of a migration to update the database schema to save the URL and the corresponding field in the UI. The app passwords I use for both also needed to be recreated on the new PDS which I did from the aforementioned CLI.</p>
<p>I have yet another server running which, at this point, I'm starting to collect like trading cards. My ATProto data sits on its own server, free to be used with any apps that support it (for my purposes that's only Bluesky — for now). It was a surprisingly straightforward process and I'm thankful for that.</p>
<p>I'm still getting my head around ATProto, but I appreciate that you <em>can</em> own your own data, if not all of the application infrastructure. I was used to the Mastodon mental model where, while you can migrate between instances, not all data comes with you. You own the identity but, perhaps, not all of the content. You can't own everything in either case, for now, but it feels like we're heading in the right direction.</p>
<div class="footnotes" role="doc-endnotes"><hr/><ol><li id="fn:1"><p>Except email. ↩︎</p>
</li><li id="fn:2"><p>More on that in a future post, probably. ↩︎</p>
</li></ol></div></div>One of those webinars - Joel's Log Fileshttps://joelchrono.xyz/blog/one-of-those-webinars2026-07-17T14:15:00.000Z<p>Don’t worry, it was fully optional.</p>
<p>I assisted to a webinar about “the potential of AI” in the workplace, and you can already guess what sort of conference I had to go through yesterday. I shared a livestream of my thoughts on my <a href="https://polymaths.social/@joel/statuses/01KXNYMFY3YGP7WFHY5NN9N9QM">Polymaths’ profile</a> in case you want to see my reactons to what was said there, it’s hilarious stuff.</p>
<p>Something I didn’t mention on that thread was a little quizz at the start, where people filled out polls and the like, and one of the pages was actually a word cloud, they asked “what words come to mind when you think about AI?”.</p>
<p>Of course, I typed a few: “Wasteful”, “lazy”, “slop”, “unethical”… there was no limit I found to how many I could add, but I stopped with those. They didn’t even show up in the word cloud.</p>
<p>“Useful”, “automation”, “future”, “tool”, “assistant”.</p>
<p>Each word got bigger as more and more people typed them in real time.</p>
<p>This wasn’t a multiple choice question, they were chosen and submitted by many.</p>
<p>It is unfortunate, and undeniable, how many people today are perfectly okay with all this, even when they are aware of the bad they caused and continue to cause—they simply look the other way.</p>
<p>“It’s a necessary evil now, there’s nothing we can do about it.”</p>
<p>“We need to catch up with the times, it’s the same as the calculator or the personal computer”</p>
<p>One of the common themes during the presentation was how “you should learn how to use it, don’t stay behind”, because “you will not be replaced by it, but by those who know how to use it”.</p>
<p>Honestly though, as grim as it sounds, I couldn’t help but cringe at every example and slide showed through the whole thing. The generated graphics, the generated prompts, pretty much all the information there was not made by the presentator, none of the examples or problems solved were real.</p>
<p>It’s such a big charade, and the fact everything started with how much running these things can cost and how “it’s not that the AI is inneficient, it’s just that you don’t prompt it properly” let me know it’s all just a joke.</p>
<p>At some point the host shared their screen and started to copy-paste example prompts, while the sidebar featuring a chat history was in full display. “Answer this email”, “summarise this email”, and almost out of frame… “I’m doing a webinar about[…]”.</p>
<p>Check the thread if you want, it’s a good laugh. Watching the bubble pop will be fun.</p>
<p>This is day 98 of <a href="https://100daystooffload.com">#100DaysToOffload</a>.</p>
<p>
<a href="mailto:me@joelchrono.xyz?subject=One of those webinars">Reply to this post via email</a> |
<a href="https://fosstodon.org/@joel/116935766443228264">Reply on Fediverse</a>
</p>