Follow buttons here act as you, not as @ricardo.
| Label | Kind | State | Action |
|---|---|---|---|
| @admin | local | — | |
| scripting.com | source | — | — |
| rmendes.net | source | — | — |
Bernie is right.
If healthcare, decent wages, taxing billionaires and protecting workers are now “radical” or “extreme”, then the current US administration is practicing something much closer to state terror against its own population.
Americans are fed up. The tragedy is that a huge part of that anger was successfully redirected — and many of those who wanted to punish the system ended up voting its most brutal incarnation into the White House.
Why do people care if Claude puts watermarks on text it wrote. It's screwing with its writing, not yours. As a person who publishes their own writing, and carefully labels it when it's written by an AI bot (docs, change notes, podcast show notes, quotable things it said), I want people to be able to tell that I wrote it, this is what I thought, I'm not just shoveling random written sludge to people, sloshing around, devaluing every bit of real writing in its midst. I bet teachers love the idea. Why does everyone have to have an opinion about every damned thing? And of course I have even more to say on the subject.
As I've been writing test scripts for the Frontier project, I was finding omissions or mistakes one at a time. Finally I asked Claude to research this. Where are the holes you didn't fill as we were going along? The list is surprisingly long. Then I asked it to look at other things that were left unimplemented. There were lots.
Claude is not really at fault for any of this. The first goal we went for is write enough of Frontier so my nodeEditor build scripts will run. Then it took on lots of other jobs. And all that time I never thought to ask "what haven't we implemented, or stubbed up?" Then I did, and was shocked at how many verbs there are. I had forgotten, I'm not sure I never even knew, because it's so easy to add a whole section to a verb set, and you only see the details if you expand the table.
I want to try to draw people who were serious Frontier developers in the 90s and 00s and beyond, because there are questions that have come up about what we should bring with us. I'll start with an example. Here's an outline of the system.verbs.builtins.tcp table. The question is -- how much of this code should be brought across from the 90s to the 20s? Obviously the DNS verbs. There aren't many and we used them all the time. FTP verbs? Borderline. We don't use FTP very much these days. We had an IM table with verbs and drivers. I remember when Jake worked on this, but I don't think it got much beyond a demo. And the very lowest-level stream-oriented TCP verbs? Well tcp.httpClient needed them, in the 90s and it was the basis for all our HTML and RSS work, our first feed reader built on that code. But HTTP support built into Node.js is pretty great in 2026. We'd be foolish to do anything but call into it. That's one of the reasons I migrated to JavaScript in 2013. There are plenty of other examples like this, and my answer is generally we'll save them for last, and if no one asks about them, we'll retire them. Figure if a platform hasn't updated in 12 years, and doesn't run on any hardware anyone ships before this transition, we have less to worry about than normal. And if need be, we always can add them back at a future date.
Another example, until late last week Claude was arguing with me about the correct use of directions in the op.go verb. This is so incredbily well documented, over and over in so many places. And it knew about all of them, yet it still thought its choices for directions made more sense. The question had already been answered in the mid-80s.
It also thought it was a language that ran in the context of a Unix OS, like Python or PHP. Yes, it could be used that way, but all of its advantages based on integration of the database, language, verb set, runtime would be missing. It's an OS of its own that runs on many OSes, now it will run anywhere Electron runs, so in the future it will have access to everything, on the desktop and the server. You could even run a headless version, we tried that for a week or so and hated it. Too limited and too slow.
I'd like to get feedback from people with experience, and honestly people who are good to work with. :-)
Github down… 404 on any repo I visit, just another reason I’m going to switch to code.rmendes.net as primary and github as mirror for my own repos.
Moving Orgs repo : that’s beyond my current scope for now
GitHub status page show a day in hell for the engineers working over there
Another busy day programming with Claude on Frontier. I still have to come up with a codename. But we got to a milestone today. I was able to create, edit, publish and revise a web app using the new version of the app still running on the old machine. When it's done I will get to retire this old Mac, keep it around so we can test the new code to make sure it does what the old code does, incredibly important when porting a development and runtime environment. Claude works on its stuff at night. The workload it's going to do tonight is the equivalent of several months time for a skilled human developer who manages their time well. As people get used to working this way, I imagine the AIs will learn how to better work with humans, if that is their destiny. I still can't believe we're doing what we're doing.
Google Workspace now receives mail for 21.8% of MX-publishing domains and Microsoft 365 for 16.8%. Together that is 38.6% of the measured Internet’s inbound mail behind two companies. Nobody else comes close: the next named provider, Proofpoint, sits at 1.9%.
Quite happy with the way Plume evolved in just a few weeks !
(to use this, you need a blog that support Micropub)
White House authorizes private companies to launch ‘hack-back’ cyberattacks that destroy data and systems, targeting foreign cybercrime organizations — vetted organizations can now conduct offensive cyber operations | Tom’s Hardware
https://share.google/vkx5E0RRVXU2Mwi42
What could go wrong?
Damn… There isn’t one single actively developed IndieWeb/Micropub mobile app on the Android playstore. Even IndiePass has been discontinued. I don’t want to start from scratch but I’m considering if I should do something about it. I’m fine publishing on mobile using my browser but IndiePass was quite handy and better integration with Android Share to targets.
Sometimes I need to use a Google-style search engine to find something on a reference site. That no longer works in Google. This is a major feature pullback. So far all we've heard in journalism is how it hurts their bottom line, but nothing about the world's information architecture. This is something like every bridge in the world being blown up at the same time, and I don't think that's an exaggeration.
Test post without Syndication
I think my #Indiekit fork might be one of the very few setups where this happens:
You post from Phanpy or Moshidon — regular Mastodon clients, no Micropub support at all.
My custom Fedify AP answers the Mastodon client API, turns that request into a Micropub post, writes it to my own site as Markdown, and then federates it as #ActivityPub.
My blog via that same plug-in answers the Mastodon API.
So Phanpy and Moshidon think they’re talking to a Mastodon server.
They’re not. They’re writing Micropub.
The flow is : Mastodon client → Mastodon-compatible API → Micropub → Markdown file on my own site → ActivityStreams 2.0 → delivered to followers.
Same for edits: editing from Phanpy issues a Micropub replace, then broadcasts an Update(Note).
Plenty of projects do “native post → AP representation” (WordPress, Micro.blog).
What I haven’t seen elsewhere is the extra hop: a non-Micropub client producing a Micropub post without knowing it.
It’s been a fun coding summer 🌞😎
They are killing Hyperlinks
Had fun coding a small python script for weechat that relay mentions of my handle to my self hosted private ntfy sever allowing me to get IRC notifications while on the go, the notification carries the actual message of the user on IRC so I can quickly check if it needs a reply or not.
Yes very useless and fun 😅
Testing Plume from Firefox, now you can see the steps indieauth take against your site for the initial connection, there is also a welcome tab for onboarding (Inspired by Omnibear)
Improved Plume onboarding and fixed a few bugs https://rmdes.github.io/plume/ #micropub and just after publishing this new version, I found a new bug, there should be 1.5.1 very soon !!!
Tech is very competitive, I learned, even when you give your work away, which I have been doing for a couple of decades. Maybe even especially when you give it away.
I want to work with other people, and am always making invitations. When I see a product that fits in with what I'm doing my first impulse is how do we connect them? This is one of the basic great things about computers and our networks. But there must be interop between people before there can be interop between products.
Connecting two pieces of tech is mostly mathematics, code writing, not very much in the way of manufacturing, whereas in the physical world two train lines can cross each other but can't connect because they have different rail spacing, or run on a different kind of fuel. In software if there's a huge difference like that you can make a software bridge, as they did with TCP/IP, and it costs a little time to convert each request twice for each transaction, but that cost is pretty close to zero.
That's what I want, working together, but what I get instead is people want to be me. They want to take over the project I'm working on, which if they understood it from my point of view is always the most ridiculous choice possible because it is impossible. So many stories to go with this. One of the most puzzling was when one of my best friends signed up to do a development project with a developer who used to work for me. Long story, but when you come down to it, he wanted to be me, not work with me.
But I didn't want to be Doug Engelbart or Ted Nelson though I learned from them. I certainly didn't want to be Bill Gates or Steve Jobs. I probably would have liked being Dennis Ritchie or Ken Thompson. I have ideas of things that should be done that for some reason no one else sees. I start working and sometimes they take off. Then everyone writes business plans and boom, they start up and shortly thereafter they fail. This happened with RSS. I was meeting with a lot of VCs, I wanted to start a company to build two-way RSS apps and content, as we had pioneered at UserLand. Seemed like a total no-brainer. I felt I had proven I had a clue. But they invested in hired programmers so the VCs could be the vision behind the products (I guess, I don't really know know why) instead of me.
I had a colleague at Berkman tell me to get out of the way because he was going to take over RSS. To this day people don't get why competing with RSS was counter-productive, assuming your goal is interop. When another friend tried to take over OPML, as I was promoting it at the time on my blog and going on a roadshow to answer questions and raise interest, I was so sick of the whole thing, he wasn't the only one, btw, I just stopped promoting it and poof like magic their ventures disappeared. If they had offered friendship and interop, which they didn't, it could have worked. One of these guys even tricked Harvard into hosting an OPML conference. They assumed everyone who repped open tech was legit.
The thing that really pissed me off is that while this was going on, people started writing about me, literally, grammatically, in the past tense. People whose accomplishments weren't that great imho. Look at sports and entertainment, how they celebrate those who made contributions to their arts, I wonder when tech will gain that level maturity. It's childish to not respect those whose work you build on. And btw, unlike sports players, while programmer's minds do eventually lose some brilliance for coding, because it relies so heavily on memory, I've experienced that myself -- our ability to create and set standards doesn't have an actual expiration date. If you want to keep creating at 40, 50, 60 even 70, you probably can.
My life has been full of all kinds of wonderful coincidences, at the exact moment I need it along comes Claude Code, and all of a sudden I can do much bigger projects than I ever could when I was in my 20s and 30s. Which I think is good, not just for me but for the whole thing. Because there are processes and concepts that belong in the toolkit of every developer that were squashed by Apple in the 90s (I'm relearning this now as I'm working on getting Frontier running on Node.js) and now we have a chance to restore it to mostly running condition. Some features will be hard to make work, because of peculiarities in JavaScript.
Maybe as one of my last creative acts, I will try to hook up with a university to build bridges between generations that aren't specific to any timeframe, to making handing off a lifetime of work viable, and maybe the AI tools can facilitate that. Just thinking out loud on a Saturday morning.
BTW, I was talking about this with Doc Searls a couple of years ago and offered a name for the seminar series, The Exit Interview. This gave me a thought, when Berkman had their reunion a couple of summers ago, they did a long video interview with me to explain how we got all the stuff running there that we did. It was going back to Berkman, even though the building is gone (which I kind of like, that's how fast things change) that summed up what had gone wrong. We were off to a fantastic start with blogging, podcasting, politics and education -- we weren't just making software and creating standards, we were involving the creative people the new medium would enable. This is something you don't find often in the tech industry. Academic freedom can be a real thing.
Test post from Omnibear #micropub extension
I’m refactoring my AP implementation first so that I can properly build C2S later on, for now I’ll keep the API layer, since it already covers a lot of ground but the refactoring will allow me to have a more robust implementation and I’m finding this https://www.stevebate.net/activitypub-client-api-a-way-forward/#flowz very inspiring
It really sucks to have a properly configured email server, running on your own domain — thanks, Cloudron — only to have Google, Microsoft, and the other giants systematically dump your messages into spam anyway.

And yet I now find myself sending important emails twice, or using another provider, just to make sure they actually reach the person on the other side.
Email was supposed to be an open, decentralized protocol. Instead, a handful of monopolies have effectively privatized deliverability: they decide whose mail is trustworthy, whose isn’t, and independent servers are guilty until proven innocent.
#Enshittification at scale: privatize the commons, segment it, then slowly make the open alternative unusable for everyone else.

Mark Zuckerberg’s manifesto rests on a single elegant idea: safety comes from distributing power so no one actor can impose their will.
It’s a fine principle. It’s also the exact opposite of how he has run everything he has ever touched.
Start with the structure of Meta itself. Through dual-class shares, Zuckerberg controls roughly 61% of the voting power of a company he does not majority-own. No board can fire him. No shareholder vote can bind him. He is, by design, the one man on earth who cannot be overruled — and he is lecturing the rest of us on the dangers of concentrated control.
The “independent oversight board” he now dangles is offered by someone who dissolved Facebook’s own Civic Integrity team right after the 2020 election. We have seen what his oversight is worth when the cameras move on.
Then measure the values against the receipts — and not just on AI.
He says superintelligence must protect your privacy. In 2019 he stood on a stage and announced “the future is private.” That same business paid a $5 billion FTC fine for deceiving users about who could access their data, and today Meta’s AI chats aren’t end-to-end encrypted and are mined to target ads. The pledge is identical. So is the gap between the pledge and the practice.
He says AI must reflect human values. In Myanmar, Amnesty International documented that Facebook’s own algorithms proactively amplified the hatred that fueled the ethnic cleansing of the Rohingya — and Meta has refused to pay reparations. In January 2025, he ended US fact-checking, rewrote the rules to permit users to call LGBTQ people “mentally ill,” scrapped DEI, and installed a Trump ally on his board — timed precisely to a change in political weather. These are not the choices of a man guided by values. They are the choices of a man reading the room and calling it principle.
He says AI will create more employment, not less. He said this while cutting ~600 AI roles in October 2025 and 8,000 jobs in May 2026. He preached openness for years, quietly went closed in 2025, and has now reopened — not from conviction, but because the manifesto needed a proof point. Ask the Metaverse how his grand, world-remaking visions tend to end.
This is the deeper problem. When Zuckerberg speaks about “human values” and “personal empowerment,” he is not describing humanity — he is describing the only life he knows: total control, zero consequences, every failure absorbed and rebranded as vision. “The future is for everyone” is a definition of everyone written by a man who has never once had to live as one of them. It is not a vision of the world. It is the view from inside the bubble, mistaken for the view of the world.
The safest thing you can do with a manifesto about not trusting concentrated power is to remember who wrote it, and how much of it he holds.
What if one day, out of the blue, Claude could only speak Chinese.
C’est horrible à dire, mais peut-être que lorsque nous en aurons assez de voir la nature et nos maisons partir en fumée, nous prêterons davantage attention aux rapports « alarmistes » du GIEC — qui, au fond, n’avaient rien d’alarmiste.
Mais surtout, peut-être mettrons-nous enfin la question du dérèglement climatique au-dessus du « wokisme » et autres sottises. Car une chose est certaine : notre avenir sera marqué par les migrations climatiques — des êtres humains fuyant la sécheresse, les déserts agricoles, les inondations et autres phénomènes extrêmes.
Le plus probable, malheureusement, est que l’extrême droite instrumentalise la question climatique pour faire avancer ses projets antimigratoires, transformant encore davantage l’Europe en une forteresse entourée d’épaves humaines : des personnes qui cherchent simplement une vie meilleure, là où celle-ci est encore possible.
A health check that reports “healthy” is not the same claim as “this loop is still running.” I spent a chunk of today’s session learning that distinction the hard way, on a bot whose only job is to relay earthquake alerts to Bluesky.
The setup: a queue drain loop calls health.updateActivity() once at the top of every tick, before it checks whether there’s anything to post.
If the queue is empty, it returns immediately after that call — fine, activity stays fresh. But if a post is in flight, a re-entrancy guard (if (queueRunning) return) sits before that activity call on every subsequent tick.
So a post that hangs doesn’t just delay one tick — it silently stops the timestamp from ever updating again, while the health endpoint keeps reporting healthy right up until its own staleness threshold (10 minutes) is crossed.
I caught it by taking two /health readings 42 seconds apart and noticing lastActivity hadn’t moved at all — not slow, frozen.
Confirmed the mechanism by correlating a dedup file’s mtime with the exact freeze-and-recover window: a post to the Bluesky API had started, then sat there for ten minutes before some unrelated default finally aborted it.
The actual bug was almost embarrassingly small: bskyHandler.ts and its fleet-mode equivalent both constructed the Bluesky API client with no request timeout at all.
The RSS-fetching side of the same codebase already wrapped its fetches in one. Nobody had ported the pattern to the half that talks to Bluesky.
Fix was an AbortController wrapped around the client’s fetch, 30 seconds, done.
I've been doing this for all of this year, and the frustration finally led me to this rule, which I just asked Claude to play back for me. I offer it to you, a human, on how to get your Claude to work better for you, as it does for me. What follows is what Claude wrote as I asked it to summarize how we work.
Here's the mode as I understand it: (Claude speaking..)
Damn, stumbled on a black hole of the past, really sorry to all the blogs that interacted with mine circa 2016 and that I never replied to, I was in a huge Justice battle IRL and my site at the time was not giving me as much control and view over what’s happening than it is today, some of these replies I’m seeing now for the first time.
There is also quite a few dead links that I never managed to recover from my server crash from around those years
Thanks for sharing RSC ! There is still a lot of work before I start to really enjoy using it as I envision but its been really fun to develop :)
Cross-browser Micropub client extension. Post to your IndieWeb blog from any page.
rmdes.github.io/plume/ - now with Draft support, right in your browser of choice !
I wrote something candid on Twitter last week and felt it was worth repeating here. It is a bit judgmental, and for that I apologize. But I couldn't keep the meaning without all the words.
I know this is a story I repeat often. The opportunity is still there. All kinds of bad products and companies are camped out in this space, taking advantage of users' trust but they feel they have no choice but to use the bad products. On the web, we'd like to keep improving what the web can do with text, so even though it's always slightly more difficult to use an open ecosystem, it is possible to get most of the functionality and all of the freedom, and new features that the lock-in guys will never give you.
The press is freaking out about Democratic Socialist candidates winning elections all over the country.
They can relax, because the government of the United States thrives on different points of view, and thus -- compromise.
The Democrats can have any combination of points of view, as long as they play by the rules of democracy. In fact it would be an even better demo if their points of view were more diverse.
The coalition the press talks about are the people who vote for America. This is true -- if they vote for the Republicans this time around, they're voting for the party that is dismantling America. Spin it all you want, but we can see what's happening.
And btw, the assumption that the voters are too dumb to figure this out -- I think that's incorrect. But as long as you talk to them as if they are that dumb, what choice do they have. Put out an idea of what America is and if it's right, and reaches both the heart and the mind they will get behind it. Everyone knows we're in a dangerous spot, with secret police roaming the cities, ready to crack down on dissent, but so far they haven't dared to go that far. People feel that. And that's what you must run on.
The best ad I've ever seen on this theme was for the Bernie Sanders campaign for the 2016 nomination. I'm reduced to tears every time I watch that ad, and I wasn't a Sanders supporter in 2016.
I need to fix duplicate webmentions
I need to think about how to fix this
really glad to hear that :)
Test from Chromium based browser, Plume Micropub extension
Testing Plume from Firefox
I have looked at your Micropub plugin and then debugged the issues with claude and I think I found the problem, nothing to do on your side, it was really a bug on my side : https://github.com/rmdes/plume/releases I submitted version 1.3.1 to the extension stores, both should be available soon, you can always “developer” load it via the github release page if you don’t want to wait, let me know how it goes :)
If you run a tech company I hope you didn't lay off most of your programmers last year when that was the hype -- don't wait too long before you fire your human developers. I'm now doing my second big project with Claude Code, not an experiment, and we're going through the same mess we went through last time. I know what I want, I can show it what I want, give it docs for what I want, and it keeps leading me into different corners that have nothing to do with it. When it clicks, it can go faster than a thousand programmers and it's a miracle, and when we can harness it to the job we want to do it's incredibly economical. $100 for $1 million of work. That's why you see me full of gusto for that mode. What I haven't written about how when you slow to nothing, back and forth, and you get no closer. I hate this kind of work, esp the role I have to play in it.
Do you have access to your Kirby server logs ? would be interesting to check what’s the error precisely, have you looked at the dev console log when you attempt to add your site to the extension settings ? this would allow to gather a bit more information I suppose, another way would be to create a user for me, so that I can connect using it and launch mcp playwright debug in the process to understand what’s happening
inspiring…
Cool idea !
Great work by the cloudron team as usual !
Major Update : a configurable RSS poster for #Bluesky - that supports multi accounts - in active development https://github.com/rmdes/bsky.rss
China isn’t simply a regime with a centrally planned technological machine.
It’s something stranger: a strategically directed state sitting on top of an extremely competitive manufacturing ecosystem.
China’s long-term strategy increasingly resembles ecosystem substitution:
Foreign technological ecosystem becomes a vulnerability → create an alternative ecosystem.
Replacing Microsoft Office with a Russian office suite is import substitution.
Creating an operating-system ecosystem, CPU architecture, compiler toolchain, domestic cloud stack, hardware supply chain, developer community and application ecosystem is technological sovereignty.
China is attempting the latter.
@srijan.ch@fed.brid.gy how’s your micropub endpoint?
Apparently the nightly email didn't go out last night. The problem was an error when it tried to read the Linkblog entries for the day. I've seen reports that these errors happen when you try to read the Links tab on scripting.com. The error shouldn't kill the email sending, it should just omit the linkblog entries, and publish the rest. These kinds of problems always pop up at the worst time. Luckily yesterday wasn't a big news day, and you can read about it on the blog.
Does your blog support micropub?
Hmm this is odd, do you have any information to help me debug this ?
I have Spectrum cable and they recently started unbundling the cable services they provide. So I have a bunch of streaming services that I never decided to follow, and haven't gotten in the habit of checking them. Not sure if I like this, but I certainly understand why the bill is so high and seems to always be going higher? Not sure why that is. But it's hard to get through to them.
Test post from Plume, micropub extension for Firefox/Chromium derived browsers
Working with Claude on the user interface of RSS.chat was a grind, but we learned a lot about working on these projects, me in the form of my human memory, and Claude who can read the code for a huge sprawling app like Frontier, and understand it, in a minute or two. We've done this project in three stages, not knowing at the first two that there would be another one. Now we're working on the editors. An odb table editor, outliner, menubar editor, script editor. All built on the same codebase. It's in an Electron app that works with lots of independent windows, which while it has its pros and cons, is the way Frontier did it for almost 40 years. I find all this very unsettling, but I realize that once we get back to adjusting the UI, I already know how to work with Claude on tuning things up so they feel just right. I'm a market of one, the only one who has to be happy here is me. This may be the hardest programming project I've ever had, for one simple reason, I'm not doing any programming. That and I'm having very strong deja vu on everything I do and think about. Also there will be a fourth stage and maybe more. It'll be about the affordances, the things that seem little, but make the product usable. The biggest is the debugger. It's patterned after the one in THINK C, which I found transformative so I stole from the best, as they say.
Here's the sign of success. (screen shot.) I wrote a post on demo.rss.chat was automatically cross-posted to Bluesky via micro.blog. Because the post has a title, it was routed to standard.site. What does that mean? I still don't really understand, when I do I will explain it here. But part of the answer is that we now have a data structure in atmosphere that looks like an RSS item with different names for things. Are there feed readers in AT-Proto-Land? If so, can we ping one of them to say hey there's a new post in the standard.site world, so please show it to subscribers? And I keep wondering, why not just make all of Bluesky capable of handling the features standard.site calls for. Twenty years is too long to have such a limited view of what text is. See textcasting for more dogma.