{
"path": "/3mi4kmghqh22w",
"site": "at://did:plc:ztjsajckkmfscs3tshez4ath/site.standard.publication/3mi4k4i7dns2o",
"tags": [
"wordpress",
"activitypub",
"atproto"
],
"$type": "site.standard.document",
"title": "The Programmer's Fulcrum: 27 March, 2026",
"content": {
"$type": "pub.leaflet.content",
"pages": [
{
"id": "019d343a-b255-722a-8258-e25725586678",
"$type": "pub.leaflet.pages.linearDocument",
"blocks": [
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "It's your weekly review 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://battalion.mobileatom.net/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": 12,
"byteStart": 0
},
"features": [
{
"uri": "#cms",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Website 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": "Professor Patsch writes:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "I understand that in order to get people away from the places that are damaging to them, we should first provide an alternative that feels familiar."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "I posit that we have done that, and the big storm of people into the Fediverse has not happened, and probably will not ever happen."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "So where does this leave us, as activists, technologists, and dreamers?"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "First off, I think it’s incredibly freeing. We have a license to try new things! We can come up with new ideas in small groups, driven by the actual wants and needs of us as the wider fediverse, small friend groups, and individual human beings."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "And best of all: advertisers are not our masters, and scaling is not our dogma!"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 38,
"byteStart": 0
},
"features": [
{
"uri": "https://profpatsch.de/essays/a-more-social-media",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Can we have a more “social” media?"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 84,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "This coincides with my opinion that the Fediverse is for communities not the masses."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Hamish Campbell writes:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "The Open Media Network is simple flows, not platforms, it’s a way of thinking about media as flows of objects moving through a network. If people can’t picture how the system works, they can’t govern it. Think: pipes, flows, and holding tanks. Content flows. People shape the flow."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 32,
"byteStart": 0
},
"features": [
{
"uri": "https://hamishcampbell.com/lets-try-and-simplify-the-omn/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Let’s try and simplify the OMN"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 24,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "A fantastic explanation."
}
},
{
"$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": "Joost de Valk of Yoast SEO fame asks:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 18,
"byteStart": 0
},
"features": [
{
"uri": "https://joost.blog/do-you-need-a-cms/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Do you need a CMS?"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 66,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "And even if the answer is yes, you still probably need an SSG one."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Timeland shares a similiar story:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 48,
"byteStart": 0
},
"features": [
{
"uri": "https://timleland.com/how-i-migrated-this-blog-from-wordpress-to-astro/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "How I Migrated This Blog from WordPress to Astro"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Forbes reports:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 44,
"byteStart": 0
},
"features": [
{
"uri": "https://www.forbes.com/sites/joetoscano1/2026/03/06/google-just-patented-the-end-of-your-website/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Google Just Patented The End Of Your Website"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 32,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "Is enshittification exponential?"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 3,
"plaintext": "Madblog"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Fabio Manganiello has:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 38,
"byteStart": 0
},
"features": [
{
"uri": "https://blog.fabiomanganiello.com/article/support-for-post-visibility-in-madblog",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Support for post visibility in Madblog"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 41,
"byteStart": 0
},
"features": [
{
"uri": "https://blog.fabiomanganiello.com/reply/1774201228-elettrona-poliversity-it-reply",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Support for About Me and custom nav links"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 3,
"plaintext": "WordPress"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "WordPress has:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 33,
"byteStart": 0
},
"features": [
{
"uri": "https://wordpress.org/news/2026/03/wordpress-7-0-release-candidate-2/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "WordPress 7.0 Release Candidate 2"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 49,
"byteStart": 0
},
"features": [
{
"uri": "https://wordpress.org/news/2026/03/wp-packages/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "WP Packages is Working the Way Open Source Should"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Make WordPress publishes its:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 29,
"byteStart": 0
},
"features": [
{
"uri": "https://make.wordpress.org/core/2026/03/25/wordpress-6-9-2-retrospective/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "WordPress 6.9.2 retrospective"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Alex Kirk announces:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 11,
"byteStart": 0
},
"features": [
{
"uri": "https://alex.kirk.at/2026/03/25/friends-4-0/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Friends 4.0"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Learn WP Theme Dev shows us:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 48,
"byteStart": 0
},
"features": [
{
"uri": "https://www.learnwptheme.dev/how-to-set-default-block-styles-in-a-block-theme/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "How to set default block styles in a block theme"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "The Repository reports:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 80,
"byteStart": 0
},
"features": [
{
"uri": "https://www.therepository.email/wordpress-is-colliding-with-ai-and-nobody-had-none-on-their-bingo-card",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "WordPress Is Colliding With AI — and Nobody Had ‘None’ on Their Bingo Card"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 86,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "KISS is driving this but using AI to do so is still an immoral choice 95% of the time."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Terence Eden explores:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 30,
"byteStart": 0
},
"features": [
{
"uri": "https://shkspr.mobi/blog/2026/03/adding-human-json-to-wordpress/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Adding human.json to WordPress"
}
},
{
"$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": "Great idea."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 3,
"plaintext": "ClassicPress"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "ClassicPress announces:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 34,
"byteStart": 0
},
"features": [
{
"uri": "https://www.classicpress.net/classicpress-version-2-7-is-out/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "ClassicPress Version 2.7.0 is Out!"
}
},
{
"$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": 21,
"byteStart": 0
},
"features": [
{
"uri": "https://ghost.org/changelog/transistor/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Members-only podcasts"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Synaps Media is:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 68,
"byteStart": 0
},
"features": [
{
"uri": "https://www.synapsmedia.com/changelog/launching-free-ghost-theme-demo-hosting-starting-with-themex-studio/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Launching Free Ghost Theme Demo Hosting: Starting with ThemeX Studio"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "John Nolan says:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 23,
"byteStart": 0
},
"features": [
{
"uri": "https://john.onolan.org/i-built-a-cli-for-ghost/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "I built a CLI for Ghost"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Ben Werdmuller shares:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 18,
"byteStart": 0
},
"features": [
{
"uri": "https://werd.io/i-built-a-cli-for-ghost/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "His thoughts on it"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 3,
"plaintext": "Drupal CMS"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 299,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "I have selected my schedule for DrupalCamp Grenoble. Which, incredibly does not have any DrupalCMS or Canvas sessions. There are a few tangental and HTMX ones at least. Anyway, if you are attending, get in touch and I will treat you to a few (commiseration) beverages of your choice. Because ⬇️."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 286,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "I am going to the camp to decide if DrupalCMS 2.0 is easy enough for the average person to use for small sites (historically it's sucked at usability). And also to determine if we keep covering it here. I think the answers will be no and that it doesn't tightly fit with our objectives."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 210,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "And this was before they went all in on AI cuntitry and fascism at DrupalCon North America. It's a shame because other than its tone-deaf, clueless, and business-suckup leadership, Drupal has a great community."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 101,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "It will probably be my last DrupalCamp. I definitely have no interest in using it personally anymore."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Wim Leers opines about a:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 16,
"byteStart": 0
},
"features": [
{
"uri": "https://wimleers.com/validation-first",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Validation-first"
}
},
{
"$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 Image Cooperation shares:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 32,
"byteStart": 0
},
"features": [
{
"uri": "https://image.coop/blog/posts/2026/03/16/why-image-cooperative/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Why we started Image Cooperative"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 20,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "A great TAM project."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Bastian Greshake Tzovaras examines:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 56,
"byteStart": 0
},
"features": [
{
"uri": "https://tzovar.as/maintaining-a-human-web-with-humans-json-aiblacklist/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Maintaining a human web: human.json & the 'AI' blacklist"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Kagi announces:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 25,
"byteStart": 0
},
"features": [
{
"uri": "https://blog.kagi.com/small-web-updates",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Small Web Just Got Bigger"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 56,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "Cool. It's good for curation now that it has categories."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Terence Eden recommends:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 46,
"byteStart": 0
},
"features": [
{
"uri": "https://shkspr.mobi/blog/2024/03/caboom-comment-anywhere-bring-onto-own-media/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Caboom! Comment Anywhere, Bring Onto Own Media"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 16,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "A good strategy."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Framablog has:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 15,
"byteStart": 0
},
"features": [
{
"uri": "https://framablog.org/2026/03/26/lalternative/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "L’alternative"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "The European Commission looks at the:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 34,
"byteStart": 0
},
"features": [
{
"uri": "https://digital-strategy.ec.europa.eu/en/policies/cra-open-source",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Cyber Resilience Act - Open source"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Clingendael shares:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 92,
"byteStart": 0
},
"features": [
{
"uri": "https://www.clingendael.org/sites/default/files/2026-02/how%20europe%20can%20stop%20renting%20clouds.pdf",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "From Common Worries to Digital Commons: How Europe Can Stop Renting Clouds and Build Its Own"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Open_Future asks:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 31,
"byteStart": 0
},
"features": [
{
"uri": "https://openfuture.eu/blog/public-money-public-platforms/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Public Money, Public Platforms?"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "On a related note, the Digital Public Goods Alliance explores:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 62,
"byteStart": 0
},
"features": [
{
"uri": "https://new.digitalpublicgoods.net/blog/5-surprising-truths-open-source-government",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "5 Surprising Truths We Learned About Open Source in Government"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 12,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "Interesting."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 3,
"plaintext": "VPN"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Mullvad announces:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 79,
"byteStart": 0
},
"features": [
{
"uri": "https://mullvad.net/en/blog/2026/3/26/mullvad-browser-alpha-moves-to-firefox-rapid-release-and-adds-linux-arm-support",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Mullvad Browser Alpha moves to Firefox Rapid Release and adds Linux ARM support"
}
},
{
"$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": 75,
"byteStart": 0
},
"features": [
{
"uri": "https://aboutsignal.com/news/signal-is-working-on-the-ability-for-admins-to-end-group-chats-for-everyone/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Signal is working on the ability for admins to end group chats for everyone"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 95,
"byteStart": 0
},
"features": [
{
"uri": "https://aboutsignal.com/news/insights-into-the-latest-encryption-developments-at-signal-at-the-real-world-crypto-symposium/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Insights into the latest encryption developments at Signal from the Real World Crypto Symposium"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 62,
"byteStart": 0
},
"features": [
{
"uri": "https://aboutsignal.com/news/signal-brings-cross-platform-on-device-backups-to-android-beta/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Signal brings cross-platform on-device backups to Android beta"
}
},
{
"$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": [
{
"index": {
"byteEnd": 75,
"byteStart": 0
},
"features": [
{
"uri": "https://9to5linux.com/firefox-149-web-browser-is-now-available-for-download-this-is-whats-new",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Firefox 149 Web Browser Is Now Available for Download, This Is What’s New"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 66,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "Prepare to update your Zen, Librewolf, and Waterfox browsers soon."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Servo has its:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 25,
"byteStart": 0
},
"features": [
{
"uri": "https://floss.social/@servo/116299976731534555",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Highlights from last week"
}
},
{
"$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": "How to Geek explores:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 37,
"byteStart": 0
},
"features": [
{
"uri": "https://www.howtogeek.com/6-google-drive-replacements-for-linux/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "6 Google Drive replacements for Linux"
}
},
{
"$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": [
{
"index": {
"byteEnd": 46,
"byteStart": 0
},
"features": [
{
"uri": "https://blog.documentfoundation.org/blog/2026/03/23/dear-europe/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Dear Europe: Germany has shown the way forward"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 98,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "Now that I'm a retired solo/social-preneur I mainly use markdown. But, this is still great to see!"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 108,
"byteStart": 0
},
"features": [
{
"uri": "https://blog.documentfoundation.org/blog/2026/03/26/libreoffice-26-2-2-and-libreoffice-25-8-6/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "The Document Foundation announces the simultaneous availability of LibreOffice 26.2.2 and LibreOffice 25.8.6"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 52,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "It brings better markdown support which is tres bon."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "9to5 Linux reports:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 81,
"byteStart": 0
},
"features": [
{
"uri": "https://9to5linux.com/calibre-9-6-adds-new-card-based-view-of-full-text-search-results-with-book-covers",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Calibre 9.6 Adds New Card-Based View of Full-Text Search Results with Book Covers"
}
},
{
"$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": "Where's Your Ed shares:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 35,
"byteStart": 0
},
"features": [
{
"uri": "https://www.wheresyoured.at/hatersguide-adobe/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Premium: The Hater's Guide To Adobe"
}
},
{
"$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": 72,
"byteStart": 0
},
"features": [
{
"uri": "https://9to5linux.com/openshot-3-5-open-source-video-editor-released-with-new-default-timeline",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "OpenShot 3.5 Open-Source Video Editor Released with New Default Timeline"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 77,
"byteStart": 0
},
"features": [
{
"uri": "https://9to5linux.com/krita-6-0-digital-painting-app-released-with-wayland-color-management-support",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Krita 6.0 Digital Painting App Released with Wayland Color Management Support"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 3,
"plaintext": "Linux"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "A.B. Murrow says:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 57,
"byteStart": 0
},
"features": [
{
"uri": "https://abmurrow.com/blog/i-dont-want-birthday-gifts-systemd-even-optionally",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "I Don't Want Birthday Gifts From Systemd, Even Optionally"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "GrapheneOS announces:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 38,
"byteStart": 0
},
"features": [
{
"uri": "https://grapheneos.social/@GrapheneOS/116263442003157332",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "GrapheneOS version 2026032000 released"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Sailfish OS has:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 71,
"byteStart": 0
},
"features": [
{
"uri": "https://forum.sailfishos.org/t/sailfish-community-news-19th-march-2026-meetup-in-lyon-next-saturday/28458",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Sailfish Community News, 19th March 2026 - Meetup in Lyon next Saturday"
}
},
{
"$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": [
{
"index": {
"byteEnd": 73,
"byteStart": 0
},
"features": [
{
"uri": "https://postmarketos.org/edge/2026/03/18/sudo-rs-instead-of-doas/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "New postmarketOS installations now by default use sudo-rs instead of doas"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 48,
"byteStart": 0
},
"features": [
{
"uri": "https://postmarketos.org/devel/2026/03/24/archiving-unmaintained-devices/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Unmaintained devices to be archived after v26.06"
}
},
{
"$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": 76,
"byteStart": 0
},
"features": [
{
"uri": "https://9to5linux.com/opensuse-releases-agama-19-installer-with-many-new-features-and-improvements",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "openSUSE Releases Agama 19 Installer with Many New Features and Improvements"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Fedora announces:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 25,
"byteStart": 0
},
"features": [
{
"uri": "https://communityblog.fedoraproject.org/the-forge-is-our-new-home/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "The forge is our new home"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 50,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "They are moving from rolling their own to Forgejo."
}
},
{
"$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": "Co-op Cloud has its:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 27,
"byteStart": 0
},
"features": [
{
"uri": "https://coopcloud.tech/blog/march-2025-equinox/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "March 2026 community update"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 68,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "You can deploy Bonfire and NodeBB with it among many more cool apps."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Elena Rossini continues a series:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 78,
"byteStart": 0
},
"features": [
{
"uri": "https://blog.elenarossini.com/a-newbies-guide-to-self-hosting-with-yunohost-part-5-upgrades-maintenance/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "A newbie's guide to self-hosting with YunoHost. Part 5: Upgrades & Maintenance"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 3,
"plaintext": "This week's featured OMN tool"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 4,
"plaintext": "Drupito"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Drupito is a hands off, coding-optional, maintainance-free version of Drupal CMS built with Drupal under the hood."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 7,
"byteStart": 0
},
"features": [
{
"uri": "https://drupito.com/effortless-drupal-hosting",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Drupito"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 32,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "It's Drupal with less horseshit."
}
},
{
"$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": "Geo Coop looks at:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 60,
"byteStart": 0
},
"features": [
{
"uri": "https://geo.coop/articles/best-creative-commons-license-solidarity-economy",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "The Best Creative Commons License for the Solidarity Economy"
}
},
{
"$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": "The Register reports:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 73,
"byteStart": 0
},
"features": [
{
"uri": "https://www.theregister.com/2026/03/26/github_ai_training_policy_changes/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "GitHub hits CTRL-Z, decides it will train its AI with user data after all"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 26,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "Codeberg or Forgejo, peeps"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "David Viramontes explores:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 51,
"byteStart": 0
},
"features": [
{
"uri": "https://dviramontes.com/posts/using-git-worktrees",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Using Git Worktrees for Parallel Branch Development"
}
},
{
"$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": "Armand Halbert says:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 32,
"byteStart": 0
},
"features": [
{
"uri": "https://ahalbert.com/technology/2026/03/24/vim-markdown.html",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Vim + Markdown = Writer's Heaven"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Vlad Rișcuția has:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 28,
"byteStart": 0
},
"features": [
{
"uri": "https://vladris.com/blog/2026/03/22/notes-on-markdown.html",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "DevLog 6: Extending Markdown"
}
},
{
"$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": "W3C shares:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 27,
"byteStart": 0
},
"features": [
{
"uri": "https://www.w3.org/events/meetings/bccff937-0e07-487f-bbee-6fb748793ebe/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Two editors for HTML slides"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 39,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "A great idea and two new OMN/TAM tools."
}
},
{
"$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": "CSS Tricks explores:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 56,
"byteStart": 0
},
"features": [
{
"uri": "https://css-tricks.com/experimenting-with-scroll-driven-corner-shape-animations/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Experimenting With Scroll-Driven corner-shape Animations"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 20,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "Slick little effect."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Kilian Valkhof examines:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 51,
"byteStart": 0
},
"features": [
{
"uri": "https://kilianvalkhof.com/2026/css-html/progressive-enhancement-as-a-benefit-of-css-nesting/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Progressive enhancement as a benefit of CSS Nesting"
}
},
{
"$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",
"facets": [
{
"index": {
"byteEnd": 88,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "I have been following this PWA-focused project for a while and its ready for production."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 5,
"byteStart": 0
},
"features": [
{
"uri": "https://elenajs.com/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Elena"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Ariel Saliminen explains its:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 26,
"byteStart": 0
},
"features": [
{
"uri": "https://arielsalminen.com/2026/progressive-web-components/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Progressive Web Components"
}
},
{
"$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": "ESLint announces:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 23,
"byteStart": 0
},
"features": [
{
"uri": "https://eslint.org/blog/2026/03/eslint-v10.1.0-released/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "ESLint v10.1.0 released"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Frontend Masters looks at:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 57,
"byteStart": 0
},
"features": [
{
"uri": "https://frontendmasters.com/blog/shadow-dom-focus-delegation-getting-delegatesfocus-right/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Shadow DOM Focus Delegation: Getting delegatesFocus Right"
}
},
{
"$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": "Matthias Ott explores:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 21,
"byteStart": 0
},
"features": [
{
"uri": "https://matthiasott.com/notes/the-shape-of-friction",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "The Shape of Friction"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Agents of Chaos publishes:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 78,
"byteStart": 0
},
"features": [
{
"uri": "https://agentsofchaos.baulab.info/report.html",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "An exploratory red-teaming study of autonomous language-model–powered agents"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 39,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "Any fucks that use AI should read this."
}
},
{
"$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 announces:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 35,
"byteStart": 0
},
"features": [
{
"uri": "https://www.xwiki.org/xwiki/bin/view/ReleaseNotes/Data/XWiki/18.2.0RC1/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Release Notes for XWiki 18.2.0-rc-1"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Sasha Corti explains:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 76,
"byteStart": 0
},
"features": [
{
"uri": "https://corti.com/why-running-redis-in-a-local-docker-container-is-a-smart-move-for-developers/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Why Running Redis in a Local Docker Container Is a Smart Move for Developers"
}
},
{
"$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": "Elena"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "As mentioned above its:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 5,
"byteStart": 0
},
"features": [
{
"uri": "https://elenajs.com/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Elena"
}
},
{
"$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 Real Grunfink announces:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 40,
"byteStart": 0
},
"features": [
{
"uri": "https://comam.es/snac/grunfink/p/1774256733.794770",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "I've just published version 2.91 of Snac"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "New Public announces:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 18,
"byteStart": 0
},
"features": [
{
"uri": "https://newpublic.org/OSA",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Open Social Awards"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 107,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "If you're eligible, pat yourself on the back by applying. You could get some deserved recognition and cash."
}
},
{
"$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": "Social Docs"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "They're the comprehensive developer resource for ActivityPub, Mastodon, and the Fediverse."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 11,
"byteStart": 0
},
"features": [
{
"uri": "https://socialdocs.org/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Social Docs"
}
},
{
"$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": "FediSuite announces:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 74,
"byteStart": 0
},
"features": [
{
"uri": "https://www.fedisuite.com/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Social media management for the Fediverse with a strong self-hosting focus"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Mastodon announces:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 23,
"byteStart": 0
},
"features": [
{
"uri": "https://blog.joinmastodon.org/2026/03/a-redesign-for-profiles/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "A Redesign for Profiles"
}
},
{
"$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": 13,
"byteStart": 0
},
"features": [
{
"uri": "https://mastodon.social/@HolosSocial/116263099213774079",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Release 1.0.0"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 38,
"byteStart": 0
},
"features": [
{
"uri": "https://mastodon.social/@HolosSocial/116279767946681598",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "An automatic encrypted recovery system"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 93,
"byteStart": 0
},
"features": [
{
"uri": "https://toot.fedilab.app/@apps/116286558114142352",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Letting you use your root domain as your identity while still using a subdomain for the relay"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Fedilab Apps announces:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 30,
"byteStart": 0
},
"features": [
{
"uri": "https://toot.fedilab.app/@apps/116269153850758765",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "UntrackMe will be updated soon"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Funkwhale announces:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 23,
"byteStart": 0
},
"features": [
{
"uri": "https://blog.funkwhale.audio/funkwhale-200-release.html",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Funkwhale 2.0.0 release"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Loops has:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 24,
"byteStart": 0
},
"features": [
{
"uri": "https://blog.joinloops.org/introducing-starter-kits/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Introducing Starter Kits"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 26,
"byteStart": 0
},
"features": [
{
"uri": "https://mastodon.social/@dansup/116272839438467678",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Starter Kits are federated"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 8,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
},
{
"index": {
"byteEnd": 18,
"byteStart": 8
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
},
{
"uri": "https://loops.video/@mobileatom",
"$type": "pub.leaflet.richtext.facet#link"
}
]
},
{
"index": {
"byteEnd": 23,
"byteStart": 18
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
},
{
"index": {
"byteEnd": 43,
"byteStart": 23
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
},
{
"uri": "https://loops.video/starter-kits/eAssLaqZFp/open-media-network-and-techno-anarchism",
"$type": "pub.leaflet.richtext.facet#link"
}
]
},
{
"index": {
"byteEnd": 94,
"byteStart": 43
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
},
{
"index": {
"byteEnd": 115,
"byteStart": 94
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
},
{
"uri": "https://browser.pub/https://loops.video/starter-kits/eAssLaqZFp/open-media-network-and-techno-anarchism",
"$type": "pub.leaflet.richtext.facet#link"
}
]
},
{
"index": {
"byteEnd": 116,
"byteStart": 115
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "I added an account and created a starterkit. It will take a while to build up of course. But, you can follow it now."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Johnnny Wesley explores:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 39,
"byteStart": 0
},
"features": [
{
"uri": "https://jonhnnyweslley.net/blog/mastodon-comments/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Replacing Disqus with Mastodon Comments"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 58,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "Another great though small OMN-friendly project/technique."
}
},
{
"$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": "Newsmast announces:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 35,
"byteStart": 0
},
"features": [
{
"uri": "https://backend.newsmast.org/@newsmast/116261920157681498",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "The new Newsmast Foundation website"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 92,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "This is a mainstream news-oriented approach similar to what I am thinking about with Manade."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Here's Bonfire's FOSDEM presentation:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 59,
"byteStart": 0
},
"features": [
{
"uri": "https://fosdem.org/2026/schedule/event/LSUYXG-bonfire_modular_communication_tools_on_the_open_social_web/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Bonfire: Modular Communication Tools on the Open Social Web"
}
},
{
"$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": "Movim announces:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 45,
"byteStart": 0
},
"features": [
{
"uri": "https://piaille.fr/@movim/116285276199958603",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Movim to ensure that UI is keyboard navigable"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Slidge announces:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 28,
"byteStart": 0
},
"features": [
{
"uri": "https://slidge.im/blog/2026/03/14/slidge-family-growing/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "The Slidge family is growing"
}
},
{
"$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": "Alexandre Dulaunoy advises:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 39,
"byteStart": 0
},
"features": [
{
"uri": "https://www.foo.be/2026/03/bring-back-rss",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Bring Back RSS for Operational Security"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 3,
"plaintext": "P2P"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Sammy shares:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 52,
"byteStart": 0
},
"features": [
{
"uri": "https://pad.xpub.nl/p/thirty-years-of-learning-p2p-lessons-the-hard-way",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "30 years of learning the hard way about p2p networks"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "p2Panda says:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 59,
"byteStart": 0
},
"features": [
{
"uri": "https://autonomous.zone/@p2panda/116296878828115857",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "We've been busy implementing p2panda's high-level Node API!"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 3,
"plaintext": "Other Slightly Federated Social Media"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "A New Social announces:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 29,
"byteStart": 0
},
"features": [
{
"uri": "https://blog.anew.social/long-form-comes-to-bridgy-fed/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Long-Form Comes To Bridgy Fed"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Daniel Holmgren shares:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 42,
"byteStart": 0
},
"features": [
{
"uri": "https://dholms.leaflet.pub/3mhj6bcqats2o",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Permissioned Data Diary 4: The Big Picture"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "ATProto is:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 60,
"byteStart": 0
},
"features": [
{
"uri": "https://atproto.com/blog/introducing-hubble-a-public-mirror-for-the-whole-atmosphere",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Introducing Hubble: A Public Mirror for the Whole Atmosphere"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Beaver(?) announces:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 15,
"byteStart": 0
},
"features": [
{
"uri": "https://webbeef.org/atproto.html",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "ATProto Support"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Ryosuke examines:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 30,
"byteStart": 0
},
"features": [
{
"uri": "https://whoisryosuke.com/blog/2026/free-auth-and-db-using-at-proto/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Free Auth and DB using ATProto"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 45,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "Read this one in your browser's reading mode."
}
},
{
"$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": "Le Grand Continent asks:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 59,
"byteStart": 0
},
"features": [
{
"uri": "https://www.notion.so/American-heresy-should-Peter-Thiel-be-burned-at-the-stake-3274ac94ca0580d7b499c5eb546bdaee",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "American heresy: should Peter Thiel be burned at the stake?"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 13,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "One can hope."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Open Source Observatory reports:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 54,
"byteStart": 0
},
"features": [
{
"uri": "https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor/news/voxit-polling-platform-launches-european-collaboration",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Voxit polling platform launches European collaboration"
}
},
{
"$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": "9to5 Linux reports:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 77,
"byteStart": 0
},
"features": [
{
"uri": "https://9to5linux.com/thunderbird-149-email-client-enables-exporting-of-selected-address-book-cards",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Thunderbird 149 Email Client Enables Exporting of Selected Address Book Cards"
}
},
{
"$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/category/defending-democracy/",
"$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"
}
}
]
}
]
},
"bskyPostRef": {
"cid": "bafyreig4bpmzando6dhusqxn4mbvojb4tpjd5nam7wizqotulikigoetpm",
"uri": "at://did:plc:ztjsajckkmfscs3tshez4ath/app.bsky.feed.post/3mi4kml6uf22w",
"commit": {
"cid": "bafyreidxzaouuzfjmd7oo5tpvtzqy72yj55e2ztnhsclhjel4kocs3yazi",
"rev": "3mi4kmlcnpr2t"
},
"validationStatus": "valid"
},
"description": "Welcome to this week's The Programmer's Fulcrum. It's your weekly review of the essential news in the Open Media Network and Fediverse development communities with a focus on devastating big tech via Techno Anarchism.",
"publishedAt": "2026-03-28T11:44:45.779Z"
}