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.

DeepL

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

Correction: check_webfinger!

Mastodon is not the fediverse and in my check_webfinger! post, I’m afraid I made that assumption. In particular, I concluded

So, from the perspective of mastodon, the domain component of your identifier you are known as is determined by which domain serves your actor document rather than the domain serving the original “well known” webfinger document.

which is not necessarily true if you consider the fediverse outside of Mastodon.

Instead, it seems that I should have said that the domain component of your identifier is determined by the domain component of the subject field returned in the webfinger response from the domain that serves your actor document when mastodon makes its 2nd webfinger request which is done in the check_webfinger! method.

  def check_webfinger!
    webfinger                            = webfinger!("acct:#{@username}@#{@domain}")
    confirmed_username, confirmed_domain = split_acct(webfinger.subject)

In the code above, the @domain passed to webfinger! is the domain of the server providing the activitypub actor document but the confirmed_domain can be different (e.g. your personal domain) if your original “well known” webfinger document was not pointing to a Mastodon server for providing the actor document.

Therefore, if you have a static personal website, it is not necessary to also host the actor document there 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. A caveat is that such a fediverse node accomodating personal domains would not be able to distinguish between bob@a.com and bob@b.com when mastodon webfingers server.com for bob@server.com.