Terence Eden. He has a beard and is smiling.

Terence Eden’s Blog

Theme Switcher:

I paid people to try and follow my README

· 13 comments · 700 words · Viewed ~36,402 times


A tiny lego Storm Trooper eats a chocolate coin.

Developers suck at writing documentation. We like to say RTFM but often there ain't no FM to R. At best we have a half-arsed collection of notes, some obsolete tips, and a link to a desolate forum full of people asking the same questions again and again. That's no way to treat our users. I naïvely believe there's a better way. As I've written before, you should sit down and actually test your …

Some quick thoughts on Unit Testing ActivityPub

· 3 comments · 600 words · Viewed ~2,182 times


The PHP logo.

I'll be radically honest here - I never really got the idea of "Test Driven Development". I'm much more of a "telnet into production and damn the consequences" kind of guy. Look, it's much more fun and my cardiologist recommends severe shocks every now and again. The essence of unit testing is pretty simple: Feed a function some data See how it responds Send it good data and if it returns…

ActivityPub - How to send an updated user profile to Mastodon and the Fediverse

· 350 words · Viewed ~1,422 times


Logo for ActivityPub.

Let's suppose you've updated the description of your ActivityPub account from "World's Number 1 Taylor Swift Fan" to "This account is now a Nickleback Truther". How do you let the rest of the Fediverse know that you've changed your allegiance? By default, most Mastodon instances won't periodically poll your account information just to see if you've updated it. So how does the information get…

ActivityPub - Is it worth defending against replay attacks and message/signature time skew?

· 5 comments · 1,750 words · Viewed ~2,022 times


Logo for ActivityPub.

Here's a problem that I've found with ActivityBot - my little ActivityPub server. Sometimes it receives messages which were originally sent months ago. Why does that happen and is it risky to accept and process them? My tl;dr is that it probably isn't worth worrying about. But I'd love someone to tell me why I'm wrong. Here's my thinking: Table of ContentsCausesIs that a problem?What are we…

A reasonably practical guide to validating RFC 9421 HTTP Signatures for ActivityPub in PHP

· 2 comments · 900 words · Viewed ~1,429 times


A padlock engraved into a circuit board.

If you're reading this, you've probably been hitting your head against a brick wall trying to parse and decipher the new HTTP Signatures sent by Mastodon and other Fediverse servers. This is a basic and somewhat incomplete guide to accepting these signatures. I'm sure there are various gotchas, but it works with the signatures I've seen in the wild. Shut Up And Show Me The Code! OK, wow, no…

Book Review: ActivityPub by Evan Prodromou

· 1 comment · 400 words · Viewed ~1,527 times


Book cover with a parrot on it.

As part of my grant from NLnet to improve my Fediverse bot project, I'm spending time making sure I understand all the fundamentals of ActivityPub. The problem with Internet standards is they're scattered all over the place. Abandoned forums, half-maintained wikis, mailing lists with obscure rules, and monolithic blocks of text. Sometimes you just want one book which collates all the info and…

ActivityBot is the recipient of an NLnet grant!

· 6 comments · 1,750 words · Viewed ~2,337 times


NLnet logo.

Back in February, I applied for NLnet's Next Generation Zero grant. They were looking for Fediverse projects to help rewild the social media landscape. Or, as they describe it: Reclaim the public nature of the internet Small and medium-sized R&D grants between 5.000 and 50.000 euro, with the possibility to scale up. I run ActivityBot - it is a single-file ActivityPub server suitable for…

Scattered thoughts on social geolocation

· 15 comments · 1,300 words · Viewed ~2,445 times


Screenshot of a map. There is a pop-up containing an image of me drinking a pint.

I want to be able to share my location with my friends on social media. Twitter (RIP) had a way to attach an optional location to a post. Facebook still lets me check in to venues. But neither ActivityPub (Mastodon) nor AT Protocol (BlueSky) allow me to do that. I've been banging on about this for a while so was delighted to be invited to chat with the GeoSocial Task Force on their monthly call. …

Some updates to ActivityBot

· 1 comment · 1,150 words · Viewed ~749 times


Logo for ActivityPub.

I couple of years ago, I developed ActivityBot - the simplest way to build Mastodon Bots. It is a single PHP file which can run an entire ActivityPub server and it is less than 80KB. It works! You can follow @openbenches@bot.openbenches.org to see the latest entries on OpenBenches.org, and @colours@colours.bots.edent.tel for a slice of colour in your day, and @solar@solar.bots.edent.tel to see…

Now witness the power of this fully operational Fediverse!

· 11 comments · 850 words · Viewed ~1,254 times


Logo for ActivityPub.

How can you measure the popularity of a social network site? Perhaps by counting the number of active accounts, or the quality of the discourse, or even how many people reply to your witty memes. Me? I prefer to look at how many people visit my blog from each site. It is an imperfect measure - and a vain one - but lets me know where I should be spending my time. No point posting on a network…

Getting started with Mastodon's Quote Posts - technical implementation details for servers

· 5 comments · 650 words · Viewed ~601 times


Screenshot of me quoting a post.

Quoting posts on Mastodon is slightly complex. Because of the privacy conscious nature of the platform and its users, reposting isn't merely a case of sharing a URl. A user writes a status. The user can choose to make their statuses quotable or not. What happens when a quoter quotes that post? I've read through the specification and tried to simplify it. Quoting is a multi-step process: The…

Presenting ActivityBot at FOSDEM

· 4 comments · 350 words · Viewed ~282 times


Introducing ActivityBot.

Because I'm an optimist, I submitted a few talks to FOSDEM in the hope one might be accepted. Because I'm lucky, I got two speaking slots. Because I'm an idiot, I decided to do both talks. On the same day. An hour apart. On opposite ends of the venue. Fool! My first talk was at the Social Web Birds-of-a-Feather session. I told people about my ActivityBot social networking server and how I…