Episode 268: Dead Hanging Safari
Episode 268: Dead Hanging Safari
Podcasting 2.0 August 21st 2026 Episode 268 - "Dead Hanging Safari"
It's always DNS or CORS - and how your right brain is gating bad robots
Show Notes
-------------------------------------------------------------------------------------------------------------------------------------
00 - THE LOCATION TAG — SPEC TO DATASET TO GLOBE IN 48 HOURS
<b>The lead, and it's yours:</b> Wednesday afternoon Dave posted — "There is a new <b>locations</b> data set on the public datasets page... The db tables are still back-filling since I updated the db and aggregators to support the <b>new <podcast:location> tag format</b>. After a couple of days it should be mostly complete." He cc'd <b>@james, @alberto, @js</b> and then @DavidMarzalC. That cc list is the whole story — within 48 hours all four had done something with it.
@dave — the locations dataset post (20 Aug)
<b>The shipping trail:</b> web-ui <b>PR #608</b>, "add locations export to public data sets," branch <code>public_datasets</code> → merged to master the same afternoon. This is the first public dataset built on the new location tag format rather than the old one.
<b>Then somebody built the map.</b> By Friday morning <b>Alberto</b> had <b>radar.rss.io/#globe</b> up — a spinning globe of podcasts made in or about places on earth, drawn from the free dataset, most entries carrying full OpenStreetMap references. James put it in front of the OpenStreetMap community directly: "One for excellent people using @openstreetmap."
<b>James's review, and the two asks:</b> "This is so cool. Really shows the power of the location tag. The globe — would be nice to add <b>filters</b> to that (made in vs about). Or maybe just colour the dots differently? The next trick would be some <b>OSM lookups on the IDs</b> to work out what the places are."
<b>🔥 The flaw he found, and it's a good one:</b> "One drawback is that some people have chosen <b>'Queensland' as a location, which is 2.6x larger than Texas.</b>" — the granularity problem in one line. A location tag is only as useful as the smallest box someone is willing to put themselves in.
<b>Dave, on seeing it — and he is in Birmingham, Alabama:</b> "Wow, this is incredible. I already see a podcast from Birmingham that I didn't know was based here." ❤️ ❤️ <b>Dave, Friday:</b> "It's beautiful. I can see this data powering so many cool app and platform features."
@dave — Wow, this is incredible / Birmingham (20 Aug)
@dave — It's beautiful (21 Aug)
<b>The bug found by using it:</b> @alberto and @james noticed the <code>rel</code> property missing from the export. Dave: "That column is in there but I had to add it. I bet I left it out when I copied over the episode level response build code." Then: "I found the issue. I had made the change but <b>not deployed the new export script to production</b>. The 'rel' property should be in there now." Also confirmed: <b>channel-level only</b> in that dataset, not episode-level.
@dave — that column is in there but I had to add it
@dave — channel level only / rel now deployed
<b>😂 Community request of the week — @ChadF:</b> "we need someone to <b>add the FEMA regions</b> to this so I can add <b>FEMA region 3</b> to my podcast location." (Board: FEMA Region 6 is already broadcasting from the Heart of the Texas Hill Country.)
<b>Board questions:</b> does made in vs about want to be two tags or one tag with a rel? Do we want a recommended granularity (city, not state)? And is an OSM ID lookup something the Index should do once, centrally, so every app doesn't do it badly?
Podcast Index — public datasets
web-ui PR #608 — add locations export to public data sets
James on Mastodon — one for the OpenStreetMap people
-------------------------------------------------------------------------------------------------------------------------------------
01 - DAVE'S WORLD — THE MEMORY LEAK, THE REFACTOR, AND A WEBKIT WIN
<b>Podping / Iroh is eating RAM since DHT came out.</b> @suorcd and @alecksgates reported it; @ericpp confirmed on a Raspberry Pi 4: "It's strange because it <b>works fine for about a day and then ramps up the memory usage hard.</b>" Dave: "Previously it was v0.97. Maybe there was a <b>memory use regression when I removed DHT/DTT</b>. There were memory problems before that. I'll investigate."
@dave — memory use regression when I removed DHT/DTT
@ericpp — same on a Raspberry Pi 4
@dave — might have been an Iroh reload
<b>The target, stated:</b> "1 gig should be way more than I want it to need. I'd love it to run on <b>less than 500 MB of ram</b>. I'm in the middle of a PI pretty big refactor. Let me finish that up and I'll do this next on the list. Feel free to explore things yourself though if you are so inclined."
@dave — 1 gig should be way more than I want it to need
<b>And the suspect:</b> "I'm positive it's <b>QUIC</b>. I just don't know why." — with Dave asking what debugging would actually trace it. Board: this is last week's "DHT is out and podping is go" meeting its first bill.
@dave — I'm positive it's QUIC
<b>🏆 The WebKit fix landed.</b> Dave, Friday: "<b>It's merged!</b>" — a WebKit bug where a <b>CORS preflight hangs forever</b> if the server answers OPTIONS with valid Access-Control-Allow-* headers but a body that never terminates. WebKit was gating the preflight on the body finishing; Chrome and Firefox conclude it from the headers. So this was a <b>Safari-only hang</b>: fetch() never settles, bytes stream and get discarded until the page gives up. Fixed by concluding the preflight from status + headers as soon as they arrive. (Reported against bug 320657, reviewed by Youenn Fablet.)
<b>Why it matters here:</b> every browser-based podcast app and every web player that talks to an API cross-origin was one badly-behaved OPTIONS response away from hanging in Safari, with no error to show for it. Worth asking Dave what he was building when he hit it.
<b>Dave on the supply-chain attacks:</b> "These supply chain attacks are going to <b>bite vibe coders hard</b>. I'm sure agents are installing packages like crazy all the time behind the scenes <b>without any visibility from the user.</b>"
@dave — supply chain attacks and vibe coders
<b>And the one-liner:</b> Dave, over a screenshot — "<b>Does this seem like a system you would let do your taxes?</b>"
@dave — would you let this system do your taxes?
WebKit commit — CORS preflight hang, merged
-------------------------------------------------------------------------------------------------------------------------------------
04 - SPURLOCK'S DESK
<b>😂 The callback to last week's show.</b> @js on YouTube's own skip button: "youtube nearly always gives me a 'was this helpful?' dialog when I hit the <b>skip ahead</b> button. I don't usually give product feedback, but I make it a point to answer this one <b>every single time: 5 out of 5 stars ★★★★★</b>." — We spent all of 267 on Spotify's Skip Ahead. Google has been asking permission for theirs.
@js — 5 out of 5 stars, every single time
<b>Google ordered to stop making side-loading hard.</b> Judge Donato ruled Google added unnecessary "<b>anticompetitive friction</b>" and ordered it rectified — easier downloads of alternative Android app stores. Directly relevant to anyone shipping a podcast app outside Play.
@js — Donato on anticompetitive friction
<b>Google is buying Spirit Airlines' data.</b> "The data on the block includes Spirit Airlines' <b>employee emails, Microsoft Teams messages, spreadsheets, and calendars</b>, as well as marketing, productivity, and operations data. Google plans to use the data for product development and <b>training its AI models.</b>" A bankrupt company's internal comms are now a training-set asset.
@js — Spirit Airlines data for AI training
<b>The AI-host business, described without embarrassment</b> (NYT): at Inception AI, "Everyone paused to admire <b>Lila Walker</b>, a new knitting- and craft-focused persona... who had a chunky wool sweater, long, wavy tresses of red hair... <b>'Man, I'm crushing on her,'</b> [the] chief production officer said." (See also §05 — that company has just rebranded.)
@js — Lila Walker and the crushing-on-her quote
<b>MrBeast as a product of the metric</b> — Kevin Munger: "his videos do not have any point except to maximize viewership... He is <b>a creator without creative vision, and is in fact better understood as a creation of audience feedback filtered through the YouTube Apparatus.</b>" Pairs with §03.
@js — a creation of audience feedback
<b>The AI-authorship dodge</b> (Nature): "What I reject is the leap from 'AI wrote the sentences' to 'the expertise and thought leadership behind them must also be artificial'." @js's response is the better take: "the 'I-am-a-fraud'-inducing moment for him was not in fact doing it, but <b>getting caught by the nice editor.</b> Why so defensive? Why aren't you proud of it? <b>Don't bury it in a footnote, make Claude first author.</b>"
@js — make Claude first author
<b>Dave Winer, on agents in production:</b> "So I have no idea how useful these things could be if it destroys stuff in deployed projects with real users. <b>FeedLand was down for over an hour</b>, and stressed me out no end. Really fucked up."
@js — FeedLand was down for over an hour
<b>Apple, per Spurlock:</b> beta 5 and 6 still "slamming features into beta... not in fixes-removals-only mode yet." And on the new design language: "I feel like Apple has really <b>jumped the shark</b> — this 'new design' is not winning any medals." Also spotted: <code>AppManagedFeatures</code>, possibly the groundwork for restricting leased devices after missed payments.
@js — more churn than I expected (beta 5)
@js — Apple has jumped the shark
<b>Cursed news item of the week:</b> "LinkedIn Has Accidentally Become a Dating Site — Despite Its No-Romance Rules."
@js — LinkedIn has accidentally become a dating site
Ars Technica — Google ordered to make alternative Android app stores easier
Reuters — court delays hearing on Google's purchase of Spirit Airlines data
NYT — AI podcasts, fashion, pop avatars
Kevin Munger — We Need to Talk
Nature — AI wrote the sentences
Scripting News — Winer on an agent taking FeedLand down
-------------------------------------------------------------------------------------------------------------------------------------