Timeline

explore river

Every post and feed across this instance

  • One post, many contracts — the same content reaches every kind of reader:

    Format Endpoint Reader
    RSS 2.0 /users/rmdes/feed.xml any feed reader
    JSON Feed /users/rmdes/feed.json modern apps
    Firehose /users/rss.xml the whole instance

    📰

  • Threading over plain RSS is just matching a reply's reference to its parent:

    function resolveReply(item: FeedItem, posts: Post[]): Post | null {
      const ref = item.inReplyTo ?? item.thrInReplyTo
      return posts.find(p => p.url === ref || p.guid === ref) ?? null
    }
    

    No cross-server API. No shared database. Just feeds. 🚀

  • Textcaster is live 🚀

    This whole timeline is RSS under the hood — local posts and remote feeds are equal citizens, written in Markdown and delivered as open feeds.

    What you preview is exactly what publishes. ✨

  • Kudos to Past Me, who came up with PEACE (Posting Elsewhere, Aggregating Comprehensively and Eternally), seen here on my indieweb.org profile.

    I actually came around to POSSE (Publish [on your] Own Site, Syndicate Elsewhere), though I don't actually believe you can own anything in the end. You'll die, and then what? You can't take any of it with you. It's more like you control what you publish on a domain that you "own" aka rent until…that's right, until you die. I'm more of the opinion that you should save a copy of what you produce, to elongate the life of that thing just a little bit, after where it has been published ceases to exist. What's the catchy acronym for that?

  • Our feeds can work with any feed reader. Examples, the feed of all posts on rss.chat, and a feed containing just mine. We just made a change in the feeds. There will be loose-ends like this. Still diggin! ;-)

  • Changes in the feeds rss.chat generates

  • `source:account` moved to where the spec says it goes

    Our feeds had been putting a source:account element inside every item. The source namespace defines it as a channel-level element — it says whose feed this is, not who wrote an item — and at the item level it was redundant anyway: in the mixed feeds, every item already carries a <source> element with the author's feed URL and name. As of today, each user's own feed says it once, in the channel: <source:account service="rss.chat">dave</source:account>. The items carry it no more. The everyone feed and the comments feeds have no channel account — they have many authors, and their items keep <source> for per-item attribution. If you've been reading the item-level element, read the channel-level one (single-author feeds) or <source> (mixed feeds) instead. Already-published feeds keep the old shape until they next rebuild. The report that got this fixed is issue #9. The channel-level support went into daverss, the shared RSS-building package, as a new optional setting.

  • Arthur Jensen explains things to Howard Beale (Network)

    "The world is a college of corporations, inexorably determined by the immutable by-laws of business. The world is a business, Mr. Beale! It has been since man crawled out of the slime, and our children, Mr.Beale, will live to see that perfect world in which there is no war and famine, oppression and brutality –one vast and ecumenical holding company, for whom all men will work to serve a common profit, in which all men will hold a share of stock, all necessities provided, all anxieties tranquilized, all boredom amused. And I have chosen you to preach this evangel, Mr. Beale."

  • Checking out a change in the feed. Testing something new.

  • BTW, never in a billion years will any of my software ever require a title.

  • Test new post after cache clear in the browser.

  • I was obliged to add this title to be able to publish

    Test without title
  • This is a test. This item does not have a title.

  • Replies in the timeline

    @dave, is there a description of the heuristics rss.chat uses to display Replies?

    AFAICT it's:

    • initially a flat list of messages sorted by timestamp.
    • first click on the right arrow next to the Reply icon, morphs the list to show conversation thread under the item, moving items to avoid duplicates. 
    • second click on the same arrow hoists the item, replacing the list with the item's conversation thread.

    Is above accurate?

    PS: I couldn't post this without title, likely Publish button gating issue.

  • Putting Some Meat On The Bans

    Become a Ctrl-Alt-Speech supporter to get extended episodes of the podcast plus the chance to submit stories for us to cover.

    In this week’s roundup of the latest news in online speech, content moderation and internet regulation, Ben is joined by Niklas Eder, co-founder and co-CEO of User Rights, a designated out of court dispute settlement body under the Digital Services Act which reviews complaints from users whose social media posts have been deleted or moderated. Together, Ben and Niklas discuss:

    And in the extended episode for Patreon supporters, they cover:

    Our fun links this week are a lawn mowing game for post-World Cup stress relief and the Center for the Alignment of AI Alignment Centers because we need more satire right now. 

    This episode is sponsored by PwC, whose upcoming 2026 Trust and Safety Outlook Report explores the forces reshaping how organizations are approaching online safety and integrity. In our special bonus chat, Ben sits down with Dan Hays, Principal Partner of Strategy& (part of the PwC network), to talk about the future of trust and safety and get a sneak peek at some of the themes in their report before its release next week at TrustCon.

    If you’re already a Patreon supporter, you can get the extended episode on Patreon.

    Ctrl-Alt-Speech is the podcast where we make sense of the major debates shaping online speech, platform power, content moderation and the future of the internet. It’s co-hosted by Mike Masnick (Techdirt) and Ben Whitelaw (Everything in Moderation).

    www.buzzsprout.com
  • The technical aspect of Odyssey IMAX filming is in itself astounding work. I had...

    The technical aspect of Odyssey IMAX filming is in itself astounding work.

    I had no idea it was this complex and old-school to produce an IMAX movie.

    Makes me want to watch it again… In a IMAX screen this time 😅

  • Here are my notes on problems with the rss.chat installation process.
  • MLM ou arnaque pyramidale ? 2/4, avec Manon Lasne — SHOCKING #31

    Chapitre 2 : Développer son business. Nous plongeons dans le quotidien de la distributrice investie que fut Manon ; ses premiers succès et son ascension au sein de la société Younique. Elle nous initie au jargon du milieu et parle sans détour de s...
  • short url

    a shorter URL?

    https://demo.rss.chat/?JD this seems to work
  • animals' advice

    Animals think they understand
    Trusting them, a big mistake
    Animals want to change my life
    I will ignore animals' advice 

    https://youtu.be/l2Jn3X00y7k
  • Only one copy of the app runs at a time now — the goodnight kiss

    If you're signed in and open the app in a second tab, or another browser, or another machine, the older copy puts up a friendly dialog: the app is running in another tab, click OK to reload this one, or close it, no work lost. This fixes a bug that bit quietly and repeatedly: a change you made in one place — say, the URL of your icon in settings — could be silently wiped when an older copy, still running with the old settings, saved over it. Now a stale copy stands down the moment a fresh one signs on, so your latest settings always win. When the app connects, it identifies you to the server, and the server sends a "goodnight" message to every other connection you have open — the name comes from that message. (Client v0.6.7.)

  • New feature.

    If you open a second copy of rss.chat in a different tab, the version you left behind will put up a dialog saying you can either close the tab or reload the page.

    This keeps us from losing data. ;-)

  • Congratulations for solving the puzzle. 
  • RSS on Mastodon and the Fediverse

  • New rss.chat feature: It now supports automatic feed discovery, so you can subscribe to any html page on the site in a compatible feed reader. I tested it in FeedLand and NetNewsWire and it works.

  • Feed discovery

    New rss.chat feature: It now supports feed discovery, so you can subscribe to any html page on a rss.chat site, in a compatible feed reader.

    I tested it in FeedLand and NetNewsWire and it works.

  • New rss.chat feature: It now supports feed discovery, so you can subscribe to any html page on the site in a compatible feed reader. I tested it in FeedLand and NetNewsWire and it works. Works on any instance, not just ours.

  • The home page now announces its own feed

    Every server's home page carries a feed auto-discovery link — the standard <link rel="alternate"> in the page head, pointing at that server's everyone feed. Point a feed reader at the home page of rss.chat, or demo.rss.chat, or your own install, and it finds the feed by itself, no hunting for the URL. The address is filled in per-instance by a new home-page macro, [%feedUrlEveryone%], so the same template serves every server correctly. Work by DW.

  • Working on something really cool, but its too soon to show, all I can say is its...

    Working on something really cool, but its too soon to show, all I can say is its about RSS Reader, Micropub and Webmentions

  • I mentioned the previous post on rss.chat, and it developed into an interesting thread, something that I've never had the option to discuss. AT Proto makes a similar offer to developers that we do. The difference is our world is wide open, it's just already burned-in web protocols, and imho their structure, based on an arcane and complicated new storage format, starts off with a pretty huge disadvantage. They had the right idea but implemented it in the wrong place. The web is (obviously) widely deployed, even in comparison to monsters like Google and Amazon -- the web is everywhere, by definition no barriers and a prejudice toward simplicity. The gifted designers at Bluesky over-engineered their protocol, piling features on before anything had been built. That's not a good way to bootstrap a protocol. I did some development on their API, and kept wondering why they think I want to learn new ways to do things that I already have a pile of working code for. No one wants to do that.

  • La colère

  • Image support? Yes.

    BTW, I told Claude yesterday that we will support images in posts. I wanted it earlier when chaos still ruled (believe me it was very hard to use at this time) and it talked me out of it, saying it was too expensive.

    I don't think it will be too expensive. And if it does, then we'll find a way to get money flowing through this project without holding things up.

  • In my experience in software development, it's good to start small with something useful, learn how it works before adding big new features. That's the basic principle of bootstrapping. I thought that Mastodon, for example, took on too big a job. Same thing for the protocol behind it, ActivityPub. If you go all the way to the end before implementing and using, you miss the target, in performance and usability, that's what I think happened there. They felt they had to do everything Twitter does. I would have gone down a different path, go back to the beginning, and at every step think if there might not be a better direction to evolve in. It was about ten years after Twitter launched that they started work on Masto. Imho they should have zigged where Twitter zagged in defining what a post is. Twitter put excessive limits on writing, of course is one of the big reasons I started RSS.chat -- to go down a different path there. What if the social web didn't limit text? That assumption is baked into the core of rss.chat. I will consider this project a raging success if it causes Mastodon to get serious about supporting full web text.
  • The BB Edit and Fetch icons will be forever embedded in my heart

  • P.E.R.A.V le nouveau spectacle par Axel Lattuada et Fabrice de Boni

  • When we're talking about the rules for interop with rss.chat, is there a specific name we're using? Like, would it be an "rss.chat" WordPress plugin?

    I read the interaction here: https://demo.rss.chat/?id=57 and the part where you said "treat comments as blog posts with their own permalinks" made me wonder, because this is not a rule from Textcasting.

    For instance, I could in the main feed add `` and link to a comments feed (like https://test.geekity.com/2026/07/16/hoopla-world/feed/), but those comments don't have permalinks, just an anchor tag to the main post. So this wouldn't be compatible?

  • All this chat about RSS is making me think back to when I first found out about it & how excited I was. I assumed everybody would have a blog and read others via RSS.

    In 2005 I started a podcast with my class of 10 year olds. They had great fun and, I believe learned a lot. Not having a much of an understanding of how to do this I wrote and updated the RSS feed by hand. I then had a php file that used the feed to create the webpage. I had very little understanding of php (still do not) but it worked.

    I remember, in 2006, being at an educational conference in Edinburgh. I ended up talking to the keynote speaker on a bus on the way to drinks. He asked me where I thought the technology might be going. I explained my idea that an iPod or similar device could allow audio comments, this would somehow be uploaded, somewhere, they would become linked in some sort of sub element of the episode in the RSS feed with a time stamp. When you listened to the podcast there would be a wee audio alert when you got to a comment. You could press a button on your iPod if you wanted to pause the episode and listen to the comment.

    Podcasting was then a much smaller and simpler thing. I did not imagine we would have podcast that were commercial with millions of listeners.

  • My Second RSS Chat Membership - but my first 'Production' membership.
  • Now running the app using the npm forever package.


  • My first post

    This is my first post on my rss.chat instance


  • China has a new top model

    Moonshot AI’s Kimi K3 is very good — but the hype may be getting ahead of reality. (For now.)
  • People and Blogs: Brennan Kenneth Brown

    People and Blogs is a series by Manuel Moreale featuring the people behind personal blogs and the stories of their corners of the web. This conversation is with Brennan Kenneth Brown. Do go visit his ...
  • Added a layer to the Docs menu, the blog posts I've written here and elsewhere, and a podcast, in the Blog posts section.

  • And now - 'avec logo' - much improved, IMHO.

  • "goodnightkiss" messages coming tomorrow

    Tomorrow the plan is to add a new websocket-based way of making sure that only one copy of rss.chat is running at the same time. When you log on, on another computer or even on the same computer, this creates another copy of appPrefs.

    If you change something, they get saved to the server. Meanwhile on another machine it doesn't have the new version, it has values that you don't want to write over the ones you changed on the other machine.

    So when you log on, the server sends a "goodnightkiss" message to every copy it's connected to with your username. They then put up a dialog saying if you want to continue using rss.chat you have to reload.

    All this is working in WordLand and FeedLand, so it's pretty likely it'll work right away. I know that sounds cocky, but that's how it's been going. It's like Claude is both a compiler and runtime, and I haven't seen any mistakes go by it without it catching them.

  • A person's name now takes you to their posts

    Clicking a name anywhere in the timeline used to open that person's website in a new tab — surprising when what you wanted was to see what they've been posting. Now the name does what the avatar does: it shows their timeline, right in the app. Their website isn't lost — it's linked from their profile page. This came out of real use: Dave clicked a name expecting the person's posts and landed on their homepage instead. (Theme v0.5.330.)

  • The install doc learned from two real installs today

    Scott Hanson tested the new database-mode instructions by having an AI agent do a fresh install on a throwaway server — it worked, and the one thing it had to hunt for became issue #8: the doc never said what port to point a reverse proxy at. Fixed the same hour: step 8 of install.md now says the server listens on port 1420 (configurable via port in config.json or the PORT environment variable) and websockets have their own port, 1422 (websocketPort). Separately, for anyone upgrading an existing S3 server to database mode, the upgrade section gained the step we ourselves missed: a one-line SQL update that rewrites the old feed addresses stored with each post — without it, every rebuilt feed comes up empty. If you run a server from before today, that section is worth a read.

  • Logging on to demo.rss.chat and interested to see where it all goes.

    I added rss.chat into NetNewsWire - might add this one as well.

  • AGI

    “I am tormented, or tantalized, by the sense that I am almost in view of something that is at the limit of my comprehension.”

    — Neal Stephenson’s Anathem (pg 543)

  • Kimi K3, and what we can still learn from the pelican benchmark

    Chinese AI lab Moonshot AI announced Kimi K3 this morning, describing it as their "most capable model to date, with 2.8 trillion parameters". It's currently available via their website and API, but an open weight release is promised "by July 27, 2026".

    Moonshot are calling this the first "open 3T-class model" (I guess they're rounding 2.8 trillion up to 3 trillion), taking the crown from DeepSeek's 1.6T v4 Pro. Their self-reported benchmarks have K3 mostly beating Claude Opus 4.8 max and GPT-5.5 high, while losing out to Claude Fable 5 and GPT-5.6 Sol.

    A few highlights from the Artificial Analysis report on the model:

    • "On our private long-horizon knowledge work evaluation, Kimi K3 reaches an overall Elo of 1547, +732 points from Kimi K2.6 and behind only Claude Fable 5."
    • "Cost per task ($0.94) is similar to GPT-5.6 Sol ($1.04), ~1/2 the price of Opus 4.8 ($1.80) and higher than open weights peers"
    • "Kimi K3’s token usage on the Artificial Analysis Intelligence Index decreased significantly, using 21% fewer output tokens than K2.6."

    The model is also now the leading model on Arena.ai's Frontend Code arena, surpassing even Claude Fable 5.

    The new model is notable for the pricing: $3/million input tokens and $15/million output tokens, putting it at the same level as Anthropic's Claude Sonnet series and making it the most expensive model released by a Chinese AI lab to date. This is a significant increase on their earlier models such as Kimi K2.6 at $0.95/$4. 2.8 trillion parameters is also more than twice the size of that 1T model.

    But how does it pelican?

    I used OpenRouter (to avoid signing up for a Moonshot API key) with the llm-openrouter plugin to generate an SVG of a pelican riding a bicycle:

    llm -m openrouter/moonshotai/kimi-k3 'Generate an SVG of a pelican riding a bicycle'
    

    Here's the transcript. It looks like this:

    That pelican took 95 input tokens and 16,658 output tokens (13,241 were reasoning tokens), for a total cost of 25 cents!

    Since K3 accepts image input I ran it against that rendered SVG above (with my alt text prompt) and got back (for 0.6 cents):

    Cartoon illustration of a white pelican wearing a red scarf, riding a red bicycle along a gray road with white dashed lines; the pelican has a large orange beak and webbed orange feet pedaling, with white motion lines behind it; the background shows a light blue sky with white clouds, a yellow sun, two small black birds in flight, and green grass with tiny white flowers in the foreground

    What can we learn from the pelican?

    My Generate an SVG of a pelican riding a bicycle test is 21 months old now. It was never a particularly great benchmark. It started out as a joke on how absurdly difficult it is to compare these models, but then for the first year it turned out to have a surprising correlation to how good the models actually were.

    That connection has been mostly severed now. The GPT-5.6 and Claude Fable 5 pelicans are outclassed by GLM-5.2, and much as I love GLM I don't think that's a Fable-class model.

    (I'm still not convinced that labs are training for the benchmark - if they were, I'd expect much better results. There's a chance that Gemini has optimized for any combination of an animal on a vehicle though!)

    The biggest limitation of the pelican is that it doesn't touch at all on the thing that matters most for today's model: agentic tool calling and the ability to operate tools reliably as conversations grow in length.

    So don't go using pelicans to compare models!

    All of that said, I still get a decent amount of value out of running the benchmark myself.

    Firstly, it's a forcing function for actually trying the model. If I show you a pelican, that means I've managed to run a prompt through it. If the model has an official API I'll use that, if it's open weight (and small enough to fit a 128GB M5 MacBook Pro) I'll try running it on my own machine, usually via llama.cpp or LM Studio or Ollama. I'll frequently use OpenRouter since that usually provides a proxy to an official API without me needing a new API key.

    Most of my pelicans are generated using my LLM CLI tool, which helps encourage me to ensure the latest models are supported by that (via one of its plugins).

    More importantly though, even the act of a single prompt to "Generate an SVG of a pelican riding a bicycle" can reveal interesting model characteristics.

    Consider the result for Kimi K3 today. Running those simple prompts helped emphasize several points about the model.

    1. It only has one reasoning effort right now, "max" - and it shows. The model consumed 13,241 reasoning tokens to output 3,417 tokens of response. This is expensive - the pelican cost 25 cents!
    2. How does the prompt "Generate an SVG of a pelican riding a bicycle" add up to 95 input tokens? OpenAI's tokenizer counts 10, Anthropic's counts 10 for Opus 4.6, 30 for Opus 4.7 and 25 for Sonnet 5/Fable 5. Prompting "hi" to Kimi K3 counted 86 tokens, suggesting there may be an 85 token hidden system prompt. It refused to leak it though.
    3. Vision works well: the alt text it generated is very good.

    K3 currently only has one thinking effort level, but I've been deriving quite a bit of value recently from running the same pelican prompt through different effort levels to get a quick idea for what impact those have. Here's my matrix for the GPT-5.6 model family, for example.

    Really though the main things I gain from the pelican test are:

    1. It's a "hello world" exercise for prompting a model
    2. A rough cost and reasoning estimate for a simple task
    3. Confirmation that the model can output valid SVG and has a basic idea of geometry and spatial awareness. This is a much bigger deal for the smaller models that run on my laptop.
    4. It's still interesting to compare pelicans between releases in the same model family. K3's pelican is a notable improvement from Kimi 2.5.
    5. It's something I can share that demonstrates I've tried it. Plus a comment with a pelican in it is kind of a tradition on Hacker News at this point, any time I'm late I get comments asking where it is!

    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.

Older posts