Today the 2.6 version of Mastodon has been released. It now has built-in support for “rel=me”, which allows verification. Meaning that I can show on my Mastodon profile a link to my site and can proof that both are under my control.

Rel=me is something you add to a link on your own site, to indicate that the page or site you link to also belongs to you. The page you link to needs to link back to your site and make it reciprocal. This is machine readable, and allows others to establish that different pages are under control of the same person or entity.

On my own site I use ‘rel=me’ in the about section in the right hand column. First, if you check the html source of my page, you’ll see that I say that this site (zylstra.org/blog) is my primary site, by making it the only link that has a ‘u-uid’ class (uid is unique id). It also has rel=”me”, meaning the relationship I have with the linked site, is that it is me: 

class="u-url url u-uid uid" rel="me" href='https://www.zylstra.org/blog'

Further down in that About segment you find other links, to my Mastodon and Twitter profiles. If you look at those links you will see it says:

rel=”me” href=’https://m.tzyl.nl/@ton'

saying my Mastodon profile is also me, and similarly to say that a specific Twitter profile is also me (I maintain other Twitter profiles as well but they’re not me, but my company etc.):

rel=”me” href=’https://twitter.com/ton_zylstra'

To close the loop that allows verification that that is true, both my Mastodon profile and my Twitter profile need to link back to my site in a way that machines can check. For Twitter that is easiest: it has a specific place in a user profile for a website address. Like in the image below.

In Mastodon I can add multiple URLs to my profile but there was no way for me to explicitly say in my Mastodon profile that a specific link is the one that represents my online identity. But now I can add a rel=me link in my Mastodon profile, so that both my website and my Mastodon profile link to each other in a verifiable way, proving both are under my control. As you can see in the image below it was available on a single instance already for testing purposes (the green mark signifies verification with the linked site), and now with today’s release it is available to all Mastodon instances.

So how is verification of control over different pages by the same person useful? It may be useful to show that another Twitter profile with my name is not me, because there’s no two-way link between that profile and my site. If you have multiple rel=me references it becomes harder for others to fake specific parts of your online identity. Further, it allows additional functionality like logging in on a different site using credentials from another site you control. It also makes it possible to map networks, and discovery. Site X links to profile X with rel=me on Twitter. There X follows Y, and Y’s profile says, site Y is under her control. Now I know that Site X and Site Y’s authors are somehow connected. If I’m following site X, I may find it interesting to also regularly read site Y.

As soon as my Mastodon instance has been updated to the latest version, which will likely be sometime today, I will add the rel=me in my Mastodon profile, making the link between this site and that profile verifiable.

[UPDATE] It now works on my Mastodon instance:

So, I’m posting this using Quill, a micropub client, that I am running on my own laptop (see steps I took). Intending this as a step towards being able to draft postings offline (which I am used to doing, usually in a text editor, or Evernote), as well as posting without using the WordPress back-end.

Aim: run Quill locally, to write draft posts offline (and later maybe see if I can store drafts locally).

(I run MAMP PRO on my Mac, I also run a WordPress install locally, with all IndieWeb plugins enabled and a Sempress theme)

Quill: https://github.com/aaronpk/Quill

I downloaded, installed in http://localhost:8888/quill
The installation instructions mention using Composer to install a range of dependencies. I did not know what that was, so had to Google around to find out it is a tool to install php dependencies. I followed the instructions at https://getcomposer.org/download/ to install Composer on my Mac.
Then I could call the URL http://localhost:8888/quill/public/index.php ok.

However it doesn’t load images correctly and links don’t work as they are relative to http://localhost:8888/ and not http://localhost:8888/quill/public

Aaron, who created Quill, told me Quill expects to run as a root domain.
So: I added a host quill.test on port 80 in my MAMP set-up, with the /public as root folder. Now Quill loads fine and URLs work.

To get it to work right with mysql on my laptop I added a database called quill. I first had created new user, but that didn’t work. So I used an existing root user for that. I had to also run this sql query to create a table in the database that Quill uses.

After that it worked fine. Next up, thinking about how I’d like to change Quill, as an offline tool for me to prepare postings. Also want to experiment with using it to post to different blogs.

Just quickly jotting some thoughts down about bookmarking, as part of a more general effort of creating an accurate current overview of my information strategies.

Currently I store all my bookmarks in Evernote, by storing the full article or pdf (not just the url, removing the risk of it being unavailable later, or behind a paywall). I sometimes add a brief annotation at the start, and may add one or more tags.

I store bookmarks to Evernote from my browser on the laptop, but also frequently from my mobile, where I pick them out of various timelines.
There are several reasons I store bookmarks.

  • I store predictions people make, to be able to revisit them later, and check on whether they came true or not.
  • I store news paper articles to preserve how certain events were depicted at the time they happened (without the historic reinterpretation that usually follows later)
  • I store pages for later reading (replacing Instapaper)
  • I store bookmarks for sharing in (collated) blogposts, or on Twitter, or to send to a specific person (‘hey, this looks like what you were looking for last week’)
  • I store bookmarks around topics I am currently interested in, as resource for later or current desk research, or for a current project.
  • I store bookmarks as reminders (‘maybe this restaurant is a place to go to sometime when next in Berlin’, ‘possible family trip’, ‘possible interesting conference to attend’)

In the past, when I still used Delicious, when it had a social networking function, I also used bookmarking for discovery of other people. Because social tools work in triangles (as I said in 2006) I would check in Delicious who else had also bookmarked something, and with which tags they did so. The larger the difference in tags (e.g. I’d tag ‘knowledge management’ and they’d tag ‘medication’) or difference in jargon (me ‘complexity’, they ‘wicked_problem’, another ‘intractable’), the likelier someone would be part of different communities than me, but focusing on the same things. Then I’d seek out their blog etc, and start following their rss feeds. It was a good way to find people based on professional interests and extend my informal learning network. A way to diversify my inputs for various topics.

Visualization of my del.icio.us bookmarks
A visualisation of Kars Alfrink’s Delicious bookmarks, based on usage of tags, 2006, CC-BY

Looking at that list of uses, I notice that it is a mixture of things that can be public, things that can be public to some, and things that are just for my eyes. I also know that I don’t like publishing single bookmarks to my blog, unless I have an extended annotation to publish with it (more a reflection or response to a link, than just bookmarking that link). Single bookmarks posted to a blog I experience as cluttering up the timeline (but they could be on a different page perhaps).
The tagging is key as a filing mechanism, and annotation can be a helpful hint to my future self why I stored it, as much as a thought or an association.

When I think of ‘bringing bookmarking home’ in the sense of using only non-silo tools and owning the data myself, several aspects are important:

  • The elements I need to store: URL, date/time stored, full article/pdf, title, tags, notes. Having a full local copy of a page or PDF is a must-have for me, you can’t rely on something being there the next time you look at an URL.
  • The things I want to be able to do with it are mostly a filtering on tags I think (connecting it to one or more persons, interests, projects, channels etc.), and then having different actions/processes tied to that filtering.
  • I’d want to have the bookmarks available offline on my laptop, as well as available for sharing across devices.
  • It would be great if there was something that would allow the social networking type of bookmarking I described, or make it possible in decentralised fashion

When I look at some of the available open source bookmarking tools that I can self-host I notice that mostly the ability to save full pages/documents and the offline functionality are missing elements. So maybe I should try and glue together something from different building blocks found elsewhere.

What do you use for bookmarking? How do you use bookmarks?

A summary overview of changes I made to this site, to make it more fully a indieweb hub / my core online presence.

Theme related tweaks

  • Created child theme of Sempress, to be able to change appearance and functions
  • Renamed comments to reactions (as they contain likes, reposts, mentions etc.)
    in the entry-footer template and the comments template
  • Removed h-card microformats, and put in a generic link to my about page for the author in the Sempress function sempress_posted_on. Without a link to the author mentions show up as anonymous elsewhere.
  • Removed the sharing buttons I used (although they were GDPR compliant using the Sharriff plugin, but they got in the way a lot I felt.

Functionality related tweaks

Now that we’ve visited the Nürnberg IndieWeb Camp this weekend, Frank Meeuwsen and I are thinking about doing an IndieWeb Camp in the Netherlands sometime next spring. Likely in Utrecht, although if we find a good event to piggyback on elsewhere, it can be someplace else.

If you want to get involved with organising this, do ping me.

At IndieWeb Camp Nürnberg today I worked on changing the way my site displays webmentions. Like I wrote earlier, I would like for all webmentions to have a snippet of the linking article, so you get some context to decide if you want to go to that article or not.

It used to be that way in the past with pingbacks, but my webmentions get shown as “Peter mentioned this on ruk.ca”.

After hunting down where in my site this gets determined, I ended up in a file my Semantic Weblinks plugin, called class-linkbacks-handler.php. In this file I altered “get_comment_type_excerpts” function (which sets the template for a webmention), and the function “comment_text_excerpt”, where that template gets filled. I also altered the max length of webmentions that are shown in their entirety. My solution takes a snippet from the start of the webmention. I will later change it to taking a snippet from around the specific place where it links to my site. But at least I succeeded in changing this, and now know where to do that.

When the next update of this plugin takes place I will need to take care, as then my changes will get overwritten. But that too is less important for now.


The webmentions for this posting are now shown as a snippet from the source, below the sentence that was previously the only thing shown.

49° 28.51 N 11° 6.276 E
 

So, my webmention issues can’t be solved in the theme, as the content isn’t decided there. I need to dig deeper into the semantic-linkback plugin that I use to handle them.

I found out that webmentions are mentioned in full if they are short enough, and that I can set that limit. So I now want to change the way webmentions are stored. To solve my main issue, I need to select x characters around the spot where my site is mentioned, and set the character limit for webmentions to x+1.

Task 1 now complete. My blog declared 16 h-cards, one for each time my name was mentioned as author under the 15 blogposts on my front page, and 1 in the side bar. That last one is the only one I want to have, so I wanted to remove those underneath blogposts.

To do that, I had to create a child theme of the theme I use, Sempress. I created it on my hosting server directly, not through WordPress.

In the original theme I then hunted down the function used to show the author information for each posting, the sempress_posted_on function. This by viewing the various Sempress files in the WordPress internal Themes Editor. Then I copied that over to my child theme, and changed it. I simply removed the bits that turned my name into a link and all the h-card elements declared as classes around it. There’s no need to link to my author page here. I’m the only author, don’t have a profile page, and if you look at the ‘author archive’ it is a list of all the postings on this site.

I also cleaned up my single remaining h-card, adding a “p-note” class so that the blurb becomes part of the h-card, and making sure it lists the e-mail addresses correctly now.

The child theme I created will be useful for changing the way webmentions are presented on my blog as well.

It’s day 2 of the IndieWeb Camp in Nürnberg, which means it’s coding day. There are a few things on my list before I board a train at three thirty back home. None of them are as advanced or grand as the list I made earlier. I learned a lot yesterday, in terms of understanding what happens where when I use indieweb protocols, so I can now see the different layers of the lasagna more clearly.

So for today the plan is:

  • Remove a uid h-card microformat statement from my site template as it is declared multiple times instead of just once
  • Try and fix the authorisation header issue with IndieAuth
  • Work on how Webmentions are presented in this Sempress theme, which I now know is a theming issue, and not a webmention issue

A great effect of spending a day in the same room with 20 or so more geeking inclined others, is you get a lot of examples, tools and services mentioned. And geek is as geek does, I try them out on the spot. Today this helped me become aware that something is wrong on my server with the OAuth authentication I run. I thought that it was working fine, as it is no problem to actually use it, for instance to log in with my own domain name at the IndieWeb wiki. But when interacting with my micropublishing endpoint not all goes well.

Today I noticed that:

  • When I try to post from Micropublish.net, I can log in at micropublish.net, but when I try to post I get an ‘unauthorized’ error
  • When I try to use the Omnibear Firefox add-on it authorises ok, but then endlessly tries to load the list of syndication targets
  • When I use Quill to post, it posts fine, but does not load the list of syndication targets

Those missing syndication targets (now that I understand what they are from todays sessions) was what first caught my eye. Testing the micropublish endpoint on my server myself I got the correct response, but Quill turned out to get ‘unauthorized’ as response for that request, just like micropublish.net got for posting.

The endpoint gives a correct response

In WordPress my IndieAuth plugin has a diagnostic tool, and running that, it turns out an authorisation header is not send out.

Which seems to be causing the problems. Reading in the links provided it seems like with XML-RPC, my hoster is actively blocking that header. [UPDATE: It is not, it’s just not available in the way the server currently runs PHP] Resulting in exactly the same experience as I had with XML-RPC, that it seems to be only half working (namely the ‘safe’ uses work, while the rest fails). There’s a work around, renaming the headers that get send out, and implementing that work-around is a thing for me to do tomorrow. To see if I can get around being unauthorised. [UPDATE: That workaround did not work until now]

A quick test of my blog’s micropub endpoint (there’s a WordPress micropub plugin) . Using Quill to post this. Quill doesn’t support categories, so this should initially end up on the front page. Ultimately want to be able to simply post on the go from mobile through micropub.

Results:

  • It submitted the blogpost ok
  • It made HTML appear as regular text, did not interpret the link I added
  • It added all the tags as one tag
  • It, as expected, did not use categories

Also tried to do the same using Micropublish, but that throws an ‘unauthorized’ error. If it worked, it would however support categories, as well as various microformats, such as replies, like and rsvps. Need to take a look at that error message.

In just over a week I will be joining the Nuremberg IndieWebCamp, together with Frank Meeuwsen. As I said earlier, like Frank, I’m wondering what I could be working on, talking about, or sharing at the event. Especially as the event is set up to not just talk but also build things.

So I went through my blogpostings of the past months that concerned the indie web, and made a list of potential things. They are of varying feasibility and scope, so I can probably strike off quite a few, and should likely go for the most simple one, which could also be re-used as building block for some of the less easy options. The list contains 13 things (does that have a name, a collection of 13 things, like ‘odd dozen’ or something? Yes it does: a baker’s dozen, see comment by Ric below.). They fall into a few categories: webmention related, rss reader related, more conceptual issues, and hardware/software combinations.

  1. Getting WebMention to display the way I want, within the Sempress theme I’m using here. The creator of the theme, Matthias Pfefferle, may be present at the event. Specifically I want to get some proper quotes displayed underneath my postings, and also understand much better what webmention data is stored and where, and how to manipulate it.
  2. Building a growing list of IndieWeb sites by harvesting successful webmentions from my server logs, and publish that in a re-usable (micro-)format (so that you could slowly map the Indieweb over time)
  3. Make it much easier for myself to blog from mobile, or mail to my blog, using the MicroPub protocol, e.g. using the micropublish client.
  4. Dive into the TinyTinyRSS datastructure to better understand. First to be able to add tags to feeds (not articles), as per my wishlist for RSS reader functionality.
  5. Make basic visualisation possible on top of TinyTinyRSS database, as a step to a reading mode based on pattern detection
  6. Allow better search across TinyTinyRSS, full text, to support the reading mode of searching material around specific questions I hold
  7. Adding machine translation to TinyTinyRSS, so I can diversify my reading, and compare original to its translation on a post by post basis
  8. Visualising conversations across blogs, both for understanding the network dynamics involved and for discovery
  9. Digging up my old postings 2003-2005 about my information strategies and re-formulate them for networked agency and 2018
  10. Find a way of displaying content (not just postings, but parts of postings) limited to a specific audience, using IndieAuth.
  11. Formulate my Networked Agency principles, along the lines of the IndieWeb principles, for ‘indietech’ and ‘indiemethods’
  12. Attempt to run FreedomBone on a Raspberry Pi, as it contains a range of tools, including GnuSocial for social networking. (Don’t forget to bring a R Pi for it)
  13. Automatically harvest my Kindle highlights and notes and store them locally in a way I can re-use.

These are the options. Now I need to pick something that is actually doable with my limited coding skills, yet also challenges me to learn/do something new.

I was a bit surprised to see a Dutch title above one of Peter’s blog posts. It referred to the blog of Marco Derksen, that I follow. I think Peter may have found it in the list of blogs I follow (in OPML) that I publish.

Peter read it through machine translation. Reading the posting made me realise I only follow blogs in the languages I can read, but that that is limiting my awareness of what others across Europe and beyond blog about.

So I think I need to extend my existing list of demands for an RSS reader with built-in machine translation. As both Tiny Tiny RSS which I self host and Google translate have API’s that should be possible to turn into a script.