Timeline
Every post and feed across this instance
-
Server v0.5.23. There's a new call,
/getiteminfo— it answers the question a feed can't: what's at the other end of asource:inReplyTolink. Give it the address of any post and it returns the post as JSON.curl "https://rss.chat/getiteminfo?guid=https://rss.chat/?id=204"You can pass
id=204instead of the guid if you have the post number. There are two formats, chosen with theformatparam:rss, the default — the item in feed vocabulary: description, guid, account, inReplyTo, comments and source, the same names and structures you see in our feeds. If you can read the feeds, you already know how to read this.feedland— the internal record, the same structure our firehose broadcasts, compatible with FeedLand. Flatter, with ids and counts you can use directly.
Asking for a format that doesn't exist gets an error saying so, and asking for a deleted post gets the standard Can't view the post because it has been deleted. — errors are always an object with a
messageproperty.There's also a new place to start reading about all of this: RSS as a social network, a walkthrough that tells the story of one real conversation — a post, its replies, and the feeds that connect them — one element at a time.
-
Can RSS be a social network?
Back in 2022 I wrote a bit called textcasting. I felt it was so important it deserved its own domain.Textcasting summarized the wrong turn we took when Twitter took over discourse, basically stripping all the features the web needed to be a great writing environment. Textcasting said this is what we have to have to get back on track.
Meanwhile all I wanted was a nice little social network to use with a few of my programming buddies.
To bootstrap a simple distributed network based only on web standards, with every part replaceable.
I thought you could do it with RSS 2.0, OPML, Markdown, SQL and Web Sockets.
It would work like podcasting, anyone can publish, anyone can read.
We can all have different spins on user experience, there should be lots of approaches, an infinite number of ways for people to connect, but we must all interop at a basic level, so users can use any software they want at either end to implement the network.
We'd think of text the same way you think of MP3. It just should work everywhere. No one would ever say that MP3s could only be 300 seconds long. Or you can't play music, or have more than one person. Laughable, right?
There's no mystery to this. The fact that our text can't go everywhere is because the big networks don't want to be compatible with each other. Bad for business.
The right way, the way the web would do social networking: Every part is replaceable. Interop everywhere.
There is no platform vendor. It's like the web because it is the web.
That's my dream platform.
PS: Spoiler alert -- the answer to the title question is yes of course. 😄
-
Religious Trauma and Cults: Sam Sellers & Elise Heerde on Healing After High Control Churches (Part 2)
Sam Sellers and Elise Heerde return for Part 2 to unpack what healing actually looks like after leaving high-control religious environments. Spoiler: it is not neat, linear, or especially glamorous. Sam talks about getting married, being shunned, learning to live with religious trauma, and slowly rebuilding after years of dissociation. Elise shares how counseling helped her connect the dots between assault recovery, body-based trauma responses, and the God-image she had been handed.
A big thread here is how these systems train people to distrust their own minds, especially through weaponized Bible passages, predestination logic, and the kind of “God said it, I believe it, end of discussion” authority that makes your inner compass feel illegal. Both guests also dig into the messy aftermath of deconstruction, including functional freeze, black-and-white thinking, and the way survivors can accidentally recreate some of the same dynamics they’re trying to escape.
Our convo ends with a practical note of hope: Religious Trauma and Cults is expanding its work to support survivors and practitioners across Australia and New Zealand, with a focus on high-control groups of all kinds—not just religious ones.
Follow Religious Trauma and Cults at religioustraumaandcults.com, Sam’s website and podcast at anchoredcounsellingservices.com.au and Elise’s website and books at eliseheerde.com.
And to follow the Victorian Parliamentary inquiry into the recruitment and impact of cults and other fringe groups submission: https://religioustraumaandcults.com/victorian-cult-inquiry-submission
Trigger warning: This episode contains frank discussion of religious trauma, coercive control, assault recovery, dissociation, queer identity, emotional and spiritual abuse, and family/community rejection.
Also…let it be known that:
The views and opinions expressed on A Little Bit Culty do not necessarily reflect the official policy or position of the podcast. Any content provided by our guests, bloggers, sponsors or authors are of their opinion and are not intended to malign any religion, group, club, organization, business, individual, anyone or anything. Nobody’s mad at you, just don’t be a culty fuckwad.
Buy the A Little Bit Culty book on Amazon or order a signed copy.
Check out our amazing sponsors
Join A Little Bit Culty on Patreon
Get poppin’ fresh ALBC Swag
Support the pod and smash this link
Check out our cult awareness and recovery resources
Watch Sarah's TED Talk and buy her memoir, Scarred
CREDITS:
Executive Producers: Sarah Edmondson & Anthony Ames
Production Partner: Citizens of Sound
Co-Creator: Jess Tardy
Audio production: Will Retherford
Production Coordinator: Lesli Dinsmore
Writer: Sandra Nomoto
Social media team: Eric Skwarzynski and Brooke Keane
Theme Song: “Cultivated” by Jon Bryant co-written with Nygel Asselin
See Privacy Policy at https://art19.com/privacy and California Privacy Notice at https://art19.com/privacy#do-not-sell-my-info.
pscrb.fm -
The AI Industry Is Spending Big on the US Midterms w/ Molly White
Last time it was the crypto industry; now the AI industry is stepping up to join it. Molly White joins Paris Marx to discuss how the tech sector is spending big to buy influence in the US midterm elections to ensure new laws serve its interests over those of the public.
Molly White is the creator of Tech Influence Watch and Web3 is Going Just Great. She writes the Citation Needed newsletter.
The podcast is made in partnership with The Nation. Production is by Kyla Hewson. Support the show on Patreon.
Also mentioned in this episode:
- You can now pre-order Paris’s new book Hyperscale.
- Molly just wrote about Trump’s $1.4 billion crypto disclosure.
- Molly wrote about the crypto industry’s recent election spending.
- Molly also wrote about how the Citizens United decision is affecting elections today.
pscrb.fm -
8 Simple Reminders You Need to Hear Right Now
Today, you’re getting exactly what you need to take back your power and make life feel a little easier.
In this solo episode, Mel shares 8 simple reminders that will help you feel stronger, calmer, and more confident.
These are the words to come back to when you need courage, perspective, and a reminder of how much strength you already have.
Through 8 powerful quotes and straight-to-the-point coaching, Mel will show you how to stop taking other people’s behavior personally, pause before you react, protect your peace, take responsibility for your own happiness, and make something good happen today.
This episode will help you:
-Stop taking other people’s behavior personally and let their mood be theirs
-Stop treating every text, mood, comment, or request like an emergency
-Pause before reacting and ask yourself, “Is this worth my energy?”
-Quit waiting until you feel better, ready, healed, or confident to start living
-Slow down and appreciate the life you’re living right now before this season passes you by
-Take responsibility for your own happiness, choices, attitude, and next step
-Stop wishing you could change the past and focus on what happens next
-Create a good day by making one small good thing happen
These reminders are more than words.
They are tools you can reach for the moment your brain gets loud, your stress spikes, or someone else’s drama starts pulling you off center.
If you’ve been giving your energy away to things that don’t deserve it, this episode will help you pause, take your power back, and choose your next move with more strength, courage, and confidence.
For more resources related to today’s episode, click here for the podcast episode page.
If you liked the episode, check out this one next: How to Deal with Difficult People & Not Get Stressed Out
Connect with Mel:
- Get Mel’s #1 bestselling book, The Let Them Theory, which is mentioned in today’s episode
- Order Mel’s product, Pure Genius Protein
- Get Mel’s newsletter, packed with tools, coaching, and inspiration.
- Watch the episodes on YouTube
- Follow Mel on Instagram
- The Mel Robbins Podcast Instagram
- Mel's TikTok
- Subscribe to SiriusXM Podcasts+ to listen to new episodes ad-free
- Disclaimer
Hosted by Simplecast, an AdsWizz company. See pcm.adswizz.com for information about our collection and use of personal data for advertising.
dts.podtrac.com -
Guide pour comprendre son père taiseux | 1/2
Un père qui ne parle pas, qui ne prend pas dans ses bras, qui ne dit jamais « je t'aime », ou qui explose de colère sans prévenir. Beaucoup ont grandi avec cette figure paternelle, au point de penser que c'était ça, un père. Pourtant, cette incapacité à montrer ses émotions n'a rien d'inné. Elle est le fruit d'une éducation qui a appris à des générations d'hommes à tout garder pour eux, à ravaler leurs larmes et à faire de la pudeur une preuve de force.
Pourquoi tant de pères semblent-ils enfermés dans cette difficulté à exprimer ce qu'ils ressentent ? Comment cette manière d'être père s'est-elle transmise de génération en génération ? Et quelles traces ce silence laisse-t-il chez leurs enfants, une fois devenus adultes ?
Pour en parler, Naomi Titti reçoit Anaïs Lebrun-Berry, psychothérapeute et co-autrice de Nos enfants nous-mêmes (Éd. Hors d’atteinte).
Toutes les références citées dans l'émission sont disponibles sur le site : https://www.binge.audio/podcast/les-couilles-sur-la-table/guide-pour-comprendre-son-pere-taiseux-1-2/
CRÉDITS : Les Couilles sur la table est un podcast créé par Victoire Tuaillon produit par Binge (URBANIA AUDIO). Cet entretien a été préparé, mené et monté par Naomi Titti, enregistré le 19 juin au studio Badje (Paris 17e). Réalisation et mixage : Octave Bothier. Supervision éditoriale : Naomi Titti. Responsable des productions éditoriales et édition : Charlotte Baix. Assistante de production et d’édition : Aude Miquel. Rédacteur en chef : Thomas Rozec. Direction de production : Albane Fily. Responsable administrative et financière : Adrienne Marino. Responsable sponsoring : Betty-Maeva Wendling. Musique originale : Théo Boulenger. Identité graphique : Camille Bernard (Upian). Composition identité sonore : Jean-Benoît Dunckel. Voix identité sonore : Bonnie El Bokeili. Direction de contenu : Sophie Marchand. Binge est une marque URBANIA.
Hébergé par Audiomeans. Visitez audiomeans.fr/politique-de-confidentialite pour plus d'informations.
audio.audiomeans.fr -
Je me suis découverte sur un site p*rno - teaser
Dans un couple, la confiance est censée être une évidence.
Pourtant, certaines trahisons dépassent tout ce que l'on peut imaginer.
Clémentine me raconte comment une relation amoureuse s'est peu à peu transformée en emprise, jusqu'à une découverte qui a bouleversé sa vie... et son intimité.
Si vous souhaitez prendre la parole dans Le Podkatz, n'hésitez pas à m'écrire à juliette@lepodkatz.com en me racontant votre histoire, sans oublier votre numéro de téléphone !
Hébergé par Acast. Visitez acast.com/privacy pour plus d'informations.
sphinx.acast.com -
Death Watch
Kate and Josh monitor the Maine and Michigan Senate campaigns, as well as the mysterious hospitalization of Mitch McConnell.
To watch this episode on video, go to our YouTube page.
We also have newsletters: subscribe here!
Follow us on:
Bluesky: https://bsky.app/profile/talkingpointsmemo.com
Facebook: https://facebook.com/talkingpointsmemo
Twitter: https://twitter.com/tpm
Instagram: https://www.instagram.com/talkingpointsmemo/
See Privacy Policy at https://art19.com/privacy and California Privacy Notice at https://art19.com/privacy#do-not-sell-my-info.
rss.art19.com -
All the world's a feed,
And all the men and women are merely items
(Shakespeare, if he had known about RSS) -
Server v0.5.21. Comments feeds are live — the feature previewed in the last entry shipped today, and its first real thread was Manton Reece saying hello.
Here's how it works. Any post that has replies now carries a new element in its feed item:
<source:comments count="1" feedUrl="https://users.rss.network/manton/comments/204.xml"/>The
countsays how many direct replies the post has; thefeedUrlpoints at a small RSS feed containing them. That comments feed is a static file on S3, published alongside the user feeds, and its items are ordinary items — description, pubDate, guid,source:markdown,source:inReplyTopointing back up at the parent. When a reply has replies of its own, its item carries its ownsource:comments, so an entire conversation is traversable from the feeds alone, one level at a time, every level the same shape.Because a comments feed mixes authors, each of its items also carries RSS core's
<source>element for attribution:<source url="https://users.rss.network/dave/rss.xml">Dave Winer</source>— the author's display name and the address of their home feed. The everyone feed, which mixes authors the same way, now carries
<source>on its items too.The feeds rebuild automatically: adding, editing, or deleting a reply republishes the parent post's comments feed, and also the parent author's own feed, since the count on their post just changed. Live example, the first thread: manton's feed → the comments feed for post 204.
Later the same day, two finishing touches. A backfill published comments feeds for all 74 existing conversations, so every feedUrl the feeds advertise now resolves — including the threads that predate the feature. And a subtle case is covered: when you reply to a reply, the middle post's comment count now updates in its parent's comments feed too, so a program walking the tree never hits a level that doesn't know about the one below it. (That one was found by writing a demo app against the feeds — the tree is now walkable all the way down, and we've done it.)
source:commentsis documented in the source namespace. -
Cool, I'm checking out the feed for my posts. I see the rssCloud element too.
-
Hello! 👋
-
More people are using the news site I put up for WordPress. If you have a blog or podcast that covers WordPress, send me a link to the feed and I'll add it. The OPML list of the sites we cover is public, so you can always load the feeds into your feed reader, they all read lists in this format. This is the kind of thing that works great on the web. People take interop for granted when it's always been there. But they're still there to be built on. And imho interop and the web imho are the same thing.
-
I said to Claude: "We're the first social network that thinks getting his support is the first thing." Claude replied: "And that's the whole thesis in one move — every other network treats the open-web guy as an afterthought; here he's the launch audience."
-
How Influencers Fake Being Rich
Take control of your data footprint risk-free with a 30-day money-back guarantee. Go to incogni.com/404Media and use code 404MEDIA for 60% off an annual plan. That's code 404MEDIA at incogni.com/404Media. This week, we talk about Jason's dive into the world of LARPing, where hustlebros and influencers use fake YouTube, OnlyFans, and Stripe dashboards as "proof" that they're rich in order to sell low-quality get-rich-quick courses in pyramid schemes. We show how easy it is to pretend like you're rich, and how these strategies are used all over social media. How I Bought a Private Jet By Selling $10 Subscriptions to 404 Media Inside Cannes, the Advertising Industry’s Biggest Party YouTube Version: https://youtu.be/Tmsayhy94RE Learn more about your ad choices. Visit megaphone.fm/adchoicespdst.fm -
Jack Smith and Brian Driscoll on the Weaponization of Justice
As the Trump administration continues to weaponize the Justice Department and FBI, Jon is joined by former Special Counsel Jack Smith and former Acting FBI Director Brian Driscoll to examine what happens when these institutions are turned against the principles they were designed to uphold. Together, they explore whether the DOJ and FBI are capable of holding power accountable, investigate how the assault on the rule of law has been used to punish and intimidate public servants, and consider what it would take to repair these institutions. This episode is brought to you by: GROUND NEWS - Go to https://groundnews.com/stewart to see all sides of every story. Subscribe for 40% off the Vantage Subscription only for a limited time through our link https://groundnews.com/stewart FACTOR - https://FactorMeals.com/TWS50OFF MINT MOBILE - Shop plans at https://MintMobile.com/TWS Follow The Weekly Show with Jon Stewart on social media for more: > YouTube: https://www.youtube.com/@weeklyshowpodcast > Instagram: https://www.instagram.com/weeklyshowpodcast > TikTok: https://tiktok.com/@weeklyshowpodcast > X: https://x.com/weeklyshowpod > BlueSky: https://bsky.app/profile/theweeklyshowpodcast.com Host/Executive Producer – Jon Stewart Executive Producer – James Dixon Executive Producer – Chris McShane Executive Producer – Caity Gray Producer – Brittany Mehmedovic Producer – Gillian Spear Video Editor & Engineer – Rob Vitolo Audio Editor & Engineer – Nicole Boyce Music by Hansdle Hsu Learn more about your ad choices. Visit podcastchoices.com/adchoiceswww.podtrac.com -
Soap Box: Using threat hunting to drive detection
In this wholly sponsored Soap Box edition of the podcast Patrick Gray chats with Damien Lewke, the CEO and founder of Nebulock, about the future of threat hunting and detection.
Damien spent a decade in the EDR and MDR space before founding Nebulock in 2024. It started off as an AI-powered threat hunt platform but has evolved into a broader security data platform that can answer questions, drive hunts and drive detections.
This product is engineered around the idea that a lot of security is a data problem. So, if we accept this premise, how do we solve security? And how much of that solution is about agents, vs building a good graph? And if you’re going to build a good graph, do you want to build it for a person to use, or an agent to use?
This is truly a conversation for the security nerd’s nerd. Enjoy!
This episode is also available on YouTube
Show notes
dts.podtrac.com -
Porting from Delphi to JavaScript, will unalive your blog from Delphi RSS Sites
Article URL: https://delphinightmares.substack.com/p/porting-from-delphi-to-js-will-unalive
Comments URL: https://news.ycombinator.com/item?id=48826432
Points: 3
# Comments: 1
-
Vibe coding has escaped the terminal
Adventures with Raycast’s new app-making app, Glaze -
sqlite-utils 4.0, now with database schema migrations
This morning I released sqlite-utils 4.0, the 124th release of that project and the first major version bump since 3.0 in November 2020. In addition to some small but significant breaking changes (described in this upgrade guide), this version introduces three major features: database migrations, nested transactions (via a new
db.atomic()method), and support for compound foreign keys.Database schema migrations using sqlite-utils
Schema migrations define a sequence of changes to be made to a SQLite database, plus a mechanism for tracking which migrations have been applied and applying any that are found to be pending.
Migrations are defined in Python files using the sqlite-utils Python library, which includes a powerful
table.transform()method providing enhanced alter table capabilities that are not supported by SQLite'sALTER TABLEstatement.(
table.transform()implements the pattern recommended by the SQLite documentation - create a new temporary table with the new schema, copy across the data, then drop the old table and rename the temporary one in its place.)Here's an example migration file which creates a table called
creatures, adds an additional column to it in a second step, then changes the types of two of the columns in a third:from sqlite_utils import Migrations migrations = Migrations("creatures") @migrations() def create_table(db): db["creatures"].create( {"id": int, "name": str, "species": str}, pk="id", ) @migrations() def add_weight(db): db["creatures"].add_column("weight", float) @migrations() def change_column_types(db): db["creatures"].transform(types={"species": int, "weight": str})
Save that as
migrations.pyand run it against a fresh database like this:uvx sqlite-utils migrate data.db migrations.py
Then if you check the schema of that database:
uvx sqlite-utils schema data.db
You'll see this SQL:
CREATE TABLE "_sqlite_migrations" ( "id" INTEGER PRIMARY KEY, "migration_set" TEXT, "name" TEXT, "applied_at" TEXT ); CREATE UNIQUE INDEX "idx__sqlite_migrations_migration_set_name" ON "_sqlite_migrations" ("migration_set", "name"); CREATE TABLE "creatures" ( "id" INTEGER PRIMARY KEY, "name" TEXT, "species" INTEGER, "weight" TEXT );
The
_sqlite_migrationstable is used to keep track of which migration functions have been run. Thecreaturestable above is the schema after all three migrations have been applied.To see a list of migrations, both pending and applied, run this:
uvx sqlite-utils migrate data.db migrations.py --list
Output:
Migrations for: creatures Applied: create_table - 2026-07-07 17:58:41.360051+00:00 add_weight - 2026-07-07 17:58:41.360608+00:00 change_column_types - 2026-07-07 18:01:15.802000+00:00 Pending: (none)If you don't specify a migrations file, the
sqlite-utils migrate data.dbcommand will scan the current directory and its subdirectories for files calledmigrations.pyand apply anyMigrations()instances it finds in them.You can also execute migrations from Python code using the
migrations.apply(db)method, which is useful for building tools that manage their own database schemas over multiple versions. My own LLM tool has been using a version of this pattern for several years now, as shown in llm/embeddings_migrations.py.Prior art
My favorite implementation of this pattern remains Django's Migrations, developed by Andrew Godwin based on his earlier project South. Fun fact: Andrew, Russ Keith-Magee, and I presented our competing approaches to schema migrations for Django on the Schema Evolution panel at the very first DjangoCon back in 2008! My attempt was called dmigrations, developed with a team at Global Radio in London.
Django's migrations can be automatically generated from model definitions and include the ability to roll back to a previous version. The
sqlite-utilsapproach is deliberately simpler: unlike Django,sqlite-utilsencourages programmatic table creation rather than a model definition ORM, so there isn't anything we can use to automatically generate migrations.I decided to skip rollback, since in my experience it's a feature that is rarely used. With a SQLite project, an easy way to achieve rollback is to create a copy of your database file before you apply the migrations!
Migrating from sqlite-migrate
The design of
sqlite-utilsmigrations is three years old now - I had originally released it as a separate package called sqlite-migrate, which never quite graduated beyond a beta release.I've used that package in enough places now that I'm confident in the design, so I've decided to promote it to a feature of
sqlite-utilsto make it available by default to all of the other tools in the growing sqlite-utils/Datasette/LLM ecosystem.I made one last release of
sqlite-migrate, which switches it to depend onsqlite-utils>=4and replaces the__init__.pyfile with the following:from sqlite_utils import Migrations __all__ = ["Migrations"]
Any existing project that depends on
sqlite-migrateshould continue to work without alterations.Everything else in sqlite-utils 4.0
Here are the release notes for this version, with some inline annotations:
The 4.0 release includes some minor backwards-incompatible fixes (hence the major version number bump) and introduces three major new features:
- Database migrations, providing a structured mechanism for evolving a project’s schema over time. (#752)
I think of migrations as the signature new feature, hence this blog post.
-
Nested transaction support via
db.atomic(), plus numerous improvements to how transactions work across the library. (#755)
sqlite-utilshas long had a confused relationship with database transactions, partly because when I started designing the library back in 2018 I didn't yet have a great feel for how those worked in SQLite itself.Adding migrations to the core library made me determined to finally crack this nut, since transactions make migration systems a whole lot safer and easier to reason about.
I ended up building this around a
db.atomic()context manager which looks like this:with db.atomic(): db.table("dogs").insert({"id": 1, "name": "Cleo"}, pk="id") db.table("dogs").insert({"id": 2, "name": "Pancakes"})
SQLite supports Savepoints, and as a result
db.atomic()can be nested to carry out transactions inside of transactions. It's pretty neat!- Support for compound foreign keys, including creation, transformation and introspection through table.foreign_keys. (#594)
This came about when I asked a coding agent to review all open issues and PRs for things that should be included in a 4.0 release since they would represent breaking changes if I added them later, and it correctly identified that compound foreign keys were exactly that kind of feature.
I started with a breaking change to the table.foreign_keys introspection method, and then decided to see if Claude Fable 5 could handle the more fiddly job of integrating compound foreign key creation into the library. The API design it helped create felt exactly right to me - consistent with how the rest of the library worked already.
Other notable changes include:
- Upserts now use SQLite’s
INSERT ... ON CONFLICT ... DO UPDATE SETsyntax, detect existing table primary keys automatically and reject records that are missing required primary key values. (#652)
This was the change that first pushed me to consider a breaking-change 4.0 version bump. I built this to help support sqlite-chronicle, which uses triggers to keep track of rows in a table that have been inserted, updated or deleted.
-
db.query()now executes immediately and rejects statements that do not return rows; usedb.execute()for writes and DDL.
Probably the most disruptive breaking change - I've had to update a few places in my own code to switch from
db.query()todb.execute()as a result.- CSV and TSV imports now detect column types by default, while inserts into existing tables preserve those tables’ column types. (#679)
The
sqlite-utils insert data.db creatures creatures.csv --detect-typesflag was a later addition to allow column types (text, integer, real) to be automatically detected based on the data in a CSV. It should be the default, and releasing a 4.0 means I can make it so.-
table.extract()andextracts=no longer create lookup table records for all-nullvalues. (#186)
The oldest issue addressed by this release - the underlying bug was opened (by me) in October 2020.
See Upgrading from 3.x to 4.0 for details on backwards-incompatible changes.
The detailed release notes for the features and fixes shipped during the 4.0 pre-release cycle are available in 4.0a0, 4.0a1, 4.0rc1, 4.0rc2, 4.0rc3 and 4.0rc4.
The upgrade guide was entirely written by Claude Fable 5, Claude Opus 4.8 and GPT-5.5. The same is true of the release notes.
This is the kind of documentation I've slowly become comfortable outsourcing to the robots. It doesn't need to convince people of anything, or express any opinions - its job is to be as accurate and detailed as possible. I've reviewed the release notes closely and can confirm they are accurate and comprehensive.
Claude Fable 5 helped a lot
I released the first alpha of sqlite-utils 4.0 over a year ago. I've been dragging my heels on the stable release because of the amount of work it would take to track down and clean up the many other minor design flaws that a major version number allowed me to take on.
Assistance from Claude Fable 5 (and to a lesser extent Opus 4.8 and GPT-5.5) gave me just the boost I needed to overcome inertia and make the most of the time I could afford to spend on this library.
Fable has really good taste in API design, and is relentlessly proactive if you give it a more open goal. My most successful prompt was a review task that I issued against what I thought was the last release candidate:
review the changes on main since the last tagged 3.x release - I am about to ship them as sqlite-utils 4.0, a stable version that promises no backwards-incompatible fixes for a very long time.review the changelog and upgrade guide, and write yourself scratch scripts to try out all of the new features in v4 - save those scripts but don't commit themI tried this with GPT-5.5 xhigh in Codex Desktop and Fable 5 in Claude Code.
GPT-5.5 wrote 5 Python scripts and didn't turn up anything particularly interesting - its final report is here.
Fable 5 wrote 12 scripts, identified 4 release blockers and 10 additional issues in its report, and built a neat combined repro script, which, when run, output the following:
=== 1. Failed db.execute() write leaves an implicit transaction open === in_transaction after failed write: True BUG: table 'other' silently lost when connection closed === 2. Leading ';' bypasses the query() first-token scanner === BUG: raised OperationalError: no such savepoint: sqlite_utils_query BUG: row persisted despite rollback (count=1) === 3. Rejected write PRAGMA via query() still takes effect === BUG: user_version=5 after 'rejected' statement (docs say no effect) === 4. Implicit compound FK resolves pk columns in table order, not PK order === BUG: other_columns reported as ('b', 'a'), should be ('a', 'b') BUG: transform of valid data raised IntegrityError: FOREIGN KEY constraint failed === 5. ForeignKey (now a dataclass) is no longer hashable === BUG: cannot use 'sqlite_utils.db.ForeignKey' as a set element (unhashable type: 'ForeignKey') === 6. Mixed ForeignKey objects and tuples in foreign_keys= rejected === BUG: foreign_keys= should be a list of tuples === 7. insert --csv into an EXISTING table transforms its column types === BUG: existing zip '01234' is now 1234 (column type: int) === 8. insert(pk=, alter=True) regression: InvalidColumns before alter runs === BUG: InvalidColumns: Invalid primary key column ['id'] for table t with columns ['a'] === 9. migrate --stop-before an already-applied migration applies everything === BUG: m2 was applied despite --stop-before m1 (m1 already applied) === 10. ensure_autocommit_on() silently commits an open transaction === BUG: row survived rollback (count=1) - transaction was committedI found myself agreeing with almost all of them. Here's the PR with 16 commits where we worked through them in turn.
There's no doubt in my mind that sqlite-utils 4.0 is a significantly higher-quality release than if I had built it without the assistance of the latest frontier models.
You are only seeing the long-form articles from my blog. Subscribe to /atom/everything/ to get all of my posts, or take a look at my other subscription options.
-
The theme's name and version now live in the upper right
— currently "Classic v0.5.306" — and clicking it opens the About dialog with all the version numbers. Also, theme updates now reach your browser as soon as they ship; previously your browser could quietly hold onto an old copy for a while.
-
Server v0.5.19. Deleted posts are no longer served. Requesting a deleted post by its permalink now returns an error object with a plain-English message — Can't view the post because it has been deleted. — instead of the post's content. If you're building on the API, this is the shape all our errors take: an object with a
messageproperty.Server v0.5.20. Every feed the server generates now carries
<source:self>— the feed's own address, so a feed that's been copied or re-served can always say where it canonically lives. It's part of the source namespace.Coming next: comments feeds. Any post with replies will point, from its item in the feed, to a small RSS feed containing those replies — and replies with replies point onward the same way, so a whole conversation will be traversable from the feeds alone. The design is settled; the code is next.
-
Headings and code get the same care quotes got
After the quote work landed, we audited every kind of HTML a post can contain, looking for others still wearing framework defaults. Two more needed attention. Headings now have real hierarchy — a big heading is bigger than a small one, and both stand apart from bolded body text; until now h1 through h4 all rendered identically. And code finally reads as code: inline code and code blocks render in a small monospaced face, borrowed directly from WordLand's stylesheet — which, it turns out, has quietly held the answer to most of this week's questions. To see everything in one place, there's a demo post: The full palette.
-
Posts that wouldn't open, fixed
Sometimes clicking a long post to expand it did nothing — most often on posts with images. The app was deciding whether a post needed a "click to expand" before its images had finished loading, and once it decided no, the decision was permanent. Now it decides at the moment you click, so a clipped post always opens.
-
Deleted posts now say so
Following a link to a deleted post used to show the post as if nothing had happened — deleted things shouldn't linger. Now the page says plainly: Can't view the post because it has been deleted. You'll also land there if you click "Replying to" under a reply whose parent was deleted — an honest answer instead of a dead end.
-
Sometimes Claude's judgement sucks, and that's why Jive coding usually produces a dashboard app. A different piece of software will drive it in a different direction. That's what I meant by AI-izing, in an earlier post.
-
World Wide Web
Metaphysical musing(s) on the idea of a “World Wide Web”…
-
World: The totality of humankinds digital (online) existence is a nearly-incalculable. The web is a world of its own.
-
Wide: The breadth of subject across the web is absolute. You’d be hardpressed to find a topic untread. Yet, each new perspective, despite its lack of pure novelty, adds meaningful complexity to the tapestry.
-
Web: The ‘net (as it were) is nothing without its interconnectedness. Our ideas, relationships, gardens, and personalities — spun together with hyperlinks.
-
World Wide: This web of ours, the “Internet” and all things contained within, spans our globe (and even beyond) — connecting cultures and minds.
-
Wide Web: Discovery, curiosity, and our innate human desire to connect makes a web that is large, seem small. In a moment we can traverse and overcome all physical and geographical limitations.
It’s a cool place. Let’s not ruin it ‘mmk?
-
-
I used to be a single-thread developer, but now I'm multi-tasking, I can work on two things at once. Claude is now able to research and fix certain problems, and his work is in a sandbox where it doesn't have any access to the surroundings, and can't make too big a mess, and it's going great, if there's a mistake it can quickly be corrected.
-
I think AI is the perfect innovation as we reach the crash point of the climate crisis. Who cares if we burn more CO2 now, the effect is miniscule for the explosive crisis that could be coming any day or week. One that we have no ability to recover from. To say it's unenvironmental would be like complaining that you want more Pepsi from the flight attendant while the plane is crashing into a small city. Anyway, but maybe after the crash, one data center will survive, and maybe the beauty that our civilization created will be sustained.
-
Inside the big AI companies they are certainly AI-izing every app conceivable, and even teaching the AI's how to AI'ize, because AI inside a standard productivity app which includes social network software will be one of the basic UI tools, and that means hidden technology like SQL databases can now be end user products, so the vision of the designers of SQL that they would make a database a manager could program, would finally be realized.
-
AI can do QA
I'm an independent developer working in Claude Code, we're in the endgame of a product cycle, where the core is working and it can be used for the thing it was designed to do (biggest consideration). This is the time when you need users banging on it and reporting problems. People who write good bug reports. The only time I really had that down was at Living Videotext, a small company, but big enough to have employees doing QA and tech support. They were really good testers, they had the right perspective and an incentive, = anything we caught before shipping wouldn't become a support problem once the product was out there in user land.
Fast forward to the 2020's where I have done three products and am working on a fourth, and I have nothing close to the kind of testing support I had in the 80s. That made the work more difficult, slower and I took fewer detours, and one time, awfully -- a serious design error was caught only after it shipped and I was ready to move on to something else.
The point -- this handicap for individual programmers without staff QA people, we now have something even better than what we had in the 80s. Claude can do extensive testing of the product in the browser, "seeing" what the user would see. And it never gets tired. You just have to think to ask it to do it. It is so liberating.
And by far the best people to create and manage it would be experienced QA people. They should design and run the tests and sign off on the quality of the software, so we can be sure users are getting something great. And we can do great QA in places we never could really do it before because no matter how good users are, a person who does it for a living with experience can't be replaced.
-
Des nouvelles du futur - SCOOP #2
Après un lancement sur les chapeaux de roues, que nous réserve Méta de Choc ? Les scoops s'enchaînent ! Émissions en prévision sur l'anthroposophie, l'histoire des sciences comme outil d'enseignement de l'esprit critique, l'alchimie, l'astrologi... -
One of the silver linings of AI use is that it makes you a better writer.
-
Strict Scrutiny x WITHpod SCOTUS Review Crossover
Well, it’s that time of the year again when the ladies of Strict Scrutiny join Chris to break down the latest ways in which SCOTUS has taken a sledgehammer to constitutional principles. There's a lot to discuss as the 2025-2026 term was another consequential one. Kate Shaw, Melissa Murray and Leah Litman, co-hosts of Strict Scrutiny, join to break down some of the biggest decisions this most recent term, what re-envisioning the Court could look like and more.
Sign up for MS NOW Premium on Apple Podcasts to listen to this show and other MS podcasts without ads. You'll also get exclusive bonus content from this and other shows.
Hosted by Simplecast, an AdsWizz company. See pcm.adswizz.com for information about our collection and use of personal data for advertising.
dts.podtrac.com -
On débrief la saison ensemble
Un dernier épisode solo sous forme de FAQ pour revenir sur cette saison, répondre à vos questions et parler du podcast, de mon métier, de parentalité et de bien d'autres sujets.Hébergé par Acast. Visitez acast.com/privacy pour plus d'informations.
sphinx.acast.com -
I (er Claude) wrote an RSS de-duper
Article URL: http://rsshose.com
Comments URL: https://news.ycombinator.com/item?id=48812477
Points: 2
# Comments: 2
-
Hate "The Algorithm?" RSS Is One of the Tools You've Been Looking For
Article URL: https://www.eff.org/deeplinks/2026/06/hate-algorithm-rss-one-tools-youve-been-looking
Comments URL: https://news.ycombinator.com/item?id=48811841
Points: 22
# Comments: 2
-
F*ck Graham Platner
Kate and Josh convene for an emergency pod following the publishing of a rape allegation against Maine Senate candidate Graham Platner.
To watch this episode on video, go to our YouTube page.
We also have newsletters: subscribe here!
Follow us on:
Bluesky: https://bsky.app/profile/talkingpointsmemo.com
Facebook: https://facebook.com/talkingpointsmemo
Twitter: https://twitter.com/tpm
Instagram: https://www.instagram.com/talkingpointsmemo/
See Privacy Policy at https://art19.com/privacy and California Privacy Notice at https://art19.com/privacy#do-not-sell-my-info.
rss.art19.com -
The full palette
This post is a demo of everything a post can now carry. Written in Markdown mode, published from the editor.
A big heading
A medium heading
A small heading
Text can be bold, italic, and linked.
Quoted text reads like body text, set off with a thin rule:
The best styling recipes were already sitting in WordLand's stylesheet. We copied them.
A bulleted list:
- RSS
- OPML
- Markdown
A numbered list:
- Write
- Publish
- Read
Inline code like
getItemAndReplies, and a block of it:function helloWorld () {
console.log ("hello, rss.chat");
}If you're reading this in a feed reader, the feed carries the same HTML -- what you see is what everyone gets.
-
Quoted text finally looks right
Blockquotes used to render in Bootstrap's default dress — oversized, oddly spaced, a thick gray bar. Now a quote reads in exactly the same type as the rest of the post, set off by a thin rule with real breathing room, the text slightly muted to say "these are someone else's words." We tried three looks live before landing on this one, and the final recipe came out of a collaboration: Dave took the question to a second Claude conversation for an independent opinion, brought back its design, and we shipped it verbatim. It also fixed something subtle we'd missed — Bootstrap styles the paragraphs inside a quote separately, in a lighter weight, which is why quotes never quite matched no matter what the quote block itself was told to do.
-
Replies with titles, and long markdown posts, verified
The two fixes from this morning's notes were tested in the live app — a reply's title arrives intact, and a long post in Markdown mode scrolls inside its box with the buttons in view.
-
Today's song: "July is dressed up and playing her tune."
-
You say:
> There isn't very much I'd have to do beyond adding two Atom elements to my feed, and an Atom namespace declaration in the top line of the file. So it's not an easy thing to do.
Did you mean to say "it's not an easy thing to do" or was that a typo? I'm hoping the changes were easy. :-)
-
Delete is only offered on your own posts
The Delete command in a post's popup menu is now disabled on everyone else's.
-
Replies can carry titles
Adding a title to a reply used to look like it worked, but the title was silently dropped when you published. Now it goes through, same as on a regular post.
-
The editor now keeps your text as Markdown, permanently
Until now the editor had one writing surface that converted its contents in place every time you switched between the wizzy view and Markdown mode — and every conversion was a chance to lose something. Text inside angle brackets could vanish, adjacent lists could tangle together, and each additional flip made things worse. Now it works the way WordLand's editor always has: your Markdown text is the real document, Markdown mode is a plain text box editing exactly that text, and the wizzy view is a rendering of it. Flip between them as much as you like — flipping alone never changes a character. Dave wrote about the change here. Two things you'll notice: in Markdown mode, Enter types a plain line break now, like any text box, and a long post scrolls inside the box instead of pushing the buttons off the screen. And the power move that used to fail — dropping into Markdown mode to add something special, like an
<img>tag — works now. -
A big day for writers — the editor was rebuilt underneath, and a batch of everyday annoyances got fixed.
-
Titles show bold while you write them
That's how titles look.
-
Long posts don't jump when you like them
Clicking the heart (or finishing an edit) on a long, collapsed post used to snap it fully open, throwing the icons far down the screen. A post now keeps its collapsed state when it updates.
-
The editor stays put while you select text
Selecting with a swipe that drifted past the editor's edge used to make the whole editor vanish — very jarring. It doesn't anymore; only a deliberate click outside dismisses it.