Naming things is hard - DNS for the Federated Web


The multicoloured interlocking lines of the Fediverse logo.

How should I design my personal DNS for all the cool new Federated Services and IndieWeb protocols? Way back in the early 2000s, I started this website - shkspr.mobi. A few years later, I added a blog. I could have used the main domain, or created a subdomain like blog.shkspr.mobi. In the end, I chose a subdirectory of shkspr.mobi/blog I don't know if that was the right choice back then, but it is looking like the wrong choice now. I want to be a "first class" citizen of the Fediverse. I…

Continue reading →

Snowflake IDs in Mastodon (and Unique IDs in the Fediverse more generally)


Hundreds of snowflakes - each one unique and beautiful.

Computer Science has two canonical "hard problems": cache invalidation naming things off-by-one errors Let's talk about how we name unique items in Federated services - for example, posts on a social media service. If you have only one service, it's pretty easy. Every time a new entry is created in a database, give it a sequential number. This becomes a problem at scale. If you have millions of users on hundreds of different shards of a database, eventually you'll get a clash of IDs. To …

Continue reading →

How much decentralisation is too much?


The Mastodon logo. It sort of looks like a smiling elephant.

Twitter's over, my dudes! And now everyone is on Mastodon! But Mastodon isn't a site, it is a federated network running an interoperable protocol! Yay for ActivityPub! Anyway, that means there isn't one Mastodon website. There are many. There is only one Twitter. There is only one Facebook. There is only one Instagram. If you want to interact with Twitter/FB/Insta then you have to do it on those websites, or via the official apps. Mastodon is decentralised. I am on Mastodon.Social, and you …

Continue reading →

The ethics of syndicating comments using WebMentions


The WebMention logo is a stylised letter W with an arrow at the end.

This blog uses WebMention technology. If you write an article on your website and mention one of my blog posts, I get a notification. That notification can then be published as a comment. It usually looks something like this: This means readers of my post can see where it has been mentioned around the web. They can read your article after reading mine. Nice! I've also set up a "bridge" service which looks for people posting comments about my work on social media. For example, if you…

Continue reading →

Create a "Share To Mastodon" Button for WordPress


A WordPress Popup.

Everyone is decamping from Twitter to Mastodon! The great thing about the Federated Internet (hereafter the "Fediverse") is that it is distributed. The bad thing is… it is distributed! What do I mean by that? Here's an example of the problems with decentralised systems. If I want to create a link on a website which will share text to Twitter, I just create a URl which points to: twitter.com/intent/tweet?text=https%3A%2F%2Fexample.com The same is broadly true of any centralised system. S…

Continue reading →