{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreihgtyx75nybfkp5pm6hgyb2azu5lh5fckpwwwxa5yld3ochnamjx4",
    "commit": {
      "cid": "bafyreib2mmkaandxfayb2yb6y63qezka3fsy5fn6flkdze5xjmwhrmqhtm",
      "rev": "3mnm53d637c2p"
    },
    "uri": "at://did:plc:ztjsajckkmfscs3tshez4ath/app.bsky.feed.post/3mnm53d2tes22",
    "validationStatus": "valid"
  },
  "content": {
    "$type": "pub.leaflet.content",
    "pages": [
      {
        "$type": "pub.leaflet.pages.linearDocument",
        "blocks": [
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://www.thefulcrum.dev/content/images/2026/04/TPF-Header-Image-2-1.jpg"
                    }
                  ],
                  "index": {
                    "byteEnd": 44,
                    "byteStart": 33
                  }
                }
              ],
              "plaintext": "This post originally appeared on The Fulcrum."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "It's your weekly curation of the essential news in the Open Media Network and Fediverse development communities with a focus on devastating big tech via Techno Anarchism."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#italic"
                    }
                  ],
                  "index": {
                    "byteEnd": 239,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "The big news this week was obviously The European Commission's European Technological Sovereignty Package. So, there's much more on that below. It's ten years later than it should have occured, but it's a start. And starts can be directed."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 97,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "As usual, we aim to provide actionable content you can use to destroy Techno Feudalism each week. It has the additional benefit of weakening authoritarianism."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://www.thefulcrum.dev/techno-anarchist-manifesto/"
                    }
                  ],
                  "index": {
                    "byteEnd": 81,
                    "byteStart": 55
                  }
                },
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://hamishcampbell.com/open-media-networking/"
                    }
                  ],
                  "index": {
                    "byteEnd": 148,
                    "byteStart": 130
                  }
                }
              ],
              "plaintext": "IMHO, the best way to do that is to use tools from the Techno Anarchist Manifesto to build your own site(s) to participate in the Open Media Network. Then you should share it (them) via Real Simple Syndication (RSS), the Fediverse, and possibly a newsletter or podcast. This approach is similar to what some call the IndieWeb and its POSSE philosophy."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "The second best strategy is to have accounts on the Fediverse and use the hell out of them. And do the same with a RSS feed reader."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "We publish TPF on Fridays so you can enjoy it over your weekend."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "There's good stuff in all of our categories, so please take the time to enjoy and bookmark the items most relevant to your goals. We hope you are inspired to create new ones."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Or you can jump straight to your favorite section."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.unorderedList",
              "children": [
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [
                      {
                        "features": [
                          {
                            "$type": "pub.leaflet.richtext.facet#link",
                            "uri": "#cmss"
                          }
                        ],
                        "index": {
                          "byteEnd": 16,
                          "byteStart": 0
                        }
                      }
                    ],
                    "plaintext": "Sites/Blogs/CMSs"
                  }
                },
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [
                      {
                        "features": [
                          {
                            "$type": "pub.leaflet.richtext.facet#link",
                            "uri": "#tools"
                          }
                        ],
                        "index": {
                          "byteEnd": 28,
                          "byteStart": 0
                        }
                      }
                    ],
                    "plaintext": "Techno Anarchist / OMN Tools"
                  }
                },
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [
                      {
                        "features": [
                          {
                            "$type": "pub.leaflet.richtext.facet#link",
                            "uri": "#programming"
                          }
                        ],
                        "index": {
                          "byteEnd": 15,
                          "byteStart": 0
                        }
                      }
                    ],
                    "plaintext": "OMN Programming"
                  }
                },
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [
                      {
                        "features": [
                          {
                            "$type": "pub.leaflet.richtext.facet#link",
                            "uri": "#activitypub"
                          }
                        ],
                        "index": {
                          "byteEnd": 11,
                          "byteStart": 0
                        }
                      }
                    ],
                    "plaintext": "ActivityPub"
                  }
                },
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [
                      {
                        "features": [
                          {
                            "$type": "pub.leaflet.richtext.facet#link",
                            "uri": "#fediverse"
                          }
                        ],
                        "index": {
                          "byteEnd": 9,
                          "byteStart": 0
                        }
                      }
                    ],
                    "plaintext": "Fediverse"
                  }
                },
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [
                      {
                        "features": [
                          {
                            "$type": "pub.leaflet.richtext.facet#link",
                            "uri": "#more"
                          }
                        ],
                        "index": {
                          "byteEnd": 4,
                          "byteStart": 0
                        }
                      }
                    ],
                    "plaintext": "More"
                  }
                }
              ]
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 120,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "FYI, my opinions will be in bold. And may involve cursing. Because humans. Especially tech bros. And fascists. Fuck´em."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": " "
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.horizontalRule"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "level": 2,
              "plaintext": "Featured Item(s)"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 20,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Violet Pixel writes:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Yes, the web has morphed our perception, but I disagree that, \"everything needs to generate money because everything is considered valuable.\" The web hasn't made everyone consider everything valuable, it's pushed people to monetize."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "The pressure isn't to create valuable content, it's to create content that sells. Many things that sell have little or no value. Many things with immense value are things you can't put a price tag on (although some people will try)."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://violetpixel.com/blog/2026-05-29-worth-on-the-web/"
                    }
                  ],
                  "index": {
                    "byteEnd": 16,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Worth on the Web"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 95,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "So, join the Open Media Network and do your thing whatever it is. You can be sure it has worth!"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 20,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Lingua Celta writes:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "This essay is explicitly addressed to my fellow technologists: software developers, hobby coders, digital humanists, computer science theorists, and all the other members of this big family of people who do tech."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "I want to talk about our community, and why it’s important. I want to suggest that using LLMs to generate content to be included in technology projects, whether that’s code or text or images, or code reviews or proofreading, harms our shared community."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://linguacelta.com/blog/2026/05/LLMs.html"
                    }
                  ],
                  "index": {
                    "byteEnd": 66,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "The Community is the Achievement; the Achievement is the Community"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 41,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "This is similar to what we preach weekly."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 47,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Speaking of communities, Ben Werdmuller writes:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "The biggest exceptions (to journalistic decline) are local news startups, which are building trust, evolving business models for journalism, and building far more representative editorial rosters."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Most of all, they’re engaging with their local communities. Their constituents know them; that representation and those relationships are how trust is built. And their readers are more loyal because they know they can’t get the context and information they need from anywhere else."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://werd.io/the-community-first-software-era/"
                    }
                  ],
                  "index": {
                    "byteEnd": 32,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "The community-first software era"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 35,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Fantastic stuff from Ben as always."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": " "
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.horizontalRule"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": " "
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "level": 2,
              "plaintext": "CMSs"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": " "
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Amber Weinberg says:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://amberweinberg.com/wordpress-7-0-is-out-lets-shut-off-that-pesky-ai/"
                    }
                  ],
                  "index": {
                    "byteEnd": 53,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "WordPress 7.0 is out, Let’s shut off that pesky AI!"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 110,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Done. If WordPress had not gone all in on the Fediverse, I literally would have nothing to do with it anymore."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Dries Buyaert explores:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://dri.es/contentful-and-the-limits-of-buy-european"
                    }
                  ],
                  "index": {
                    "byteEnd": 43,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Contentful and the limits of \"Buy European\""
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 106,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "AKA use open source or eventually get fucked by corporate software. And Germany should block the sale BTW."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Mastro lists:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://mastrojs.github.io/blog/2026-05-26-component-scoped-css-without-build-step/"
                    }
                  ],
                  "index": {
                    "byteEnd": 77,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Four ways to do component-scoped CSS (in Mastro) without a complex build step"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 48,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "This looks to be a fairly KISS option for a CMS."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Simon Repp shares a:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://post.lurk.org/@freebliss/116687069790079199"
                    }
                  ],
                  "index": {
                    "byteEnd": 62,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Quick recap of the last week or so in Faircamp 2.0 development"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "level": 3,
              "plaintext": "Leaflet"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Leaflet announces:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://bsky.app/profile/leaflet.pub/post/3mnfzt7iffk2j"
                    }
                  ],
                  "index": {
                    "byteEnd": 43,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "New, for folks doing newsletters on Leaflet"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 31,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "This may only be for Pro plans."
            }
          },
          {
            "$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 is:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://ghost.org/changelog/expanding-your-social-presence/"
                    }
                  ],
                  "index": {
                    "byteEnd": 30,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Expanding your social presence"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 144,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "We migrated our Symfony Station Mastodon account into the one here with the new capabilities. So, welcome Symfonistas, Drupalers, and PHP peeps."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Synaps Media announces:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://www.synapsmedia.com/changelog/a-new-chapter-for-synaps-media/"
                    }
                  ],
                  "index": {
                    "byteEnd": 30,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "A New Chapter for Synaps Media"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "And Magic Pages announces:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://www.magicpages.co/roadmap/llms-txt-for-ai-search-in-the-customer-portal/"
                    }
                  ],
                  "index": {
                    "byteEnd": 45,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "llms.txt for AI Search in the Customer Portal"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 359,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "IMHO Jannis is slightly amoral (in a nice way) on this topic, so we recommend enabling blocking and disabling crawling. That way you may have a chance to be reincarnated as something other than a cockroach. And BTW we are a client of his company and will remain so (for now) because at least you get to choose (kudos). And sadly, that beats most alternatives."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "They also explain:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://www.magicpages.co/blog/ghost-ghost-pro-magic-pages-whats-the-difference/"
                    }
                  ],
                  "index": {
                    "byteEnd": 57,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Ghost, Ghost(Pro), Magic Pages − what's the difference?"
            }
          },
          {
            "$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": "Blades examines:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://11ty.blades.ninja/starters/"
                    }
                  ],
                  "index": {
                    "byteEnd": 21,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Minimal 11ty starters"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "level": 3,
              "plaintext": "Micro.blog"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Micro.blog has:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://www.manton.org/2026/05/30/standardsite-in-microblog.html"
                    }
                  ],
                  "index": {
                    "byteEnd": 27,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Standard.site in Micro.blog"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://www.manton.org/2026/05/30/more-notes-on-standardsite.html"
                    }
                  ],
                  "index": {
                    "byteEnd": 27,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "More notes on Standard.site"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "#top"
                    }
                  ],
                  "index": {
                    "byteEnd": 20,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Back to top 👆🏼"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": " "
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.horizontalRule"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": " "
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "level": 2,
              "plaintext": "Tools"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": " "
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "A Poor Player looks at:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://www.apoorplayer.blog/2026/05/28/digital-feudalism-and-the-rise.html"
                    }
                  ],
                  "index": {
                    "byteEnd": 47,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Digital Feudalism and the Rise of Digital Serfs"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 49,
                    "byteStart": 0
                  }
                },
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    },
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://www.thefulcrum.dev/techno-anarchist-manifesto/"
                    }
                  ],
                  "index": {
                    "byteEnd": 79,
                    "byteStart": 49
                  }
                },
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 80,
                    "byteStart": 79
                  }
                }
              ],
              "plaintext": "If you don't want to be a serf, explore and live the Techno Anarchist Manifesto."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Mullvad asks a discouraging question:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://mullvad.net/en/blog/2026/6/1/age-verification-for-social-media-the-beginning-of-the-end-for-a-free-internet"
                    }
                  ],
                  "index": {
                    "byteEnd": 83,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Age verification for social media – the beginning of the end for a free internet?"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "The Internet Exchange explains:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://internet.exchangepoint.tech/stifling-speech-through-dns-infrastructure/"
                    }
                  ],
                  "index": {
                    "byteEnd": 42,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Stifling Speech Through DNS Infrastructure"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "In big news, the European Commission has:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://commission.europa.eu/news-and-media/news/commission-boosts-open-and-interoperable-digital-ecosystems-public-administrations-2026-06-03_en"
                    }
                  ],
                  "index": {
                    "byteEnd": 86,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Commission boosts open and interoperable digital ecosystems for public administrations"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 71,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Great. Now back it up with adequate funding and large-scale purchasing."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "The European Digital Rights Initiative responds:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://edri.org/our-work/europes-digital-sovereignty-starts-with-open-source/"
                    }
                  ],
                  "index": {
                    "byteEnd": 54,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Europe’s digital sovereignty starts with open source"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Free Software Foundation Europe has:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://fsfe.org/news/2026/news-20260603-01.en.html"
                    }
                  ],
                  "index": {
                    "byteEnd": 75,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "EU Tech Sovereignty: A milestone for Public Code? Now implementation is key"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://fsfe.org/news/2026/news-20260528-01.html"
                    }
                  ],
                  "index": {
                    "byteEnd": 55,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Restack: a new European consortium for a digital Europe"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Dries Buyaert shares:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://dri.es/europe-turns-to-open-source-for-independence"
                    }
                  ],
                  "index": {
                    "byteEnd": 44,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Europe turns to Open Source for independence"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Hamish Campbell has his usual spot on take:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://hamishcampbell.com/the-eus-tech-sovereignty-plan/"
                    }
                  ],
                  "index": {
                    "byteEnd": 28,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "The EU tech sovereignty plan"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "And finally Jos Poortvliet gets into the ambivalent fine details:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": ""
                    }
                  ],
                  "index": {
                    "byteEnd": 55,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "The Tech Sovereignty Package encourages and disappoints"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 92,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "If you are an European Union citizen, start pressing your government to walk, not just talk."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "level": 3,
              "plaintext": "Chat / Team Chat"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Signal announces:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://aboutsignal.com/news/signal-improves-notification-reliability-for-devices-without-google-play-services/"
                    }
                  ],
                  "index": {
                    "byteEnd": 81,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Signal improves notification reliability for devices without Google Play services"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://aboutsignal.com/news/signal-will-soon-automatically-delete-call-events-in-disappearing-chats/"
                    }
                  ],
                  "index": {
                    "byteEnd": 71,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Signal will soon automatically delete call events in disappearing chats"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Tuta lists:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://tuta.com/blog/discord-alternatives"
                    }
                  ],
                  "index": {
                    "byteEnd": 41,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Best private Discord alternatives in 2026"
            }
          },
          {
            "$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": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://piaille.fr/@movim/116698592107155545"
                    }
                  ],
                  "index": {
                    "byteEnd": 33,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "The last few days have been wild!"
            }
          },
          {
            "$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": "Servo has:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://servo.org/blog/2026/05/31/april-in-servo/"
                    }
                  ],
                  "index": {
                    "byteEnd": 71,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "April in Servo: new Android UI, focus, forms, security fixes, and more!"
            }
          },
          {
            "$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": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://www.waterfox.com/releases/6.6.14/"
                    }
                  ],
                  "index": {
                    "byteEnd": 53,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "6.6.14 - Web compatibility and ad blocker refinements"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "level": 3,
              "plaintext": "Search"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Alternative To reports:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://alternativeto.net/news/2026/6/duckduckgo-s-no-ai-search-tool-reports-huge-traffic-growth-as-google-pushes-ai-results/"
                    }
                  ],
                  "index": {
                    "byteEnd": 88,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "DuckDuckGo’s No AI search tool reports huge traffic growth as Google pushes AI results"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Erin shares:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://kvuzet.net/blog/2026-05-28-tip-use-duckduckgo-no-ai/"
                    }
                  ],
                  "index": {
                    "byteEnd": 63,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Tip: Use DuckDuckGo NoAI as your browsers default search engine"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 54,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Or better yet pay for Uruky. Or use Mojeek or SearXNG."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Euractiv reports:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://www.euractiv.com/news/european-parliament-to-ditch-google-for-european-alternative/"
                    }
                  ],
                  "index": {
                    "byteEnd": 60,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "European Parliament to ditch Google for European alternative"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 6,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Super."
            }
          },
          {
            "$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": "Jorijn Schrijvershof writes:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://jorijn.com/en/blog/nextcloud-not-google-workspace-clone/"
                    }
                  ],
                  "index": {
                    "byteEnd": 74,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Nextcloud is not a Google Workspace clone. That is the point and the trap."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 93,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "This article is aimed at team users. And I am not sure why it's a trap. Google is the prison."
            }
          },
          {
            "$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 shares:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://blog.documentfoundation.org/blog/2026/06/05/tdf-releases-libreoffice-26-2-4/"
                    }
                  ],
                  "index": {
                    "byteEnd": 51,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "The Document Foundation Releases LibreOffice 26.2.4"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://blog.documentfoundation.org/blog/2026/06/02/a-standard-in-name-only/"
                    }
                  ],
                  "index": {
                    "byteEnd": 82,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "A Standard in Name Only: What OOXML Transitional Tells Us About Format Sovereignty"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Tuta announces:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://tuta.com/blog/tuta-joins-euro-office"
                    }
                  ],
                  "index": {
                    "byteEnd": 47,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Tuta joins Euro-Office - one week before launch"
            }
          },
          {
            "$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": "Heisse Online reports:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://www.heise.de/en/background/Linux-App-Summit-2026-Meeting-of-the-Linux-Desktop-Avant-garde-11316647.html"
                    }
                  ],
                  "index": {
                    "byteEnd": 63,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Linux App Summit 2026: Meeting of the Linux Desktop Avant-garde"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 23,
                    "byteStart": 0
                  }
                },
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    },
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://docs.projectbluefin.io/introduction/"
                    }
                  ],
                  "index": {
                    "byteEnd": 30,
                    "byteStart": 23
                  }
                },
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 97,
                    "byteStart": 30
                  }
                }
              ],
              "plaintext": "I wasn't familiar with Bluefin, but anything that makes Linux easier to install and use is great."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Gaming On Linux reports:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://www.gamingonlinux.com/2026/05/flathub-moves-to-ban-nearly-all-apps-and-submissions-made-with-generative-ai/"
                    }
                  ],
                  "index": {
                    "byteEnd": 76,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Flathub moves to ban nearly all apps and submissions made with generative AI"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 10,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Fantastic."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "KDE and Plasma Design asks:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://anditosan.wordpress.com/2026/05/31/what-even-is-ocean/"
                    }
                  ],
                  "index": {
                    "byteEnd": 21,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "What Even is Ocean???"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Postmarket OS announces:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://postmarketos.org/devel/2026/06/01/pmbootstrap-strict-builds/"
                    }
                  ],
                  "index": {
                    "byteEnd": 46,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "pmbootstrap: strict builds are now the default"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "MNT has an update:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://mntre.com/media/reform_md/2026-05-31-may-update.html"
                    }
                  ],
                  "index": {
                    "byteEnd": 19,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "MNT May 2026 Update"
            }
          },
          {
            "$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": "Elena Rossini continues a series:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://blog.elenarossini.com/a-newbies-guide-to-self-hosting-with-yunohost-part-5-upgrades-maintenance/"
                    }
                  ],
                  "index": {
                    "byteEnd": 78,
                    "byteStart": 0
                  }
                }
              ],
              "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.text",
              "plaintext": "Jeremy Cherfas explores:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://www.jeremycherfas.net/blog/a-server-for-a-purpose"
                    }
                  ],
                  "index": {
                    "byteEnd": 22,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "A Server for a Purpose"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Zils Norvilis examines:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://norvilis.com/the-developer-s-way-to-track-traffic-self-hosting-ackee-or-plausible/"
                    }
                  ],
                  "index": {
                    "byteEnd": 71,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "The Developer’s Way to Track Traffic: Self-Hosting Ackee or Plausible"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 49,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Especially useful if you have a Rails background."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Siddhant Goel demonstrates:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://sgoel.dev/posts/self-hosting-static-sites-on-a-caddy-powered-vps/"
                    }
                  ],
                  "index": {
                    "byteEnd": 48,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Self-hosting static sites on a Caddy-powered VPS"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#italic"
                    }
                  ],
                  "index": {
                    "byteEnd": 29,
                    "byteStart": 0
                  }
                }
              ],
              "level": 3,
              "plaintext": "This week's featured OMN tool"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "level": 4,
              "plaintext": "Decidim"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Decidim is a free/libre platform for opensource citizen participation."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://decidim.org/"
                    }
                  ],
                  "index": {
                    "byteEnd": 7,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Decidim"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "#top"
                    }
                  ],
                  "index": {
                    "byteEnd": 20,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Back to top 👆🏼"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": " "
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.horizontalRule"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": " "
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "level": 2,
              "plaintext": "Programming"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": " "
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Kevin Wagner asks:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://kpwags.com/posts/2026/is-ai-causing-a-repeat-of-frontends-lost-decade/"
                    }
                  ],
                  "index": {
                    "byteEnd": 66,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Extended Note: Is AI causing a repeat of Frontend’s Lost Decade?"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 135,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "React was the worst thing to ever happen to web development. Until, AI came along. Both are anti-labor, de-skilling, fascist artifacts."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "On a similar note, DutchCelt opines:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://dutchcelt.nl/posts/front-end-doesn-t-exist/"
                    }
                  ],
                  "index": {
                    "byteEnd": 23,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Front-end doesn't exist"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Business Insider reports:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://www.businessinsider.com/zig-programming-language-ai-rules-2026-5"
                    }
                  ],
                  "index": {
                    "byteEnd": 86,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Zig president says AI coding contributions are 'invariably garbage,' so he banned them"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Daring Fireball asks:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://daringfireball.net/2026/05/what_is_a_dickover"
                    }
                  ],
                  "index": {
                    "byteEnd": 19,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "What Is a Dickover?"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Tim Bray looks at:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://www.tbray.org/ongoing/When/202x/2026/06/01/XML-and-JSON-in-2026"
                    }
                  ],
                  "index": {
                    "byteEnd": 20,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "XML and JSON in 2026"
            }
          },
          {
            "$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": "Henderson Reed Hummel demonstrates:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://henderson.lol/posts/202605-blocking-github-trending.html"
                    }
                  ],
                  "index": {
                    "byteEnd": 59,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Blocking “recommended for you” items on the GitHub feed"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 37,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Better yet, don't use ShitHub period."
            }
          },
          {
            "$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": "Olivier Forget shares:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://olivierforget.net/blog/2026/dom-patching-backflip-template/"
                    }
                  ],
                  "index": {
                    "byteEnd": 41,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "DOM Patching from a BackflipHTML Template"
            }
          },
          {
            "$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": "Frontend Masters has:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://frontendmasters.com/blog/the-fundamentals-and-dev-experience-of-css-function/"
                    }
                  ],
                  "index": {
                    "byteEnd": 52,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "The Fundamentals and Dev Experience of CSS @function"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://frontendmasters.com/blog/in-n-out-animations-dialogs-part-1-3/"
                    }
                  ],
                  "index": {
                    "byteEnd": 39,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "In-N-Out Animations: Dialogs (Part 1/3)"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 30,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "A neat but unnecessary effect."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Sam Hermes explains:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://samhermes.com/posts/why-i-do-not-like-utility-class-css-frameworks/"
                    }
                  ],
                  "index": {
                    "byteEnd": 47,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Why I don’t like utility class CSS frameworks"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 68,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Failwind is the third worst thing to ever happen to web development."
            }
          },
          {
            "$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": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://thathtml.blog/2026/06/building-a-generated-color-scheme/"
                    }
                  ],
                  "index": {
                    "byteEnd": 50,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Designing an Autogenerated Live Color Scale in CSS"
            }
          },
          {
            "$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": "Zil Norvilis says:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://norvilis.com/stop-using-js-for-everything-harnessing-the-power-of-pure-css-in-2026/"
                    }
                  ],
                  "index": {
                    "byteEnd": 70,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Stop Using JS for Everything: Harnessing the Power of Pure CSS in 2026"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 11,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Absolutely."
            }
          },
          {
            "$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": "Jorijn Schrijvershof has:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://jorijn.com/en/blog/claude-mythos-ai-vulnerability-discovery-explained/"
                    }
                  ],
                  "index": {
                    "byteEnd": 78,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Claude Mythos: what Anthropic's cyber model means, and how to stay ahead of it"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 38,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "KISS is also a good security practice."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Emerald Pages reports:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://emeraldbook.org/news/may-3126-2/"
                    }
                  ],
                  "index": {
                    "byteEnd": 95,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "The Great AI Boomerang: Google, Meta, Klarna & More Are Quietly Rehiring the Workers They Fired"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 43,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Let’s see if the c^nts learn any lessons."
            }
          },
          {
            "$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": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 18,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "But, probably not."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://www.404media.co/satya-nadella-not-sure-who-said-microsoft-wanted-to-make-addictive-ai-is-looking-for-guy-who-did-this/"
                    }
                  ],
                  "index": {
                    "byteEnd": 108,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Satya Nadella ‘Not Sure’ Who Said Microsoft Wanted to Make Addictive AI, Is Looking for Guy Who Did This"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://www.404media.co/google-employees-internally-share-memes-about-how-its-ai-sucks/"
                    }
                  ],
                  "index": {
                    "byteEnd": 62,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Google Employees Internally Share Memes About How Its AI Sucks"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#italic"
                    }
                  ],
                  "index": {
                    "byteEnd": 37,
                    "byteStart": 0
                  }
                }
              ],
              "level": 3,
              "plaintext": "This week's featured programming tool"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "level": 4,
              "plaintext": "HTML"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Structure your site with simple but essential HTML."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://www.htmlforpeople.com/"
                    }
                  ],
                  "index": {
                    "byteEnd": 4,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "HTML"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "#top"
                    }
                  ],
                  "index": {
                    "byteEnd": 20,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Back to top 👆🏼"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": " "
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.horizontalRule"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": " "
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "level": 2,
              "plaintext": "ActivityPub"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": " "
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Jeremy Herve says:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://herve.bzh/the-web-was-always-social/"
                    }
                  ],
                  "index": {
                    "byteEnd": 25,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "The web was always social"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "IT Notes shares a note:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://it-notes.dragas.net/2026/05/25/fedimeteo-timezones-and-the-art-of-not-breaking-what-already-works/"
                    }
                  ],
                  "index": {
                    "byteEnd": 68,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "FediMeteo, timezones, and the art of not breaking what already works"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#italic"
                    }
                  ],
                  "index": {
                    "byteEnd": 46,
                    "byteStart": 0
                  }
                }
              ],
              "level": 3,
              "plaintext": "This week's featured ActivityPub featured tool"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "level": 4,
              "plaintext": "ActivityPub Rocks"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "This site is maintained by the current steward of the ActivityPub stack of standards."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://activitypub.rocks/"
                    }
                  ],
                  "index": {
                    "byteEnd": 17,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "ActivityPub Rocks"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "#top"
                    }
                  ],
                  "index": {
                    "byteEnd": 20,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Back to top 👆🏼"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": " "
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.horizontalRule"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": " "
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "level": 2,
              "plaintext": "Fediverse"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": " "
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "The Social Web Foundation has:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://socialwebfoundation.org/2026/06/05/european-social-sovereignty/"
                    }
                  ],
                  "index": {
                    "byteEnd": 27,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "European Social Sovereignty"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Mastodon shares:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://blog.joinmastodon.org/2026/06/europes-new-tech-strategy-puts-open-source-front-and-centre/"
                    }
                  ],
                  "index": {
                    "byteEnd": 60,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Europe's New Tech Strategy Puts Open Source Front and Centre"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Following up a post feature here last week, Ecologia Digital asks:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://josemurilo.com/2026/05/30/fediverso-ou-web-social/"
                    }
                  ],
                  "index": {
                    "byteEnd": 24,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Fediverso ou Web Social?"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "VM Crawl announces:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://vmcrawl.com/"
                    }
                  ],
                  "index": {
                    "byteEnd": 98,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "The dashboard now shows a heat map of all detected ActivityPub platforms in comparison to Mastodon"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 130,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "The largest number of Fediverse instances are Ghost websites, then Mastodon, and soon to surpass it WordPress sites. This is good."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Alexia's Space examines Fediverse:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://cyrneko.eu/posts/moderation.html"
                    }
                  ],
                  "index": {
                    "byteEnd": 10,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Moderation"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "EnbySpacePerson looks at:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://write.as/enbyspaceperson/fediverse-migration"
                    }
                  ],
                  "index": {
                    "byteEnd": 19,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Fediverse migration"
            }
          },
          {
            "$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": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://mastodon.social/@HolosSocial/116687407535124924"
                    }
                  ],
                  "index": {
                    "byteEnd": 30,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "HolosSocial 1.8.1 is available"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Elk announces:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://elk.zone/m.webtoo.ls/@elk/116698292848441617"
                    }
                  ],
                  "index": {
                    "byteEnd": 27,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Finally, Elk v1.0.0 is out!"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "And FediLab announces:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://toot.fedilab.app/@apps/116698420184041446"
                    }
                  ],
                  "index": {
                    "byteEnd": 28,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Fedilab 3.41.0 is available."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Paths and Patches reports on:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://www.blog-pat.ch/connected-community-spaces/"
                    }
                  ],
                  "index": {
                    "byteEnd": 26,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Connected community spaces"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Connected Places has:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://connectedplaces.online/reports/fr165-fediverse-news-for-may-2026/"
                    }
                  ],
                  "index": {
                    "byteEnd": 34,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "FR 165 – Fediverse News May 2026"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "A New Social announces new:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://blog.anew.social/migrations-update-launch/"
                    }
                  ],
                  "index": {
                    "byteEnd": 74,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Launches: Credible Exit, Bridged User Notifications, & Fediverse Re-Bridge"
            }
          },
          {
            "$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": "Our Manade project is rolling along. So, (as hinted at last week) we have set up an announcement account on the Fediverse via a self-hosted Starling server. It's PHP-based, which is in my wheelhouse."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://social.manade.org/@gardian"
                    }
                  ],
                  "index": {
                    "byteEnd": 39,
                    "byteStart": 13
                  }
                }
              ],
              "plaintext": "Follow it at @gardian@social.manade.org."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://site.manade.org"
                    }
                  ],
                  "index": {
                    "byteEnd": 63,
                    "byteStart": 40
                  }
                }
              ],
              "plaintext": "You can learn more about the project at https://site.manade.org."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Elixir announces:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://elixir-lang.org/blog/2026/06/03/elixir-v1-20-0-released/"
                    }
                  ],
                  "index": {
                    "byteEnd": 53,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Elixir v1.20 released: now a gradually typed language"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 87,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Bonfire is written in Elixir which is not in my wheelhouse or even in the neighborhood."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "LAUTI announces:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://bonfire.cafe/pub/objects/01KTC1MGCEM554F5SGZ57TYP7E"
                    }
                  ],
                  "index": {
                    "byteEnd": 56,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "The next step in our ActivityPub implementation is ready"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "#top"
                    }
                  ],
                  "index": {
                    "byteEnd": 20,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Back to top 👆🏼"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": " "
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.horizontalRule"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": " "
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "level": 2,
              "plaintext": "More"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": " "
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "European.social announces:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://european.social/"
                    }
                  ],
                  "index": {
                    "byteEnd": 25,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "The European Social Stack"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Technology Adventures announces:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://tonym128.github.io/2026/05/25/sovereigns3nc-building-a-decentralized-network-without-a-backend.html"
                    }
                  ],
                  "index": {
                    "byteEnd": 65,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "SovereignS3nc: Building a Decentralized Network Without a Backend"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 33,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Very interesting KISS experiment."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "level": 3,
              "plaintext": "Matrix"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Sky Schubert shows us:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://overengineer.dev/blog/2026/05/26/how-to-rename-yourself-on-matrix/"
                    }
                  ],
                  "index": {
                    "byteEnd": 32,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "How to rename yourself on Matrix"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 39,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Definitely a pain point in open social."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "level": 3,
              "plaintext": "Web Mentions"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Dale Mellor extends an:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://khleedril.org/blog/2026-05-29--webmentions-posse.html"
                    }
                  ],
                  "index": {
                    "byteEnd": 90,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Invitation to Join a Posse of Webmention Scratch-Builders to Work Towards Interoperability"
            }
          },
          {
            "$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": "Standard.Horse is:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://standard.horse/"
                    }
                  ],
                  "index": {
                    "byteEnd": 37,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Your printing press for standard.site"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Mat Marquis is:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://wil.to/posts/standard-site/"
                    }
                  ],
                  "index": {
                    "byteEnd": 26,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Implementing Standard.Site"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 14,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Great article."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "And Rachel Andrew is:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://rachelandrew.co.uk/archives/2026/05/31/joining-the-atmosphere/"
                    }
                  ],
                  "index": {
                    "byteEnd": 22,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Joining the atmosphere"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "pckt answers:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://notes.pckt.blog/atmosphere-101-do-i-need-to-make-an-account-f9yvhyp"
                    }
                  ],
                  "index": {
                    "byteEnd": 45,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Atmosphere 101: Do I need to make an account?"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Hannah explains:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://hannahshelley.neocities.org/blog/2026_05_31_ATProto.html"
                    }
                  ],
                  "index": {
                    "byteEnd": 36,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Putting my Neocities blog on ATProto"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Daniel's Leaflets explores:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://dholms.leaflet.pub/3mndhk7ihsc2g"
                    }
                  ],
                  "index": {
                    "byteEnd": 41,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Modeling communities on permissioned data"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "VMX examines:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://vmx.cx/cgi-bin/blog/index.cgi/floats-on-atproto%3A2026-05-28%3Aen%2CATProto"
                    }
                  ],
                  "index": {
                    "byteEnd": 17,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Floats on ATProto"
            }
          },
          {
            "$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": "Fedivariety looks at:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://www.fedivariety.org/blog/safeguarding-democratic-debate"
                    }
                  ],
                  "index": {
                    "byteEnd": 30,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Safeguarding Democratic Debate"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Devin Thakker explains:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://devinthakker.com/blog/what-makes-civic-data-hard-to-structure"
                    }
                  ],
                  "index": {
                    "byteEnd": 42,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "What Makes Civic Data So Hard to Structure"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Tor is:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://blog.torproject.org/supporting-those-who-speak-out/"
                    }
                  ],
                  "index": {
                    "byteEnd": 53,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Supporting those who speak out with Richochet Refresh"
            }
          },
          {
            "$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 announces:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://buttondown.com/blog/2026-06-03-notes-on-team-members"
                    }
                  ],
                  "index": {
                    "byteEnd": 36,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "(Private) Notes on your team members"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": " "
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.horizontalRule"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": " "
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "level": 2,
              "plaintext": "CTAs"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.unorderedList",
              "children": [
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "plaintext": "That’s it for this week. Please share The Programmer's Fulcrum."
                  }
                },
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [
                      {
                        "features": [
                          {
                            "$type": "pub.leaflet.richtext.facet#link",
                            "uri": "https://flipboard.com/@mobileatom/the-fulcrum-coding-for-democracy-and-the-omn-5g0jmckdz"
                          }
                        ],
                        "index": {
                          "byteEnd": 23,
                          "byteStart": 11
                        }
                      },
                      {
                        "features": [
                          {
                            "$type": "pub.leaflet.richtext.facet#link",
                            "uri": "https://surf.social/feed/surf%2Fcustom%2F01kpd8cajhcyvp7dax422z7hfq"
                          }
                        ],
                        "index": {
                          "byteEnd": 31,
                          "byteStart": 27
                        }
                      },
                      {
                        "features": [
                          {
                            "$type": "pub.leaflet.richtext.facet#link",
                            "uri": "https://ghostverse.link/@thefulcrum@thefulcrum.dev"
                          }
                        ],
                        "index": {
                          "byteEnd": 65,
                          "byteStart": 39
                        }
                      },
                      {
                        "features": [
                          {
                            "$type": "pub.leaflet.richtext.facet#link",
                            "uri": "https://bsky.app/profile/thefulcrum.eurosky.social"
                          }
                        ],
                        "index": {
                          "byteEnd": 114,
                          "byteStart": 89
                        }
                      }
                    ],
                    "plaintext": "Follow us on Flipboard or Surf or at @thefulcrum@thefulcrum.dev on the Fediverse or at thefulcrum.eurosky.social for daily coverage."
                  }
                },
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [
                      {
                        "features": [
                          {
                            "$type": "pub.leaflet.richtext.facet#link",
                            "uri": "https://www.thefulcrum.dev/techno-anarchist-manifesto/"
                          }
                        ],
                        "index": {
                          "byteEnd": 52,
                          "byteStart": 22
                        }
                      }
                    ],
                    "plaintext": "Read, live, and share The Techno Anarchist Manifesto!"
                  }
                }
              ]
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": " "
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 59,
                    "byteStart": 0
                  }
                },
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    },
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://site.manade.org/"
                    }
                  ],
                  "index": {
                    "byteEnd": 65,
                    "byteStart": 59
                  }
                },
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 66,
                    "byteStart": 65
                  }
                }
              ],
              "plaintext": "And please build something for a community! We're building Manade."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": " "
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.horizontalRule"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": " "
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "level": 2,
              "plaintext": "Blasts from the past"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://battalion.mobileatom.net/?page_id=251"
                    }
                  ],
                  "index": {
                    "byteEnd": 24,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Previous Battalion Posts"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://symfonystation.mobileatom.net/weekly-communiques"
                    }
                  ],
                  "index": {
                    "byteEnd": 30,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Previous Symfony Station Posts"
            }
          }
        ],
        "id": "019e9bd1-d5fd-755d-ad56-e4942ab323a7"
      }
    ]
  },
  "description": "Welcome to your weekly curation of the essential news in the Open Media Network and Fediverse development communities with a focus on devastating big tech via Techno Anarchism.",
  "path": "/3mnm5342jnc22",
  "publishedAt": "2026-06-06T07:30:52.542Z",
  "site": "at://did:plc:ztjsajckkmfscs3tshez4ath/site.standard.publication/3mi4k4i7dns2o",
  "tags": [
    "fediverse",
    "ActivityPub",
    "ATProto",
    "WebDev",
    "programming",
    "CMSs",
    "matrix"
  ],
  "title": "The Programmer's Fulcrum: 5 June, 2026"
}