{
"path": "/3mkfg6n5ax22t",
"site": "at://did:plc:ztjsajckkmfscs3tshez4ath/site.standard.publication/3mi4k4i7dns2o",
"tags": [
"activitypub",
"atproto",
"fediverse",
"programming"
],
"$type": "site.standard.document",
"title": "The Programmer's Fulcrum: 24 April, 2026",
"content": {
"$type": "pub.leaflet.content",
"pages": [
{
"id": "019dc976-4dd4-7bb7-b1b3-63ccb73c02de",
"$type": "pub.leaflet.pages.linearDocument",
"blocks": [
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 44,
"byteStart": 33
},
"features": [
{
"uri": "https://www.thefulcrum.dev/the-programmers-fulcrum-24-april-2026/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "This post originally appeared on The Fulcrum."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 258,
"byteStart": 171
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"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. 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": [
{
"index": {
"byteEnd": 81,
"byteStart": 55
},
"features": [
{
"uri": "https://www.thefulcrum.dev/techno-anarchist-manifesto/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
},
{
"index": {
"byteEnd": 148,
"byteStart": 130
},
"features": [
{
"uri": "https://hamishcampbell.com/open-media-networking/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"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": [
{
"index": {
"byteEnd": 16,
"byteStart": 0
},
"features": [
{
"uri": "#cms",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Sites/Blogs/CMSs"
}
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 5,
"byteStart": 0
},
"features": [
{
"uri": "#tools",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Tools"
}
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 11,
"byteStart": 0
},
"features": [
{
"uri": "#programming",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Programming"
}
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 11,
"byteStart": 0
},
"features": [
{
"uri": "#activitypub",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "ActivityPub"
}
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 9,
"byteStart": 0
},
"features": [
{
"uri": "#fediverse",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Fediverse"
}
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 4,
"byteStart": 0
},
"features": [
{
"uri": "#more",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "More"
}
}
]
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 121,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"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.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",
"plaintext": "Coding.Social writes:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "The ActivityPub fediverse is doing great, right?"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "But do you know the extent to which the fediverse installed base has strayed from the promise and power contained in the open standards documents?"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "And that it constrains itself ever further into limited application areas, a self-inflicted narrow straitjacket, if we allow this standards divergence to continue?"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Did you also know that it is essentially only two (!!) people who are the pillars that try to uphold the entire grassroots standardization process, both volunteers?"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "We MUST improve our standardization practices to assure a healthy future for the fediverse social network."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 30,
"byteStart": 0
},
"features": [
{
"uri": "https://coding.social/blog/grassroots-evolution/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Grassroots fediverse evolution"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 48,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "Enjoy this one slowly and do some deep thinking."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Smashing Frames writes:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Our world is built around technological infrastructures that define what we see, who we can talk to, and what information gets presented to us."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "We also live in a time of growing fascist threats all over the planet: Many countries have neofascist movements and parties trying to gain power and potentially even get conservative parties to include them in governments. Some even have had success. Fascism is back with a vengeance."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "I want to analyze the relationship of fascism and what is called “AI” these days. Is this “technology” that keeps being used to reshape the world around us (for better or worse but dominantly worse) in some way connected to fascism?"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 24,
"byteStart": 0
},
"features": [
{
"uri": "https://tante.cc/2026/04/21/ai-as-a-fascist-artifact/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "AI as a Fascist Artifact"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Molily writes:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "This post describes my personal approach to software development. It highlights different aspects that are not strongly connected but all affected by generative AI – a topic I’m not particularly keen on writing about, but here we are."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 26,
"byteStart": 0
},
"features": [
{
"uri": "https://molily.de/understanding/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "The Power of Understanding"
}
},
{
"$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": "Rose Dreams explores:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 41,
"byteStart": 0
},
"features": [
{
"uri": "https://rosedreams.net/blog/2026/04/indie-web-for-artists-who-refuse-the-feed/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Indie Web for Artists Who Refuse the Feed"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Own Your Web has:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 35,
"byteStart": 0
},
"features": [
{
"uri": "https://newsletter.ownyourweb.site/archive/own-your-web-issue-18-curators/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Own Your Web – Issue 18: Curators"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 40,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "Consider subscribing to this newsletter."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 55,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "And as you know, curation is the main thing we do here."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "RedBeanIceCream says:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 57,
"byteStart": 0
},
"features": [
{
"uri": "https://readbeanicecream.surge.sh/2026/04/17/you-dont-need-a-tech-stack-you-just-need-a-text-editor/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "You Don't Need a Tech Stack. You Just Need a Text Editor."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 40,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "This is a little bare bones even for me."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Patrick Weaver examines:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 37,
"byteStart": 0
},
"features": [
{
"uri": "https://patrickweaver.net/blog/one-pager-self-editing-html/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Building a Web Page That Edits Itself"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Bludit shares its:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 16,
"byteStart": 0
},
"features": [
{
"uri": "https://docs.bludit.com/en/api/introduction",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "API Introduction"
}
},
{
"$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": [
{
"index": {
"byteEnd": 20,
"byteStart": 0
},
"features": [
{
"uri": "https://ghost.org/changelog/native-share-buttons/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Native share buttons"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Magic Pages announces:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 34,
"byteStart": 0
},
"features": [
{
"uri": "https://www.magicpages.co/roadmap/private-rss-feeds-for-your-members/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Private RSS Feeds for Your Members"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 29,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "This is a pro member feature."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 59,
"byteStart": 0
},
"features": [
{
"uri": "https://www.magicpages.co/blog/how-to-run-magic-pages-backups-in-a-local-ghost-environment/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "How to run Magic Pages backups in a local Ghost environment"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 3,
"plaintext": "Build Awesome"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Tom MacWright explores:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 8,
"byteStart": 0
},
"features": [
{
"uri": "https://macwright.com/2026/04/17/eleventy.html",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Eleventy"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Eleventy announces:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 48,
"byteStart": 0
},
"features": [
{
"uri": "https://www.11ty.dev/blog/collaborative-editing/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Collaborative Editing as Progressive Enhancement"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Ryan Gittings looks at:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 40,
"byteStart": 0
},
"features": [
{
"uri": "https://www.ryangittings.co.uk/blog/11ty-netlify-build-performance/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Speeding Up Large 11ty Builds on Netlify"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "The Tooth goes from:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 21,
"byteStart": 0
},
"features": [
{
"uri": "https://thetooth.name/blog/from-html-to-eleventy/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "From HTML to Eleventy"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Back to top 👆🏼"
}
},
{
"$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": "Jan Wilderboer explores:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 22,
"byteStart": 0
},
"features": [
{
"uri": "https://jan.wildeboer.net/2026/04/DigitalAutonomy/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Hello Digital Autonomy"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Open Source Security says:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 33,
"byteStart": 0
},
"features": [
{
"uri": "https://opensourcesecurity.io/2026/04-never-about-trust/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Open source was never about trust"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Heisse reports:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 72,
"byteStart": 0
},
"features": [
{
"uri": "https://www.heise.de/en/news/Paying-without-Google-New-consortium-wants-to-remove-custom-ROM-hurdles-11204037.html",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Paying without Google: New consortium wants to remove custom ROM hurdles"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Nextcloud looks at:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 58,
"byteStart": 0
},
"features": [
{
"uri": "https://nextcloud.com/blog/euro-office-license-compliance-and-what-open-source-means/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Euro-Office: License compliance and what open source means"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "F-Droid explores:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 47,
"byteStart": 0
},
"features": [
{
"uri": "https://f-droid.org/en/2026/04/20/exploring-sustainable-funding.html",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Exploring Sustainable Funding for Free Software"
}
},
{
"$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": "Signal has:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 45,
"byteStart": 0
},
"features": [
{
"uri": "https://aboutsignal.com/news/signal-is-working-on-screen-sharing-on-mobile/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Signal is working on screen sharing on mobile"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 73,
"byteStart": 0
},
"features": [
{
"uri": "https://aboutsignal.com/blog/phishing-attempts-on-signal/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Phishing attempts on Signal – How they work and how to protect yourself"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 59,
"byteStart": 0
},
"features": [
{
"uri": "https://aboutsignal.com/news/apple-fixes-ios-vulnerability-exposing-signal-notifications/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Apple fixes iOS vulnerability exposing Signal notifications"
}
},
{
"$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": "Kevin Boone is:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 82,
"byteStart": 0
},
"features": [
{
"uri": "https://kevinboone.me/caztor.html",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Announcing Caztor 1.0 – a browser for small-net protocols like Gemini and Gopher"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Waterfox announces:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 51,
"byteStart": 0
},
"features": [
{
"uri": "https://www.waterfox.com/releases/6.6.12/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "6.6.12 - Security fixes and ad blocker improvements"
}
},
{
"$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": "Nextcloud has:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 76,
"byteStart": 0
},
"features": [
{
"uri": "https://nextcloud.com/blog/nextcloud-aio-usability-updates-easy-management-of-your-apps-and-containers/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Nextcloud AIO usability updates: Easy management of your apps and containers"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 30,
"byteStart": 0
},
"features": [
{
"uri": "https://nextcloud.com/blog/euro-office-building-momentum/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Euro-Office: Building momentum"
}
},
{
"$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": [
{
"index": {
"byteEnd": 19,
"byteStart": 0
},
"features": [
{
"uri": "https://www.gimp.org/news/2026/04/19/gimp-3-2-4-released/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "GIMP 3.2.4 Released"
}
},
{
"$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": [
{
"index": {
"byteEnd": 73,
"byteStart": 0
},
"features": [
{
"uri": "https://9to5linux.com/gimp-3-2-4-improves-text-and-crop-tools-pdf-export-psd-import-and-more",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "GIMP 3.2.4 Improves Text and Crop Tools, PDF Export, PSD Import, and More"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "The Document Foundation examines:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 41,
"byteStart": 0
},
"features": [
{
"uri": "https://blog.documentfoundation.org/blog/2026/04/21/using-libreoffice-for-writing-screenplays/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Using LibreOffice for writing screenplays"
}
},
{
"$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": "Phoronix reports:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 53,
"byteStart": 0
},
"features": [
{
"uri": "https://www.phoronix.com/news/Ubuntu-26.04-LTS",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Ubuntu 26.04 LTS Now Available & Powered By Linux 7.0"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Pure OS shares its:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 45,
"byteStart": 0
},
"features": [
{
"uri": "https://puri.sm/posts/pureos-crimson-development-report-march-2026/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "PureOS Crimson Development Report: March 2026"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Ruben De Smet has:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 22,
"byteStart": 0
},
"features": [
{
"uri": "https://www.rubdos.be/2026/04/15/my-sailfish-os-journey.html",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "My Sailfish OS Journey"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 47,
"byteStart": 0
},
"features": [
{
"uri": "https://www.rubdos.be/2026/04/17/my-sailfish-os-journey-apps.html",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "My Sailfish OS Journey: Apps for my daily needs"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 14,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "Bon prenom. ;)"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 3,
"plaintext": "Hosting / Serving"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Kevin Boone looks at:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 46,
"byteStart": 0
},
"features": [
{
"uri": "https://kevinboone.me/steamroller.html",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Self-hosting and steamrollers in the small net"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 3,
"facets": [
{
"index": {
"byteEnd": 29,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"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": "Using Framatoolbox is the first step on the road to your digital autonomy."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 12,
"byteStart": 0
},
"features": [
{
"uri": "https://framatoolbox.org/abc/en/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Framatoolbox"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Back to top 👆🏼"
}
},
{
"$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": "404 Media reports:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 70,
"byteStart": 0
},
"features": [
{
"uri": "https://www.404media.co/this-ai-tool-rips-off-open-source-software-without-violating-copyright/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "This AI Tool Rips Off Open Source Software Without Violating Copyright"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "It’s FOSS reports:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 55,
"byteStart": 0
},
"features": [
{
"uri": "https://itsfoss.com/news/kamila-enlightenment-e16-bug/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "21-year-old Polish Woman Fixed a 20-year-old Linux Bug!"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 34,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "That's inspirational. And awesome."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Geri Reid opines:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 51,
"byteStart": 0
},
"features": [
{
"uri": "https://gerireid.com/blog/making-product-docs-work-for-humans-and-ai",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Making product documentation work for humans and AI"
}
},
{
"$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": "ShitHub shares:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 24,
"byteStart": 0
},
"features": [
{
"uri": "https://github.blog/open-source/git/highlights-from-git-2-54/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Highlights from Git 2.54"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Tom Ootes announces:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 37,
"byteStart": 0
},
"features": [
{
"uri": "https://developer.overheid.nl/blog/2026/04/24/we-gaan-samen-code-overheid-bouwen",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "We gaan samen code.overheid.nl bouwen"
}
},
{
"$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": "Interconnected announces:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 47,
"byteStart": 0
},
"features": [
{
"uri": "https://interconnected.org/home/2026/04/10/open-mist",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Mist is now open source and looking for interop"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "CSS Tricks has:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 25,
"byteStart": 0
},
"features": [
{
"uri": "https://css-tricks.com/markdown-astro/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Markdown + Astro = ❤️"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 41,
"byteStart": 0
},
"features": [
{
"uri": "https://css-tricks.com/astro-markdown-component/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Enhancing Astro With a Markdown Component"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Sune Vuorela announces:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 23,
"byteStart": 0
},
"features": [
{
"uri": "https://floss.social/@svuorela/116440820810065523",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Kookbook 0.3.0 released"
}
},
{
"$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": "That HTML Blog explores:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 37,
"byteStart": 0
},
"features": [
{
"uri": "https://thathtml.blog/2026/04/two-paradigms-for-enhancing-html-tags/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Two Paradigms for Enhancing HTML Tags"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Piccalilli examines:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 28,
"byteStart": 0
},
"features": [
{
"uri": "https://piccalil.li/blog/the-end-of-responsive-images/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "The end of responsive images"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 35,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "Interesting, though very extensive."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Frontend Masters says:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 59,
"byteStart": 0
},
"features": [
{
"uri": "https://frontendmasters.com/blog/the-web-is-fun-again-first-experiments-with-html-in-canvas/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "The Web Is Fun Again: First Experiments with HTML in Canvas"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 3,
"plaintext": "Web Components"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Aaron Gustafson shows us:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 30,
"byteStart": 0
},
"features": [
{
"uri": "https://www.aaron-gustafson.com/notebook/never-lose-form-progress-again/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Never Lose Form Progress Again"
}
},
{
"$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": "Thibolt shows us how to:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 30,
"byteStart": 0
},
"features": [
{
"uri": "https://ergaster.org/til/pagefind-static-search/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Never Lose Form Progress Again"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Frontend Master notes:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 42,
"byteStart": 0
},
"features": [
{
"uri": "https://frontendmasters.com/blog/ai-generated-ui-is-inaccessible-by-default/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "AI-Generated UI Is Inaccessible by Default"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 25,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "Just use HTML. Correctly."
}
},
{
"$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": "Aram Zucker-Scharff says:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 55,
"byteStart": 0
},
"features": [
{
"uri": "https://aramzs.xyz/noteworthy/the-internets-most-powerful-archiving-tool-is-in-peril/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "The Internet's Most Powerful Archiving Tool Is in Peril"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Where’s Your Ed says:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 30,
"byteStart": 0
},
"features": [
{
"uri": "https://www.wheresyoured.at/i-will-never-respect-a-website/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "I Will Never Respect A Website"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 11,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "Solid take."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Flying Penguin has:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 72,
"byteStart": 0
},
"features": [
{
"uri": "https://www.flyingpenguin.com/the-boy-that-cried-mythos-verification-is-collapsing-trust-in-anthropic/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "The Boy That Cried Mythos: Verification is Collapsing Trust in Anthropic"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 3,
"plaintext": "Other"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "XWIKI shares:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 72,
"byteStart": 0
},
"features": [
{
"uri": "https://xwiki.com/en/Blog/XWiki-SAS-Q1-2026-products-updates/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "XWiki SAS Q1 2026 updates: new features, improvements, and what’s next"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 67,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "I was excited to see the Nextcloud Cristals extension announcement."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 3,
"facets": [
{
"index": {
"byteEnd": 37,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": "This week's featured programming tool"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 4,
"plaintext": "Twig"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Twig is the fast, flexible, and secure modern template engine for PHP."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 4,
"byteStart": 0
},
"features": [
{
"uri": "https://twig.symfony.com/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Twig"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Back to top 👆🏼"
}
},
{
"$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": "Fedify looks at:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 25,
"byteStart": 0
},
"features": [
{
"uri": "https://d180af62.fedify.pages.dev/tutorial/astro-blog",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Building a federated blog"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 29,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "Cool. I might give it a shot."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Philip Norton releases:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 51,
"byteStart": 0
},
"features": [
{
"uri": "https://fosstodon.org/@philipnorton42/116433494331722889",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "The alpha1 version of my Drupal Mastodon API module"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Ben Pate announces:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 90,
"byteStart": 0
},
"features": [
{
"uri": "https://mastodon.social/@benpate/116427507647035869",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Activity Intents are now supported (or soon to be) by the biggest Fediverse apps out there"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "James Endres Howell explores:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 54,
"byteStart": 0
},
"features": [
{
"uri": "https://jamesendreshowell.com/2026-04-15-embedding-a-mastodon-thread-as-comments-to-a-blog-post.html",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Embedding a Mastodon thread as comments to a blog post"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "ActivityPub for WordPress has:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 24,
"byteStart": 0
},
"features": [
{
"uri": "https://activitypub.blog/2026/04/22/8-1-0-by-the-numbers/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "8.1.0 — By the Numbers"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 81,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "Good stuff, especially on the API front. I will have to see if it works on Ivory."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 3,
"facets": [
{
"index": {
"byteEnd": 46,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": "This week's featured ActivityPub featured tool"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 4,
"plaintext": "Emissary"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Emissary is a Fedi server built for end users, developers, and admins."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 8,
"byteStart": 0
},
"features": [
{
"uri": "https://emissary.dev/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Emissary"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Back to top 👆🏼"
}
},
{
"$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": "The Electronic Frontier Foundation shares:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 57,
"byteStart": 0
},
"features": [
{
"uri": "https://www.eff.org/deeplinks/2026/04/copyright-and-dmca-best-practices-fediverse-operators",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Copyright and DMCA Best Practices for Fediverse Operators"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Holos announces:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 30,
"byteStart": 0
},
"features": [
{
"uri": "https://mastodon.social/@HolosSocial/116438496289915067",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "HolosSocial 1.4.0 is available"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Sebastiaan Ammerlaan has:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 24,
"byteStart": 0
},
"features": [
{
"uri": "https://translate.kagi.com/bammerlaan.nl/posts/Voorbeeldbrief-Fediverse",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Voorbeeldbrief Fediverse"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 102,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "Sadly, I can only scrape by in Romance languages. So, this is a translated link for an important idea."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Connected Places says:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 57,
"byteStart": 0
},
"features": [
{
"uri": "https://connectedplaces.online/reports/fr160-everyone-wants-servers-and-nobody-wants-servers/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "FR160 – Everyone Wants Servers And Nobody Wants Servers"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 64,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "The main lesson here is not to be on Bluesky or Mastodon.Social."
}
},
{
"$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": "Bonfire announces:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 76,
"byteStart": 0
},
"features": [
{
"uri": "https://bonfire.cafe/pub/objects/01KPT1W9668EFC393VBCWJE432",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Ss part of the Nina Festival, we're hosting a workshop to think with Bonfire"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Back to top 👆🏼"
}
},
{
"$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": "Element says:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 72,
"byteStart": 0
},
"features": [
{
"uri": "https://element.io/blog/digital-sovereignty-is-built-on-an-open-standard-that-enables-federation/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Digital sovereignty is built on an open standard that enables federation"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 23,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "That's a great graphic."
}
},
{
"$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": "Ryan Charles shares a:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 57,
"byteStart": 0
},
"features": [
{
"uri": "https://ryanxcharles.com/blog/2026-04-14-rss-anyway-preview",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "RSS Anyway Preview: Subscribe to Anything on the Internet"
}
},
{
"$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": "Chunky Guys announces:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 57,
"byteStart": 0
},
"features": [
{
"uri": "https://blog.chunkyguys.com/3mjrclkfkds2w",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "When Bluesky goes down, we go down. That needs to change."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Underreacted has:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 40,
"byteStart": 0
},
"features": [
{
"uri": "https://underreacted.leaflet.pub/3mjfjsk24qk2i",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "ATProto made simple: publishing lexicons"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Atmosphere Community announces:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 50,
"byteStart": 0
},
"features": [
{
"uri": "https://blog.atmosphere.community/a/3mjpzobqxuq23-new-blog-and-first-release-of-atmosphere-community",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "New blog and first release of Atmosphere Community"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Stefan Bohacek announces:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 23,
"byteStart": 0
},
"features": [
{
"uri": "https://stefanbohacek.online/@stefan/116450418047268670",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Fediverse Friend Finder"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 3,
"plaintext": "eMail / Newsletters"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Buttondown has a great history story:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 53,
"byteStart": 0
},
"features": [
{
"uri": "https://buttondown.com/blog/email-survived-government",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "The US government tried really hard to screw up email"
}
},
{
"$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": "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": [
{
"index": {
"byteEnd": 23,
"byteStart": 11
},
"features": [
{
"uri": "https://flipboard.com/@mobileatom/the-fulcrum-coding-for-democracy-and-the-omn-5g0jmckdz",
"$type": "pub.leaflet.richtext.facet#link"
}
]
},
{
"index": {
"byteEnd": 57,
"byteStart": 31
},
"features": [
{
"uri": "https://ghostverse.link/@thefulcrum@thefulcrum.dev",
"$type": "pub.leaflet.richtext.facet#link"
}
]
},
{
"index": {
"byteEnd": 106,
"byteStart": 81
},
"features": [
{
"uri": "https://bsky.app/profile/thefulcrum.eurosky.social",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Follow us on Flipboard 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": [
{
"index": {
"byteEnd": 52,
"byteStart": 22
},
"features": [
{
"uri": "https://www.thefulcrum.dev/techno-anarchist-manifesto/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Read, live, and share The Techno Anarchist Manifesto!"
}
}
]
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 43,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "And please build something for a community!"
}
},
{
"$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": "Blasts from the past"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 24,
"byteStart": 0
},
"features": [
{
"uri": "https://battalion.mobileatom.net/?page_id=251",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Previous Battalion Posts"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 30,
"byteStart": 0
},
"features": [
{
"uri": "https://symfonystation.mobileatom.net/weekly-communiques",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Previous Symfony Station Posts"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": ""
}
}
]
}
]
},
"bskyPostRef": {
"cid": "bafyreianaxl26rsxwlmb5vzbj3djxpwb7rxmko7s2gkeksr4cmjrspnin4",
"uri": "at://did:plc:ztjsajckkmfscs3tshez4ath/app.bsky.feed.post/3mkfg6rtdok2t",
"commit": {
"cid": "bafyreihem2s4z66bhdfi3jjpwvytxpujxhc6eow2a4bweyqebkk4zj5zzm",
"rev": "3mkfg6rwx2z2v"
},
"validationStatus": "valid"
},
"description": "We aim to provide actionable content you can use to destroy Techno Feudalism each week.",
"publishedAt": "2026-04-26T11:09:44.158Z"
}