Ever since I was a child in primary school, my mental image of a year has been that of a circle, with January and December at the bottom, and July and August at the top (you’ll notice that this means the months aren’t evenly spaced around the circle in my mental image, spring takes up less of the circle than the fall. It’s a mental image, not a precise graph, likely influenced by my childhood sense of the endlessness of summers, and the long period of darkening days of fall and winter).

My mental image of a year ever since childhood

This Monday I completed a full circle around that image: I’ve been reading my own blog posts from previous years on each day, to see which of those I can take an idea or notion from to convert into a note in my digital garden (named ‘Garden of the Forking Paths‘). Peter has been going around the circle with me I read today (which in turn prompted me to write this), starting from my posting about it last year. He’s been reading his old blogposts every day, not just to reread but also to repair links, bring home images to self-host, clean up lay-out etc. I’m sure I am and have been my own blog’s most avid reader ever since I started writing in this space 19 years ago, and like Peter had been using my ‘on this day’ widget to repair old blog posts since I added the widget in early 2019.

Now I’ve come full circle on reading those blogposts for a year to mine them for their ideas and notions. The next cycle until the summer of 2022 I am adding a layer.

I will of course be making another round through my own blogposts like I did before. Because sometimes I missed a day, I haven’t repaired all of them each day, and I may take new meaning from them the next time I read them.
The layer I’m adding is also reviewing the personal notes I made on this day last year. This concerns the daily notes I make (a habit I started in April 2020), the other notes I’ve created on a certain date (work notes, ideas, travel etc), and indeed the blog posts I converted to notes dated on this day last year.

I see Frank has also picked up on Peter’s posting, and is embarking on a year of reading his own daily postings as well. Like Frank, I have never blogged on this day of the year since this blog started. And like for his blog, that has now changed.

Going in circles… I suspect life is circles, not turtles, all the way down. At least when you get a bit older that is.

Het lijkt me leuk om nog een keer een nederlandstalige Obsidian meet-up te doen (online). Praten over hoe je met notities maken en gebruiken omgaat, wat wel/niet voor je werkt, en bij elkaar de kunst afkijken en ideeën opdoen. De eerste sessie van eind april vond ik erg interessant.

Ik kondig hem maar gewoon aan: Zaterdag 10 juli om 20:00. Op mijn Jitsi-server.

Recently I created a proof of concept of publishing book lists, what I’ve read, what I plan to read etc., using OPML. Andy Sylvester picked it up and created his own list, as a way of experimenting with federated bookshelves. He used the XSLT style sheet I created to be able to render the OPML file in a human readable way in your browser. It seems to work, although it doesn’t render in the browser yet.

Andy, I think the reason it doesn’t render in the browser is because you are loading the style sheet from my domain. The XSLT file must be hosted on the same domain as the OPML file, otherwise it triggers cross-site scripting protections. It should work properly if you download the XSLT I use and put it on your own host.

Hosting the XSLT style sheet also allows you to adapt one other detail: right now there are some tweaks in my version based on the author name of a collection or feed. If it is my name it renders as ‘my list’ and otherwise as ‘list I follow’. When you self host the style sheet you can change the mentions of my name to yours and it will make the proper distinction between your lists and lists you follow.

Herzlichen Glückwunsch zum 16. Geburtstag deines Blogs, Dirk!
Du hast dabei auch den Wunsch erwähnt wieder mehr Pingbacks und Trackbacks zu verwenden, damit Blogger sich wieder leichter vernetzen in guter alter Blogtradition.

Seit einigen Jahren verwende ich Webmention. Ping- und Trackbacks sind sehr empfindlich für Spam (und mein Hoster blockiert daher das xmlrpc Endpoint in meinem WordPress Blog), und Webmention viel weniger. Webmention kontrolliert selbst ob eine Seite deine Seite tatsächlich erwähnt, und wie. Webmention funktioniert auch mit statischen Websites, obwohl das natürlich immer mehr Getue ist als man vorher denkt.

Für mich sind die distribuierte Gespräche die Blogs, Trackbacks und Webmentions möglich machen sehr wichtig. Als ich 2002 mit meinem Blog anfing war das auch das beste unerwartete Resultat, plötzlich fand ich mich in einem ständig wachsenden Netzwerk von Peers, von denen ich mit vielen noch immer in Kontakt stehe.

Frank schrijft over de soms verwarrende ervaringen met zijn Post Kinds plugin in WordPress. Die plugin gebruik ik, en ik heb met regelmaat dezelfde problemen.

Post Kinds maakt het mogelijk dat ik makkelijk postings van anderen kan ‘liken’ ‘reposten’, er op kan antwoorden, én dat aan de oorspronkelijke poster kan laten weten.

Post Kinds probeert daarvoor gegevens van de posting waarop je reageert op te halen (link, titel, auteur, een quote etc.) en slaat die in je eigen site op.

Wat Frank en ik regelmatig als probleem hebben is dat Post Kinds niets ophaalt en een lege posting maakt, of wat ik ook vaak heb, wél alle gegevens ophaalt van de bron-posting, maar niet opslaat en een lege posting maakt. Zonder een idee te hebben waarom dat gebeurt.

Nu kan ik ook zonder Post Kinds een ‘like’ of antwoord posten, door zelf de inhoud de juiste eigenschappen mee te geven. Dat roept meteen de vraag op of er gevolgen zijn voor mijn bestaande postings als ik Post Kinds uitschakel.

Dat heb ik even geprobeerd op een WordPress site die ik gebruik om dingen te testen.
Daar maakte ik een ‘like’ aan op een posting van mezelf op dit blog.

Een like op mijn test-site, gemaakt in Post Kinds.

Vervolgens schakelde ik de Post Kinds plugin uit, met als resultaat dat dan de opgeslagen extra informatie niet meer wordt getoond:

Na uitschakelen van de plugin is de like ook verdwenen

Er staat nu geen enkele informatie of link meer naar de posting waar ik op reageer, en alleen mijn reactie staat er nog.
De Post Kinds plugin heeft dus niet alleen invloed op hoe informatie wordt getoond, maar ook of die informatie überhaupt uit de database wordt opgehaald. Niet geheel verrassend uiteraard.

Dit heeft als consequentie dat ik op deze site Post Kinds niet kan uitschakelen, ook als ik het voortaan niet meer zou gebruiken, zonder dat ik de functionaliteit van Post Kinds op de e.o.a. manier opnieuw maak in mijn site-opmaak. Omdat anders bestaande postings die met die plugin zijn gemaakt niet meer leesbaar zijn.

Die lock-in is een onaangename verrassing. Iets waarvan ik nog niet exact weet wat ik er van vind.

After I built a proof of concept of using OPML to share and federate book lists yesterday (UPDATE: description of the data structure for booklists), Tom Chritchlow asked me about subscribing to OPML lists in the comments. I also reread Matt Webb’s earlier posting about using OPML and RSS for book lists.
That results in a few remarks and questions I’d like to make and ask:

  • OPML serves 2 purposes
    1. In the words of Dave Winer, opml’s creator, OPML is meant as a “transparently simple, self-documenting, extensible and human readable format that’s capable of representing a wide variety of data that’s easily browsed and edited” to create and manipulate outlines, i.e. content structured hiearchically / tree-like.
    2. the format is a way to exchange such outlines between outliner tools.
  • In other words OPML is great for making (nested) lists, and for exchanging them. I use outlines to build my talks and presentations. It could be shopping lists like in Doug Engelbart’s 1968 ‘mother of all demos’. And indeed it can be lists of books.
  • A list I regard as an artefact in itself. A list of something is not just iterating the somethings mentioned, the list itself has a purpose and meaning for its creator. It’s a result of some creative act, e.g. curation, planning, writing, or desk research.
  • A book list I regard as a library, of any size. The list can be as short as the stack on my night reading table is high, as long as a book shelf in my home is wide, or as enormous as the full catalogue of the Royal Library. Judging by Tom Critchlow’s name for his booklist data ‘library.json‘ he sees that similarly.
  • A book list, as I wrote in my posting about the proof of concept, can have books in them, and other book lists by myself or others. That is where the potential for federation lies. I can from a book point to Tom’s list as the source of inspiration. I could include one of Tom’s booklists into my own booklists.
  • A list of books is different from a group of individual postings about books as also e.g. presented on my blog’s reading category page. I blog about books I read, but not always. In fact I haven’t written any postings at all this year, but have read 25 books or so since January 1st. It is easier to keep a list of books, than to write postings about each of the books listed. This distinction is expressed too in Tom Macwright’s set-up. There’s a list of books he’s read, which points to pages with a posting about an entry in that list, but the list is useful without those postings.
  • The difference between booklists as artefacts and groups of postings about books that may also be listed has impact on what it means to ‘subscribe’ to them.
    • A book list, though it can change over time, is a steady artefact. Books may get added or removed just like in a library, but those changes are an expression of the will of its maker, not a direct function of time.
    • My list of blogsposts about books, in contrast is fully determined by time: new entries get added on top, older ones drop off the list because the list has a fixed length.
    • OPML is very suited for my lists as artefacts
    • RSS is very suited for lists as expression of time, providing the x most recent posts
    • Subscribing to RSS feeds is widely available
    • Subscription is not something that has a definition for OPML (that you can use OPML to list RSS subscriptions may be confusing though)
    • Inclusion however is a concept in OPML: I can add a list as a new branch in another list. If you do that once you only clone a list, and go your own seperate way again. You could also do it dynamically, where you always re-import the other list into your own. Doing it dynamically is a de-facto subscription. For both however, changes in the imported list are non-obvious.
    • If you keep a previously seen copy and compare it to the current one, you could monitor for changes over time in an OPML list (Inoreader did that in 2014 so you could see and subscribe to new RSS feeds in other people’s OPML feed lists, also see Marjolein Hoekstra’s posting on the functionality she created.).
  • I am interested in both book lists, i.e. libraries / bookshelves, the way I am interested in browsing a book case when I visit somebody’s home, and in reading people’s reviews of books in the form of postings. With OPML there is also a middle ground: a book list can for each book include a brief comment, without being a full review or opinion. In the shape of ‘I bought this because….’ this is useful input for social filtering for me.
  • While interested in both those types, libraries, and reviews, I think we need to treat them as completely different things, and separate them out. It is fine to have an OPML list of RSS feeds of reviews, but it’s not the same as having an OPML book list, I think.
  • I started at the top with quoting Dave Winer about OPML being a “simple, self-documenting, extensible and human readable format that’s capable of representing a wide variety of data that’s easily browsed and edited“. That is true, but needs some qualification:
    • While I can indeed add all kinds of data attributes, e.g. using namespaces and standardised vocabularies like schema.org, there’s no guarantee nor expectation that any OPML parser/reader/viewer would do anything with them.
    • This is the primary reason I used an XSL template for my OPML book lists, as it allows me to provide a working parser right along with the data itself. Next to looking at the raw file content itself, you can easily view in a browser what data is contained in it.
    • In fact I haven’t seen any regular outliner tool that does anything with imported OPML files beyond looking at the must have ‘text’ attribute for any outline node. Tinderbox, when importing OPML, does look also at URL attributes and a few specific others.
    • I know of no opml viewer that shows you which attributes are available in an OPML list, let alone one that asks you whether to do something with them or not. Yet exploring the data in an OPML file is a key part of discovery of other people’s lists, of the aim to federate booklists, and for adopting better or more widely shared conventions over time.
    • Are there generic OPML attribute explorers, which let you then configure what to pay attention to? Could you create something like an airtable on the fly from an OPML list?
    • Monitoring changes in OPML list you’re interested in is possible as such, but if OPML book lists you follow have different structures it quickly becomes a lot of work. That’s different from the mentioned Inoreader example because OPML lists of RSS feeds have a predefined expected structure and set of attributes right in the OPML specification.
    • Should it be the default to provide XSL templates with OPML files, so that parsing a list as intended by the creator of the list is built right into the OPML list itself?
    • Should we ‘dumb down’ lists by moving data attributes of an outline node to a sub-node each? You will reduce machine readability in favor of having basic OPML outliners show all information, because there are no machines reading everything yet anayway.

I think for the coming weeks I’ll be on the lookout for sites that have book lists and book posting feeds, to see what commonalities and differences I find.