<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <updated>2026-04-09T03:29:57Z</updated>
  <generator>https://yabu.me</generator>

  <title>Nostr notes by Julian Fietkau</title>
  <author>
    <name>Julian Fietkau</name>
  </author>
  <link rel="self" type="application/atom+xml" href="https://yabu.me/npub1vm0mfw89yauuuvwjjtupdfnqz2377jueq2epaqvp4rjcurgzpmqscu3lyd.rss" />
  <link href="https://yabu.me/npub1vm0mfw89yauuuvwjjtupdfnqz2377jueq2epaqvp4rjcurgzpmqscu3lyd" />
  <id>https://yabu.me/npub1vm0mfw89yauuuvwjjtupdfnqz2377jueq2epaqvp4rjcurgzpmqscu3lyd</id>
  <icon>https://fietkau.social/system/accounts/avatars/109/281/407/032/870/910/original/7a71c7a621c8b090.png</icon>
  <logo>https://fietkau.social/system/accounts/avatars/109/281/407/032/870/910/original/7a71c7a621c8b090.png</logo>




  <entry>
    <id>https://yabu.me/nevent1qqsym9jwendkx8uxta2qtyeaeu8j76dcsl9uwnzfed8yfqmjq6fkrxqzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vz2h8xyr</id>
    
      <title type="html">There is a longstanding PR to remove replies by blocked users ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsym9jwendkx8uxta2qtyeaeu8j76dcsl9uwnzfed8yfqmjq6fkrxqzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vz2h8xyr" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0xkfcu88p0zaz9jhmmg6vtwzlaqruczxt74cggkyvwu9vmy9e46gq2mw2p&#39;&gt;nevent1q…mw2p&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;There is a longstanding PR to remove replies by blocked users from a post&amp;#39;s context: &lt;a href=&#34;https://github.com/mastodon/mastodon/pull/18468&#34;&gt;https://github.com/mastodon/mastodon/pull/18468&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Reading the conversation in there leaves me with several questions, but also feeling unsure which ones of them to ask out loud.
    </content>
    <updated>2026-05-02T02:37:40Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs9sl6ea3pxzs7pqw5l569gx2alzk3mggtxkkzv26fdkz627pm6vrszypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzxe2z67</id>
    
      <title type="html">As I understand the migration path, it&amp;#39;s like 1. Able to ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs9sl6ea3pxzs7pqw5l569gx2alzk3mggtxkkzv26fdkz627pm6vrszypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzxe2z67" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqswvyl7eqv8ga6y65vm0ejmqenx0x67k5j5fhtchpdg6as0x0uemzq048ju7&#39;&gt;nevent1q…8ju7&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;As I understand the migration path, it&amp;#39;s like&lt;br/&gt;&lt;br/&gt;1. Able to receive RFC 9421 in addition to draft-cavage&lt;br/&gt;2. Able to send RFC 9421 in addition to draft-cavage&lt;br/&gt;3. Send RFC 9421 by default, but be able to fall back to draft-cavage if needed&lt;br/&gt;&lt;br/&gt;So by “can&amp;#39;t handle” I meant step 1. 🙂 Although the unspoken step 4 is to remove draft-cavage support once everyone else has taken step 1, I&amp;#39;m ultimately also wondering when we&amp;#39;ll get there.
    </content>
    <updated>2026-04-06T18:42:47Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsqmf8qmz6k8636tf44ysj036lvp6qrk50ucyaazm53axpz778ad3gzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzk4cvvc</id>
    
      <title type="html">RE: https://mastodon.social/@bagder/116359048796181736 Could be ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsqmf8qmz6k8636tf44ysj036lvp6qrk50ucyaazm53axpz778ad3gzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzk4cvvc" />
    <content type="html">
      RE: &lt;a href=&#34;https://mastodon.social/@bagder/116359048796181736&#34;&gt;https://mastodon.social/@bagder/116359048796181736&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Could be potentially nice for fediverse server testing, as more implementations make the jump to final RFC 9421 HTTP signatures.&lt;br/&gt;&lt;br/&gt;On the flip side, ever more complex curl invocations (here: Accept header plus signature fields plus key file, presumably) suggest use of more specialized CLI tools, such as provided by &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1tlfg4qcs9x97v86gxay9qn8ncvdhfah8tw3hlkmc86hmeclgp6vsc3wz08&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Fedify: ActivityPub server framework&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1tlf…wz08&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, or at least scripts/aliases.&lt;br/&gt;&lt;br/&gt;Speaking of RFC 9421, which notable fediverse implementations can&amp;#39;t handle it yet? Anyone keeping track?&lt;br/&gt;&lt;br/&gt;#ActivityPub #FediDev #RFC9421&lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting &lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/note17fk23ctslzzt8rj0qh7647z65dggqw4wr699jfj80dwvhdmzxrhs4cj0hr&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;note17fk…j0hr&lt;/a&gt;&lt;/span&gt;&lt;br/&gt; &lt;/div&gt; RFC 9421 HTTP Message Signatures support in #curl maybe?&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://github.com/curl/curl/pull/21239&#34;&gt;https://github.com/curl/curl/pull/21239&lt;/a&gt; &lt;/blockquote&gt;
    </content>
    <updated>2026-04-06T18:04:16Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsf822nkmh8t0jgrrk25uvtvxjvujer7jvtxxse0jyr9npjpdzyrqczypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzrv7k9v</id>
    
      <title type="html">I&amp;#39;m looking at the person&amp;#39;s screenshot which shows your ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsf822nkmh8t0jgrrk25uvtvxjvujer7jvtxxse0jyr9npjpdzyrqczypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzrv7k9v" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsd53y592kh7jmhjqhcag3xy80s63s44vzgydk7nceu05xc03r60hqs5ek6h&#39;&gt;nevent1q…ek6h&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I&amp;#39;m looking at the person&amp;#39;s screenshot which shows your Bluesky posts bridged to the fediverse. Most of them are quote posts. Your own text in them is bridged fine, it&amp;#39;s only the quoted posts that are shown as links instead of embeds. Mastodon quote posts need a consent flag that Bridgy Fed doesn&amp;#39;t yet provide.&lt;br/&gt;&lt;br/&gt;Notably, even if Bridgy Fed adds the feature, it will only show quoted posts of accounts who have also opted in. This is all a bit complicated!&lt;br/&gt;&lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1zzy7ll5yzxcdu7uxm0l3579u635ff7jjdy22z458lcud3gdpg72stl9edy&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Anuj Ahooja&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1zzy…9edy&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub176495h5jd2deymed6taalm3mwgcg9k9qf6z03vac2wp84htwvzvs66nuj0&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Evan Prodromou&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1764…nuj0&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub13rs58mfd5v2n8js5hjgshu9v6v0rnwtml0tjyurytqeac70zg26s36s8u8&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;A New Social&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub13rs…s8u8&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;
    </content>
    <updated>2026-04-01T21:08:05Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs04cd5pvcz766rdpzlxmmhsw8s7ukr2ejgqgmtg4dest239q6uf5qzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzdvrkp6</id>
    
      <title type="html">Nothing on your end, sorry! We just gotta wait until Bridgy Fed ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs04cd5pvcz766rdpzlxmmhsw8s7ukr2ejgqgmtg4dest239q6uf5qzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzdvrkp6" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsdw6zmhg87fr5e55jgrly655clfp9ccmntptzwvpqqpp2scud6adqm6cnz4&#39;&gt;nevent1q…cnz4&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Nothing on your end, sorry! We just gotta wait until Bridgy Fed can support Mastodon-style verified quotes.&lt;br/&gt;&lt;br/&gt;The GitHub link I posted is where its programmers are discussing if and when that can happen. (There is currently no timeline and, again, nothing for us to really influence.)&lt;br/&gt;&lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1zzy7ll5yzxcdu7uxm0l3579u635ff7jjdy22z458lcud3gdpg72stl9edy&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Anuj Ahooja&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1zzy…9edy&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub176495h5jd2deymed6taalm3mwgcg9k9qf6z03vac2wp84htwvzvs66nuj0&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Evan Prodromou&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1764…nuj0&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub13rs58mfd5v2n8js5hjgshu9v6v0rnwtml0tjyurytqeac70zg26s36s8u8&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;A New Social&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub13rs…s8u8&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;
    </content>
    <updated>2026-04-01T20:54:58Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsdtdt7czd2jdqj7yx54c30ldzsjccgdlakwgryqjhxs49j4t4yfeszypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzhjkvdq</id>
    
      <title type="html">The GitHub issue for getting bridged quote posts visible on ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsdtdt7czd2jdqj7yx54c30ldzsjccgdlakwgryqjhxs49j4t4yfeszypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzhjkvdq" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0jr447ueyzwgf46qq3dkhecvxmq28v6x768qdh2p2m0rd05ykkrql807n2&#39;&gt;nevent1q…07n2&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;The GitHub issue for getting bridged quote posts visible on Mastodon is &lt;a href=&#34;https://github.com/snarfed/bridgy-fed/issues/1956&#34;&gt;https://github.com/snarfed/bridgy-fed/issues/1956&lt;/a&gt;, some good discussion in there early on. (Sorry for basically taking it over with my FEP-044f ecosystem monitoring.)&lt;br/&gt;&lt;br/&gt;The implementation is nontrivial, since unlike most ActivityPub platforms Bridgy Fed probably won&amp;#39;t want to issue a blanket quoting permission, but instead bridge quote post permissions from each Bluesky user and post.&lt;br/&gt;&lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub176495h5jd2deymed6taalm3mwgcg9k9qf6z03vac2wp84htwvzvs66nuj0&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Evan Prodromou&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1764…nuj0&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub16el83dchxxar575yslusytcvgadnmwcm5j48ezkftdl72umsqtlq72n8vf&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Laffy&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub16el…n8vf&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub13rs58mfd5v2n8js5hjgshu9v6v0rnwtml0tjyurytqeac70zg26s36s8u8&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;A New Social&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub13rs…s8u8&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;
    </content>
    <updated>2026-04-01T18:57:00Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs0rqg2uteu2lzy7t5vuzm3mkpqfnwantqvh23pj3qpewrrtnktg6szypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzns05ce</id>
    
      <title type="html">Probably very unlikely as long as the vocabulary isn&amp;#39;t in ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs0rqg2uteu2lzy7t5vuzm3mkpqfnwantqvh23pj3qpewrrtnktg6szypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzns05ce" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs2xgr32tazyffl584djqfqlfzpt3a9nsud66a25m5hl60tt3fx3ns2dqqv4&#39;&gt;nevent1q…qqv4&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Probably very unlikely as long as the vocabulary isn&amp;#39;t in Fedify: &lt;a href=&#34;https://github.com/fedify-dev/fedify/issues/452&#34;&gt;https://github.com/fedify-dev/fedify/issues/452&lt;/a&gt; But now that the interaction policy vocab is in, it might not take too much longer.
    </content>
    <updated>2026-03-26T21:01:45Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsgp8yhr0lqfdm6mazclkjkllurtj0lux3thzkwxe28yvrlmytm4fczypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzwlgkpd</id>
    
      <title type="html">I saw this post when it was new, and two days later I am ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsgp8yhr0lqfdm6mazclkjkllurtj0lux3thzkwxe28yvrlmytm4fczypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzwlgkpd" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqszgg8ttkl3gn2paayfagkkamfcu78tjeqs4ma9ht7yush3h3uekdsepgumg&#39;&gt;nevent1q…gumg&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I saw this post when it was new, and two days later I am remembering to come back and tell you that MDN is at &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1azl49z5aacf56hgus0xn95fhrtmvuy9kmj6lnczk979pwsdddulqqntw5z&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;MDN Web Docs&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1azl…tw5z&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;. 😃 Or did you know that and there&amp;#39;s a layer of meaning to your post that&amp;#39;s going over my head?
    </content>
    <updated>2026-03-26T14:42:37Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs9glydk2pxf9t36l8lvg4k78ydyfu5rg97764ggf7fz0uh8pwmqsqzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vz9ed7rp</id>
    
      <title type="html">Alright, now I have to actually remember who runs PeerTube ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs9glydk2pxf9t36l8lvg4k78ydyfu5rg97764ggf7fz0uh8pwmqsqzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vz9ed7rp" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsg3rgxgjpy8ht5x74f76nuv02pdjhstt20ycfa0yg36mdtl9uxklq0cyrez&#39;&gt;nevent1q…yrez&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Alright, now I have to actually remember who runs PeerTube servers. 😄&lt;br/&gt;&lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1fnnfpt2sw8wfzx4tr7r5z7a8trggq60wtr5f5k9sfnlkcr6xtcfqq8q8zp&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;ozoned&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1fnn…q8zp&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; runs &lt;a href=&#34;https://tubefree.org&#34;&gt;https://tubefree.org&lt;/a&gt;, a sizable instance for personal and community content.&lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1zj78zyurwlrfk7xrz2cxgdtws3gl6m7u3hr4qmmrphrsn0x9u6vqgylc9y&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Sean Tilley&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1zj7…lc9y&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; / [@sean](&lt;a href=&#34;https://deadsuperhero.com/&#34;&gt;https://deadsuperhero.com/&lt;/a&gt; ) runs &lt;a href=&#34;https://spectra.video&#34;&gt;https://spectra.video&lt;/a&gt;, a server with lots of users.&lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1ggl0gretz3aefzp0mvw6736ddj3k95lhnp755h4u84unhm65xtnqajkevu&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Lety Does Stuff&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1ggl…kevu&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; runs &lt;a href=&#34;https://peertube.doesstuff.social&#34;&gt;https://peertube.doesstuff.social&lt;/a&gt;, a personal server.&lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1evtmxaqwj97m9ntzac5ggjlucd24ssxgnhpaqj68kjzzky63g0wqkpxdke&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Sascha Foerster :bonndigital:&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1evt…xdke&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; runs &lt;a href=&#34;https://bonn.video&#34;&gt;https://bonn.video&lt;/a&gt;, which one might call an institutional server I suppose.&lt;br/&gt;&lt;br/&gt;Any of the tagged people have PeerTube hosting advice for &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1grnwvhnmx2eaec79z2wwxj5z505l0rd286sd6y7htlnatp7qm7pqpqmcsm&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Bot Pup QT&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1grn…mcsm&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;?
    </content>
    <updated>2026-03-16T01:26:52Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsvksltd7wq7dgeqx5dct87s5gvqamara6mdguapx62456v4jjxrgqzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzefytwx</id>
    
      <title type="html">I feel compelled to try to help, but I have no experience with ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsvksltd7wq7dgeqx5dct87s5gvqamara6mdguapx62456v4jjxrgqzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzefytwx" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0w72p7z4wjkvyh94macht4nv64rtqd2gc7mxc8xu55c5jfzzfx6qjuy6fp&#39;&gt;nevent1q…y6fp&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I feel compelled to try to help, but I have no experience with PeerTube hosting. 😕 The only maybe helpful thing I can say is that object storage is 5€/TB/month at Hetzner, and it&amp;#39;s vastly cheaper than their block storage.&lt;br/&gt;&lt;br/&gt;Want me to tag PeerTube hosters in my circles, or rather keep people you might not know out of the thread?
    </content>
    <updated>2026-03-15T21:24:42Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsq6qevyzwl89jhunf2uaj3786la67d3ueu7yfw02ukqy3z7fdq4jgzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzpeuphu</id>
    
      <title type="html">I wonder if the intent is still current? We&amp;#39;ve seen a few ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsq6qevyzwl89jhunf2uaj3786la67d3ueu7yfw02ukqy3z7fdq4jgzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzpeuphu" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsx2qae4thhwa6zr2m0d2zsvcdcf4x7exrymhy0w5zm0c9skchhf9sn5lhj8&#39;&gt;nevent1q…lhj8&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I wonder if the intent is still current? We&amp;#39;ve seen a few lightweight Python implementations of FEP-044f since the issue was raised. As always, I&amp;#39;d be happy to advise.
    </content>
    <updated>2026-03-15T21:10:33Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqspwpr3yftlux40t6kwzq4d6vz2uedhrlwxpkf5ufet4ms5qmp4dmgzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vz2gekx0</id>
    
      <title type="html">No experience with group actors, sorry! I don&amp;#39;t see any ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqspwpr3yftlux40t6kwzq4d6vz2uedhrlwxpkf5ufet4ms5qmp4dmgzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vz2gekx0" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsptxxxrfqv55qk7fus96xg87pxd5avuuh54lyfcr2mqd55tezvf0ccqa3t8&#39;&gt;nevent1q…a3t8&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;No experience with group actors, sorry! I don&amp;#39;t see any obvious issues with the JSON, which makes sense since it loads on Mastodon.
    </content>
    <updated>2026-03-15T00:53:05Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs2d2ujp5n9tfgl8g0x8x4hru385m2x4naef02wdygzhs0rduez8egzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzw858jm</id>
    
      <title type="html">That one&amp;#39;s a microformat mismatch, Mastodon looks for the ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs2d2ujp5n9tfgl8g0x8x4hru385m2x4naef02wdygzhs0rduez8egzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzw858jm" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsxuk6fczmqsg53zkngd56ncaqq8euv7hqjufn894j4e8hdpwhahxgjrdf9p&#39;&gt;nevent1q…df9p&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;That one&amp;#39;s a microformat mismatch, Mastodon looks for the class &amp;#34;mention&amp;#34; to skip the link preview and open the profile locally. &lt;a href=&#34;https://docs.joinmastodon.org/spec/microformats/#mastodon&#34;&gt;https://docs.joinmastodon.org/spec/microformats/#mastodon&lt;/a&gt;
    </content>
    <updated>2026-03-14T15:13:11Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsgr2hygne57ef9er09y08fx9nvr4ge8mgrrla3w3x65jkkhrnzp5gzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vznrg82d</id>
    
      <title type="html">Hold on – Open Collective and Open Source Collective are two ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsgr2hygne57ef9er09y08fx9nvr4ge8mgrrla3w3x65jkkhrnzp5gzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vznrg82d" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsp5vwraql0a3jvfzfu7huln5qpw57zcygtlu522gkz7hjlc3wj0eclqdvfr&#39;&gt;nevent1q…dvfr&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Hold on – Open Collective and Open Source Collective are two different institutions, right? But they are both currently integrating Persona? Am I getting this right?
    </content>
    <updated>2026-03-12T19:51:36Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsrek8ewdfc289g2j7dqgz5q44pu67t0kwvewgp86pm6c4z2r82xnszypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzgh2xap</id>
    
      <title type="html">New quote test, wooo! ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsrek8ewdfc289g2j7dqgz5q44pu67t0kwvewgp86pm6c4z2r82xnszypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzgh2xap" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsfjeq5gqlzrl7fw0yuu693ejv86eyt75h2cy755y8vq5dun293m0qyh8lyx&#39;&gt;nevent1q…8lyx&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;New quote test, wooo!&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://blog.fabiomanganiello.com/article/Madblog-federated-blogging-from-markdown&#34;&gt;https://blog.fabiomanganiello.com/article/Madblog-federated-blogging-from-markdown&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Edit: Yep, looks to be working! 😀&lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting &lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/note1rcm8k4ryu3v083x3uwjj4yzjel7kt8lts70hee6r5v4qxkjcfeusmynqw5&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;note1rcm…nqw5&lt;/a&gt;&lt;/span&gt;&lt;br/&gt; &lt;/div&gt; **[Madblog: A Markdown Folder That Federates Everywhere](&lt;a href=&#34;https://blog.fabiomanganiello.com/article/Madblog-federated-blogging-from-markdown&#34;&gt;https://blog.fabiomanganiello.com/article/Madblog-federated-blogging-from-markdown&lt;/a&gt; )**&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;**A lightweight blogging engine based on text files, with native Fediverse and IndieWeb support**&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;I started working on [Madblog](&lt;a href=&#34;https://git.fabiomanganiello.com/madblog&#34;&gt;https://git.fabiomanganiello.com/madblog&lt;/a&gt; ) a few years ago.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;I wanted a simple blogging platform that I could run from my own Markdown files. No intermediaries. No bloated UI. No JavaScript. No databases and migration scripts. No insecure plugins. Just a git folder, an Obsidian vault or a synchronized SyncThing directory, and the ability to create and modify content by simply writing text files, wherever I am.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Drop a Markdown file in the directory, and it&#39;s live. Edit it, and the changes propagate. Delete it, and it&#39;s gone.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;It&#39;s been running my [personal blog](&lt;a href=&#34;https://blog.fabiomanganiello.com&#34;&gt;https://blog.fabiomanganiello.com&lt;/a&gt; ) and the [Platypush blog](&lt;a href=&#34;https://blog.platypush.tech&#34;&gt;https://blog.platypush.tech&lt;/a&gt; ) for a while now.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;With the new release, #madblog now gets a new superpower: it supports federation, interactions and comments both through:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;li&gt;&lt;a href=&#34;&lt;a href=&#34;https://indieweb.org/Webmention&#34;&gt;https://indieweb.org/Webmention&lt;/a&gt;&#34;&gt;&lt;strong&gt;Webmentions&lt;/strong&gt;&lt;/a&gt; - already implemented some weeks ago, you can also check out the &lt;a href=&#34;&lt;a href=&#34;https://blog.fabiomanganiello.com/article/webmentions-with-batteries-included&#34;&gt;https://blog.fabiomanganiello.com/article/webmentions-with-batteries-included&lt;/a&gt;&#34;&gt;previous blog article&lt;/a&gt;&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;a href=&#34;&lt;a href=&#34;https://indieweb.org/ActivityPub&#34;&gt;https://indieweb.org/ActivityPub&lt;/a&gt;&#34;&gt;&lt;strong&gt;ActivityPub&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;&lt;br/&gt;&lt;br/&gt;Webmentions allow your site to mention and be mentioned by other sites that also implement them - like any WordPress blog with the [Webmention plugin](&lt;a href=&#34;https://wordpress.org/plugins/webmention/&#34;&gt;https://wordpress.org/plugins/webmention/&lt;/a&gt; ), or link aggregators like [Lemmy](&lt;a href=&#34;https://join-lemmy.org/&#34;&gt;https://join-lemmy.org/&lt;/a&gt; ) or [HackerNews](&lt;a href=&#34;https://news.ycombinator.com/&#34;&gt;https://news.ycombinator.com/&lt;/a&gt; ). Interactions with any of your pages will be visible under them.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;#activitypub support allows Madblog to fully federate with Mastodon, Pleroma, Misskey, Friendica or any other #fediverse instance. It turns your blog into a federated handle that can be followed by anyone on the Fediverse. It gives you the ability to mention people on the Fediverse directly from your text files, and get replies to your articles directly from Mastodon, get your articles boosted, shared and quoted like any other Mastodon post.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;## &lt;br/&gt;&lt;br/&gt;Demos&lt;br/&gt;These blogs are powered by Madblog:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;li&gt;&lt;a href=&#34;&lt;a href=&#34;https://blog.fabiomanganiello.com&#34;&gt;https://blog.fabiomanganiello.com&lt;/a&gt;&#34;&gt;blog.fabiomanganiello.com&lt;/a&gt; — Fediverse handle: &lt;a class=&#34;activitypub-mention&#34; href=&#34;&lt;a href=&#34;https://manganiello.blog/@fabio&#34;&gt;https://manganiello.blog/@fabio&lt;/a&gt;&#34;&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub17w6mc9753nnur2uzf0qrfz8jaku2vaqjwuwqs6fxhgchv4wg0pzqgh48ey&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Fabio Manganiello&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub17w6…48ey&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;a href=&#34;&lt;a href=&#34;https://blog.platypush.tech&#34;&gt;https://blog.platypush.tech&lt;/a&gt;&#34;&gt;blog.platypush.tech&lt;/a&gt; — Fediverse handle: &lt;a class=&#34;activitypub-mention&#34; href=&#34;&lt;a href=&#34;https://platypush.tech/@blog&#34;&gt;https://platypush.tech/@blog&lt;/a&gt;&#34;&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1pqjg4gf95t2epy5emd89p0r54sj6fdufvxdhdj0ulq6r09644uhqkqal0g&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Platypush&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1pqj…al0g&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;br/&gt;&lt;br/&gt;You can follow them from Mastodon (or any other Fediverse client), reply to articles directly from your instance, boost them, or quote them. You can also interact via [Webmentions](&lt;a href=&#34;https://indieweb.org/Webmention&#34;&gt;https://indieweb.org/Webmention&lt;/a&gt; ): link to an article from your own site, and if your site supports Webmentions, the mention will show up as a response on the original post. These blogs also have a [Guestbook](&lt;a href=&#34;https://blog.fabiomanganiello.com/guestbook&#34;&gt;https://blog.fabiomanganiello.com/guestbook&lt;/a&gt; ) — mention the blog&#39;s Fediverse handle or send a Webmention to the home page, and your message appears on a public guest registry.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;## &lt;br/&gt;&lt;br/&gt;How Does It Compare?&lt;br/&gt;If you&#39;ve looked into federated blogging before, you&#39;ve likely come across a few options:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;&lt;a href=&#34;https://writefreely.org/&#34;&gt;https://writefreely.org/&lt;/a&gt;&#34;&gt;WriteFreely&lt;/a&gt;&lt;/strong&gt; is probably the closest alternative — a minimalist, Go-based platform with ActivityPub support. It&#39;s well-designed, but it uses a database (SQLite or MySQL), has its own (very minimal) editor, and doesn&#39;t support Webmentions. Additionally, it lacks many features that are deal-breakers for me.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;No export of all the content to Markdown, nor ability to run my blog from my Nextcloud Notes folder or Obsidian vault.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;No support for LaTeX or Mermaid diagrams.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;No support for federated interactions - any interaction with your articles on the Fediverse is simply lost.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;The UI is minimalist and not necessarily bad, but not even sufficiently curated for something like a blog (narrow width, Serif fonts not optimized for legibility, the settings and admin panels are a mess...).&lt;/li&gt;&lt;br/&gt;&lt;li&gt;No support for moderation / content blocking.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;br/&gt;&lt;p&gt;No support for federated hashtags.&lt;/p&gt;&lt;br/&gt;&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;br/&gt;&lt;p&gt;&lt;strong&gt;&lt;a href=&#34;&lt;a href=&#34;https://wordpress.org/&#34;&gt;https://wordpress.org/&lt;/a&gt;&#34;&gt;WordPress&lt;/a&gt;&lt;/strong&gt; with ActivityPub and Webmention plugins can technically do what Madblog does, but it&#39;s a full CMS with a database, a theme engine, a plugin ecosystem, and a much larger attack surface. If all you need is a blog, it&#39;s overkill.&lt;/p&gt;&lt;br/&gt;&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;br/&gt;&lt;p&gt;&lt;strong&gt;&lt;a href=&#34;&lt;a href=&#34;https://joinplu.me/&#34;&gt;https://joinplu.me/&lt;/a&gt;&#34;&gt;Plume&lt;/a&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;a href=&#34;&lt;a href=&#34;https://friendi.ca/&#34;&gt;https://friendi.ca/&lt;/a&gt;&#34;&gt;Friendica&lt;/a&gt;&lt;/strong&gt; offer blogging with federation, but they&#39;re full social platforms, not&lt;br/&gt;  lightweight publishing tools.&lt;/p&gt;&lt;br/&gt;&lt;/li&gt;&lt;br/&gt;&lt;br/&gt;Madblog sits in a different niche: it&#39;s closer to a static-site generator that happens to speak federation protocols. It implements a workflow like &#34;write Markdown, push to server, syndicate everywhere&#34;.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;## &lt;br/&gt;&lt;br/&gt;Getting Started&lt;br/&gt;### &lt;br/&gt;&lt;br/&gt;Docker Quickstart&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;mkdir&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;-p&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;~/madblog/markdown&lt;br/&gt;cat&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;lt;&amp;lt;EOF &amp;gt; ~/madblog/markdown/hello-world.md&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;s&#34;&gt;# Hello, Fediverse!&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span class=&#34;s&#34;&gt;This is my first post on [Madblog](&lt;a href=&#34;https://git.fabiomanganiello.com/madblog&#34;&gt;https://git.fabiomanganiello.com/madblog&lt;/a&gt;)!&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;s&#34;&gt;EOF&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;docker&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;run&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;-it&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;-p&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;8000&lt;/span&gt;:8000&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;-v&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$HOME&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/madblog:/data&#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;quay.io/blacklight/madblog&lt;br/&gt;&lt;/code&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Open &lt;a href=&#34;http://localhost:8000&#34;&gt;http://localhost:8000&lt;/a&gt;. That&#39;s it — you have a blog.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;The default Docker image (quay.io/blacklight/madblog) is a minimal build (&lt; 100 MB) that includes everything except LaTeX and Mermaid rendering. If you need those, build the full image from source:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;git&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;clone&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;a href=&#34;https://git.fabiomanganiello.com/madblog&#34;&gt;https://git.fabiomanganiello.com/madblog&lt;/a&gt;&lt;br/&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;madblog&lt;br/&gt;docker&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;build&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;-f&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;docker/full.Dockerfile&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;-t&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;madblog&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;.&lt;br/&gt;&lt;/code&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;See the [full Docker documentation](&lt;a href=&#34;https://git.fabiomanganiello.com/madblog/src/branch/main/README.md#running-madblog-in-docker&#34;&gt;https://git.fabiomanganiello.com/madblog/src/branch/main/README.md#running-madblog-in-docker&lt;/a&gt; ) for details on mounting config files and ActivityPub keys.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;### &lt;br/&gt;&lt;br/&gt;Markdown structure&lt;br/&gt;Since there&#39;s no database or extra state files involved, the metadata of your articles is also stored in Markdown.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Some things (like title, description) can be inferred from the file name, headers of your files etc., creation date defaults to the creation timestamp of the file and author and language are inherited from your config.yaml.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;A full customized header would look like this:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt; [&lt;span class=&#34;nl&#34;&gt;//&lt;/span&gt;]: &lt;span class=&#34;na&#34;&gt;# (title: Title of the article)&lt;/span&gt;&lt;br/&gt; [&lt;span class=&#34;nl&#34;&gt;//&lt;/span&gt;]: &lt;span class=&#34;na&#34;&gt;# (description: Short description of the content)&lt;/span&gt;&lt;br/&gt; [&lt;span class=&#34;nl&#34;&gt;//&lt;/span&gt;]: &lt;span class=&#34;na&#34;&gt;# (image: /img/some-header-image.png)&lt;/span&gt;&lt;br/&gt; [&lt;span class=&#34;nl&#34;&gt;//&lt;/span&gt;]: &lt;span class=&#34;na&#34;&gt;# (author: Author Name &amp;lt;&lt;a href=&#34;https://author.me&amp;gt&#34;&gt;https://author.me&amp;gt&lt;/a&gt;;)&lt;/span&gt;&lt;br/&gt; [&lt;span class=&#34;nl&#34;&gt;//&lt;/span&gt;]: &lt;span class=&#34;na&#34;&gt;# (author_photo:  &lt;img src=&#34;https://author.me/avatar.png&#34;&gt; )&lt;/span&gt;&lt;br/&gt; [&lt;span class=&#34;nl&#34;&gt;//&lt;/span&gt;]: &lt;span class=&#34;na&#34;&gt;# (language: en-US)&lt;/span&gt;&lt;br/&gt; [&lt;span class=&#34;nl&#34;&gt;//&lt;/span&gt;]: &lt;span class=&#34;na&#34;&gt;# (published: 2022-01-01)&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;...your Markdown content...&lt;br/&gt;&lt;/code&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;### &lt;br/&gt;&lt;br/&gt;Key Configuration&lt;br/&gt;Madblog reads configuration from a config.yaml in your content directory. Every option is also available as an environment variable with a MADBLOG_ prefix — handy for Docker or CI setups.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;A minimal config to get started:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class=&#34;nt&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l l-Scalar l-Scalar-Plain&#34;&gt;My Blog&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;nt&#34;&gt;description&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l l-Scalar l-Scalar-Plain&#34;&gt;Thoughts on tech and life&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;nt&#34;&gt;link&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l l-Scalar l-Scalar-Plain&#34;&gt;&lt;a href=&#34;https://myblog.example.com&#34;&gt;https://myblog.example.com&lt;/a&gt;&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;nt&#34;&gt;author&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l l-Scalar l-Scalar-Plain&#34;&gt;Your Name&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Or purely via environment variables:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;docker&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;run&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;-it&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;-p&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;8000&lt;/span&gt;:8000&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;-e&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;MADBLOG_TITLE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&#34;My Blog&#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;-e&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;MADBLOG_LINK&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&#34;&lt;a href=&#34;https://myblog.example.com&#34;&gt;https://myblog.example.com&lt;/a&gt;&#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;-e&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;MADBLOG_AUTHOR&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&#34;Your Name&#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;-v&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$HOME&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/madblog:/data&#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;quay.io/blacklight/madblog&lt;br/&gt;&lt;/code&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;See [config.example.yaml](&lt;a href=&#34;https://git.fabiomanganiello.com/madblog/src/branch/main/config.example.yaml&#34;&gt;https://git.fabiomanganiello.com/madblog/src/branch/main/config.example.yaml&lt;/a&gt; ) for the full reference.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&gt; &lt;br/&gt;&gt; It is advised to keep all of your Markdown content under &amp;lt;data-dir&amp;gt;/markdown&gt; ,&lt;br/&gt;especially if you enable federation, in order to keep the Markdown folder&lt;br/&gt;tidy from all the auxiliary files generated by Madblog.&lt;br/&gt;&lt;br/&gt;&gt; &lt;br/&gt;&lt;br/&gt;## &lt;br/&gt;&lt;br/&gt;Webmentions&lt;br/&gt;[Webmentions](&lt;a href=&#34;https://indieweb.org/Webmention&#34;&gt;https://indieweb.org/Webmention&lt;/a&gt; ) are the IndieWeb&#39;s answer to trackbacks and pingbacks — a W3C standard that lets websites notify each other when they link to one another. Madblog supports them natively, both inbound and outbound.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;When someone links to one of your articles from a Webmention-capable site, your blog receives a notification and renders the mention as a response on the article page. Going the other way, when you link to an external URL in your Markdown and save the file, Madblog automatically discovers the target&#39;s Webmention endpoint and sends a notification — no manual step required. All mentions are stored as Markdown files under your content directory (mentions/incoming/&amp;lt;post-slug&amp;gt;/), so they&#39;re version-controllable and easy to inspect.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;You can enable pending-mode for moderation (webmentions_default_status: pending), or use the blocklist/allowlist system to filter sources by domain, URL, or regex. Webmentions are enabled by default — if you&#39;re running Madblog locally for testing, set enable_webmentions: false to avoid sending real notifications to external sites.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;## &lt;br/&gt;&lt;br/&gt;ActivityPub Federation&lt;br/&gt;[ActivityPub](&lt;a href=&#34;https://www.w3.org/TR/activitypub/&#34;&gt;https://www.w3.org/TR/activitypub/&lt;/a&gt; ) is the protocol that powers the Fediverse — Mastodon, Pleroma, Misskey, and hundreds of other platforms. Madblog implements it as a first-class feature: enable it, and your blog becomes a Fediverse actor that people can follow, reply to, boost, and quote.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Enable it in your config:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class=&#34;nt&#34;&gt;enable_activitypub&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l l-Scalar l-Scalar-Plain&#34;&gt;true&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;nt&#34;&gt;activitypub_username&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l l-Scalar l-Scalar-Plain&#34;&gt;blog&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;nt&#34;&gt;activitypub_private_key_path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l l-Scalar l-Scalar-Plain&#34;&gt;/path/to/private_key.pem&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Madblog will generate an RSA keypair on first start if you don&#39;t provide one. Once enabled, your blog gets a Fediverse handle (@blog@yourdomain.com), a WebFinger endpoint for discovery, and a full ActivityPub actor profile. New and updated articles are automatically delivered to all followers&#39; timelines.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Here&#39;s what federation looks like in practice:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;li&gt;&lt;strong&gt;Receiving mentions&lt;/strong&gt;: when someone mentions your blog&#39;s Fediverse handle in a public post (not as a reply to a specific article), the mention shows up on your &lt;a href=&#34;#guestbook&#34;&gt;Guestbook&lt;/a&gt; page.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;strong&gt;Receiving replies, likes, boosts, and quotes&lt;/strong&gt;: interactions targeting a specific article are rendered below that article — replies as threaded comments, likes/boosts/quotes as counters and cards. All stored as JSON files on disk.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;strong&gt;Sending mentions&lt;/strong&gt;: just write the fully-qualified handle in your Markdown (&lt;code&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub19tr3lx4j0mz92jge72txdmv3ksjjsfu57mupmpx33mq6hrwk925qxtplwd&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Alice&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub19tr…plwd&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;&lt;/code&gt;) and save the file. Madblog resolves the actor via WebFinger and delivers a proper ActivityPub &lt;code&gt;Mention&lt;/code&gt; tag — the mentioned user gets a notification on their instance.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;strong&gt;Federated hashtags&lt;/strong&gt;: hashtags in your articles (&lt;code&gt;#Python&lt;/code&gt;, &lt;code&gt;#Fediverse&lt;/code&gt;) are included as ActivityPub &lt;code&gt;Hashtag&lt;/code&gt; tags in the published object. Followers who track those hashtags on their instance will see your posts in their filtered feeds.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;strong&gt;Custom profile fields&lt;/strong&gt;: configure additional profile metadata (verified links, donation pages, git repos) that show up on your actor&#39;s profile as seen from Mastodon and other Fediverse clients:&lt;/li&gt;&lt;br/&gt;&lt;br/&gt;yaml&lt;br/&gt;  activitypub_profile_fields:&lt;br/&gt;    Git repository: &amp;lt;&lt;a href=&#34;https://git.example.com/myblog&amp;gt&#34;&gt;https://git.example.com/myblog&amp;gt&lt;/a&gt;;&lt;br/&gt;    Donate: &amp;lt;&lt;a href=&#34;https://liberapay.com/myprofile&amp;gt&#34;&gt;https://liberapay.com/myprofile&amp;gt&lt;/a&gt;;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;The federation layer also exposes a read-only subset of the [Mastodon API](&lt;a href=&#34;https://docs.joinmastodon.org/methods/&#34;&gt;https://docs.joinmastodon.org/methods/&lt;/a&gt; ), so Mastodon-compatible clients and crawlers can discover the instance, look up the actor, list published statuses, and search for content — with no extra configuration.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Madblog also supports advanced ActivityPub features like split-domain setups (e.g. your blog at blog.example.com but your Fediverse handle at @blog@example.com), configurable object types (Note for inline rendering on Mastodon vs. Article for link-card previews), and quote policies ([FEP-044f](&lt;a href=&#34;https://codeberg.org/fediverse/fep/src/branch/main/fep/044f/fep-044f.md&#34;&gt;https://codeberg.org/fediverse/fep/src/branch/main/fep/044f/fep-044f.md&lt;/a&gt; ), so Mastodon users can quote your articles too).&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;## &lt;br/&gt;&lt;br/&gt;LaTeX and Mermaid&lt;br/&gt;Madblog supports server-side rendering of LaTeX equations and Mermaid diagrams directly in your Markdown files — no client-side JavaScript required.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;**LaTeX** uses latex &#43; dvipng under the hood. Inline expressions use conventional LaTeX markers:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;The Pythagorean theorem states that \(c^2 = a^2 &#43; b^2\).&lt;br/&gt;&lt;br/&gt;$$&lt;br/&gt;E = mc^2&lt;br/&gt;$$&lt;br/&gt;&lt;/code&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;**Mermaid** diagrams use standard fenced code blocks. Both light and dark theme variants are rendered at build time and switch automatically based on the reader&#39;s color scheme:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class=&#34;sb&#34;&gt; ```mermaid&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;s&#34;&gt; graph LR&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;s&#34;&gt;     A[Write Markdown] --&amp;gt; B[Madblog renders it]&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;s&#34;&gt;     B --&amp;gt; C[Fediverse sees it]&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;sb&#34;&gt; ```&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Install Mermaid support with pip install &#34;madblog[mermaid]&#34; or use the full Docker image. Rendered output is cached, so only the first render of each block is slow.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;## &lt;br/&gt;&lt;br/&gt;Tags and Categories&lt;br/&gt;Tag your articles with hashtags — either in the metadata header or directly in the body text:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class=&#34;gh&#34;&gt;# My Article&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;This post is about &lt;span class=&#34;ni&#34;&gt;#Python&lt;/span&gt; and the &lt;span class=&#34;ni&#34;&gt;#Fediverse&lt;/span&gt;.&lt;br/&gt;&lt;/code&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Madblog builds a tag index at /tags, with per-tag pages at /tags/&amp;lt;tag&amp;gt;. Hashtags from incoming Webmentions are also indexed. Folders in your content directory act as categories — if you organize files into subdirectories, the home page groups articles by folder.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;## &lt;br/&gt;&lt;br/&gt;Feed Syndication&lt;br/&gt;Madblog generates both RSS and Atom feeds at /feed.rss and /feed.atom. You can control whether feeds include full article content or just descriptions (short_feed: true), and limit the number of entries (max_entries_per_feed: 10). limit and offset parameters are also supported for pagination.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;## &lt;br/&gt;&lt;br/&gt;Aggregator Mode&lt;br/&gt;Madblog can also pull in external RSS/Atom feeds and render them alongside your own posts on the home page — useful for affiliated blogs, or even as a self-hosted feed reader:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class=&#34;nt&#34;&gt;external_feeds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;p p-Indicator&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l l-Scalar l-Scalar-Plain&#34;&gt;&lt;a href=&#34;https://friendsblog.example.com/feed.atom&#34;&gt;https://friendsblog.example.com/feed.atom&lt;/a&gt;&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;p p-Indicator&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l l-Scalar l-Scalar-Plain&#34;&gt;&lt;a href=&#34;https://colleaguesblog.example.com/feed.atom&#34;&gt;https://colleaguesblog.example.com/feed.atom&lt;/a&gt;&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;## &lt;br/&gt;&lt;br/&gt;Guestbook&lt;br/&gt;The guestbook (/guestbook) is a dedicated page that aggregates public interactions — Webmentions targeting the home page and Fediverse mentions of your blog actor that aren&#39;t replies to specific articles. Think of it as a public guest registry, or a lo-fi comment section for your blog as a whole. Visitors can leave a message by mentioning your Fediverse handle or sending a Webmention. It can be disabled via enable_guestbook=0.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;## &lt;br/&gt;&lt;br/&gt;View Modes&lt;br/&gt;The home page supports three layouts:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;li&gt;&lt;strong&gt;&lt;code&gt;cards&lt;/code&gt;&lt;/strong&gt; (default) — a responsive grid of article cards with images&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;strong&gt;&lt;code&gt;list&lt;/code&gt;&lt;/strong&gt; — a compact list with titles and dates&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;strong&gt;&lt;code&gt;full&lt;/code&gt;&lt;/strong&gt; — a scrollable, WordPress-like view with full article content inline&lt;/li&gt;&lt;br/&gt;&lt;br/&gt;Set it in your config (view_mode: cards) or override at runtime with ?view=list.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;## &lt;br/&gt;&lt;br/&gt;Moderation&lt;br/&gt;Madblog ships with a flexible moderation system that applies to both Webmentions and ActivityPub interactions. You can run in **blocklist mode** (reject specific actors) or **allowlist mode** (accept only specific actors), with pattern matching by domain, URL, ActivityPub handle, or regex:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class=&#34;nt&#34;&gt;blocked_actors&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;p p-Indicator&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l l-Scalar l-Scalar-Plain&#34;&gt;spammer.example.com&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;p p-Indicator&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&#34;@troll@evil.social&#34;&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;p p-Indicator&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l l-Scalar l-Scalar-Plain&#34;&gt;/spam-ring\.example\..*/&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Moderation rules also apply retroactively — interactions already stored are filtered at render time. Blocked ActivityPub followers are excluded from fan-out delivery and hidden from the public follower count, but their records are preserved so they can be automatically reinstated if you change your rules.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;## &lt;br/&gt;&lt;br/&gt;Email Notifications&lt;br/&gt;Configure SMTP settings and Madblog will notify you by email whenever a new Webmention or ActivityPub interaction arrives — likes, boosts, replies, mentions, and quotes:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class=&#34;nt&#34;&gt;author_email&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l l-Scalar l-Scalar-Plain&#34;&gt;you@example.com&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;nt&#34;&gt;smtp_server&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l l-Scalar l-Scalar-Plain&#34;&gt;smtp.example.com&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;nt&#34;&gt;smtp_username&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l l-Scalar l-Scalar-Plain&#34;&gt;you@example.com&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;nt&#34;&gt;smtp_password&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l l-Scalar l-Scalar-Plain&#34;&gt;your-password&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;## &lt;br/&gt;&lt;br/&gt;Progressive Web App&lt;br/&gt;Madblog is installable as a PWA, with offline access and a native-like experience on supported devices. A service worker handles stale-while-revalidate caching with background sync for retries.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;## &lt;br/&gt;&lt;br/&gt;Raw Markdown Access&lt;br/&gt;Append .md to any article URL to get the raw Markdown source:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;a href=&#34;https://myblog.example.com/article/my-post.md&#34;&gt;https://myblog.example.com/article/my-post.md&lt;/a&gt;&lt;br/&gt;&lt;/code&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Useful for readers who prefer plain text, or for tools that consume Markdown directly.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;## &lt;br/&gt;&lt;br/&gt;Reusable Libraries&lt;br/&gt;Two key subsystems of Madblog have been extracted into standalone, reusable Python libraries. If you&#39;re building a Python web application and want to add decentralized federation support, you can use them directly — no need to adopt Madblog itself.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;### &lt;br/&gt;&lt;br/&gt;Webmentions&lt;br/&gt;[Webmentions](&lt;a href=&#34;https://git.fabiomanganiello.com/webmentions&#34;&gt;https://git.fabiomanganiello.com/webmentions&lt;/a&gt; ) is a general-purpose Python library for sending and receiving Webmentions. It comes with framework adapters for FastAPI, Flask, and Tornado, pluggable storage backends (SQLAlchemy or custom), filesystem monitoring for auto-sending mentions when files change, full microformats2 parsing, and built-in HTML rendering for displaying mentions on your pages.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Adding Webmentions to a FastAPI app:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nn&#34;&gt;fastapi&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;FastAPI&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nn&#34;&gt;webmentions&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;WebmentionsHandler&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nn&#34;&gt;webmentions.storage.adapters.db&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;init_db_storage&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nn&#34;&gt;webmentions.server.adapters.fastapi&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;bind_webmentions&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span class=&#34;n&#34;&gt;app&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;FastAPI&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;n&#34;&gt;storage&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;init_db_storage&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;engine&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&#34;sqlite:////tmp/webmentions.db&#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;n&#34;&gt;handler&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;WebmentionsHandler&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;storage&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;storage&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;base_url&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&#34;&lt;a href=&#34;https://example.com&#34;&gt;https://example.com&lt;/a&gt;&#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;n&#34;&gt;bind_webmentions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;app&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;handler&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;That&#39;s it — your app now has a /webmentions endpoint for receiving mentions,&lt;br/&gt;a Link header advertising it on every response, and a storage layer for&lt;br/&gt;persisting them. See the&lt;br/&gt;[full documentation](&lt;a href=&#34;https://git.fabiomanganiello.com/webmentions/src/branch/main/README.md&#34;&gt;https://git.fabiomanganiello.com/webmentions/src/branch/main/README.md&lt;/a&gt; )&lt;br/&gt;for details on sending mentions, custom storage, moderation, and rendering.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;### &lt;br/&gt;&lt;br/&gt;Pubby&lt;br/&gt;[Pubby](&lt;a href=&#34;https://git.fabiomanganiello.com/pubby&#34;&gt;https://git.fabiomanganiello.com/pubby&lt;/a&gt; ) is a general-purpose Python library for adding ActivityPub federation to any web application. It handles inbox processing, outbox delivery with concurrent fan-out, HTTP Signatures, WebFinger/NodeInfo discovery, interaction storage, a Mastodon-compatible API, and framework adapters for FastAPI, Flask, and Tornado.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Adding ActivityPub to a FastAPI app:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nn&#34;&gt;fastapi&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;FastAPI&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nn&#34;&gt;pubby&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ActivityPubHandler&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Object&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nn&#34;&gt;pubby.crypto&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;generate_rsa_keypair&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nn&#34;&gt;pubby.storage.adapters.db&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;init_db_storage&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nn&#34;&gt;pubby.server.adapters.fastapi&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;bind_activitypub&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span class=&#34;n&#34;&gt;app&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;FastAPI&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;n&#34;&gt;storage&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;init_db_storage&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&#34;sqlite:////tmp/pubby.db&#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;n&#34;&gt;private_key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;_&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;generate_rsa_keypair&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span class=&#34;n&#34;&gt;handler&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ActivityPubHandler&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;br/&gt;    &lt;span class=&#34;n&#34;&gt;storage&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;storage&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;br/&gt;    &lt;span class=&#34;n&#34;&gt;actor_config&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;br/&gt;        &lt;span class=&#34;s2&#34;&gt;&#34;base_url&#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&#34;&lt;a href=&#34;https://example.com&#34;&gt;https://example.com&lt;/a&gt;&#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;br/&gt;        &lt;span class=&#34;s2&#34;&gt;&#34;username&#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&#34;blog&#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;br/&gt;        &lt;span class=&#34;s2&#34;&gt;&#34;name&#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&#34;My Blog&#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;br/&gt;        &lt;span class=&#34;s2&#34;&gt;&#34;summary&#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&#34;A blog with ActivityPub support&#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;br/&gt;    &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;&lt;br/&gt;    &lt;span class=&#34;n&#34;&gt;private_key&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;private_key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span class=&#34;n&#34;&gt;bind_activitypub&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;app&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;handler&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span class=&#34;c1&#34;&gt;# Publish a post to all followers&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;n&#34;&gt;handler&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;publish_object&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Object&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;br/&gt;    &lt;span class=&#34;nb&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&#34;&lt;a href=&#34;https://example.com/posts/hello&#34;&gt;https://example.com/posts/hello&lt;/a&gt;&#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;br/&gt;    &lt;span class=&#34;nb&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&#34;Note&#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;br/&gt;    &lt;span class=&#34;n&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&#34;&amp;lt;p&amp;gt;Hello from the Fediverse!&amp;lt;/p&amp;gt;&#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;br/&gt;    &lt;span class=&#34;n&#34;&gt;url&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&#34;&lt;a href=&#34;https://example.com/posts/hello&#34;&gt;https://example.com/posts/hello&lt;/a&gt;&#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;br/&gt;    &lt;span class=&#34;n&#34;&gt;attributed_to&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&#34;&lt;a href=&#34;https://example.com/ap/actor&#34;&gt;https://example.com/ap/actor&lt;/a&gt;&#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Optionally, you can also expose a Mastodon-compatible API so that Mastodon clients and crawlers can discover your instance and browse statuses:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nn&#34;&gt;pubby.server.adapters.fastapi_mastodon&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;bind_mastodon_api&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span class=&#34;n&#34;&gt;bind_mastodon_api&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;br/&gt;    &lt;span class=&#34;n&#34;&gt;app&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;br/&gt;    &lt;span class=&#34;n&#34;&gt;handler&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;br/&gt;    &lt;span class=&#34;n&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&#34;My Blog&#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;br/&gt;    &lt;span class=&#34;n&#34;&gt;description&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&#34;A blog with ActivityPub support&#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Both libraries follow the same design philosophy: provide the protocol plumbing so you can wire it into your existing application with minimal ceremony. Storage is pluggable (SQLAlchemy, file-based, or bring-your-own), framework binding is a single function call, and the core logic is framework-agnostic. See the full documentation for [Pubby](&lt;a href=&#34;https://git.fabiomanganiello.com/pubby/src/branch/main/README.md&#34;&gt;https://git.fabiomanganiello.com/pubby/src/branch/main/README.md&lt;/a&gt; ) and [Webmentions](&lt;a href=&#34;https://git.fabiomanganiello.com/webmentions/src/branch/main/README.md&#34;&gt;https://git.fabiomanganiello.com/webmentions/src/branch/main/README.md&lt;/a&gt; ).&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;## &lt;br/&gt;&lt;br/&gt;Links&lt;br/&gt;&lt;br/&gt;&lt;li&gt;&lt;a href=&#34;&lt;a href=&#34;https://git.fabiomanganiello.com/madblog&#34;&gt;https://git.fabiomanganiello.com/madblog&lt;/a&gt;&#34;&gt;&lt;strong&gt;Madblog&lt;/strong&gt;&lt;/a&gt; (&lt;a href=&#34;&lt;a href=&#34;https://github.com/blacklight/madblog&#34;&gt;https://github.com/blacklight/madblog&lt;/a&gt;&#34;&gt;Github mirror&lt;/a&gt;)&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;a href=&#34;&lt;a href=&#34;https://git.fabiomanganiello.com/webmentions&#34;&gt;https://git.fabiomanganiello.com/webmentions&lt;/a&gt;&#34;&gt;&lt;strong&gt;Webmentions&lt;/strong&gt;&lt;/a&gt; (&lt;a href=&#34;&lt;a href=&#34;https://github.com/blacklight/webmentions&#34;&gt;https://github.com/blacklight/webmentions&lt;/a&gt;&#34;&gt;Github mirror&lt;/a&gt;)&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;a href=&#34;&lt;a href=&#34;https://git.fabiomanganiello.com/pubby&#34;&gt;https://git.fabiomanganiello.com/pubby&lt;/a&gt;&#34;&gt;&lt;strong&gt;Pubby&lt;/strong&gt;&lt;/a&gt; (&lt;a href=&#34;&lt;a href=&#34;https://github.com/blacklight/pubby&#34;&gt;https://github.com/blacklight/pubby&lt;/a&gt;&#34;&gt;Github mirror&lt;/a&gt;)&lt;/li&gt;&lt;br/&gt;&lt;br/&gt;Madblog is open-source under the AGPL-3.0-only license. The source code, issue tracker, and full documentation are available at [git.fabiomanganiello.com/madblog](&lt;a href=&#34;https://git.fabiomanganiello.com/madblog&#34;&gt;https://git.fabiomanganiello.com/madblog&lt;/a&gt; ). &lt;/blockquote&gt;
    </content>
    <updated>2026-03-11T11:46:22Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqszuffqr94fjpx6dl0t9wlscckwl3crl2dwttmqkwxdvrqmwjd86cgzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzavh7pq</id>
    
      <title type="html">Oh excellent! Please let me know when the new version is live on ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqszuffqr94fjpx6dl0t9wlscckwl3crl2dwttmqkwxdvrqmwjd86cgzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzavh7pq" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsy83ykefgn3yumxknx0khgy65c97g06qukmjkqqyng3ypr7enw64sy2qzw2&#39;&gt;nevent1q…qzw2&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Oh excellent! Please let me know when the new version is live on your blog and I&amp;#39;ll test again. 🙂
    </content>
    <updated>2026-03-10T15:29:59Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqstqmh2yt7ka7p4m3kwa8qm400hsgh3qs4gp3y7k2h59nx74rce0uszypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzc2fs3w</id>
    
      <title type="html">Seems as good a day as any to thank @npub1upg…9n89 and team for ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqstqmh2yt7ka7p4m3kwa8qm400hsgh3qs4gp3y7k2h59nx74rce0uszypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzc2fs3w" />
    <content type="html">
      Seems as good a day as any to thank &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1upgpg5x4zp7u69cerc4ah9caaj3cu9wgaldrhvftzhfq45upz9cq529n89&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;洪 民憙 (Hong Minhee) :nonbinary:&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1upg…9n89&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; and team for the exemplary work on &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1tlfg4qcs9x97v86gxay9qn8ncvdhfah8tw3hlkmc86hmeclgp6vsc3wz08&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Fedify: ActivityPub server framework&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1tlf…wz08&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;. Following Fedify&amp;#39;s big 2.0 release, my two largest interoperability pain points in &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub120sdlp9j0t9menjhmu60gyhlqus3dp3f8x394eetgrqfw9q23grsld0fq8&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Encyclia&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub120s…0fq8&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; can be fixed. 🙂&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://github.com/fedify-dev/fedify/issues/473&#34;&gt;https://github.com/fedify-dev/fedify/issues/473&lt;/a&gt; means that people using &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1hpu327nn49jzvklxtzdv2c0hn22mcwj8gnz0advpdkxuelja9twsralxp9&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;GoToSocial&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1hpu…lxp9&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; will finally be able to follow &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub120sdlp9j0t9menjhmu60gyhlqus3dp3f8x394eetgrqfw9q23grsld0fq8&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Encyclia&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub120s…0fq8&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; accounts soon (whenever I finish the upgrade).&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://github.com/fedify-dev/fedify/issues/472&#34;&gt;https://github.com/fedify-dev/fedify/issues/472&lt;/a&gt; will let me (and others) handle more account resolution edge cases and reduce failure mode traffic after Fedify 2.1 is out.
    </content>
    <updated>2026-03-10T15:23:46Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsvknucderj8dc2hqkcu67zwx0kcsa7ra679697v3lq6ay00csqcnszypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vz0krten</id>
    
      <title type="html">Right, and my server seems to have gotten the corresponding ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsvknucderj8dc2hqkcu67zwx0kcsa7ra679697v3lq6ay00csqcnszypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vz0krten" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqstvarvyzkkpzdqm7v45y3cdyqh0u0encmgmmjjtnw087p3y2a9hrqr3tw8e&#39;&gt;nevent1q…tw8e&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Right, and my server seems to have gotten the corresponding `Accept`. 👍 But if you look at &lt;a href=&#34;https://social.wake.st/@liaizon/116205306320048221&#34;&gt;https://social.wake.st/@liaizon/116205306320048221&lt;/a&gt; and scroll down, you see that &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1xselj43f4mq6e4tmadr6ex9s2xfdp34wqupn27n2ufd6clv3mqkqhflgk3&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;wakest likes your bugs ⁂&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1xse…lgk3&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; can&amp;#39;t see the quote in my reply (and neither can people on any other server looking at this thread). This is because the `QuoteAuthorization` needs to be publicly resolvable: &lt;a href=&#34;https://fediverse.codeberg.page/fep/fep/044f/#verifying-third-party-quote-posts&#34;&gt;https://fediverse.codeberg.page/fep/fep/044f/#verifying-third-party-quote-posts&lt;/a&gt;
    </content>
    <updated>2026-03-10T14:57:18Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsw7meavd5ghxeztj8f529pwq03r5x5gqe2wx8h9n02g7zfz4de3pszypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzpn4ll5</id>
    
      <title type="html">Alas, the PR has been merged, so it&amp;#39;ll be a long while until ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsw7meavd5ghxeztj8f529pwq03r5x5gqe2wx8h9n02g7zfz4de3pszypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzpn4ll5" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsf0xewe6yvk4xypy7wcrnqlz63mxeqn7jardlsw2cg09v43qysjagec4rvz&#39;&gt;nevent1q…4rvz&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Alas, the PR has been merged, so it&amp;#39;ll be a long while until I bother Claire again. 🙂&lt;br/&gt;&lt;br/&gt;But I&amp;#39;ll keep updating my own list. I see in the code where the interaction policy is declared, but not where individual quotes are authorized. If I quote this post here, let&amp;#39;s test if both of us will see the quote.&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://blog.fabiomanganiello.com/article/Madblog-federated-blogging-from-markdown&#34;&gt;https://blog.fabiomanganiello.com/article/Madblog-federated-blogging-from-markdown&lt;/a&gt;&lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting &lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/note1rcm8k4ryu3v083x3uwjj4yzjel7kt8lts70hee6r5v4qxkjcfeusmynqw5&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;note1rcm…nqw5&lt;/a&gt;&lt;/span&gt;&lt;br/&gt; &lt;/div&gt; **[Madblog: A Markdown Folder That Federates Everywhere](&lt;a href=&#34;https://blog.fabiomanganiello.com/article/Madblog-federated-blogging-from-markdown&#34;&gt;https://blog.fabiomanganiello.com/article/Madblog-federated-blogging-from-markdown&lt;/a&gt; )**&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;**A lightweight blogging engine based on text files, with native Fediverse and IndieWeb support**&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;I started working on [Madblog](&lt;a href=&#34;https://git.fabiomanganiello.com/madblog&#34;&gt;https://git.fabiomanganiello.com/madblog&lt;/a&gt; ) a few years ago.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;I wanted a simple blogging platform that I could run from my own Markdown files. No intermediaries. No bloated UI. No JavaScript. No databases and migration scripts. No insecure plugins. Just a git folder, an Obsidian vault or a synchronized SyncThing directory, and the ability to create and modify content by simply writing text files, wherever I am.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Drop a Markdown file in the directory, and it&#39;s live. Edit it, and the changes propagate. Delete it, and it&#39;s gone.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;It&#39;s been running my [personal blog](&lt;a href=&#34;https://blog.fabiomanganiello.com&#34;&gt;https://blog.fabiomanganiello.com&lt;/a&gt; ) and the [Platypush blog](&lt;a href=&#34;https://blog.platypush.tech&#34;&gt;https://blog.platypush.tech&lt;/a&gt; ) for a while now.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;With the new release, #madblog now gets a new superpower: it supports federation, interactions and comments both through:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;li&gt;&lt;a href=&#34;&lt;a href=&#34;https://indieweb.org/Webmention&#34;&gt;https://indieweb.org/Webmention&lt;/a&gt;&#34;&gt;&lt;strong&gt;Webmentions&lt;/strong&gt;&lt;/a&gt; - already implemented some weeks ago, you can also check out the &lt;a href=&#34;&lt;a href=&#34;https://blog.fabiomanganiello.com/article/webmentions-with-batteries-included&#34;&gt;https://blog.fabiomanganiello.com/article/webmentions-with-batteries-included&lt;/a&gt;&#34;&gt;previous blog article&lt;/a&gt;&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;a href=&#34;&lt;a href=&#34;https://indieweb.org/ActivityPub&#34;&gt;https://indieweb.org/ActivityPub&lt;/a&gt;&#34;&gt;&lt;strong&gt;ActivityPub&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;&lt;br/&gt;&lt;br/&gt;Webmentions allow your site to mention and be mentioned by other sites that also implement them - like any WordPress blog with the [Webmention plugin](&lt;a href=&#34;https://wordpress.org/plugins/webmention/&#34;&gt;https://wordpress.org/plugins/webmention/&lt;/a&gt; ), or link aggregators like [Lemmy](&lt;a href=&#34;https://join-lemmy.org/&#34;&gt;https://join-lemmy.org/&lt;/a&gt; ) or [HackerNews](&lt;a href=&#34;https://news.ycombinator.com/&#34;&gt;https://news.ycombinator.com/&lt;/a&gt; ). Interactions with any of your pages will be visible under them.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;#activitypub support allows Madblog to fully federate with Mastodon, Pleroma, Misskey, Friendica or any other #fediverse instance. It turns your blog into a federated handle that can be followed by anyone on the Fediverse. It gives you the ability to mention people on the Fediverse directly from your text files, and get replies to your articles directly from Mastodon, get your articles boosted, shared and quoted like any other Mastodon post.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;## &lt;br/&gt;&lt;br/&gt;Demos&lt;br/&gt;These blogs are powered by Madblog:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;li&gt;&lt;a href=&#34;&lt;a href=&#34;https://blog.fabiomanganiello.com&#34;&gt;https://blog.fabiomanganiello.com&lt;/a&gt;&#34;&gt;blog.fabiomanganiello.com&lt;/a&gt; — Fediverse handle: &lt;a class=&#34;activitypub-mention&#34; href=&#34;&lt;a href=&#34;https://manganiello.blog/@fabio&#34;&gt;https://manganiello.blog/@fabio&lt;/a&gt;&#34;&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub17w6mc9753nnur2uzf0qrfz8jaku2vaqjwuwqs6fxhgchv4wg0pzqgh48ey&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Fabio Manganiello&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub17w6…48ey&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;a href=&#34;&lt;a href=&#34;https://blog.platypush.tech&#34;&gt;https://blog.platypush.tech&lt;/a&gt;&#34;&gt;blog.platypush.tech&lt;/a&gt; — Fediverse handle: &lt;a class=&#34;activitypub-mention&#34; href=&#34;&lt;a href=&#34;https://platypush.tech/@blog&#34;&gt;https://platypush.tech/@blog&lt;/a&gt;&#34;&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1pqjg4gf95t2epy5emd89p0r54sj6fdufvxdhdj0ulq6r09644uhqkqal0g&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Platypush&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1pqj…al0g&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;br/&gt;&lt;br/&gt;You can follow them from Mastodon (or any other Fediverse client), reply to articles directly from your instance, boost them, or quote them. You can also interact via [Webmentions](&lt;a href=&#34;https://indieweb.org/Webmention&#34;&gt;https://indieweb.org/Webmention&lt;/a&gt; ): link to an article from your own site, and if your site supports Webmentions, the mention will show up as a response on the original post. These blogs also have a [Guestbook](&lt;a href=&#34;https://blog.fabiomanganiello.com/guestbook&#34;&gt;https://blog.fabiomanganiello.com/guestbook&lt;/a&gt; ) — mention the blog&#39;s Fediverse handle or send a Webmention to the home page, and your message appears on a public guest registry.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;## &lt;br/&gt;&lt;br/&gt;How Does It Compare?&lt;br/&gt;If you&#39;ve looked into federated blogging before, you&#39;ve likely come across a few options:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;&lt;a href=&#34;https://writefreely.org/&#34;&gt;https://writefreely.org/&lt;/a&gt;&#34;&gt;WriteFreely&lt;/a&gt;&lt;/strong&gt; is probably the closest alternative — a minimalist, Go-based platform with ActivityPub support. It&#39;s well-designed, but it uses a database (SQLite or MySQL), has its own (very minimal) editor, and doesn&#39;t support Webmentions. Additionally, it lacks many features that are deal-breakers for me.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;No export of all the content to Markdown, nor ability to run my blog from my Nextcloud Notes folder or Obsidian vault.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;No support for LaTeX or Mermaid diagrams.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;No support for federated interactions - any interaction with your articles on the Fediverse is simply lost.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;The UI is minimalist and not necessarily bad, but not even sufficiently curated for something like a blog (narrow width, Serif fonts not optimized for legibility, the settings and admin panels are a mess...).&lt;/li&gt;&lt;br/&gt;&lt;li&gt;No support for moderation / content blocking.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;br/&gt;&lt;p&gt;No support for federated hashtags.&lt;/p&gt;&lt;br/&gt;&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;br/&gt;&lt;p&gt;&lt;strong&gt;&lt;a href=&#34;&lt;a href=&#34;https://wordpress.org/&#34;&gt;https://wordpress.org/&lt;/a&gt;&#34;&gt;WordPress&lt;/a&gt;&lt;/strong&gt; with ActivityPub and Webmention plugins can technically do what Madblog does, but it&#39;s a full CMS with a database, a theme engine, a plugin ecosystem, and a much larger attack surface. If all you need is a blog, it&#39;s overkill.&lt;/p&gt;&lt;br/&gt;&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;br/&gt;&lt;p&gt;&lt;strong&gt;&lt;a href=&#34;&lt;a href=&#34;https://joinplu.me/&#34;&gt;https://joinplu.me/&lt;/a&gt;&#34;&gt;Plume&lt;/a&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;a href=&#34;&lt;a href=&#34;https://friendi.ca/&#34;&gt;https://friendi.ca/&lt;/a&gt;&#34;&gt;Friendica&lt;/a&gt;&lt;/strong&gt; offer blogging with federation, but they&#39;re full social platforms, not&lt;br/&gt;  lightweight publishing tools.&lt;/p&gt;&lt;br/&gt;&lt;/li&gt;&lt;br/&gt;&lt;br/&gt;Madblog sits in a different niche: it&#39;s closer to a static-site generator that happens to speak federation protocols. It implements a workflow like &#34;write Markdown, push to server, syndicate everywhere&#34;.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;## &lt;br/&gt;&lt;br/&gt;Getting Started&lt;br/&gt;### &lt;br/&gt;&lt;br/&gt;Docker Quickstart&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;mkdir&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;-p&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;~/madblog/markdown&lt;br/&gt;cat&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;lt;&amp;lt;EOF &amp;gt; ~/madblog/markdown/hello-world.md&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;s&#34;&gt;# Hello, Fediverse!&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span class=&#34;s&#34;&gt;This is my first post on [Madblog](&lt;a href=&#34;https://git.fabiomanganiello.com/madblog&#34;&gt;https://git.fabiomanganiello.com/madblog&lt;/a&gt;)!&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;s&#34;&gt;EOF&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;docker&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;run&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;-it&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;-p&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;8000&lt;/span&gt;:8000&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;-v&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$HOME&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/madblog:/data&#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;quay.io/blacklight/madblog&lt;br/&gt;&lt;/code&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Open &lt;a href=&#34;http://localhost:8000&#34;&gt;http://localhost:8000&lt;/a&gt;. That&#39;s it — you have a blog.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;The default Docker image (quay.io/blacklight/madblog) is a minimal build (&lt; 100 MB) that includes everything except LaTeX and Mermaid rendering. If you need those, build the full image from source:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;git&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;clone&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;a href=&#34;https://git.fabiomanganiello.com/madblog&#34;&gt;https://git.fabiomanganiello.com/madblog&lt;/a&gt;&lt;br/&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;madblog&lt;br/&gt;docker&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;build&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;-f&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;docker/full.Dockerfile&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;-t&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;madblog&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;.&lt;br/&gt;&lt;/code&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;See the [full Docker documentation](&lt;a href=&#34;https://git.fabiomanganiello.com/madblog/src/branch/main/README.md#running-madblog-in-docker&#34;&gt;https://git.fabiomanganiello.com/madblog/src/branch/main/README.md#running-madblog-in-docker&lt;/a&gt; ) for details on mounting config files and ActivityPub keys.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;### &lt;br/&gt;&lt;br/&gt;Markdown structure&lt;br/&gt;Since there&#39;s no database or extra state files involved, the metadata of your articles is also stored in Markdown.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Some things (like title, description) can be inferred from the file name, headers of your files etc., creation date defaults to the creation timestamp of the file and author and language are inherited from your config.yaml.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;A full customized header would look like this:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt; [&lt;span class=&#34;nl&#34;&gt;//&lt;/span&gt;]: &lt;span class=&#34;na&#34;&gt;# (title: Title of the article)&lt;/span&gt;&lt;br/&gt; [&lt;span class=&#34;nl&#34;&gt;//&lt;/span&gt;]: &lt;span class=&#34;na&#34;&gt;# (description: Short description of the content)&lt;/span&gt;&lt;br/&gt; [&lt;span class=&#34;nl&#34;&gt;//&lt;/span&gt;]: &lt;span class=&#34;na&#34;&gt;# (image: /img/some-header-image.png)&lt;/span&gt;&lt;br/&gt; [&lt;span class=&#34;nl&#34;&gt;//&lt;/span&gt;]: &lt;span class=&#34;na&#34;&gt;# (author: Author Name &amp;lt;&lt;a href=&#34;https://author.me&amp;gt&#34;&gt;https://author.me&amp;gt&lt;/a&gt;;)&lt;/span&gt;&lt;br/&gt; [&lt;span class=&#34;nl&#34;&gt;//&lt;/span&gt;]: &lt;span class=&#34;na&#34;&gt;# (author_photo:  &lt;img src=&#34;https://author.me/avatar.png&#34;&gt; )&lt;/span&gt;&lt;br/&gt; [&lt;span class=&#34;nl&#34;&gt;//&lt;/span&gt;]: &lt;span class=&#34;na&#34;&gt;# (language: en-US)&lt;/span&gt;&lt;br/&gt; [&lt;span class=&#34;nl&#34;&gt;//&lt;/span&gt;]: &lt;span class=&#34;na&#34;&gt;# (published: 2022-01-01)&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;...your Markdown content...&lt;br/&gt;&lt;/code&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;### &lt;br/&gt;&lt;br/&gt;Key Configuration&lt;br/&gt;Madblog reads configuration from a config.yaml in your content directory. Every option is also available as an environment variable with a MADBLOG_ prefix — handy for Docker or CI setups.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;A minimal config to get started:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class=&#34;nt&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l l-Scalar l-Scalar-Plain&#34;&gt;My Blog&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;nt&#34;&gt;description&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l l-Scalar l-Scalar-Plain&#34;&gt;Thoughts on tech and life&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;nt&#34;&gt;link&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l l-Scalar l-Scalar-Plain&#34;&gt;&lt;a href=&#34;https://myblog.example.com&#34;&gt;https://myblog.example.com&lt;/a&gt;&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;nt&#34;&gt;author&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l l-Scalar l-Scalar-Plain&#34;&gt;Your Name&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Or purely via environment variables:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;docker&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;run&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;-it&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;-p&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;8000&lt;/span&gt;:8000&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;-e&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;MADBLOG_TITLE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&#34;My Blog&#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;-e&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;MADBLOG_LINK&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&#34;&lt;a href=&#34;https://myblog.example.com&#34;&gt;https://myblog.example.com&lt;/a&gt;&#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;-e&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;MADBLOG_AUTHOR&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&#34;Your Name&#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;-v&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$HOME&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/madblog:/data&#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;quay.io/blacklight/madblog&lt;br/&gt;&lt;/code&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;See [config.example.yaml](&lt;a href=&#34;https://git.fabiomanganiello.com/madblog/src/branch/main/config.example.yaml&#34;&gt;https://git.fabiomanganiello.com/madblog/src/branch/main/config.example.yaml&lt;/a&gt; ) for the full reference.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&gt; &lt;br/&gt;&gt; It is advised to keep all of your Markdown content under &amp;lt;data-dir&amp;gt;/markdown&gt; ,&lt;br/&gt;especially if you enable federation, in order to keep the Markdown folder&lt;br/&gt;tidy from all the auxiliary files generated by Madblog.&lt;br/&gt;&lt;br/&gt;&gt; &lt;br/&gt;&lt;br/&gt;## &lt;br/&gt;&lt;br/&gt;Webmentions&lt;br/&gt;[Webmentions](&lt;a href=&#34;https://indieweb.org/Webmention&#34;&gt;https://indieweb.org/Webmention&lt;/a&gt; ) are the IndieWeb&#39;s answer to trackbacks and pingbacks — a W3C standard that lets websites notify each other when they link to one another. Madblog supports them natively, both inbound and outbound.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;When someone links to one of your articles from a Webmention-capable site, your blog receives a notification and renders the mention as a response on the article page. Going the other way, when you link to an external URL in your Markdown and save the file, Madblog automatically discovers the target&#39;s Webmention endpoint and sends a notification — no manual step required. All mentions are stored as Markdown files under your content directory (mentions/incoming/&amp;lt;post-slug&amp;gt;/), so they&#39;re version-controllable and easy to inspect.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;You can enable pending-mode for moderation (webmentions_default_status: pending), or use the blocklist/allowlist system to filter sources by domain, URL, or regex. Webmentions are enabled by default — if you&#39;re running Madblog locally for testing, set enable_webmentions: false to avoid sending real notifications to external sites.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;## &lt;br/&gt;&lt;br/&gt;ActivityPub Federation&lt;br/&gt;[ActivityPub](&lt;a href=&#34;https://www.w3.org/TR/activitypub/&#34;&gt;https://www.w3.org/TR/activitypub/&lt;/a&gt; ) is the protocol that powers the Fediverse — Mastodon, Pleroma, Misskey, and hundreds of other platforms. Madblog implements it as a first-class feature: enable it, and your blog becomes a Fediverse actor that people can follow, reply to, boost, and quote.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Enable it in your config:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class=&#34;nt&#34;&gt;enable_activitypub&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l l-Scalar l-Scalar-Plain&#34;&gt;true&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;nt&#34;&gt;activitypub_username&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l l-Scalar l-Scalar-Plain&#34;&gt;blog&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;nt&#34;&gt;activitypub_private_key_path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l l-Scalar l-Scalar-Plain&#34;&gt;/path/to/private_key.pem&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Madblog will generate an RSA keypair on first start if you don&#39;t provide one. Once enabled, your blog gets a Fediverse handle (@blog@yourdomain.com), a WebFinger endpoint for discovery, and a full ActivityPub actor profile. New and updated articles are automatically delivered to all followers&#39; timelines.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Here&#39;s what federation looks like in practice:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;li&gt;&lt;strong&gt;Receiving mentions&lt;/strong&gt;: when someone mentions your blog&#39;s Fediverse handle in a public post (not as a reply to a specific article), the mention shows up on your &lt;a href=&#34;#guestbook&#34;&gt;Guestbook&lt;/a&gt; page.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;strong&gt;Receiving replies, likes, boosts, and quotes&lt;/strong&gt;: interactions targeting a specific article are rendered below that article — replies as threaded comments, likes/boosts/quotes as counters and cards. All stored as JSON files on disk.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;strong&gt;Sending mentions&lt;/strong&gt;: just write the fully-qualified handle in your Markdown (&lt;code&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub19tr3lx4j0mz92jge72txdmv3ksjjsfu57mupmpx33mq6hrwk925qxtplwd&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Alice&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub19tr…plwd&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;&lt;/code&gt;) and save the file. Madblog resolves the actor via WebFinger and delivers a proper ActivityPub &lt;code&gt;Mention&lt;/code&gt; tag — the mentioned user gets a notification on their instance.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;strong&gt;Federated hashtags&lt;/strong&gt;: hashtags in your articles (&lt;code&gt;#Python&lt;/code&gt;, &lt;code&gt;#Fediverse&lt;/code&gt;) are included as ActivityPub &lt;code&gt;Hashtag&lt;/code&gt; tags in the published object. Followers who track those hashtags on their instance will see your posts in their filtered feeds.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;strong&gt;Custom profile fields&lt;/strong&gt;: configure additional profile metadata (verified links, donation pages, git repos) that show up on your actor&#39;s profile as seen from Mastodon and other Fediverse clients:&lt;/li&gt;&lt;br/&gt;&lt;br/&gt;yaml&lt;br/&gt;  activitypub_profile_fields:&lt;br/&gt;    Git repository: &amp;lt;&lt;a href=&#34;https://git.example.com/myblog&amp;gt&#34;&gt;https://git.example.com/myblog&amp;gt&lt;/a&gt;;&lt;br/&gt;    Donate: &amp;lt;&lt;a href=&#34;https://liberapay.com/myprofile&amp;gt&#34;&gt;https://liberapay.com/myprofile&amp;gt&lt;/a&gt;;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;The federation layer also exposes a read-only subset of the [Mastodon API](&lt;a href=&#34;https://docs.joinmastodon.org/methods/&#34;&gt;https://docs.joinmastodon.org/methods/&lt;/a&gt; ), so Mastodon-compatible clients and crawlers can discover the instance, look up the actor, list published statuses, and search for content — with no extra configuration.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Madblog also supports advanced ActivityPub features like split-domain setups (e.g. your blog at blog.example.com but your Fediverse handle at @blog@example.com), configurable object types (Note for inline rendering on Mastodon vs. Article for link-card previews), and quote policies ([FEP-044f](&lt;a href=&#34;https://codeberg.org/fediverse/fep/src/branch/main/fep/044f/fep-044f.md&#34;&gt;https://codeberg.org/fediverse/fep/src/branch/main/fep/044f/fep-044f.md&lt;/a&gt; ), so Mastodon users can quote your articles too).&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;## &lt;br/&gt;&lt;br/&gt;LaTeX and Mermaid&lt;br/&gt;Madblog supports server-side rendering of LaTeX equations and Mermaid diagrams directly in your Markdown files — no client-side JavaScript required.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;**LaTeX** uses latex &#43; dvipng under the hood. Inline expressions use conventional LaTeX markers:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;The Pythagorean theorem states that \(c^2 = a^2 &#43; b^2\).&lt;br/&gt;&lt;br/&gt;$$&lt;br/&gt;E = mc^2&lt;br/&gt;$$&lt;br/&gt;&lt;/code&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;**Mermaid** diagrams use standard fenced code blocks. Both light and dark theme variants are rendered at build time and switch automatically based on the reader&#39;s color scheme:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class=&#34;sb&#34;&gt; ```mermaid&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;s&#34;&gt; graph LR&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;s&#34;&gt;     A[Write Markdown] --&amp;gt; B[Madblog renders it]&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;s&#34;&gt;     B --&amp;gt; C[Fediverse sees it]&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;sb&#34;&gt; ```&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Install Mermaid support with pip install &#34;madblog[mermaid]&#34; or use the full Docker image. Rendered output is cached, so only the first render of each block is slow.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;## &lt;br/&gt;&lt;br/&gt;Tags and Categories&lt;br/&gt;Tag your articles with hashtags — either in the metadata header or directly in the body text:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class=&#34;gh&#34;&gt;# My Article&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;This post is about &lt;span class=&#34;ni&#34;&gt;#Python&lt;/span&gt; and the &lt;span class=&#34;ni&#34;&gt;#Fediverse&lt;/span&gt;.&lt;br/&gt;&lt;/code&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Madblog builds a tag index at /tags, with per-tag pages at /tags/&amp;lt;tag&amp;gt;. Hashtags from incoming Webmentions are also indexed. Folders in your content directory act as categories — if you organize files into subdirectories, the home page groups articles by folder.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;## &lt;br/&gt;&lt;br/&gt;Feed Syndication&lt;br/&gt;Madblog generates both RSS and Atom feeds at /feed.rss and /feed.atom. You can control whether feeds include full article content or just descriptions (short_feed: true), and limit the number of entries (max_entries_per_feed: 10). limit and offset parameters are also supported for pagination.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;## &lt;br/&gt;&lt;br/&gt;Aggregator Mode&lt;br/&gt;Madblog can also pull in external RSS/Atom feeds and render them alongside your own posts on the home page — useful for affiliated blogs, or even as a self-hosted feed reader:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class=&#34;nt&#34;&gt;external_feeds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;p p-Indicator&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l l-Scalar l-Scalar-Plain&#34;&gt;&lt;a href=&#34;https://friendsblog.example.com/feed.atom&#34;&gt;https://friendsblog.example.com/feed.atom&lt;/a&gt;&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;p p-Indicator&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l l-Scalar l-Scalar-Plain&#34;&gt;&lt;a href=&#34;https://colleaguesblog.example.com/feed.atom&#34;&gt;https://colleaguesblog.example.com/feed.atom&lt;/a&gt;&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;## &lt;br/&gt;&lt;br/&gt;Guestbook&lt;br/&gt;The guestbook (/guestbook) is a dedicated page that aggregates public interactions — Webmentions targeting the home page and Fediverse mentions of your blog actor that aren&#39;t replies to specific articles. Think of it as a public guest registry, or a lo-fi comment section for your blog as a whole. Visitors can leave a message by mentioning your Fediverse handle or sending a Webmention. It can be disabled via enable_guestbook=0.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;## &lt;br/&gt;&lt;br/&gt;View Modes&lt;br/&gt;The home page supports three layouts:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;li&gt;&lt;strong&gt;&lt;code&gt;cards&lt;/code&gt;&lt;/strong&gt; (default) — a responsive grid of article cards with images&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;strong&gt;&lt;code&gt;list&lt;/code&gt;&lt;/strong&gt; — a compact list with titles and dates&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;strong&gt;&lt;code&gt;full&lt;/code&gt;&lt;/strong&gt; — a scrollable, WordPress-like view with full article content inline&lt;/li&gt;&lt;br/&gt;&lt;br/&gt;Set it in your config (view_mode: cards) or override at runtime with ?view=list.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;## &lt;br/&gt;&lt;br/&gt;Moderation&lt;br/&gt;Madblog ships with a flexible moderation system that applies to both Webmentions and ActivityPub interactions. You can run in **blocklist mode** (reject specific actors) or **allowlist mode** (accept only specific actors), with pattern matching by domain, URL, ActivityPub handle, or regex:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class=&#34;nt&#34;&gt;blocked_actors&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;p p-Indicator&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l l-Scalar l-Scalar-Plain&#34;&gt;spammer.example.com&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;p p-Indicator&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&#34;@troll@evil.social&#34;&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;p p-Indicator&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l l-Scalar l-Scalar-Plain&#34;&gt;/spam-ring\.example\..*/&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Moderation rules also apply retroactively — interactions already stored are filtered at render time. Blocked ActivityPub followers are excluded from fan-out delivery and hidden from the public follower count, but their records are preserved so they can be automatically reinstated if you change your rules.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;## &lt;br/&gt;&lt;br/&gt;Email Notifications&lt;br/&gt;Configure SMTP settings and Madblog will notify you by email whenever a new Webmention or ActivityPub interaction arrives — likes, boosts, replies, mentions, and quotes:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class=&#34;nt&#34;&gt;author_email&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l l-Scalar l-Scalar-Plain&#34;&gt;you@example.com&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;nt&#34;&gt;smtp_server&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l l-Scalar l-Scalar-Plain&#34;&gt;smtp.example.com&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;nt&#34;&gt;smtp_username&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l l-Scalar l-Scalar-Plain&#34;&gt;you@example.com&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;nt&#34;&gt;smtp_password&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l l-Scalar l-Scalar-Plain&#34;&gt;your-password&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;## &lt;br/&gt;&lt;br/&gt;Progressive Web App&lt;br/&gt;Madblog is installable as a PWA, with offline access and a native-like experience on supported devices. A service worker handles stale-while-revalidate caching with background sync for retries.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;## &lt;br/&gt;&lt;br/&gt;Raw Markdown Access&lt;br/&gt;Append .md to any article URL to get the raw Markdown source:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;a href=&#34;https://myblog.example.com/article/my-post.md&#34;&gt;https://myblog.example.com/article/my-post.md&lt;/a&gt;&lt;br/&gt;&lt;/code&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Useful for readers who prefer plain text, or for tools that consume Markdown directly.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;## &lt;br/&gt;&lt;br/&gt;Reusable Libraries&lt;br/&gt;Two key subsystems of Madblog have been extracted into standalone, reusable Python libraries. If you&#39;re building a Python web application and want to add decentralized federation support, you can use them directly — no need to adopt Madblog itself.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;### &lt;br/&gt;&lt;br/&gt;Webmentions&lt;br/&gt;[Webmentions](&lt;a href=&#34;https://git.fabiomanganiello.com/webmentions&#34;&gt;https://git.fabiomanganiello.com/webmentions&lt;/a&gt; ) is a general-purpose Python library for sending and receiving Webmentions. It comes with framework adapters for FastAPI, Flask, and Tornado, pluggable storage backends (SQLAlchemy or custom), filesystem monitoring for auto-sending mentions when files change, full microformats2 parsing, and built-in HTML rendering for displaying mentions on your pages.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Adding Webmentions to a FastAPI app:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nn&#34;&gt;fastapi&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;FastAPI&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nn&#34;&gt;webmentions&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;WebmentionsHandler&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nn&#34;&gt;webmentions.storage.adapters.db&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;init_db_storage&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nn&#34;&gt;webmentions.server.adapters.fastapi&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;bind_webmentions&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span class=&#34;n&#34;&gt;app&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;FastAPI&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;n&#34;&gt;storage&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;init_db_storage&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;engine&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&#34;sqlite:////tmp/webmentions.db&#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;n&#34;&gt;handler&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;WebmentionsHandler&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;storage&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;storage&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;base_url&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&#34;&lt;a href=&#34;https://example.com&#34;&gt;https://example.com&lt;/a&gt;&#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;n&#34;&gt;bind_webmentions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;app&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;handler&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;That&#39;s it — your app now has a /webmentions endpoint for receiving mentions,&lt;br/&gt;a Link header advertising it on every response, and a storage layer for&lt;br/&gt;persisting them. See the&lt;br/&gt;[full documentation](&lt;a href=&#34;https://git.fabiomanganiello.com/webmentions/src/branch/main/README.md&#34;&gt;https://git.fabiomanganiello.com/webmentions/src/branch/main/README.md&lt;/a&gt; )&lt;br/&gt;for details on sending mentions, custom storage, moderation, and rendering.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;### &lt;br/&gt;&lt;br/&gt;Pubby&lt;br/&gt;[Pubby](&lt;a href=&#34;https://git.fabiomanganiello.com/pubby&#34;&gt;https://git.fabiomanganiello.com/pubby&lt;/a&gt; ) is a general-purpose Python library for adding ActivityPub federation to any web application. It handles inbox processing, outbox delivery with concurrent fan-out, HTTP Signatures, WebFinger/NodeInfo discovery, interaction storage, a Mastodon-compatible API, and framework adapters for FastAPI, Flask, and Tornado.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Adding ActivityPub to a FastAPI app:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nn&#34;&gt;fastapi&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;FastAPI&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nn&#34;&gt;pubby&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ActivityPubHandler&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Object&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nn&#34;&gt;pubby.crypto&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;generate_rsa_keypair&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nn&#34;&gt;pubby.storage.adapters.db&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;init_db_storage&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nn&#34;&gt;pubby.server.adapters.fastapi&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;bind_activitypub&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span class=&#34;n&#34;&gt;app&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;FastAPI&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;n&#34;&gt;storage&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;init_db_storage&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&#34;sqlite:////tmp/pubby.db&#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;n&#34;&gt;private_key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;_&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;generate_rsa_keypair&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span class=&#34;n&#34;&gt;handler&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ActivityPubHandler&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;br/&gt;    &lt;span class=&#34;n&#34;&gt;storage&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;storage&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;br/&gt;    &lt;span class=&#34;n&#34;&gt;actor_config&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;br/&gt;        &lt;span class=&#34;s2&#34;&gt;&#34;base_url&#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&#34;&lt;a href=&#34;https://example.com&#34;&gt;https://example.com&lt;/a&gt;&#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;br/&gt;        &lt;span class=&#34;s2&#34;&gt;&#34;username&#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&#34;blog&#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;br/&gt;        &lt;span class=&#34;s2&#34;&gt;&#34;name&#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&#34;My Blog&#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;br/&gt;        &lt;span class=&#34;s2&#34;&gt;&#34;summary&#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&#34;A blog with ActivityPub support&#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;br/&gt;    &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;&lt;br/&gt;    &lt;span class=&#34;n&#34;&gt;private_key&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;private_key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span class=&#34;n&#34;&gt;bind_activitypub&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;app&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;handler&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span class=&#34;c1&#34;&gt;# Publish a post to all followers&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;n&#34;&gt;handler&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;publish_object&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Object&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;br/&gt;    &lt;span class=&#34;nb&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&#34;&lt;a href=&#34;https://example.com/posts/hello&#34;&gt;https://example.com/posts/hello&lt;/a&gt;&#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;br/&gt;    &lt;span class=&#34;nb&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&#34;Note&#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;br/&gt;    &lt;span class=&#34;n&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&#34;&amp;lt;p&amp;gt;Hello from the Fediverse!&amp;lt;/p&amp;gt;&#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;br/&gt;    &lt;span class=&#34;n&#34;&gt;url&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&#34;&lt;a href=&#34;https://example.com/posts/hello&#34;&gt;https://example.com/posts/hello&lt;/a&gt;&#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;br/&gt;    &lt;span class=&#34;n&#34;&gt;attributed_to&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&#34;&lt;a href=&#34;https://example.com/ap/actor&#34;&gt;https://example.com/ap/actor&lt;/a&gt;&#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Optionally, you can also expose a Mastodon-compatible API so that Mastodon clients and crawlers can discover your instance and browse statuses:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nn&#34;&gt;pubby.server.adapters.fastapi_mastodon&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;bind_mastodon_api&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span class=&#34;n&#34;&gt;bind_mastodon_api&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;br/&gt;    &lt;span class=&#34;n&#34;&gt;app&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;br/&gt;    &lt;span class=&#34;n&#34;&gt;handler&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;br/&gt;    &lt;span class=&#34;n&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&#34;My Blog&#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;br/&gt;    &lt;span class=&#34;n&#34;&gt;description&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&#34;A blog with ActivityPub support&#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;br/&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Both libraries follow the same design philosophy: provide the protocol plumbing so you can wire it into your existing application with minimal ceremony. Storage is pluggable (SQLAlchemy, file-based, or bring-your-own), framework binding is a single function call, and the core logic is framework-agnostic. See the full documentation for [Pubby](&lt;a href=&#34;https://git.fabiomanganiello.com/pubby/src/branch/main/README.md&#34;&gt;https://git.fabiomanganiello.com/pubby/src/branch/main/README.md&lt;/a&gt; ) and [Webmentions](&lt;a href=&#34;https://git.fabiomanganiello.com/webmentions/src/branch/main/README.md&#34;&gt;https://git.fabiomanganiello.com/webmentions/src/branch/main/README.md&lt;/a&gt; ).&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;## &lt;br/&gt;&lt;br/&gt;Links&lt;br/&gt;&lt;br/&gt;&lt;li&gt;&lt;a href=&#34;&lt;a href=&#34;https://git.fabiomanganiello.com/madblog&#34;&gt;https://git.fabiomanganiello.com/madblog&lt;/a&gt;&#34;&gt;&lt;strong&gt;Madblog&lt;/strong&gt;&lt;/a&gt; (&lt;a href=&#34;&lt;a href=&#34;https://github.com/blacklight/madblog&#34;&gt;https://github.com/blacklight/madblog&lt;/a&gt;&#34;&gt;Github mirror&lt;/a&gt;)&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;a href=&#34;&lt;a href=&#34;https://git.fabiomanganiello.com/webmentions&#34;&gt;https://git.fabiomanganiello.com/webmentions&lt;/a&gt;&#34;&gt;&lt;strong&gt;Webmentions&lt;/strong&gt;&lt;/a&gt; (&lt;a href=&#34;&lt;a href=&#34;https://github.com/blacklight/webmentions&#34;&gt;https://github.com/blacklight/webmentions&lt;/a&gt;&#34;&gt;Github mirror&lt;/a&gt;)&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;a href=&#34;&lt;a href=&#34;https://git.fabiomanganiello.com/pubby&#34;&gt;https://git.fabiomanganiello.com/pubby&lt;/a&gt;&#34;&gt;&lt;strong&gt;Pubby&lt;/strong&gt;&lt;/a&gt; (&lt;a href=&#34;&lt;a href=&#34;https://github.com/blacklight/pubby&#34;&gt;https://github.com/blacklight/pubby&lt;/a&gt;&#34;&gt;Github mirror&lt;/a&gt;)&lt;/li&gt;&lt;br/&gt;&lt;br/&gt;Madblog is open-source under the AGPL-3.0-only license. The source code, issue tracker, and full documentation are available at [git.fabiomanganiello.com/madblog](&lt;a href=&#34;https://git.fabiomanganiello.com/madblog&#34;&gt;https://git.fabiomanganiello.com/madblog&lt;/a&gt; ). &lt;/blockquote&gt;
    </content>
    <updated>2026-03-10T14:31:03Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs9g0etsgw5x97hdzweu6vm3fq9yhq5dezv5ckcrdq8n3gkpusxd9qzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vz2tnfy2</id>
    
      <title type="html">Unsolicited debugging assistance: It&amp;#39;s working on ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs9g0etsgw5x97hdzweu6vm3fq9yhq5dezv5ckcrdq8n3gkpusxd9qzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vz2tnfy2" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs8zhj3h6096yenagacdu0dsqvhltgygq7tx29ray5c53jv3xeplrsz3eew4&#39;&gt;nevent1q…eew4&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Unsolicited debugging assistance:&lt;br/&gt;&lt;br/&gt;It&amp;#39;s working on mastodon.social, presumably because your server got sent the `Accept` directly. Other servers are supposed to validate it by checking the `quoteAuthorization` on the post, which is currently a URI that 404s (&lt;a href=&#34;https://loops.video/ap/users/205466280291398051/quote_authorizations/255857808111048628&#34;&gt;https://loops.video/ap/users/205466280291398051/quote_authorizations/255857808111048628&lt;/a&gt;), so no one besides m.s can see the quote post right now.&lt;br/&gt;&lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1xselj43f4mq6e4tmadr6ex9s2xfdp34wqupn27n2ufd6clv3mqkqhflgk3&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;wakest likes your bugs ⁂&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1xse…lgk3&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;
    </content>
    <updated>2026-03-04T13:36:49Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsy950f2dvm0l932n43smslxh9z6ftxr3n96fsage689tdalmzaehczypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzurvfnf</id>
    
      <title type="html">The aftermarket availability of clone cartridge housings for ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsy950f2dvm0l932n43smslxh9z6ftxr3n96fsage689tdalmzaehczypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzurvfnf" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsyj40899krx95esmwfyryykljyyhckpsn9ckeynxm8nvtz0l0l69s0rpx7x&#39;&gt;nevent1q…px7x&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;The aftermarket availability of clone cartridge housings for Gameboy games is very good these days, to my knowledge. If you want to put your game into a replacement cartridge, it&amp;#39;s like $4 &#43; shipping &#43; making sure you have the right screwdriver.&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://www.retromodding.com/collections/game-boy/products/game-pak-game-boy-game-cartridge?variant=34814923833500&#34;&gt;https://www.retromodding.com/collections/game-boy/products/game-pak-game-boy-game-cartridge?variant=34814923833500&lt;/a&gt;
    </content>
    <updated>2026-03-02T20:29:42Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs23vf0fqux98djq5rpy6ktn82xstx49jyw8dndrg7eq4fughsdgtczypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzgndkyd</id>
    
      <title type="html">As experienced client devs, I assume you have the infrastructure ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs23vf0fqux98djq5rpy6ktn82xstx49jyw8dndrg7eq4fughsdgtczypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzgndkyd" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqszewk34r8e6yctufalmwyd3dc0qpl327yhq3z0ws4dg4sg36rydccfmmrjt&#39;&gt;nevent1q…mrjt&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;As experienced client devs, I assume you have the infrastructure for OAuth already in place? I&amp;#39;d rather go to your website and authenticate my Mastodon account there than have a hashtag in my bio... the Tootfinder hashtag kinda annoys me every time I see it. 😐&lt;br/&gt;&lt;br/&gt;That aside, I believe Mastodon is going to introduce some kind of profile signal for willingness to appear in starter packs, might be worth additionally keeping an eye on whatever happens there. &lt;a href=&#34;https://github.com/mastodon/featured_collections&#34;&gt;https://github.com/mastodon/featured_collections&lt;/a&gt;
    </content>
    <updated>2026-02-13T19:58:27Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs0w970qs4xvrkaysmxwk6dfn0pmu3aevrna88nkm9as2nlf5kd62czypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzaqu4zx</id>
    
      <title type="html">They did that thing where they implemented the interaction ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs0w970qs4xvrkaysmxwk6dfn0pmu3aevrna88nkm9as2nlf5kd62czypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzaqu4zx" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqspxd9crj2nvh9garl49f855e9zclylrnrsqxkundp8agsucjcz4eqqdn6lj&#39;&gt;nevent1q…n6lj&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;They did that thing where they implemented the interaction policy, but not the approval process, leaving them with an implementation that declares that it can do Mastodon quote posts, but actually cannot. I think Sharkey had that issue on a minor version for a little bit.
    </content>
    <updated>2026-02-11T21:03:43Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsqeaewcplhmnmmmenwcxvx6d33fkrw5f03hlzntxmxf0vtqqf7grczypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vz5w4xgq</id>
    
      <title type="html">I think @npub14rp…za3l&amp;#39;s groups proposal ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsqeaewcplhmnmmmenwcxvx6d33fkrw5f03hlzntxmxf0vtqqf7grczypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vz5w4xgq" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsxlttw30xe4ndmkzus7g4s3nhnuhx3zp3jpcjexy5pgf3yqrxvu8sn8nsmj&#39;&gt;nevent1q…nsmj&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I think &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub14rpe2zreswfexn4m5x4re4n35jpgl3k7vdze8dkhlmzxrdj3mf6sp7za3l&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Bonfire&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub14rp…za3l&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;&amp;#39;s groups proposal (&lt;a href=&#34;https://bonfirenetworks.org/posts/why-community-matters-groups-as-the-next-step-for-the-fediverse/&#34;&gt;https://bonfirenetworks.org/posts/why-community-matters-groups-as-the-next-step-for-the-fediverse/&lt;/a&gt;) covers the topic pretty thoroughly. Not sure if they&amp;#39;ve already done any spec work, but if anyone is building something like this I&amp;#39;d recommend coordinating with them.
    </content>
    <updated>2026-02-04T18:34:30Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs2pzlk4qz4w0gs495t6dm5pysw28uvc9yqgn0e6d94kw8swtf2ckqzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzpcwd6s</id>
    
      <title type="html">Speaking for PieFed (less familiar with the others), the private ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs2pzlk4qz4w0gs495t6dm5pysw28uvc9yqgn0e6d94kw8swtf2ckqzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzpcwd6s" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsg9gdpfw30em05secpfe6h6c3qseunjtggj4a895h33ktmd9rsdagw4cjza&#39;&gt;nevent1q…cjza&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Speaking for PieFed (less familiar with the others), the private communities it just introduced are limited to members of one server.&lt;br/&gt;&lt;br/&gt;What I think &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1xselj43f4mq6e4tmadr6ex9s2xfdp34wqupn27n2ufd6clv3mqkqhflgk3&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;wakest likes your bugs ⁂&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1xse…lgk3&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; is getting at is ActivityPub groups that you can join and leave and post &amp;#34;into&amp;#34; from any server, such that any member can see everything in the group, and non-members can see none of the contents.&lt;br/&gt;&lt;br/&gt;Can Friendica do that? It wouldn&amp;#39;t surprise me, but I haven&amp;#39;t tried it.
    </content>
    <updated>2026-02-04T17:38:12Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsgnghun5ycl3kx2qu47skcfgxrx0ajz7clk9a2dulmetwnvpqtuhgzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzvj6m7j</id>
    
      <title type="html">I&amp;#39;ve been fantasizing about a snippet library for validating ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsgnghun5ycl3kx2qu47skcfgxrx0ajz7clk9a2dulmetwnvpqtuhgzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzvj6m7j" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsrkpyezypf8wjyf532ht5k43y7zzzhgsvk45yckcdju8m8j82g72gpmnmdd&#39;&gt;nevent1q…nmdd&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I&amp;#39;ve been fantasizing about a snippet library for validating and canonicalizing a fediverse (AP&#43;WebFinger) handle. Drop in a handle/profile link/AP ID, receive full handle &#43; web link if the input is resolvable.&lt;br/&gt;&lt;br/&gt;Target audience would be sites that don&amp;#39;t have full fediverse integration, but want to give people a way to link to their fediverse profile. I&amp;#39;ve seen handle vs. username vs. ID vs. URL cause confusion.&lt;br/&gt;&lt;br/&gt;Should be &amp;lt;50 LOC in most languages. And let&amp;#39;s make it CC-0.
    </content>
    <updated>2026-01-31T14:23:29Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqswhsk9k5hjlz2kul9tm9skmexhdnd5he9w7c0rvpa9kky7rm4c6gqzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzc2qcnp</id>
    
      <title type="html">Having a small world moment recognizing @npub1wlg…r7qn from my ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqswhsk9k5hjlz2kul9tm9skmexhdnd5he9w7c0rvpa9kky7rm4c6gqzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzc2qcnp" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqswvs5qskgquh5etccwws6tx6pn3u3403ff86ew0w8z4yn30a9kwfg3chrrc&#39;&gt;nevent1q…hrrc&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Having a small world moment recognizing &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1wlgmzeraq5n77tfug8tnqej3cz33yccnrw63luy2vlsq3kgzecxsajr7qn&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Rafael&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1wlg…r7qn&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; from my time in Hamburg, where we had some overlapping years at the university&amp;#39;s computer science campus and apparently exchanged a couple of emails. Not sure if we ever met face to face. Cool project! 🙂
    </content>
    <updated>2026-01-31T13:57:19Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsws4ep5qwvcjz7t0zxzmrmkdm4fa72hjrqqygttm9czwjqpr9zuzqzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzx4h5aq</id>
    
      <title type="html">Nice, great progress! @npub1kqg…a7t4 Is this on your radar?</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsws4ep5qwvcjz7t0zxzmrmkdm4fa72hjrqqygttm9czwjqpr9zuzqzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzx4h5aq" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsff75lqts7pe5spn8v4m55a6j6y4twfdltxcjdxf4560st7dcajzcpag048&#39;&gt;nevent1q…g048&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Nice, great progress!&lt;br/&gt;&lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1kqge76mvjy5u6jrvwffmlgfgqclj8u7hvnxsyy8lulzk59ahg7qsjka7t4&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Week in Fediverse :fediverse_light:&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1kqg…a7t4&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; Is this on your radar?
    </content>
    <updated>2026-01-28T13:23:00Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs0h4s3wx8wj5w4fcuwkj5wj393aqapk3d3rfdrwvz0rys55mnngdszypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzq7j5pt</id>
    
      <title type="html">Yeah, you can access a list of packs containing your account ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs0h4s3wx8wj5w4fcuwkj5wj393aqapk3d3rfdrwvz0rys55mnngdszypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzq7j5pt" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsgy0yj7mm0lc6q4h7yu3hhf7lk3xfvcsyrjrg6s8dp4dkkmagcuysk5w84g&#39;&gt;nevent1q…w84g&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Yeah, you can access a list of packs containing your account after you log in! 🙂&lt;br/&gt;&lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1kqcamrlyz7tvp25x3cvtwz2t5xqvd96we3q5enl62flf08lk4j2qa57wgd&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Stefan Bohacek&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1kqc…7wgd&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; [@b_cavello](&lt;a href=&#34;https://mastodon.publicinterest.town/@b_cavello&#34;&gt;https://mastodon.publicinterest.town/@b_cavello&lt;/a&gt; )
    </content>
    <updated>2026-01-15T21:47:22Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsq00va9fxtkhxue272npug8kfkh9vlnsnxy4vvch3jczmrcgtjy3qzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vz2ql2en</id>
    
      <title type="html">That&amp;#39;s the current plan. @npub120s…0fq8 is in alpha testing ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsq00va9fxtkhxue272npug8kfkh9vlnsnxy4vvch3jczmrcgtjy3qzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vz2ql2en" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsth234uskd3arwdap49gthtzyztazur52pq963tcexlqcmjx2286s5ga92u&#39;&gt;nevent1q…a92u&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;That&amp;#39;s the current plan. &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub120sdlp9j0t9menjhmu60gyhlqus3dp3f8x394eetgrqfw9q23grsld0fq8&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Encyclia&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub120s…0fq8&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; is in alpha testing and I have a list of issues that need to be fixed, but assuming everything goes well, I&amp;#39;m hoping that you&amp;#39;ll be able to follow any ORCID record before the end of the year. See &lt;a href=&#34;https://encyclia.pub&#34;&gt;https://encyclia.pub&lt;/a&gt; for details. 🙂
    </content>
    <updated>2025-10-19T12:44:37Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqswqhqqrwl6sjx7akjrnd0m4v6jp6sxnxw8a8mxda5ct0jckn683cgzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzucp39q</id>
    
      <title type="html">Yeah, that&amp;#39;s pretty much how I&amp;#39;m trying to approach this. ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqswqhqqrwl6sjx7akjrnd0m4v6jp6sxnxw8a8mxda5ct0jckn683cgzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzucp39q" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsdj0asuxzqmyljffkhqcsxwgd2dtxn3ghd0zgppcy88aqpcqfzc2sgvxlw5&#39;&gt;nevent1q…xlw5&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Yeah, that&amp;#39;s pretty much how I&amp;#39;m trying to approach this. Right now we have two independent implementations here with developers eager to interoperate, we can do posts and links but not yet citations, let&amp;#39;s figure out how we add them while reinventing as few wheels as possible.&lt;br/&gt;&lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1lzdq2c4pz6jg68ncc5pdsztumldekds2m27xmgfjk6pklg2p086qfdurpr&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Moved to @bonfire@bonfire.cafe&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1lzd…urpr&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub18zhngh5shczsze7ufe6clguxx7zcvgcx0ahjnahpy2vgt6trwvvsvv4x0k&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Mayel&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub18zh…4x0k&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub12sqwvghpdpge25cuy8d9aemp2srxlp50ytlhv33nakzs29hrw3wqct6w0r&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;🫧 socialcoding..&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub12sq…6w0r&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;
    </content>
    <updated>2025-10-16T17:47:30Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsd5cczjgk7g6exql4hlsz4zhq3ewc3k3ud8t02z99ev50gfczy7mgzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vz4k8r9k</id>
    
      <title type="html">FWIW, Encyclia currently fetches plain JSON from ORCID and ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsd5cczjgk7g6exql4hlsz4zhq3ewc3k3ud8t02z99ev50gfczy7mgzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vz4k8r9k" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs2r6rdank63jwqavtg5ka0knlh6t5fag6tw22me6ay4x5u8a3a3mgltcny7&#39;&gt;nevent1q…cny7&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;FWIW, Encyclia currently fetches plain JSON from ORCID and re-emits as human-readable ActivityPub Notes. ORCID&amp;#39;s own types, which are used in (non-LD) JSON payloads, are listed in the second column here: &lt;a href=&#34;https://info.orcid.org/ufaqs/what-work-types-does-orcid-support/&#34;&gt;https://info.orcid.org/ufaqs/what-work-types-does-orcid-support/&lt;/a&gt; Dunno if those map cleanly to schema.org types but the palettes are small enough that we can figure it out.&lt;br/&gt;&lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub18zhngh5shczsze7ufe6clguxx7zcvgcx0ahjnahpy2vgt6trwvvsvv4x0k&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Mayel&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub18zh…4x0k&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1ljmfkwmllavdpnf5tgmrfay6mj4t78c0xryugfw4qka0c4exas0q2pw8tm&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;jonny (nonvenomous)&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1ljm…w8tm&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub12sqwvghpdpge25cuy8d9aemp2srxlp50ytlhv33nakzs29hrw3wqct6w0r&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;🫧 socialcoding..&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub12sq…6w0r&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;
    </content>
    <updated>2025-10-16T17:35:02Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs8re737qu8gqaqgjnhe3m3rrx3zwfqccmvw3r2fhprjgy0szz3pyqzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzhkhz3n</id>
    
      <title type="html">A bit, yeah. I&amp;#39;m sure each one has pros and cons for the ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs8re737qu8gqaqgjnhe3m3rrx3zwfqccmvw3r2fhprjgy0szz3pyqzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzhkhz3n" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsgh0acqpdk4quyjj3wxxha4lwn4495muvqrzaydx055s3rrvymhdg4v22c5&#39;&gt;nevent1q…22c5&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;A bit, yeah. I&amp;#39;m sure each one has pros and cons for the purpose, but I&amp;#39;m in favor of picking something that&amp;#39;s ready for use with linked data. We might be able to avoid defining a new JSON-LD context that way.&lt;br/&gt;&lt;br/&gt;schema.org&amp;#39;s CreativeWork is a supertype of ScholarlyArticle. Curious why ORCID doesn&amp;#39;t use the subtypes even though they have the type information in their own data. (Their JSON schema is altogether different from their JSON-LD I think.)&lt;br/&gt;&lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub18zhngh5shczsze7ufe6clguxx7zcvgcx0ahjnahpy2vgt6trwvvsvv4x0k&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Mayel&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub18zh…4x0k&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1ljmfkwmllavdpnf5tgmrfay6mj4t78c0xryugfw4qka0c4exas0q2pw8tm&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;jonny (nonvenomous)&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1ljm…w8tm&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub12sqwvghpdpge25cuy8d9aemp2srxlp50ytlhv33nakzs29hrw3wqct6w0r&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;🫧 socialcoding..&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub12sq…6w0r&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;
    </content>
    <updated>2025-10-16T16:51:18Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsvn2d3evhkvf6f0r6furw3lpufmafsjydrlem00wr836sy0p3xhhszypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vz6yvdu6</id>
    
      <title type="html">This is all spitballing, but I think letting people tag academic ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsvn2d3evhkvf6f0r6furw3lpufmafsjydrlem00wr836sy0p3xhhszypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vz6yvdu6" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqx9lvgfua935vkxp8vpv0umjgt98dcwl6upk6akvn5us9j3r09zgwyaz4h&#39;&gt;nevent1q…az4h&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;This is all spitballing, but I think letting people tag academic publications in posts just like they currently tag accounts could be kinda neat. Shouldn&amp;#39;t even need to break compatibility with current software either.
    </content>
    <updated>2025-10-15T20:24:36Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsqx9lvgfua935vkxp8vpv0umjgt98dcwl6upk6akvn5us9j3r09zgzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vz4w2w2e</id>
    
      <title type="html">Hey @npub1lzd…urpr @npub18zh…4x0k and crew, if you ever feel ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsqx9lvgfua935vkxp8vpv0umjgt98dcwl6upk6akvn5us9j3r09zgzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vz4w2w2e" />
    <content type="html">
      Hey &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1lzdq2c4pz6jg68ncc5pdsztumldekds2m27xmgfjk6pklg2p086qfdurpr&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Moved to @bonfire@bonfire.cafe&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1lzd…urpr&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub18zhngh5shczsze7ufe6clguxx7zcvgcx0ahjnahpy2vgt6trwvvsvv4x0k&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Mayel&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub18zh…4x0k&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; and crew, if you ever feel like putting a spec down to attach academic citations to #ActivityPub objects for your Open Science Network, ping me.&lt;br/&gt;&lt;br/&gt;I have ideas for building something out of &lt;a href=&#34;https://schema.org/ScholarlyArticle&#34;&gt;https://schema.org/ScholarlyArticle&lt;/a&gt;, &lt;a href=&#34;https://schema.org/citation&#34;&gt;https://schema.org/citation&lt;/a&gt; and dashes of &lt;a href=&#34;https://w3c.github.io/scholarly-html/&#34;&gt;https://w3c.github.io/scholarly-html/&lt;/a&gt; for &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub120sdlp9j0t9menjhmu60gyhlqus3dp3f8x394eetgrqfw9q23grsld0fq8&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Encyclia&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub120s…0fq8&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;. Could enable e.g. “this post discusses this article”, “find posts related to this publication”, or long-form articles with declarative references.&lt;br/&gt;&lt;br/&gt;Maybe &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1ljmfkwmllavdpnf5tgmrfay6mj4t78c0xryugfw4qka0c4exas0q2pw8tm&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;jonny (nonvenomous)&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1ljm…w8tm&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; has thoughts too?&lt;br/&gt;&lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1nk8dqylupxjjlwvkwpk6y9a4hxjqw8xkrhwtv30mxp5cugjrntqqluu9f7&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;General Discussion&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1nk8…u9f7&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;
    </content>
    <updated>2025-10-15T20:21:58Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs8h6rqhzcpge6jzac2074ugvuaefpu5szc6j2qyx9hk9u3jrnyhhszypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vz7lulrg</id>
    
      <title type="html">If you&amp;#39;re wondering how I spent my afternoon: ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs8h6rqhzcpge6jzac2074ugvuaefpu5szc6j2qyx9hk9u3jrnyhhszypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vz7lulrg" />
    <content type="html">
      If you&amp;#39;re wondering how I spent my afternoon: &lt;a href=&#34;https://github.com/anze3db/fedidevs/issues/208&#34;&gt;https://github.com/anze3db/fedidevs/issues/208&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;It&amp;#39;s on how we get &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1c23l6vw7zd3vele6syykg2lxqwkezzf3drcjqtgrnxywdf8wsdxskd7hg6&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Fedidevs&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1c23…7hg6&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, an established host of Mastodon starter packs, to work with the new schema just proposed by Mastodon: github.com/mastodon/featured_collections/pull/1&lt;br/&gt;&lt;br/&gt;It&amp;#39;s going to be a journey 😓, but hopefully the result will be worth it since a lot of the changes are very beneficial.
    </content>
    <updated>2025-10-09T16:25:33Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsw2zkspkemuakrlhh2yk2pjrzmkxne4zhfz84htqfj2vy40a4r4dszypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzc3akta</id>
    
      <title type="html">I had that problem with https://fietkau.media/up_in_the_air and ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsw2zkspkemuakrlhh2yk2pjrzmkxne4zhfz84htqfj2vy40a4r4dszypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzc3akta" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs9jr729jlkj59x4ejvvmz2urlyyjzamg3wmu8ewu5c0aa75makfschfr0c4&#39;&gt;nevent1q…r0c4&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I had that problem with &lt;a href=&#34;https://fietkau.media/up_in_the_air&#34;&gt;https://fietkau.media/up_in_the_air&lt;/a&gt; and worked around it by creating the three.js audio object that plays all the game sound &amp;amp; music after the first click on one of the title screen buttons: &lt;a href=&#34;https://fietkau.software/Up-in-the-Air.git/blob/ffba7c824eaf5dfaa9cebb7fac43eb6f5d85dd5c/main.js?hb=HEAD#l2115&#34;&gt;https://fietkau.software/Up-in-the-Air.git/blob/ffba7c824eaf5dfaa9cebb7fac43eb6f5d85dd5c/main.js?hb=HEAD#l2115&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;It just means the loading bar and title screens can&amp;#39;t have sound. 😇&lt;br/&gt;&lt;br/&gt;Vanilla JS audio objects might behave slightly differently from three.js ones, I don&amp;#39;t know. But I think the idea that the direct interaction event gives you permission to play sound is the same.
    </content>
    <updated>2025-10-06T12:19:43Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsqsdphjch3sh26jzxe5zcvn6gt6275rc2rwdafhuql6hax0pxlkwszypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vze0eutf</id>
    
      <title type="html">Not a hard confirmation but probably AGPL. It&amp;#39;s not a library ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsqsdphjch3sh26jzxe5zcvn6gt6275rc2rwdafhuql6hax0pxlkwszypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vze0eutf" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsvuuq2d3enslcgpqp44v3memd2m8ncugp6nk8j9p97jue6dtgcqjgcrslsu&#39;&gt;nevent1q…slsu&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Not a hard confirmation but probably AGPL. It&amp;#39;s not a library and it doesn&amp;#39;t lend itself to direct software integration, so I see mainly downsides in MIT etc. for the project. I&amp;#39;m open to persuasive arguments.
    </content>
    <updated>2025-10-01T11:18:57Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs9xfjtdns29tx79slym4tdwy5pyyt2ul30nmyk7ml02mmmkl5h07qzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzzmtmu7</id>
    
      <title type="html">It does not (and conceptually cannot) work with an existing ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs9xfjtdns29tx79slym4tdwy5pyyt2ul30nmyk7ml02mmmkl5h07qzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzzmtmu7" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsdg7yfygp8hrvjtx2z3lx0uf9az2gupahd8euy6skt2vcn08lt9gsx4tgsa&#39;&gt;nevent1q…tgsa&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;It does not (and conceptually cannot) work with an existing Bluesky account. You can give your Bridgy Fed Bluesky account a custom domain, but you can&amp;#39;t “merge” it with an existing account.&lt;br/&gt;&lt;br/&gt;Alternatively, you could leave the bridge aside and program a little watchdog that monitors your Mastodon account and auto-posts them to your Bluesky account through its API, but I haven&amp;#39;t heard of anyone having done that.
    </content>
    <updated>2025-09-27T16:07:59Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsfef0unkd8sjjxpqpcgwt0dytcqnj4hlda8h73ya7leeqqldwxsggzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vz4u7vt0</id>
    
      <title type="html">Yes. The flow is (1) you declare a canQuote policy, (2) accounts ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsfef0unkd8sjjxpqpcgwt0dytcqnj4hlda8h73ya7leeqqldwxsggzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vz4u7vt0" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs84qr4mmxa2egame9v3aar5snt00q3s348euk7y5jthmdmuu7sfycwuumkw&#39;&gt;nevent1q…umkw&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Yes. The flow is (1) you declare a canQuote policy, (2) accounts who fit that policy get their quote post buttons unlocked, (3) if one of them clicks it, your server gets a QuoteRequest from that actor, (4) you respond with a bespoke QuoteAuthorization, which you need to host indefinitely – its presence allows third parties to verify that that specific quote was permitted by you.&lt;br/&gt;&lt;br/&gt;The current spec is here: &lt;a href=&#34;https://codeberg.org/fediverse/fep/src/branch/main/fep/044f/fep-044f.md#QuoteAuthorization&#34;&gt;https://codeberg.org/fediverse/fep/src/branch/main/fep/044f/fep-044f.md#QuoteAuthorization&lt;/a&gt; (technically still a draft)
    </content>
    <updated>2025-09-27T15:03:01Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs2yhdjsueq3srtde95esnz2qwyk3pstfwvrq7qrgnx5px5ecv5d8gzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vz5x5jrn</id>
    
      <title type="html">My understanding of (the current version of) FEP-044f is that you ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs2yhdjsueq3srtde95esnz2qwyk3pstfwvrq7qrgnx5px5ecv5d8gzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vz5x5jrn" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqwu0c37c69nnqg84wv2vwgmecnxts4x5kk3tjm5v8z7ua90qx97c5lspxw&#39;&gt;nevent1q…spxw&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;My understanding of (the current version of) FEP-044f is that you cannot make something quotable without issuing individual approval stamps upon request. ActivityPub development frameworks may make this easier in the future, but for the time being it&amp;#39;s a hassle for bot developers.&lt;br/&gt;&lt;br/&gt;I&amp;#39;m advocating for a simple and static way to declare quotability here: &lt;a href=&#34;https://socialhub.activitypub.rocks/t/pre-fep-quote-posts-quote-policies-and-quote-controls/5031/73&#34;&gt;https://socialhub.activitypub.rocks/t/pre-fep-quote-posts-quote-policies-and-quote-controls/5031/73&lt;/a&gt; but it&amp;#39;ll take platform implementer buy-in and, following that, at least one Mastodon version bump.
    </content>
    <updated>2025-09-27T14:56:08Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqszc6p9puq845llkrcrvufza8jggh37gv4k39aat5z38a70a5d7grqzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzepgk73</id>
    
      <title type="html">I respect it! 🙂 Were you able to get the outline from the ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqszc6p9puq845llkrcrvufza8jggh37gv4k39aat5z38a70a5d7grqzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzepgk73" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsfl3jucgpuv084zkq43y5taenatuy0hsujlgpqkhn88fewlneetncjuvx0n&#39;&gt;nevent1q…vx0n&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I respect it! 🙂 Were you able to get the outline from the official logo? The one on the website is an SVG, so I hope it was an easy job without any tracing.
    </content>
    <updated>2025-09-25T16:02:45Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsrvx65zl8pvxxen6mqp4cxnp84r329255rf06gshmna5yfv0t78vczypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vz4jdru6</id>
    
      <title type="html">Wheee, I was going to submit Encyclia after the start of the ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsrvx65zl8pvxxen6mqp4cxnp84r329255rf06gshmna5yfv0t78vczypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vz4jdru6" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsy0japlm2wnjpgkczrkujz4xmq25pmf48jvl5vwkwqf0l2h8qx46gnhq5uf&#39;&gt;nevent1q…q5uf&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Wheee, I was going to submit Encyclia after the start of the ActivityPub alpha test, but seeing it added early is also cool! 😄&lt;br/&gt;&lt;br/&gt;I had some time this week to hack away at the postgres integration, there is still stuff to debug but I&amp;#39;m hoping we&amp;#39;ll get to a public alpha test with followable accounts within a month if I don&amp;#39;t get too swamped by the day job in October.
    </content>
    <updated>2025-09-25T15:13:37Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqszgnhpezleqv96gt4z6jmw9mscvsvt520yn05s7hzyk0gersjce4czypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzcplc8j</id>
    
      <title type="html">Ryan is a bit easier to reach via the issue tracker than here. ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqszgnhpezleqv96gt4z6jmw9mscvsvt520yn05s7hzyk0gersjce4czypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzcplc8j" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsd5fk3z5q4fqwl6x2s2k9e7e7nmg0kxs3j5aqtt0f9yhv34qwhlzgemeagr&#39;&gt;nevent1q…eagr&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Ryan is a bit easier to reach via the issue tracker than here. There is a thread about Pixelfed over there: &lt;a href=&#34;https://github.com/snarfed/bridgy-fed/issues/39&#34;&gt;https://github.com/snarfed/bridgy-fed/issues/39&lt;/a&gt;
    </content>
    <updated>2025-09-16T15:14:10Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs2v2k2j0mhfu73p2h5ez33mcwtyz8ea4qfwesvkjm5xtum35ufgcgzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzw5d53e</id>
    
      <title type="html">Pseudo-randomly based on a hash of the tag name: ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs2v2k2j0mhfu73p2h5ez33mcwtyz8ea4qfwesvkjm5xtum35ufgcgzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzw5d53e" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqspvtzhu2r0tc4wz70z637dvz3vf38xghy3uhm6lrxx4qz2q0en4rszl3lqw&#39;&gt;nevent1q…3lqw&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Pseudo-randomly based on a hash of the tag name: &lt;a href=&#34;https://fietkau.software/FediRoster.git/blob/d19a67018f984d670d21dcc7febdcd2a5bab8d78/main.py?hb=HEAD#l394&#34;&gt;https://fietkau.software/FediRoster.git/blob/d19a67018f984d670d21dcc7febdcd2a5bab8d78/main.py?hb=HEAD#l394&lt;/a&gt; I use the HSL space, which makes it pretty easy to assign ranges that avoid white/black/gray and keep the text contrast readable enough.
    </content>
    <updated>2025-08-22T14:48:49Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqspcufhzlkazyqp36zm2w9y0wjh80t00sfma8dyjrc9w6nkasyq3wgzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzm0k940</id>
    
      <title type="html">Kind of: I show tags as pill buttons in FediRoster (see ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqspcufhzlkazyqp36zm2w9y0wjh80t00sfma8dyjrc9w6nkasyq3wgzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzm0k940" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqswws3s8tp6dc3nqrzj7hx75xlsr4adpkd9qscg28ydl5ma4zz576qergh9q&#39;&gt;nevent1q…gh9q&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Kind of: I show tags as pill buttons in FediRoster (see &lt;a href=&#34;https://directory.hci.social&#34;&gt;https://directory.hci.social&lt;/a&gt; for an example). I meant to play around with adding profile hashtags there automatically, but worried there&amp;#39;d be too many irrelevant ones.
    </content>
    <updated>2025-08-22T14:42:42Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsy4fqnwx3l8ayjrwdjrdmmqvdhvjvfm9cuv2da7v9yxzd9nhjnazqzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzez2uv8</id>
    
      <title type="html">Am I the only one (jk I know I&amp;#39;m not 🙃) taking Meta&amp;#39;s ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsy4fqnwx3l8ayjrwdjrdmmqvdhvjvfm9cuv2da7v9yxzd9nhjnazqzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzez2uv8" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqstlfwqeudt8k4tqea76wea34wmdydvmx7dzg3vdsm40dezsphayygzh4a6r&#39;&gt;nevent1q…4a6r&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Am I the only one (jk I know I&amp;#39;m not 🙃) taking Meta&amp;#39;s self-reported usage numbers with a boulder of salt? I&amp;#39;d encourage anyone drawing conclusions about platform popularity to remember “pivot to video” and consider how many of those 400 million people are actually reading or posting on Threads vs. accidentally hovered over the “cross-post to Threads” button on Instagram one time.&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Pivot_to_video#Facebook_metrics_controversy&#34;&gt;https://en.wikipedia.org/wiki/Pivot_to_video#Facebook_metrics_controversy&lt;/a&gt;
    </content>
    <updated>2025-08-12T21:28:08Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsq6ndqxf6t205hlpqtrla65dkujef45fgdjz06xfffdcyads5x4sgzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzq6rcrm</id>
    
      <title type="html">Oops, I should have tagged you about my recent starter pack work ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsq6ndqxf6t205hlpqtrla65dkujef45fgdjz06xfffdcyads5x4sgzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzq6rcrm" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0pqqa64kxjmwdrs5xjrs5xhxpdnmvjnxdejc50n5nyazncpmru5qn9u7r7&#39;&gt;nevent1q…u7r7&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Oops, I should have tagged you about my recent starter pack work with &lt;a href=&#34;https://fedidevs.com&#34;&gt;https://fedidevs.com&lt;/a&gt;. Fedidevs is I think the biggest repository of starter packs of ActivityPub accounts, and these starter packs are now themselves available in ActivityPub format. They can already be imported by the latest dev versions of the WordPress plugin: &lt;a href=&#34;https://github.com/Automattic/wordpress-activitypub/pull/2047&#34;&gt;https://github.com/Automattic/wordpress-activitypub/pull/2047&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;I talked to the Mastodon peeps a bit about their plans and we see no obstacles for future compatibility.
    </content>
    <updated>2025-08-12T19:52:42Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqszt7vcjda7hpx7rd7zytsnddk3d3je9hek5c5e2qkvttukrgtkzzgzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzlwypdp</id>
    
      <title type="html">I have recently been helping @npub15wd…rte4 with the backend ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqszt7vcjda7hpx7rd7zytsnddk3d3je9hek5c5e2qkvttukrgtkzzgzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzlwypdp" />
    <content type="html">
      I have recently been helping &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub15wdfr9znyzrrucep9sa57p4p823cpue65gch3r83wtn8qxax2l6qw8rte4&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Anže&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub15wd…rte4&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; with the backend code for starter packs curated on fedidevs.com, specifically with splash images. In the future, you should be seeing the new splash images in the link preview if you share a starter pack on here. Example: &lt;a href=&#34;https://fedidevs.com/s/NDYw/&#34;&gt;https://fedidevs.com/s/NDYw/&lt;/a&gt; (by &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1xselj43f4mq6e4tmadr6ex9s2xfdp34wqupn27n2ufd6clv3mqkqhflgk3&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;wakest likes your bugs ⁂&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1xse…lgk3&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;)&lt;br/&gt;&lt;br/&gt;This was a side effect of my work on interoperable ActivityPub starter packs. The goal is that &lt;a href=&#34;https://fedidevs.com&#34;&gt;https://fedidevs.com&lt;/a&gt; starter packs will be compatible with Mastodon&amp;#39;s (&lt;a href=&#34;https://blog.joinmastodon.org/2025/08/trunk-tidbits-july-2025/&#34;&gt;https://blog.joinmastodon.org/2025/08/trunk-tidbits-july-2025/&lt;/a&gt;).
    </content>
    <updated>2025-08-11T10:53:39Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsx7djj2jweasqxcnrc60yk9h0vgym2996aqnhpvgegjtetvs5z7kczypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vz5lz0nc</id>
    
      <title type="html">So last year I organized a small fediverse meetup during break ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsx7djj2jweasqxcnrc60yk9h0vgym2996aqnhpvgegjtetvs5z7kczypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vz5lz0nc" />
    <content type="html">
      So last year I organized a small fediverse meetup during break time at &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1dnmsfmr8crtwz4genzjnufdc508g065ltnspcp8cgayljv8ljzpsn6nnxw&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Mensch und Computer&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1dnm…nnxw&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; and we ended up with a handful of people exchanging tips, hopes, ideas, and contact details.&lt;br/&gt;&lt;br/&gt;Should we try that again this year in #Chemnitz? Who here is going to &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1dnmsfmr8crtwz4genzjnufdc508g065ltnspcp8cgayljv8ljzpsn6nnxw&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Mensch und Computer&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1dnm…nnxw&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;? 🙂&lt;br/&gt;&lt;br/&gt;#MuC2025 #MCI #HCI
    </content>
    <updated>2025-08-07T14:20:47Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsgug79ghrea3vgp0hxqhxjumzts5ec95zlc6ygmup5ycnve2v7r9qzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzrvcd3w</id>
    
      <title type="html">I think that would be in scope of ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsgug79ghrea3vgp0hxqhxjumzts5ec95zlc6ygmup5ycnve2v7r9qzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzrvcd3w" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqstmy0tjwzu5v5snmk47ccm8hyr9s5pj2v8ccvprm0drfzef6t3m5g974qgh&#39;&gt;nevent1q…4qgh&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I think that would be in scope of [@thisismissem](&lt;a href=&#34;https://hachyderm.io/@thisismissem&#34;&gt;https://hachyderm.io/@thisismissem&lt;/a&gt; )&amp;#39;s FIRES project: &lt;a href=&#34;https://github.com/fedimod/fires&#34;&gt;https://github.com/fedimod/fires&lt;/a&gt; But yeah, if you want something that Mastodon can understand and render ~today, a bot reply would probably be the pragmatic option.
    </content>
    <updated>2025-08-04T18:05:35Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqst68zd52akwcn7y0u9xh27jhcrm5mudv4cpj7plqc2wuwlf9ml0zqzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzw6cssc</id>
    
      <title type="html">Looks pretty identical to me too. It&amp;#39;s complete guesswork, ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqst68zd52akwcn7y0u9xh27jhcrm5mudv4cpj7plqc2wuwlf9ml0zqzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzw6cssc" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs29l89ee6htp340ny7v4epkf656jnz2900yal76mgy8v84luj7gug0z0azw&#39;&gt;nevent1q…0azw&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Looks pretty identical to me too.&lt;br/&gt;&lt;br/&gt;It&amp;#39;s complete guesswork, but the reason may not necessarily have anything to do with the HTML code. It could be some infrastructure difference between the sites, like if one is using some proxy (Cloudflare or similar) that the other isn&amp;#39;t, or a short-term flood of requests triggered a bot detection somewhere and blocked the crawler&amp;#39;s IP. I&amp;#39;ve had that happen with a site that was unintentionally blocking Googlebot after it hit a firewall heuristic.
    </content>
    <updated>2025-08-01T22:00:21Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqst3rjyh7a3g9pu7pc9chrdn70e8789z643870rxm9e7htnhhxnccszypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzpssv8c</id>
    
      <title type="html">A cool #Mastodon 4.4 feature that I have seen zero fanfare about ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqst3rjyh7a3g9pu7pc9chrdn70e8789z643870rxm9e7htnhhxnccszypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzpssv8c" />
    <content type="html">
      A cool #Mastodon 4.4 feature that I have seen zero fanfare about is the new like/boost count federation. Another &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1ljmfkwmllavdpnf5tgmrfay6mj4t78c0xryugfw4qka0c4exas0q2pw8tm&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;jonny (nonvenomous)&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1ljm…w8tm&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; win if I remember right.&lt;br/&gt;&lt;br/&gt;Maybe most people are on large enough servers that they haven&amp;#39;t noticed the difference, but on my single-user server it&amp;#39;s neat to see.&lt;br/&gt; &lt;img src=&#34;https://fietkau.social/system/media_attachments/files/114/920/241/302/400/754/original/696d0c6101f7513e.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2025-07-26T15:30:16Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsp07vn5kkyqg7q2mzpmzw4m4cqst6uksa5zwhu92hsus0sv6nun3czypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzmlqu73</id>
    
      <title type="html">I was thinking about letting people pick one color and having the ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsp07vn5kkyqg7q2mzpmzw4m4cqst6uksa5zwhu92hsus0sv6nun3czypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzmlqu73" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsx4kvkrv7gx7a0j4hk72hket7aczsy4f7f9v0dy49cj4k20c4f09caj2r88&#39;&gt;nevent1q…2r88&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I was thinking about letting people pick one color and having the FEP provide wiggle room and guidance for platforms on what to do with it, like e.g. nudging very light or very dark colors for different backgrounds. I think Twitch does something like that for custom name colors.&lt;br/&gt;&lt;br/&gt;It&amp;#39;d be up to the theme creators to decide how to incorporate it while preserving contrasts, or which colors can&amp;#39;t work at all.&lt;br/&gt;&lt;br/&gt;Gonna keep thinking it over.
    </content>
    <updated>2025-06-05T11:07:25Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqszrtxh3eq2t8qrcjze75vhp2260uggk4q22fr8jw76rj58ql75kngzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzfshwwe</id>
    
      <title type="html">Congratulations! I&amp;#39;m still kind of obsessed with the idea of ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqszrtxh3eq2t8qrcjze75vhp2260uggk4q22fr8jw76rj58ql75kngzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzfshwwe" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqszwgw20kw9c9pgysd8ywlke6rlxc8003qj98hw5602acnq0wg9axs8hpqez&#39;&gt;nevent1q…pqez&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Congratulations!&lt;br/&gt;&lt;br/&gt;I&amp;#39;m still kind of obsessed with the idea of turning the profile color into a federatable actor property and creating an FEP to let server platforms (and ultimately clients) display people&amp;#39;s profiles with visual accents in their chosen color.&lt;br/&gt;&lt;br/&gt;It&amp;#39;s not MySpace level of customization, but giving people a sense of ownership of &amp;#34;their&amp;#34; space is nice.&lt;br/&gt;&lt;br/&gt;Would that be a waste of time or would any other platform want to buy in? &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1uq5lznmk9ax9r07mhs0lrv4qaafyguepj2spfjlw54acwkxrds3sppz8a5&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;julian&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1uq5…z8a5&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1xsvg2xkadm588z2khnywdfqsmv73rskhy96svdcr3d6zx8yl39xsq7q6he&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;dansup&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1xsv…q6he&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1zu5wnva84a0qupw80ekd9zjfv5pr4nnpytuecva5zrx85nwh8dcsn4pytj&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Renaud Chaput&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1zu5…pytj&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1vwf82eadsf3484j2ckqz9gen7z9l89p80dzy6tavvyg2lt5p4jgql095aa&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Rimu&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1vwf…95aa&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;
    </content>
    <updated>2025-06-05T08:18:52Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs8kd3x8eeq7r5dkc6ljfrhgfm5l2llgtphnams0wtp04uukudry4szypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzk7s8zg</id>
    
      <title type="html">I&amp;#39;m finally unveiling the #ActivityPub project that has been ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs8kd3x8eeq7r5dkc6ljfrhgfm5l2llgtphnams0wtp04uukudry4szypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzk7s8zg" />
    <content type="html">
      I&amp;#39;m finally unveiling the #ActivityPub project that has been consuming my weekends: Encyclia, an #ORCID bridge that will make ORCID records followable and interactable on the fediverse. 🙂&lt;br/&gt;&lt;br/&gt;It&amp;#39;s early-stage and the ORCID following function is not publicly available yet. We&amp;#39;re seeking community feedback on functionality and safety aspects. Read more at &lt;a href=&#34;https://encyclia.pub&#34;&gt;https://encyclia.pub&lt;/a&gt; or follow &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub120sdlp9j0t9menjhmu60gyhlqus3dp3f8x394eetgrqfw9q23grsld0fq8&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Encyclia&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub120s…0fq8&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; for news!&lt;br/&gt;&lt;br/&gt;#fediverse #fedidev #scicomm #wisskomm #academicchatter
    </content>
    <updated>2025-03-04T20:27:17Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs96h6ttfrdgnmmefyj037x7empkydmkaypekyaxzctefhmug8ymhgzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzexn04f</id>
    
      <title type="html">Cool stuff! 🙂 I made something similar once, where I decided ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs96h6ttfrdgnmmefyj037x7empkydmkaypekyaxzctefhmug8ymhgzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzexn04f" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsylmhqydc5flx7w2d2run22y6hjjqw9c63w5876m2nwesed0f3jsq0es8qc&#39;&gt;nevent1q…s8qc&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Cool stuff! 🙂 I made something similar once, where I decided to build a version of tic tac toe as a tiny web game and encoded the full thing as a QR code holding a data URI: &lt;a href=&#34;https://fietkau.plus/#game_in_qr&#34;&gt;https://fietkau.plus/#game_in_qr&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Sadly it didn&amp;#39;t run via any QR code scanner I tried. But it is small enough to fit!
    </content>
    <updated>2025-03-03T01:55:01Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs96cv7d5cdr9gcjxdlsa2umq4crz86hd66d399mvudke5xys0tctszypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzj0xxtu</id>
    
      <title type="html">Discussion here: ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs96cv7d5cdr9gcjxdlsa2umq4crz86hd66d399mvudke5xys0tctszypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzj0xxtu" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqszdltrlgm9yxr822e4wcd0y4fg994myxa7u5gyj9f47un2ju9y76cmtl9gk&#39;&gt;nevent1q…l9gk&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Discussion here: &lt;a href=&#34;https://github.com/pixelfed/starter-kits/issues/1&#34;&gt;https://github.com/pixelfed/starter-kits/issues/1&lt;/a&gt; implementation AFAIK not live anywhere yet.&lt;br/&gt;&lt;br/&gt;I&amp;#39;ll pick my ideas from there back up some day if no one else does, but I&amp;#39;m super busy with other projects currently.
    </content>
    <updated>2025-02-27T20:38:31Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqspelnr2ycjtd2mytkg8gue0ghn2grqp27w5tz8uz8p68zcd5fhmugzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzhu7k8c</id>
    
      <title type="html">A cursed #ActivityPub idea. Problem: Remote profiles sometimes ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqspelnr2ycjtd2mytkg8gue0ghn2grqp27w5tz8uz8p68zcd5fhmugzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzhu7k8c" />
    <content type="html">
      A cursed #ActivityPub idea.&lt;br/&gt;&lt;br/&gt;Problem: Remote profiles sometimes look empty on Mastodon because only the stickied posts are synchronized on profile update.&lt;br/&gt;&lt;br/&gt;Observation: Neither the ActivityPub nor Mastodon specs limit the number of sticky posts on a profile. Nothing says you can&amp;#39;t have 100 000 sticky posts.&lt;br/&gt;&lt;br/&gt;Solution: an ActivityPub server implementation that auto-stickies every single post you write.&lt;br/&gt;&lt;br/&gt;The things I come up with thinking about &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1tlfg4qcs9x97v86gxay9qn8ncvdhfah8tw3hlkmc86hmeclgp6vsc3wz08&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Fedify: ActivityPub server framework&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1tlf…wz08&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; while in the shower.
    </content>
    <updated>2025-02-08T17:46:55Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsx32eg7dpv3e9w9qmvtd90d9jnwm4t37zaz05dslaafqr43dpccvqzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzts62w8</id>
    
      <title type="html">Same for Letterbook, have you taken a look at it before? ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsx32eg7dpv3e9w9qmvtd90d9jnwm4t37zaz05dslaafqr43dpccvqzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzts62w8" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs9q4u5tvsy6guyc4p8cfdawhcnzjppla2yf93ppyrc7h6ud9xt7xgcv42nc&#39;&gt;nevent1q…42nc&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Same for Letterbook, have you taken a look at it before? &lt;a href=&#34;https://letterbook.com&#34;&gt;https://letterbook.com&lt;/a&gt; There isn&amp;#39;t much literally to see yet, but from what I hear it&amp;#39;s progressing well.&lt;br/&gt;&lt;br/&gt;Oh yeah, and the Iceshrimp team lead is also a woman. Same for the glitch-soc fork of Mastodon.
    </content>
    <updated>2025-02-08T10:02:00Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsgusaua5z5q8c9ugztjwcc6m6mu8q0ag8jlehr98t452es3cm8ejczypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzyywvsc</id>
    
      <title type="html">Tell me if I&amp;#39;m being unreasonably nitpicky about semantics, ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsgusaua5z5q8c9ugztjwcc6m6mu8q0ag8jlehr98t452es3cm8ejczypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzyywvsc" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsd5z78vacz0pfvsflwznplc4d956j67fx670gteda3pkhjtrx8vjgd9q79m&#39;&gt;nevent1q…q79m&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Tell me if I&amp;#39;m being unreasonably nitpicky about semantics, but no, Mastodon still doesn&amp;#39;t display Markdown in posts and has never done so either. It has expanded the set of allowable HTML tags for Mastodon 4.2. The second link in my reply has the full before and after lists.&lt;br/&gt;&lt;br/&gt;So the chain is, Akkoma supports Markdown input, renders it to HTML locally and sends that to other servers via ActivityPub. Mastodon then sanitizes the received HTML and provides it to the client. 🙂
    </content>
    <updated>2025-02-06T00:02:14Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsynw3y9uwdd4hwmgufdtu4sywvwkxgrqd5uwjnf43u74k2jr8yhwszypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzs0s0g6</id>
    
      <title type="html">Ben would be correct in this case. ActivityPub objects can in ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsynw3y9uwdd4hwmgufdtu4sywvwkxgrqd5uwjnf43u74k2jr8yhwszypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzs0s0g6" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsw30wz9marzsu6pa96knqvtymu3gjywlsulru28dre3le83ljk3ssghx0aa&#39;&gt;nevent1q…x0aa&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Ben would be correct in this case. ActivityPub objects can in principle contain whatever types of content, but the default as per ActivityStreams is HTML and I&amp;#39;ve never seen anything else used in practice for the exchange of text content. Spec: &lt;a href=&#34;https://www.w3.org/TR/activitystreams-vocabulary/#dfn-content&#34;&gt;https://www.w3.org/TR/activitystreams-vocabulary/#dfn-content&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Mastodon simply has a pretty restrictive HTML sanitizer: &lt;a href=&#34;https://docs.joinmastodon.org/spec/activitypub/#sanitization&#34;&gt;https://docs.joinmastodon.org/spec/activitypub/#sanitization&lt;/a&gt; With the project&amp;#39;s effort to improve the display of long-form articles, we&amp;#39;ll see if that&amp;#39;s going to change.
    </content>
    <updated>2025-02-05T23:48:13Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsrmst68jj748qutt4dflapljjts09qp2mmxq58hkkgw5avz8aut5qzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzkp0r0g</id>
    
      <title type="html">He&amp;#39;ll probably clarify this himself, but just to head it off ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsrmst68jj748qutt4dflapljjts09qp2mmxq58hkkgw5avz8aut5qzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzkp0r0g" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsztml2gtd5tuf8730m03lv07lyvggaf32e29ar0cwzfx3rj4wvjwqn289pe&#39;&gt;nevent1q…89pe&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;He&amp;#39;ll probably clarify this himself, but just to head it off a bit: &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1zdfzeqa2d8kqel6pm0l47wj4ue92nxx95gynf7c45t9xxyyt3ncshn6u9l&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Roni Rolle Laukkarinen&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1zdf…6u9l&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; didn&amp;#39;t build a search engine or a database, but an ephemeral browser-based display of the public timeline. Bit of a difference in scope (and privacy).
    </content>
    <updated>2025-02-04T01:50:22Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsq0ww6s0h4a6jwm9zhfgp0jh59puydhltd3yafft7gv69hk9vnjaqzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzqm6lnx</id>
    
      <title type="html">The best help I can offer is to tag a few people who might know. ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsq0ww6s0h4a6jwm9zhfgp0jh59puydhltd3yafft7gv69hk9vnjaqzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzqm6lnx" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsygvj0qz0dgqw2gtqzrdyw5wh70jjewqjk8rwyw9gc5qzkev8p9dg9jevt0&#39;&gt;nevent1q…evt0&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;The best help I can offer is to tag a few people who might know. 😔 Like &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1ptyjyn35vrz9h23ls7ur79gjpctm6r56nrz4ntfk3ttnsdqg2q7sjae8yx&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;tomate 🍅&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1pty…e8yx&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; or &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1qe8rryxgs0kku02sjpfun8dm6ze3msmk093nv8eeyhhy9lcxfe2qszxfmz&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;pascoda&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1qe8…xfmz&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;. Do you know where someone could be pointed? &lt;a href=&#34;https://social.wake.st/@liaizon/113838218708110283&#34;&gt;https://social.wake.st/@liaizon/113838218708110283&lt;/a&gt;
    </content>
    <updated>2025-01-16T19:33:33Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsgl5wknlaeyk96nmgldvukq3lks2ckrruavrvtj956mz9sc8d8qsgzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzugdnms</id>
    
      <title type="html">Back when that discussion was everywhere, I also got the ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsgl5wknlaeyk96nmgldvukq3lks2ckrruavrvtj956mz9sc8d8qsgzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzugdnms" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs2apkqxldxvc0l6malnjgjux3r4hrrydmrfgg3pm8mh6e69zvalzskh4yc2&#39;&gt;nevent1q…4yc2&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Back when that discussion was everywhere, I also got the impression that there was an underrated cultural component buried in the question of what it means to &amp;#34;encounter a bear&amp;#34;.&lt;br/&gt;&lt;br/&gt;In the US, they mainly have American black bears that are almost more like badgers than grizzlies. Some American kids are literally taught to scare away bears by yelling at them.&lt;br/&gt;&lt;br/&gt;I&amp;#39;m European and nowhere near wild bears, but my conception of wild bear encounters is closer to this: &lt;a href=&#34;https://www.huffpost.com/entry/olga-moskalyova_n_930464&#34;&gt;https://www.huffpost.com/entry/olga-moskalyova_n_930464&lt;/a&gt;
    </content>
    <updated>2025-01-12T23:33:44Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsyyykywpw9232anv0c8jkacjstt2t7y0wzj57jy8zlkxegnerem3qzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzeg266v</id>
    
      <title type="html">This is an important point that I would love to see more people ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsyyykywpw9232anv0c8jkacjstt2t7y0wzj57jy8zlkxegnerem3qzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzeg266v" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqswkwaturtj7x2jn43gj2ch4ed4p2h9mf82fe7f46e8e894ejdsh5qsxusat&#39;&gt;nevent1q…usat&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;This is an important point that I would love to see more people acknowledge: how little overlap there is between AP developers / platform builders and what I have been calling &amp;#34;the peanut gallery&amp;#34; - i.e. people with strong opinions (&amp;#34;the fediverse should have a high barrier to entry&amp;#34;, &amp;#34;we don&amp;#39;t want companies here&amp;#34;, &amp;#34;you&amp;#39;re wrong for wanting this feature&amp;#34;) but no involvement in anything constructive. I know how vocal they are, but I think their opinions receive outsized attention.
    </content>
    <updated>2024-12-11T20:42:40Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqspnqdxllvds8e8fhtaq7rz6t9hcf5hnmqwtvks8ec03nhty9htahszypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vz966lmf</id>
    
      <title type="html">I haven&amp;#39;t tried this, but I believe other server software ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqspnqdxllvds8e8fhtaq7rz6t9hcf5hnmqwtvks8ec03nhty9htahszypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vz966lmf" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqspyz5xh02txga2peernhhtwy0chupytqx4k0ur03cy3kcv07tzhvs0n0as0&#39;&gt;nevent1q…0as0&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I haven&amp;#39;t tried this, but I believe other server software will for the most part not acknowledge the new account if the cryptographic signing keys are different. If you manage to migrate those as well, and use a server software that lets you reuse not just your handle but also the same ActivityPub ID, you should be able to achieve account continuity.
    </content>
    <updated>2024-11-22T10:19:24Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsgdwrn4zm2lvrj2as4qq35fsw2aajvmms9xzx2vx99hcqc60rx3pszypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzu4zspc</id>
    
      <title type="html">Ryan just blogged about Bridgy Fed&amp;#39;s long-term view ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsgdwrn4zm2lvrj2as4qq35fsw2aajvmms9xzx2vx99hcqc60rx3pszypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzu4zspc" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsr3amjyvnnp5he4wn9xv60scjh26m8jg3pfzcrpayyezyypnvgajgpu4kj0&#39;&gt;nevent1q…4kj0&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Ryan just blogged about Bridgy Fed&amp;#39;s long-term view yesterday, if that&amp;#39;s relevant to your considerations: &lt;a href=&#34;https://snarfed.org/2024-11-01_53932&#34;&gt;https://snarfed.org/2024-11-01_53932&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;I&amp;#39;m generally a fan of the self-hosting landscape, especially if it&amp;#39;s as simple as your server implementation. But spiritual successors to botsin.space are also already popping up for those who don&amp;#39;t want to touch any server administration.
    </content>
    <updated>2024-11-02T12:55:12Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsyme002amml4vtvq0x3m5trrej9l4a3pkz9ypgjf4u60sr2v6hp4qzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vz3fu6th</id>
    
      <title type="html">I am publishing a small #ActivityPub / #fediverse project: ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsyme002amml4vtvq0x3m5trrej9l4a3pkz9ypgjf4u60sr2v6hp4qzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vz3fu6th" />
    <content type="html">
      I am publishing a small #ActivityPub / #fediverse project: &lt;a href=&#34;https://fietkau.software/webfinger_canary&#34;&gt;https://fietkau.software/webfinger_canary&lt;/a&gt; and &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub122fsv5us2jvhcyeh8ezhl4sgvj4k60um52evy8fekcaj2m8tg8lsnl9tl4&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;WebFinger Split-Domain Canary&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub122f…9tl4&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; 🙂&lt;br/&gt;&lt;br/&gt;It is a tiny bot showcasing a split-domain WebFinger setup, where the handle domain is different from the ActivityPub server domain. This is supported by Mastodon and some other ActivityPub implementations, but not all of them.&lt;br/&gt;&lt;br/&gt;So this project, aimed at devs and power users, is part test case, part feature recommendation/advocacy. The bot&amp;#39;s website at &lt;a href=&#34;https://correct.webfinger-canary.fietkau.software/&#34;&gt;https://correct.webfinger-canary.fietkau.software/&lt;/a&gt; has all the details.
    </content>
    <updated>2024-10-30T15:12:56Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqst3n6hpc395r7fz3x4h7ydg5pnefmtc9yvnmg2qrycmz8msht2mqqzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzkpelup</id>
    
      <title type="html">The little #FediJam browser game I directed and coded, “Up in ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqst3n6hpc395r7fz3x4h7ydg5pnefmtc9yvnmg2qrycmz8msht2mqqzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzkpelup" />
    <content type="html">
      The little #FediJam browser game I directed and coded, “Up in the Air”, has just been updated to version 1.0. It&amp;#39;s playable in these two places:&lt;br/&gt;&lt;br/&gt;:fietkau_media: &lt;a href=&#34;https://fietkau.media/up_in_the_air&#34;&gt;https://fietkau.media/up_in_the_air&lt;/a&gt;&lt;br/&gt;🌐 &lt;a href=&#34;https://jfietkau.itch.io/up-in-the-air&#34;&gt;https://jfietkau.itch.io/up-in-the-air&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Compared to the game jam version from last month, there have been some UI and convenience updates, there is an optional HUD, and a bunch of little easter eggs and cheat codes are included. 🙂 And I&amp;#39;m ready to consider this project finished. That was fun! 👍&lt;br/&gt;&lt;br/&gt;#indiegame #gamedev #indiedev
    </content>
    <updated>2024-10-16T22:48:16Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsxmcr8lyzu4mnwh9tp2vzx43fchux7pqwgj6y8kxgc00pjajhqm3czypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzj5e5nm</id>
    
      <title type="html">I&amp;#39;d like to add that @npub1pqr…2sck exists, which I use for ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsxmcr8lyzu4mnwh9tp2vzx43fchux7pqwgj6y8kxgc00pjajhqm3czypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzj5e5nm" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs2wrvpfzftkd773sguz9hk0wknt8m7d8zsyj0d8r4z4uaw234cnscjn768l&#39;&gt;nevent1q…768l&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I&amp;#39;d like to add that &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1pqr3g2gk3vsnrqk9kwfqqcxc6d5cwjr0hyc0nlzz9py5nf92vd9sn02sck&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Bridgy Fed for Bluesky&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1pqr…2sck&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; exists, which I use for my account and encourage others to use who like to be connected across protocols. I follow a number of Bluesky users from this Mastodon account who have opted in from the other side, &lt;a href=&#34;https://bsky.app/profile/ap.brid.gy&#34;&gt;https://bsky.app/profile/ap.brid.gy&lt;/a&gt;. Availability may vary for people who are on Mastodon servers that moderate bridges aggressively.
    </content>
    <updated>2024-10-07T13:59:05Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsf0cv27umglvm93huvg4gpawvlr6u64zsszyg0xghzfz94qkshl8qzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vz7qkujl</id>
    
      <title type="html">With #FediJam nearing its deadline, I&amp;#39;ve been working on ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsf0cv27umglvm93huvg4gpawvlr6u64zsszyg0xghzfz94qkshl8qzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vz7qkujl" />
    <content type="html">
      With #FediJam nearing its deadline, I&amp;#39;ve been working on customization and accessibility options for my game. 🙂&lt;br/&gt;&lt;br/&gt;Yes, it&amp;#39;s a game jam, and this is one area of many where jam games typically cut quality corners to save dev time. But accessibility has kinda become part of my personal brand, so I don&amp;#39;t want to skimp here.&lt;br/&gt;&lt;br/&gt;It&amp;#39;s a dexterity game, which won&amp;#39;t appeal to everyone. But the goal is that anyone can at least try it.&lt;br/&gt;&lt;br/&gt;#gamedev #indiedev #indiegames #programming #accessibility #a11y&lt;br/&gt; &lt;img src=&#34;https://fietkau.social/system/media_attachments/files/113/199/719/001/926/571/original/c8c1f01517d61825.png&#34;&gt; &lt;br/&gt; &lt;img src=&#34;https://fietkau.social/system/media_attachments/files/113/199/719/322/149/830/original/8c9a9f3fefd67018.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2024-09-25T19:03:09Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqszwmnsdcpm5mpk8gqxyc30svuxgujgr2c4kr6lx53twvnfzdewuegzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzlk2fv6</id>
    
      <title type="html">Things I like about Mastodon: 1. I can take responsibility for my ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqszwmnsdcpm5mpk8gqxyc30svuxgujgr2c4kr6lx53twvnfzdewuegzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzlk2fv6" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs00z30j5s7q884qd9gg5e676wreth9aczcl967tp8vmlptpqnaykg0k8z0m&#39;&gt;nevent1q…8z0m&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Things I like about Mastodon:&lt;br/&gt;1. I can take responsibility for my profile and connections, no billionaire can cut me off.&lt;br/&gt;2. People don&amp;#39;t need an account to look at the things I post. So I can send someone a link and they can look at it. It&amp;#39;s become surprisingly rare for social platforms. Also Mastodon posts can be cited.&lt;br/&gt;3. People can converge around interests using hashtags, lists, and (in the future) groups.
    </content>
    <updated>2024-09-19T15:24:13Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsylsmqd87v93cvkeur7kjfs0djhetu3hp0e6gp3cjlkntsjws0msqzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzwwt6lk</id>
    
      <title type="html">Unveiling the core gameplay loop of my #FediJam entry. 😀 Think ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsylsmqd87v93cvkeur7kjfs0djhetu3hp0e6gp3cjlkntsjws0msqzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzwwt6lk" />
    <content type="html">
      Unveiling the core gameplay loop of my #FediJam entry. 😀 Think you can do better than me? You&amp;#39;re probably right! Prove it next month!&lt;br/&gt;&lt;br/&gt;Note: still placeholder graphics, have not even started on presentation except basic animation. I wanted to get the movement nailed down early since it&amp;#39;s so core to the experience. This feels about right.&lt;br/&gt;&lt;br/&gt;(Gonna be marking these as sensitive in case people want to avoid spoilers.)&lt;br/&gt;&lt;br/&gt;#gamedev #indiegame #indiedev #gamejam #programming #javascript #threejs&lt;br/&gt;&lt;video controls width=&#34;100%&#34; class=&#34;max-h-[90vh] bg-neutral-300 dark:bg-zinc-700&#34;&gt;&lt;source src=&#34;https://fietkau.social/system/media_attachments/files/113/143/588/744/220/307/original/eb4eb07963ccfd5b.mp4&#34;&gt;&lt;/video&gt;&lt;br/&gt;
    </content>
    <updated>2024-09-15T21:08:43Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsdl82l0gphzq5we2ekzle9saafdz8p26qexj7sleseh8r5q65z8vczypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzaekxft</id>
    
      <title type="html">Finally starting on my #FediJam project today. 😀 Because is it ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsdl82l0gphzq5we2ekzle9saafdz8p26qexj7sleseh8r5q65z8vczypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzaekxft" />
    <content type="html">
      Finally starting on my #FediJam project today. 😀 Because is it a real deadline if you don&amp;#39;t start on the thing halfway through? 😇&lt;br/&gt;&lt;br/&gt;This is after an hour or two of getting warmed up again in #threejs. Hand-fudged physics, no graphics yet, but you can guess at the basic gameplay concept. I&amp;#39;m having fun so far!&lt;br/&gt;&lt;br/&gt;If you missed this ongoing game jam up until now: &lt;a href=&#34;https://itch.io/jam/fedi-jam&#34;&gt;https://itch.io/jam/fedi-jam&lt;/a&gt; and [@fedi_jam](&lt;a href=&#34;https://mastodon.gamedev.place/@fedi_jam&#34;&gt;https://mastodon.gamedev.place/@fedi_jam&lt;/a&gt; ) 👏&lt;br/&gt;&lt;br/&gt;#gamedev #indiegame #gamejam #javascript&lt;br/&gt;&lt;video controls width=&#34;100%&#34; class=&#34;max-h-[90vh] bg-neutral-300 dark:bg-zinc-700&#34;&gt;&lt;source src=&#34;https://fietkau.social/system/media_attachments/files/113/137/211/072/805/006/original/484f2f7e3aad2421.mp4&#34;&gt;&lt;/video&gt;&lt;br/&gt;
    </content>
    <updated>2024-09-14T18:07:20Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs8a6p30nqvccf29n3v4m20fmqalgg526mt4pvtpewtdj4pd004s3czypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vz5tezjr</id>
    
      <title type="html">I pushed a feature update for :fietkau_software: ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs8a6p30nqvccf29n3v4m20fmqalgg526mt4pvtpewtdj4pd004s3czypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vz5tezjr" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqswkm9gc7g7trukrnx8syr0cah9rpuhr2q42ujrja38wpxwa2e954sad2uen&#39;&gt;nevent1q…2uen&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I pushed a feature update for :fietkau_software: &lt;a href=&#34;https://fietkau.software/qr&#34;&gt;https://fietkau.software/qr&lt;/a&gt; today. 🙂&lt;br/&gt;&lt;br/&gt;It has two fun new shape styles, a bunch of added logos (👋 &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1gq5adv20nj55whcr53l3es5x9lqg6kkhfpcx4506n2456urefxgq0wqcul&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;pixelfed&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1gq5…qcul&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1tuupzc3v97jva3f4em6hewcux9q2hmv4ens97kjwp8z7a395qyrqlpmx44&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;A propos de PeerTube&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1tuu…mx44&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1fh736ae0xzk98s59wggazdpqg0g78mg2rwk7qf87ew96cqhc4lrst3ee83&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Codeberg&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1fh7…ee83&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub12r320mcnpx7hnsr9v8ydwdk9eyqrlpm8usvspwzpd4hw8g5l9rdscrzz58&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Forgejo&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub12r3…zz58&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; and more), some advanced options for turbo nerds, and irregularly shaped logos now get better cutouts.&lt;br/&gt;&lt;br/&gt;I think this covers most of the feature requests I&amp;#39;ve received. 😀&lt;br/&gt;&lt;br/&gt;#qr #qrcode #webdev #javascript
    </content>
    <updated>2024-09-12T17:05:10Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqswkm9gc7g7trukrnx8syr0cah9rpuhr2q42ujrja38wpxwa2e954szypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzfnsn7s</id>
    
      <title type="html">I finished another #webdev side project and built the QR code ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqswkm9gc7g7trukrnx8syr0cah9rpuhr2q42ujrja38wpxwa2e954szypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzfnsn7s" />
    <content type="html">
      I finished another #webdev side project and built the QR code generator of my dreams: :fietkau_software: &lt;a href=&#34;https://fietkau.software/qr&#34;&gt;https://fietkau.software/qr&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;* It&amp;#39;s instant, purely client-side, and has no ads or upsells.&lt;br/&gt;* It has a variety of color, shape, and logo embedding options.&lt;br/&gt;* There&amp;#39;s PNG and SVG export.&lt;br/&gt;&lt;br/&gt;The included logo selection is, let&amp;#39;s say, &amp;#34;opinionated&amp;#34; and features lots of familiar faces if you enjoy federated social platforms. 😄&lt;br/&gt;&lt;br/&gt;Here are a few example QR codes that all lead back to my Mastodon profile.&lt;br/&gt; &lt;img src=&#34;https://fietkau.social/system/media_attachments/files/113/055/701/707/941/082/original/1050521eed4f7d6e.png&#34;&gt; &lt;br/&gt; &lt;img src=&#34;https://fietkau.social/system/media_attachments/files/113/055/702/004/534/614/original/d06b57ebe0356ada.png&#34;&gt; &lt;br/&gt; &lt;img src=&#34;https://fietkau.social/system/media_attachments/files/113/055/702/539/381/601/original/d9fdb1951305618b.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2024-08-31T08:46:21Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqstjegkcm8u97zjy5s9dk9c4qkmpz2tmcsjmhr2dxk8sj0vavaa3lszypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzccwgc2</id>
    
      <title type="html">Latest info AFAIK: https://oisaur.com/@renchap/112299860209222424</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqstjegkcm8u97zjy5s9dk9c4qkmpz2tmcsjmhr2dxk8sj0vavaa3lszypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzccwgc2" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsvajkdrgustczcn274jfwzlyy6ya9syca7pdqlhz737fms6euks3gagndng&#39;&gt;nevent1q…ndng&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Latest info AFAIK: &lt;a href=&#34;https://oisaur.com/@renchap/112299860209222424&#34;&gt;https://oisaur.com/@renchap/112299860209222424&lt;/a&gt;
    </content>
    <updated>2024-08-28T18:05:16Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs0cka0huq8lly5m80ppt5msz6wgktl9dcz6ax38rh6mqfm47hu9lqzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzv2a9f3</id>
    
      <title type="html">Yeah sorry, I misunderstood what you meant. It&amp;#39;s possible to ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs0cka0huq8lly5m80ppt5msz6wgktl9dcz6ax38rh6mqfm47hu9lqzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzv2a9f3" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsxetqr642ur2947adrgspwv4ez48skn8n72vunr7qngrv9j8y2p9qxz6n55&#39;&gt;nevent1q…6n55&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Yeah sorry, I misunderstood what you meant. It&amp;#39;s possible to run ActivityPub on shared hosting, but I&amp;#39;m not aware of any mature projects. &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1x595mggkh492xtl25nfk5j4xnd2yuscfgmp2n7s6csanxsn99vlq5egect&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Terence Eden&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1x59…gect&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; has a barebones demo server that proves the concept: &lt;a href=&#34;https://gitlab.com/edent/activitypub-single-php-file&#34;&gt;https://gitlab.com/edent/activitypub-single-php-file&lt;/a&gt;
    </content>
    <updated>2024-08-18T20:16:57Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsrrlt96tysfkggl3wvu8spaa8xdqum2clx6umq2l62tem69sf7cyszypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vz56xs8d</id>
    
      <title type="html">GoToSocial has support for environments with limited hardware ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsrrlt96tysfkggl3wvu8spaa8xdqum2clx6umq2l62tem69sf7cyszypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vz56xs8d" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsv6exfsfmfufjk3w4623yemx7fh5rnyh8gf8eadx6t9jg6gmwf79cyl49yw&#39;&gt;nevent1q…49yw&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;GoToSocial has support for environments with limited hardware resources as one of its goals. There&amp;#39;s also snac which is another order of magnitude tinier.
    </content>
    <updated>2024-08-18T11:46:38Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs9wnqx3hj2u42xl29y9z7y4yktq2f8ytl2aype0chwa4hl5ezmqjczypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzfw4eqh</id>
    
      <title type="html">Who else will be at Mensch und Computer 2024? #MuC2024 ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs9wnqx3hj2u42xl29y9z7y4yktq2f8ytl2aype0chwa4hl5ezmqjczypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzfw4eqh" />
    <content type="html">
      Who else will be at Mensch und Computer 2024? #MuC2024 &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1dnmsfmr8crtwz4genzjnufdc508g065ltnspcp8cgayljv8ljzpsn6nnxw&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Mensch und Computer&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1dnm…nnxw&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;I have decided to organize a small meetup for Mastodon (&#43; adjacent) users on Tuesday, Sep 3rd at 3:30 pm. 😀 Come by and say hi!&lt;br/&gt;&lt;br/&gt;Details: &lt;a href=&#34;https://muc2024meetup.hci-workshop.com&#34;&gt;https://muc2024meetup.hci-workshop.com&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Follow &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1hadhvy9k8txxh33fwxnvtss5pkumkeqkwpaps8gzpaeamsfhfe8qhmdp7e&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;MuC 2024 Social Web Meetup&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1had…dp7e&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; if you&amp;#39;d like to join us there. Your account will be listed on the website as a participant. 🙂&lt;br/&gt;&lt;br/&gt;#HCI #CSCW #conference #academicChatter
    </content>
    <updated>2024-08-07T16:19:46Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsrwq5gejf9vq6e7pxdh8s4zmdch5lnvuf6xtlwqusxpx5rrz2pzuczypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzgzhwqc</id>
    
      <title type="html">Do they? https://github.com/mastodon/mastodon/pull/29748</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsrwq5gejf9vq6e7pxdh8s4zmdch5lnvuf6xtlwqusxpx5rrz2pzuczypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzgzhwqc" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqspyzvmg5ngxl9ljkq3u7fud2fj08d8pd23z6t7zwuprdzuj204wzs3aw59v&#39;&gt;nevent1q…w59v&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Do they? &lt;a href=&#34;https://github.com/mastodon/mastodon/pull/29748&#34;&gt;https://github.com/mastodon/mastodon/pull/29748&lt;/a&gt;
    </content>
    <updated>2024-07-30T21:19:06Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsf2wr3jvtpzpmmn9ajex9vwv787eyyfu2nuvulhydun2hnf98jr2qzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzxpthnj</id>
    
      <title type="html">Found some discussion on the Discord, see attached. (I hope this ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsf2wr3jvtpzpmmn9ajex9vwv787eyyfu2nuvulhydun2hnf98jr2qzypndld9cu5nhnn3362f0s94xvqf28m6tnypty85psx5wtrsdqg8vzxpthnj" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsw3x4lrkvv8yrmdrra4s0k45v4k8ngy8vml6pxd67yxdv3rqlk3pg0aswl0&#39;&gt;nevent1q…swl0&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Found some discussion on the Discord, see attached. (I hope this is okay to share &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1zu5wnva84a0qupw80ekd9zjfv5pr4nnpytuecva5zrx85nwh8dcsn4pytj&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Renaud Chaput&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1zu5…pytj&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;)&lt;br/&gt;&lt;br/&gt;The safe assumption is the bottleneck is engineering capacity. Incidentally &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1zu5wnva84a0qupw80ekd9zjfv5pr4nnpytuecva5zrx85nwh8dcsn4pytj&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Renaud Chaput&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1zu5…pytj&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; is probably the right person to talk to if you want to offer your skills, but I worry progress would be limited by available developers more than by UX design.&lt;br/&gt; &lt;img src=&#34;https://fietkau.social/system/media_attachments/files/112/592/844/985/631/452/original/8664f8e4ab6df9a6.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2024-06-10T14:45:49Z</updated>
  </entry>

</feed>