Webfinger Expectations

In an earlier post this year, I documented a problem I found and this post attempts to describe the issue a little more clearly and a plan to work around it.

I have chosen @tom@herestomwiththeweather.com as my personal identifier on the fediverse. If I decide I want to move from one activitypub server (e.g. Mastodon) to another, I would like to keep my same personal identifier. It follows that my activitypub server should not have to reside at the same domain as my personal identifier. I should be able to swap one activitypub server for another at any time. Certainly, I don’t expect every activitypub server to support this but I’m not obligated to use one that does not.

Unfortunately, although my domain returns the chosen personal identifier in the subject field, because the JRD document returns a rel=self link to a Mastodon server to provide my actor document, the mastodon servers do not seem to use my chosen personal identifier for anything other than resolving a search for my personal identifier to the mastodon profile to which it is currently associated. From that point forward, a completely new personal identifier with the domain component set to the domain of the mastodon server is used. In other words, a personal identifier that has been chosen for me by someone else is kept in a particular server’s database table. I can later choose a different activitypub server but I may not be able to keep my preferred username because it may already be taken on the new server. In any case, choosing a new server means my personal identifier within the mastodon network also changes. Unless…I don’t use a mastodon server in the first place. Then, my personal identifier will be used as I would like by the mastodon network and I can potentially swap activitypub servers without ever having to change my personal identifier with my own domain.

The two most relevant documents for understanding webfinger as it is currently used seem to be RFC 7033: WebFinger and Mastodon’s documentation and it is this mastodon documentation (in the section Mastodon’s requirements for WebFinger) that now describes the behavior (a problem for me) that I documented earlier. The new section explains

if the subject contains a different canonical account URI, then Mastodon will perform an additional Webfinger request for that canonical account URI in order to ensure that this new resource links to the same ActivityPub actor with the same criteria being checked.

This behavior makes sense if you assume that if you are using a mastodon server, then you inherit a personal identifier tied to that server. This makes validating a webfinger address simple for mastodon so advocating a change in this behavior in mastodon seems like it would be challenging. However, as I mentioned in the earlier post, instead of choosing mastodon as your activitypub server, your personal identifier with your own domain can be accepted by mastodon servers in a desirable way

as long as the fediverse node providing the actor document is smart enough to provide your personal domain in the subject when mastodon makes a webfinger call to it.

The problem here is that it seems that I would not be able to be “tom” on such an activitypub server if, for instance, tom@example.com was already pointing to that server unless the server could assign me a subdomain, for example.

Still masking

It’s that time of the year again when the measurements of covid positivity and wastewater have fallen to a minimum and resentment toward symbols of public health are amplified.

As mentioned back in February, the career of one of the greatest hockey players of all time was curtailed for a 34 year old by long covid. According to Patients Diagnosed with Post-COVID Conditions, the 36 to 50 age group is the age group most likely to be diagnosed with long covid.

Despite being on the favorable side of the graph right now, whenever I’m uncertain about air ventilation, I am still wearing a mask. For me, it’s always the locker room. When we’re near the maximum point of the graphs, I generally dress outside the locker room.

If you’re on the fediverse, please consider following Eric Topol. In his article The Brain and Long Covid, he references The Hamburg Study which seems particularly insightful. The participants were unvaccinated and long covid was not a criteria for selection. It was simply 223 people with mild to moderate covid against 223 controls with no evidence of covid. He notes

The MRI inflammatory marker abnormalities were so pronounced that machine learning could accurately differentiate which scans were from the Covid patients vs the control group

Despite the MRI scans being taken 10 months after the fact, it was still possible to determine who had been infected even for mild cases.

I’m hopeful that we will make real progress in long covid research but until then, the current rules to the game seem unfavorable without sensible mitigations.

Translating Books and Papers

I have a side project called BookLoggr which was created for the purpose of saving notes to books as I have done for decades but on the empty back pages of books. A year ago I added a feature for uploading pdfs and found myself often just cutting and pasting interesting sentences. I soon started saving academic papers as well as books.

Only recently have I begun to appreciate reading beginner books in french. On each page, I’ll find many new words that I need to look up and annotate with the english word inside the book. It is very time consuming and awkward to put the book down, pull up deepl.com and type the word into the translation form. It is much less disruptive to be able to click a button to translate the page and I can optionally write the english word inside the physical copy of the book.

So, I decided to repurpose my existing interface for adding a note (which was already associated with a page number) to make the note the entire contents of a page. Now, before I start reading the french book, I add each page of the book as a note. Last night, I wrote the code to allow clicking a button to translate a page of french text using DeepL.


I added the pages last night and will try it out and see how it goes…