{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreibfut372kopali2n4clnjayeul4axvsdxst2ndg2qvdoepxjv5sqq",
"commit": {
"cid": "bafyreifbrc5yd2ynxwrz2sgzwjxdsla26hgbe5onntmgnn2oqp2tpg3muq",
"rev": "3mmizpn2axd2y"
},
"uri": "at://did:plc:ztjsajckkmfscs3tshez4ath/app.bsky.feed.post/3mmizpmvl6s2q",
"validationStatus": "valid"
},
"content": {
"$type": "pub.leaflet.content",
"pages": [
{
"$type": "pub.leaflet.pages.linearDocument",
"blocks": [
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://www.thefulcrum.dev/the-programmers-fulcrum-22-may-2026/"
}
],
"index": {
"byteEnd": 44,
"byteStart": 33
}
}
],
"plaintext": "This post originally appeared on The Fulcrum."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "It's your weekly curation of the essential news in the Open Media Network and Fediverse development communities with a focus on devastating big tech via Techno Anarchism."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
],
"index": {
"byteEnd": 97,
"byteStart": 0
}
}
],
"plaintext": "As usual, we aim to provide actionable content you can use to destroy Techno Feudalism each week. It has the additional benefit of weakening authoritarianism."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://www.thefulcrum.dev/techno-anarchist-manifesto/"
}
],
"index": {
"byteEnd": 81,
"byteStart": 55
}
},
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://hamishcampbell.com/open-media-networking/"
}
],
"index": {
"byteEnd": 148,
"byteStart": 130
}
}
],
"plaintext": "IMHO, the best way to do that is to use tools from the Techno Anarchist Manifesto to build your own site(s) to participate in the Open Media Network. Then you should share it (them) via Real Simple Syndication (RSS), the Fediverse, and possibly a newsletter or podcast. This approach is similar to what some call the IndieWeb and its POSSE philosophy."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "The second best strategy is to have accounts on the Fediverse and use the hell out of them. And do the same with a RSS feed reader."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "We publish TPF on Fridays so you can enjoy it over your weekend."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "There's good stuff in all of our categories, so please take the time to enjoy and bookmark the items most relevant to your goals. We hope you are inspired to create new ones."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Or you can jump straight to your favorite section."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.unorderedList",
"children": [
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "#cmss"
}
],
"index": {
"byteEnd": 16,
"byteStart": 0
}
}
],
"plaintext": "Sites/Blogs/CMSs"
}
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "#tools"
}
],
"index": {
"byteEnd": 28,
"byteStart": 0
}
}
],
"plaintext": "Techno Anarchist / OMN Tools"
}
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "#programming"
}
],
"index": {
"byteEnd": 15,
"byteStart": 0
}
}
],
"plaintext": "OMN Programming"
}
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "#activitypub"
}
],
"index": {
"byteEnd": 11,
"byteStart": 0
}
}
],
"plaintext": "ActivityPub"
}
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "#fediverse"
}
],
"index": {
"byteEnd": 9,
"byteStart": 0
}
}
],
"plaintext": "Fediverse"
}
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "#more"
}
],
"index": {
"byteEnd": 4,
"byteStart": 0
}
}
],
"plaintext": "More"
}
}
]
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
],
"index": {
"byteEnd": 121,
"byteStart": 0
}
}
],
"plaintext": "FYI, my opinions will be in bold. And may involve cursing. Because humans. Especially tech bros. And fascists. Fuck ´em."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": " "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.horizontalRule"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 2,
"plaintext": "Featured Item(s)"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
],
"index": {
"byteEnd": 15,
"byteStart": 0
}
}
],
"plaintext": "Bonfire writes:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Since the 1.0 release of Bonfire Social, we've been heads-down listening to our our pilot communities, beta testers, and co-design partners."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Version 1.0.3 is the result: a release focused on stability and polish, which fixes a wide range of bugs and brings meaningful usability improvements, especially around feeds, boundaries, and more advanced features."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "It also ships a set of new capabilities born from our ongoing collaboration with Jacobin DE."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://bonfirenetworks.org/posts/bonfire-1-0-3-stability-clarity-and-federated-publishing/"
}
],
"index": {
"byteEnd": 59,
"byteStart": 0
}
}
],
"plaintext": "Bonfire 1.0.3: Stability, Clarity, and Federated Publishing"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
],
"index": {
"byteEnd": 332,
"byteStart": 0
}
}
],
"plaintext": "Awesome. The \"calm empowerment\" for boundaries and posts sounds great. And the same philosophy will be integrated into groups. Loading the dashboard immediately is another good choice. I am especially psyched about the community publishing with Ghost integration. This is the same thinking behind their LAUTI integration for events."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
],
"index": {
"byteEnd": 23,
"byteStart": 0
}
}
],
"plaintext": "Hamish Campbell writes:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "The KISS secret about the noise in “digital sovereignty” is very simple – ignore most of this branding and build commons tech instead. That’s the path, not another layer of management, another funding bureaucracy, or a glossy strategy document. Not another NGO conference circuit explaining why nothing can happen without another round of funding. Just build working commons."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "This matters because much of the EU “digital sovereignty” conversation is simply more churn inside the same neoliberal, mainstreaming logic that created the problem in the first place."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://hamishcampbell.com/just-build-working-commons/"
}
],
"index": {
"byteEnd": 56,
"byteStart": 0
}
}
],
"plaintext": "Compost “digital sovereignty”, build working commons"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
],
"index": {
"byteEnd": 73,
"byteStart": 0
}
}
],
"plaintext": "This is one of the major reasons we're building Manade on top of Bonfire."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
],
"index": {
"byteEnd": 66,
"byteStart": 0
}
}
],
"plaintext": "Speaking of, the co-op handling the setup and hosting for us says:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://sunbeam.city/@autonomic/116602054187133604"
}
],
"index": {
"byteEnd": 24,
"byteStart": 0
}
}
],
"plaintext": "Wow @Bonfire is so cool!"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
],
"index": {
"byteEnd": 222,
"byteStart": 0
}
}
],
"plaintext": "I'm glad they're enthusiastic. And I am happy to be their initial test subject. ;) And I'm also fortunate I can afford the higher costs of early adopters. Consider it a service to the community or penance for my bad karma."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
],
"index": {
"byteEnd": 121,
"byteStart": 0
}
}
],
"plaintext": "And finally, we published another Bonfire article this week, so check out the Bonfire section at the bottom of this post."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": " "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.horizontalRule"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": " "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 2,
"plaintext": "CMSs"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": " "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Simon Repp announces:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://post.lurk.org/@freebliss/116602239567273371"
}
],
"index": {
"byteEnd": 39,
"byteStart": 0
}
}
],
"plaintext": "Random Faircamp 2.0 development updates"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Dries Buyaert explains:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://dri.es/why-drupal-cms-matters"
}
],
"index": {
"byteEnd": 22,
"byteStart": 0
}
}
],
"plaintext": "Why Drupal CMS matters"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
],
"index": {
"byteEnd": 71,
"byteStart": 0
}
}
],
"plaintext": "It does make Drupal easier, but still not easy. No KISS promotion here."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 3,
"plaintext": "Ghost"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Ghost announces:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://john.onolan.org/.ghost/activitypub/note/020e4793-8551-41d6-8887-fa0d39c67507"
}
],
"index": {
"byteEnd": 46,
"byteStart": 0
}
}
],
"plaintext": "Working on supporting account aliases in Ghost"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://john.onolan.org/.ghost/activitypub/note/846165e3-2002-4e8f-a59b-fa9ca2f4d731"
}
],
"index": {
"byteEnd": 16,
"byteStart": 0
}
}
],
"plaintext": "This is now live"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
],
"index": {
"byteEnd": 19,
"byteStart": 0
}
}
],
"plaintext": "Fan-fucking-tastic!"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://john.onolan.org/.ghost/activitypub/note/b4e93cdc-a248-4f2e-8375-f9cda0b8d9a2"
}
],
"index": {
"byteEnd": 72,
"byteStart": 0
}
}
],
"plaintext": "Working on adding support in Ghost for custom web domain for your handle"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
],
"index": {
"byteEnd": 53,
"byteStart": 0
}
}
],
"plaintext": "Hopefully, all of these aren't just for the pro plan."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Spectral Web Services explores:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://www.spectralwebservices.com/blog/sitewide-socials-theme-editing-switching-platforms-again-and-more/"
}
],
"index": {
"byteEnd": 68,
"byteStart": 0
}
}
],
"plaintext": "Sitewide socials, theme editing, switching platforms again, and more"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "#top"
}
],
"index": {
"byteEnd": 20,
"byteStart": 0
}
}
],
"plaintext": "Back to top 👆🏼"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": " "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.horizontalRule"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": " "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 2,
"plaintext": "Tools"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": " "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "This one is a little philosophical and slightly trippy, but The Lazurus Corporation shares:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://www.lazaruscorporation.co.uk/blogs/artists-notebook/posts/against-the-tyranny-of-the-apollonian"
}
],
"index": {
"byteEnd": 37,
"byteStart": 0
}
}
],
"plaintext": "Against the tyranny of the Apollonian"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
],
"index": {
"byteEnd": 46,
"byteStart": 0
}
}
],
"plaintext": "We're definitely Dionysian. 🍸 🏴☠️"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Smashing Frames ruminates:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "[On Google declaring war on the Web]("
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://tante.cc/2026/05/20/on-google-declaring-war-on-the-web/"
}
],
"index": {
"byteEnd": 63,
"byteStart": 0
}
}
],
"plaintext": "https://tante.cc/2026/05/20/on-google-declaring-war-on-the-web/)"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
],
"index": {
"byteEnd": 47,
"byteStart": 0
}
}
],
"plaintext": "Fuck Google and obviously don't use their shit."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "The Register reports:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://www.theregister.com/personal-tech/2026/05/15/localsend-puts-your-sneakernet-out-of-business/5241407"
}
],
"index": {
"byteEnd": 46,
"byteStart": 0
}
}
],
"plaintext": "LocalSend puts your sneakernet out of business"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 3,
"plaintext": "Chat"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Zulip shares:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://blog.zulip.com/2026/05/15/announcing-zulip-foundation/"
}
],
"index": {
"byteEnd": 31,
"byteStart": 0
}
}
],
"plaintext": "Announcing the Zulip Foundation"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 3,
"plaintext": "Browsers"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "9to5Linux reports:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://9to5linux.com/firefox-151-is-now-available-for-download-this-is-whats-new"
}
],
"index": {
"byteEnd": 63,
"byteStart": 0
}
}
],
"plaintext": "Firefox 151 Is Now Available for Download, This Is What’s New"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Cybernews reports:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://cybernews.com/news/firefox-mozilla-eu-dma/"
}
],
"index": {
"byteEnd": 63,
"byteStart": 0
}
}
],
"plaintext": "Brussels’ DMA regulation handed Firefox millions of new users"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
],
"index": {
"byteEnd": 95,
"byteStart": 0
}
}
],
"plaintext": "Great. Let’s hope the trend continues and they then move on to Firefox forks. See just below."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Tuta examines the:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://tuta.com/blog/best-private-browsers"
}
],
"index": {
"byteEnd": 42,
"byteStart": 0
}
}
],
"plaintext": "Best Private Browsers 2026 | Zero Trackers"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
],
"index": {
"byteEnd": 47,
"byteStart": 0
}
}
],
"plaintext": "Hopefully, you're using one of these right now."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 3,
"plaintext": "Cloud"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Taylor and Francis has:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://www.tandfonline.com/doi/full/10.1080/1369118X.2026.2645879"
}
],
"index": {
"byteEnd": 71,
"byteStart": 0
}
}
],
"plaintext": "Cloud drift: how hyperscaler cloud computing shapes internet governance"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 3,
"plaintext": "Writing"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "LibreOffice has:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://blog.documentfoundation.org/blog/2026/05/15/no-digital-sovereignty-without-odf/"
}
],
"index": {
"byteEnd": 43,
"byteStart": 0
}
}
],
"plaintext": "There is no digital sovereignty without ODF"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://blog.documentfoundation.org/blog/2026/05/19/how-your-donations-help-the-libreoffice-project-and-community/"
}
],
"index": {
"byteEnd": 61,
"byteStart": 0
}
}
],
"plaintext": "How your donations help the LibreOffice project and community"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Free Knowledge Institute looks at:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://freeknowledge.eu/cooperative-clouds-how-lasuitecoop-is-building-new-model-digital-sovereignty"
}
],
"index": {
"byteEnd": 84,
"byteStart": 0
}
}
],
"plaintext": "Cooperative Clouds: How LaSuite.coop Is Building a New Model for Digital Sovereignty"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 3,
"plaintext": "Creative"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "GIMP announces:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://www.gimp.org/news/2026/05/20/gimp-msix-bump/"
}
],
"index": {
"byteEnd": 49,
"byteStart": 0
}
}
],
"plaintext": "GIMP on MS Store now requires Windows Build 20348"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 3,
"plaintext": "Linux/Open Android"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "OSTechnix reports:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://ostechnix.com/linux-kernel-7-1-rc4-released/"
}
],
"index": {
"byteEnd": 76,
"byteStart": 0
}
}
],
"plaintext": "Linux Kernel 7.1 RC4 Released: Torvalds Slams “Pointless” AI Bug Reports"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
],
"index": {
"byteEnd": 98,
"byteStart": 0
}
}
],
"plaintext": "There is an easy fix for this problem (no AI). FYI, this is a typically poorly designed news site."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Larvitz Blog"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://blog.hofstede.it/mdo-on-freebsd-15-base-system-privilege-delegation-with-mac_do/"
}
],
"index": {
"byteEnd": 63,
"byteStart": 0
}
}
],
"plaintext": "mdo on FreeBSD 15: Base-System Privilege Delegation with mac_do"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Gridranger shows us:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://blog.gridranger.dev/mobile-oses-featuring-fairphone-5/"
}
],
"index": {
"byteEnd": 25,
"byteStart": 0
}
}
],
"plaintext": "How to select a mobile OS"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
],
"index": {
"byteEnd": 43,
"byteStart": 0
}
}
],
"plaintext": "Solid article. And interesting site design."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "PostmarketOS has:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://postmarketos.org/edge/2026/05/15/losetup-option-removal-leading-to-boot-failure/"
}
],
"index": {
"byteEnd": 39,
"byteStart": 0
}
}
],
"plaintext": "losetup upgrade results in boot failure"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
],
"index": {
"byteEnd": 164,
"byteStart": 0
}
}
],
"plaintext": "My Linux peeps, we have to all get on the same page (at least for mobile OS) if we're going to have a chance to deep six Apple and Google. KISS as possible, please."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
],
"index": {
"byteEnd": 29,
"byteStart": 0
}
}
],
"level": 3,
"plaintext": "This week's featured OMN tool"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 4,
"plaintext": "Framatoolbox"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "The free and ethical toolkit."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://framatoolbox.org/abc/en/"
}
],
"index": {
"byteEnd": 12,
"byteStart": 0
}
}
],
"plaintext": "Framatoolbox"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "#top"
}
],
"index": {
"byteEnd": 20,
"byteStart": 0
}
}
],
"plaintext": "Back to top 👆🏼"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": " "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.horizontalRule"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": " "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 2,
"plaintext": "Programming"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": " "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Javier Tia looks at:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://jetm.github.io/blog/posts/two-fosdem-2026-cra-talks/"
}
],
"index": {
"byteEnd": 61,
"byteStart": 0
}
}
],
"plaintext": "Two FOSDEM talks on the CRA, from opposite sides of the table"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Terence Eden notes:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://shkspr.mobi/blog/2026/05/gds-weighs-in-on-the-nhss-decision-to-retreat-from-open-source/"
}
],
"index": {
"byteEnd": 63,
"byteStart": 0
}
}
],
"plaintext": "GDS weighs in on the NHS's decision to retreat from Open Source"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Cyber Security News reports:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://cybersecuritynews.com/google-recaptcha-update/"
}
],
"index": {
"byteEnd": 71,
"byteStart": 0
}
}
],
"plaintext": "Google reCAPTCHA Update Blocks Privacy-Focused Android Users From Sites"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
],
"index": {
"byteEnd": 109,
"byteStart": 0
}
}
],
"plaintext": "Mon amis, please don't use anything from Google on your sites. Explore hCaptcha, ALTCHA, or Friendly Captcha."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Nick Stambaugh on:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://nickstambaugh.dev/posts/selling-html-file-for-a-few-grand/"
}
],
"index": {
"byteEnd": 36,
"byteStart": 0
}
}
],
"plaintext": "Selling an HTML file for a few grand"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
],
"index": {
"byteEnd": 15,
"byteStart": 0
}
}
],
"plaintext": "KISS = cash. ;)"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 3,
"plaintext": "Git"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Bleeping Computer reports:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://www.bleepingcomputer.com/news/security/github-confirms-breach-of-3-800-repos-via-malicious-vscode-extension/"
}
],
"index": {
"byteEnd": 68,
"byteStart": 0
}
}
],
"plaintext": "GitHub confirms breach of 3,800 repos via malicious VSCode extension"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
],
"index": {
"byteEnd": 95,
"byteStart": 0
}
}
],
"plaintext": "Why would you sue anything from Microslop? At least check out VS Codium, Forgejo, and Codeberg."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Alex Hyett asks:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://www.alexhyett.com/newsletter/github-is-dead-whats-next/"
}
],
"index": {
"byteEnd": 28,
"byteStart": 0
}
}
],
"plaintext": "GitHub is dead, What's next?"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Jorijn Schrijvershof explains:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://jorijn.com/en/blog/leaving-github-for-forgejo/"
}
],
"index": {
"byteEnd": 34,
"byteStart": 0
}
}
],
"plaintext": "Why I'm leaving GitHub for Forgejo"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Michael Thomas demonstrates:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://blog.thms.uk/2026/05/forgejo-cloudflare-pages"
}
],
"index": {
"byteEnd": 61,
"byteStart": 0
}
}
],
"plaintext": "Auto-Deploying a static site from Forgejo to CloudFlare Pages"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
],
"index": {
"byteEnd": 76,
"byteStart": 0
}
}
],
"plaintext": "If your site is open source or personal, please use Codeberg not Cloudflare."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 3,
"plaintext": "Markdown"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Files MD is:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://files.md/"
}
],
"index": {
"byteEnd": 69,
"byteStart": 0
}
}
],
"plaintext": "A free, quiet space for thinking. Private, no data is sent to server."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 3,
"plaintext": "HTML"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "My favorite blog to view (eyes wise), Evil Martians"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://evilmartians.com/chronicles/600-million-people-write-right-to-left-2-fixes-your-app-needs"
}
],
"index": {
"byteEnd": 63,
"byteStart": 0
}
}
],
"plaintext": "600+ million people write right-to-left: 2 fixes your app needs"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 3,
"plaintext": "Twig"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Symfony announces:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://symfony.com/blog/twig-3-25-0-released"
}
],
"index": {
"byteEnd": 20,
"byteStart": 0
}
}
],
"plaintext": "Twig 3.25.0 released"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 3,
"plaintext": "CSS"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Julia Evans is leaving Failwind:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://jvns.ca/blog/2026/05/15/moving-away-from-tailwind--and-learning-to-structure-my-css-/"
}
],
"index": {
"byteEnd": 59,
"byteStart": 0
}
}
],
"plaintext": "Moving away from Tailwind, and learning to structure my CSS"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
],
"index": {
"byteEnd": 10,
"byteStart": 0
}
}
],
"plaintext": "Fantastic."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 3,
"plaintext": "JavaScript"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "A Bi Disaster explores:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://blog.bidisaster.party/spas/"
}
],
"index": {
"byteEnd": 31,
"byteStart": 0
}
}
],
"plaintext": "The tyranny of single page apps"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 3,
"plaintext": "AI"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Where's your Ed at? marvels:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://www.wheresyoured.at/premium-what-if-were-in-an-ai-bubble-part-1/"
}
],
"index": {
"byteEnd": 41,
"byteStart": 0
}
}
],
"plaintext": "What If...We're In An AI Bubble? (Part 1)"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
],
"index": {
"byteEnd": 39,
"byteStart": 0
}
}
],
"plaintext": "Get it? And by the way, we fucking are."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Dhruv Ahuja says:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://dhruvahuja.me/posts/ai-impact-on-oss/"
}
],
"index": {
"byteEnd": 83,
"byteStart": 0
}
}
],
"plaintext": "I owe my career to open-source communities. I'm not sure newcomers can say the same"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
],
"index": {
"byteEnd": 30,
"byteStart": 0
}
}
],
"plaintext": "Same here and owed in my case."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
],
"index": {
"byteEnd": 37,
"byteStart": 0
}
}
],
"level": 3,
"plaintext": "This week's featured programming tool"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 4,
"plaintext": "Zeroform"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Zeroform is a static and dynamic online form generator."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://simonrepp.com/zeroform/"
}
],
"index": {
"byteEnd": 8,
"byteStart": 0
}
}
],
"plaintext": "Zeroform"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
],
"index": {
"byteEnd": 63,
"byteStart": 0
}
}
],
"plaintext": "A nice example of someone building something for the community."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "#top"
}
],
"index": {
"byteEnd": 20,
"byteStart": 0
}
}
],
"plaintext": "Back to top 👆🏼"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": " "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.horizontalRule"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": " "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 2,
"plaintext": "ActivityPub"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": " "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Huey Lee explores:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://huey.xyz/posts/2026-05-10-configuring-sso-with-mastodon"
}
],
"index": {
"byteEnd": 27,
"byteStart": 0
}
}
],
"plaintext": "Configuring SSO on Mastodon"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Evan Prodromou explains:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://cosocial.ca/@evan/116591693871988651"
}
],
"index": {
"byteEnd": 89,
"byteStart": 0
}
}
],
"plaintext": "For the #ActivityPubAPI, we need a profile of OAuth to use for accessing the actor's data"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Hollo announces:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://hollo.social/@hollo/019e451e-f368-70e2-b993-77d01a14a677"
}
],
"index": {
"byteEnd": 18,
"byteStart": 0
}
}
],
"plaintext": "Hollo 0.9.0 is out"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
],
"index": {
"byteEnd": 46,
"byteStart": 0
}
}
],
"level": 3,
"plaintext": "This week's featured ActivityPub featured tool"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 4,
"plaintext": "Fediverse Developer Matrix Network"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "A place for people developing software for the Fediverse, using protocols such as ActivityPub and ActivityStreams, HTTP signatures and Webfinger."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://matrix.to/#/%23fediverse-developer-network:matrix.org"
}
],
"index": {
"byteEnd": 27,
"byteStart": 0
}
}
],
"plaintext": "Fediverse Developer Network"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "#top"
}
],
"index": {
"byteEnd": 20,
"byteStart": 0
}
}
],
"plaintext": "Back to top 👆🏼"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": " "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.horizontalRule"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": " "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 2,
"plaintext": "Fediverse"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": " "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Fedivariety reviews:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://www.fedivariety.org/blog/fedivariety-s-unconference"
}
],
"index": {
"byteEnd": 44,
"byteStart": 0
}
}
],
"plaintext": "FediVariety’s unconference: Nodes On A Web"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Sefan Bohacek shows us how to:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://stefanbohacek.com/blog/make-your-website-or-blog-fediverse-ready/"
}
],
"index": {
"byteEnd": 41,
"byteStart": 0
}
}
],
"plaintext": "Make your website or blog Fediverse-ready"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "FediLab Apps is:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://toot.fedilab.app/@apps/116580063732663940"
}
],
"index": {
"byteEnd": 67,
"byteStart": 0
}
}
],
"plaintext": "Exploring a desktop version of Holos, and early tests are promising"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Edmond recommends:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://vael.town/@edmond/116597645031720128"
}
],
"index": {
"byteEnd": 65,
"byteStart": 0
}
}
],
"plaintext": "Blocking the \"meta-externalagent\" user agent from your web server"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Technically Good continues a series:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://technically-good.ca/blog/alternatives-pt-ii-social-networking/"
}
],
"index": {
"byteEnd": 39,
"byteStart": 0
}
}
],
"plaintext": "Alternatives Pt. II - Social Networking"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
],
"index": {
"byteEnd": 85,
"byteStart": 0
}
}
],
"plaintext": "A good one to share with a newbie or a friend you want to free from Techno Feudalism."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "PeerTube announces:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://framapiaf.org/@peertube/116607315276964454"
}
],
"index": {
"byteEnd": 36,
"byteStart": 0
}
}
],
"plaintext": "We've just published #PeerTube 8.1.6"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Friendica announces:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://forum.friendi.ca/display/39bbe52a-fd551e09-6fb8d974578c6530"
}
],
"index": {
"byteEnd": 26,
"byteStart": 0
}
}
],
"plaintext": "Friendica 2026.05 released"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 3,
"plaintext": "Bonfire"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "We published:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://www.thefulcrum.dev/bonfire-a-social-platform-apart/"
}
],
"index": {
"byteEnd": 32,
"byteStart": 0
}
}
],
"plaintext": "Bonfire: A Social Platform Apart"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "And did you see our featured articles?"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "#top"
}
],
"index": {
"byteEnd": 20,
"byteStart": 0
}
}
],
"plaintext": "Back to top 👆🏼"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": " "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.horizontalRule"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": " "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 2,
"plaintext": "More"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": " "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Connected Places has:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://connectedplaces.online/reports/fr163-decrypting-matrix/"
}
],
"index": {
"byteEnd": 28,
"byteStart": 0
}
}
],
"plaintext": "FR 163 – Decrypting Matrix"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
],
"index": {
"byteEnd": 54,
"byteStart": 0
}
}
],
"plaintext": "It's good to see they will start covering Matrix more."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Fabio Manganiello announces:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://manganiello.eu/objects/80447b99-415a-4b56-a17a-a7c9b236e74e"
}
],
"index": {
"byteEnd": 31,
"byteStart": 0
}
}
],
"plaintext": "chat-translate is a new project"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 3,
"plaintext": "RSS"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Rob Hoeijmakers says:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://hoeijmakers.net/rss-is-not-dead-it-just-changed-audience/"
}
],
"index": {
"byteEnd": 42,
"byteStart": 0
}
}
],
"plaintext": "RSS is not dead. It just changed audience."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
],
"index": {
"byteEnd": 37,
"byteStart": 0
}
}
],
"plaintext": "But, we can still use it as intended."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Entropic Thoughts looks at:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://entropicthoughts.com/article-previews-in-rss"
}
],
"index": {
"byteEnd": 23,
"byteStart": 0
}
}
],
"plaintext": "Article previews in RSS"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Half An Hour explores:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://halfanhour.blogspot.com/2026/05/adding-did-to-rss-and-atom-feeds.html"
}
],
"index": {
"byteEnd": 32,
"byteStart": 0
}
}
],
"plaintext": "Adding DID to RSS and Atom Feeds"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "DanQ is:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://danq.me/2026/02/06/phantom-obligation-vs-freshrss/"
}
],
"index": {
"byteEnd": 39,
"byteStart": 0
}
}
],
"plaintext": "Reducing Phantom Obligation in FreshRSS"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "And Terry Godier examines:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://terrygodier.com/phantom-obligation"
}
],
"index": {
"byteEnd": 18,
"byteStart": 0
}
}
],
"plaintext": "Phantom Obligation"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 3,
"plaintext": "Other Federated Social Media"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "The Atmosphere Community shares:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://blog.atmosphere.community/a/3mlvrjheftn23-atstore-the-atmosphere-directory-and-community-involvement"
}
],
"index": {
"byteEnd": 60,
"byteStart": 0
}
}
],
"plaintext": "ATStore, the Atmosphere Directory, and Community Involvement"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
],
"index": {
"byteEnd": 45,
"byteStart": 0
}
},
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
},
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://marque.at/"
}
],
"index": {
"byteEnd": 51,
"byteStart": 45
}
},
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
],
"index": {
"byteEnd": 56,
"byteStart": 51
}
},
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
},
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://syntax.club/"
}
],
"index": {
"byteEnd": 67,
"byteStart": 56
}
},
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
],
"index": {
"byteEnd": 103,
"byteStart": 67
}
}
],
"plaintext": "The development apps would be relevant here. Marque and Syntax Club seem useful. And Tangled of course."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Second Brain updates:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://www.ssp.sh/brain/at-protocol/"
}
],
"index": {
"byteEnd": 31,
"byteStart": 0
}
}
],
"plaintext": "AT Protocol Resources and Tools"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Boltless shares:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://leaflet.pub/p/did:plc:xasnlahkri4ewmbuzly2rlc5/3mmex6biynk2g"
}
],
"index": {
"byteEnd": 33,
"byteStart": 0
}
}
],
"plaintext": "Tangled: Knot-stored COB proposal"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "ActivityPub for WordPress announces:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://activitypub.blog/2026/05/20/atmosphere-1-0-0-liftoff/"
}
],
"index": {
"byteEnd": 28,
"byteStart": 0
}
}
],
"plaintext": "ATmosphere 1.0.0 — Liftoff"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
],
"index": {
"byteEnd": 36,
"byteStart": 0
}
}
],
"plaintext": "Yes, it's in the correct section. ;)"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Frank Hecker moves from:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://frankhecker.com/2026/05/16/from-bluesky-to-blacksky/"
}
],
"index": {
"byteEnd": 24,
"byteStart": 0
}
}
],
"plaintext": "From Bluesky to Blacksky"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
],
"index": {
"byteEnd": 6,
"byteStart": 0
}
}
],
"plaintext": "Great."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 3,
"plaintext": "Democracy Tech"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Unredacted shares its mission:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://blog.torproject.org/keeping-the-doors-open-unredacted/"
}
],
"index": {
"byteEnd": 22,
"byteStart": 0
}
}
],
"plaintext": "Keeping the doors open"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Commons Network reviews the:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://www.commonsnetwork.org/2026/05/18/new-european-partnership-against-dependence-on-big-tech/"
}
],
"index": {
"byteEnd": 55,
"byteStart": 0
}
}
],
"plaintext": "New European partnership against dependence on Big Tech"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": " "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.horizontalRule"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": " "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 2,
"plaintext": "CTAs"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.unorderedList",
"children": [
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "That’s it for this week. Please share The Programmer's Fulcrum."
}
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://flipboard.com/@mobileatom/the-fulcrum-coding-for-democracy-and-the-omn-5g0jmckdz"
}
],
"index": {
"byteEnd": 23,
"byteStart": 11
}
},
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://surf.social/feed/surf%2Fcustom%2F01kpd8cajhcyvp7dax422z7hfq"
}
],
"index": {
"byteEnd": 31,
"byteStart": 27
}
},
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://ghostverse.link/@thefulcrum@thefulcrum.dev"
}
],
"index": {
"byteEnd": 65,
"byteStart": 39
}
},
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://bsky.app/profile/thefulcrum.eurosky.social"
}
],
"index": {
"byteEnd": 114,
"byteStart": 89
}
}
],
"plaintext": "Follow us on Flipboard or Surf or at @thefulcrum@thefulcrum.dev on the Fediverse or at thefulcrum.eurosky.social for daily coverage."
}
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://www.thefulcrum.dev/techno-anarchist-manifesto/"
}
],
"index": {
"byteEnd": 52,
"byteStart": 22
}
}
],
"plaintext": "Read, live, and share The Techno Anarchist Manifesto!"
}
}
]
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": " "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
],
"index": {
"byteEnd": 43,
"byteStart": 0
}
}
],
"plaintext": "And please build something for a community!"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": " "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.horizontalRule"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": " "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 2,
"plaintext": "Blasts from the past"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://battalion.mobileatom.net/?page_id=251"
}
],
"index": {
"byteEnd": 24,
"byteStart": 0
}
}
],
"plaintext": "Previous Battalion Posts"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://symfonystation.mobileatom.net/weekly-communiques"
}
],
"index": {
"byteEnd": 30,
"byteStart": 0
}
}
],
"plaintext": "Previous Symfony Station Posts"
}
}
],
"id": "019e53ec-6dbe-7bb3-82a7-ccacbc534a9c"
}
]
},
"description": "Welcome to your your weekly curation of the essential news in the Open Media Network and Fediverse development communities with a focus on devastating big tech via Techno Anarchism.",
"path": "/3mmizpflntk2g",
"publishedAt": "2026-05-23T08:27:19.134Z",
"site": "at://did:plc:ztjsajckkmfscs3tshez4ath/site.standard.publication/3mi4k4i7dns2o",
"tags": [
"programming",
"fediverse",
"ActivityPub",
"ATProto",
"WebDev"
],
"title": "The Programmer's Fulcrum: 22 May, 2026"
}