Last tended on 3 May, 2023 (first created 16 January, 2022)

, ,

Current status:

  • Created a working way to submit JSON formatted blogposts to this site, code on GitHub
  • Included that in my earlier scripts to create posts from my feed reading, that I now no longer then have to post by hand.
  • Created a Microsub client to replace my feed reader, in which I can respond directly from within the page I am reading, and do so to different websites I maintain.
  • Combined the same basic script with a local webform so I can very quickly post something. I don’t think I will be using this possibility much but it was a good way to add a front-end to the micropub script first and fast.
  • Can take a local markdown file written in Obsidian and post it as html to my site. This is by far the most useful to me
    • I write my blogposts in Obsidian, drafts live in a specific writing folder. They have two inline data fields, status and tags. While writing a note has status ‘writing’, when it is ready to publish I set the status to ‘draft’.
    • Within Obsidian I use the same status field to create a dynamic overview of posts being written, ready to publish, and previously published (using the DataView plugin).
    • When I’m ready to post, I hit a hotkey which launches my PHP script. It looks at all files in the specific writing folder and checks for files that changed within the last few hours and if those contain a status field ‘draft’. For those that do it transforms the markdown in those files to html, and then posts that to my site, using the tags in the other data field to tag and categorise the post. It also sets the status field in my notes from ‘draft’ to ‘posted’.
    • I could also run the script every hour or so using a cron job, so that anything posts automatically, while I go on with my other work.
  • Use the form in my feedreader to save an article in markdown to my notes in Obsidian with my rationale and some remarks.
  • Use the form in my feedreader to post an annotation to Hypothes.is (similarly formatted to posting it to my notes in Obsidian)

Rationale:

Local first, personal, narrow band
See blogpost.

Narrow band means:
my preferences can be treated as default inputs
my tasks are predictable to me
together they are functions with parameters, aka code.

Sources:

Micropub standard
IndieWeb wiki on Micropub
Tips from Jan Boddez (in Dutch)
Jamie Tanna’s work on his personal micropub client
Jamie Tanna’s tool to get authorisation tokens manually, great for testing/development.
Parsedown, which I use to translate markdown files written in Obsidian, to HTML for my site.

14 reactions on “My Personal Micropub Client

, ,

  1. I’ve started to write a Micropub client. Not a generic one (there are a range of them out there), but one for my personal use case(s) and specific set-up. For instance so that I can prepare a short blogpost within my everyday note taking system, and then post it to my website here.
    I’m doing this because I found that my personal use cases don’t fit well with the clients that are out there. I want something that is local first. Something that stays within my workflow, does not require me to switch context or tools (not having to go to my WordPress back-end or a separate app to post e.g.). Positioning blogging as something that isn’t a separate task, where posts get prepared as a regular by-product of my other tasks, just needing me to finish them and hit post.
    A personal software tool in short.
    The upside compared to more generic existing Micropub clients is, that I know my own specific use cases and set-up. A personal tool does not have to cater for every option of eventuality, just needs to cater to something very specific. That should make it easier to build as a ‘narrow band’ tool, not requiring many ‘what ifs’ to be covered. This because, as I wrote in the linked blogpost, in narrow band tools, my context and preferences are the default inputs, and my tasks are predictable, allowing them to be put together into the equivalent of a function that you pass a few parameters. The result basically is code.
    I’m writing it from scratch and now am trying my hand at writing the most minimalistic script that can take some content and post it to my blog, focusing on sending something from my php script to my website through its Micropub endpoint.Using the helpful suggestions of Jan Boddez on where and how to start, reading up on Jamie Tanna’s experience doing the same, and using his tool to manually generate the right authorisation tokens for Micropub (found here).
    I’ve hit my first snag to solve, which is that my calls to the Micropub endpoint fail because there’s an issue with the HTTPS encryption (certificate verify failed). Procrastinating on solving that, I’ve written this post, and opened a page here to track progress.

  2. This week was pretty regular, although we mentally prepared ourselves everyday for the message school would close again. When there are 3 children in a class with Covid19, the entire class is expected to go itno quarantaine at home. We made it through the entire week, though Friday the count was 2. So it would not be surprising if we receive an 8 AM message Y can’t go to school tomorrow.
    This week I

    sent some final invoices for last year, meaning we actually had 1% more turnover in 2021 than 2020. As 2020 was a 18% increase compared to 2019, I am very pleased with that outcome.
    calculated the bonus that results in for our team. We allocate 10% of all turnover above the budgeted break even point for additional income for our team (excluding myself and other co-owners). Made those payable with the January payroll round.
    did some bookkeeping for the Open Nederland association I’m treasurer of.
    approached some network partners to possibly work with one of my clients on a European tender
    summarised a range of Digital Europe Program calls for proposals and distributed them to people I think might be interested to submt proposals.
    made some progress with our company’s ‘how busy are we? tracker’, for each us to be better able to balance their week the way works best for them, and for us as a team to have a better handle on when we’re overloaded, running out of time in a project, or not paying enough attention to (internal) projects. The key is not to maximise efforts, but to be able to stay balanced as individuals and as a whole.
    spent quite a bit of spare time on building my own Micropub client. I have most of what I envisioned at the start working now. I can easily post from my feedreader, as well as from my notes in Obsidian. This posting for instance was written in my notes, and then posted directly to my site. (You can tell, because I changed the numbering in the title from YY#WW to YY-WW, as Obsidian does not accept # in the note titles.
    bought a new laserprinter for our office, and brought it to the office. While there looked at the neighbour’s office in our building. They will be leaving, and we are contemplating adding their space to ours.
    had our monthly half day all hands (online) meeting with the team
    did some paperwork for the Open State Foundation I chair, with stuff to sign etc.
    Y had a fever Friday evening, but by Saturday morning was fine again. That’s not unusual for 5y olds, but in these pandemic times any occurrence of fever e.g. stands out way more.

  3. I’ve started creating my own feed reader. Which I find is a pretty wild thing to say for me, given my limited coding skills.
    Last month I created my own Micropub client. Micropub allows me to post directly to this site, without using the WordPress admin back-end for it. In fact I’m writing this as plain text, and at the end will hit a keyboard short cut for it to appear on my site. Part of the things I post to this site however are responses to posts by other people. I follow those people through their RSS feeds. Using Micropub I could post my responses directly while I’m reading the post I’m responding to, provided there’s a ‘reply’ button in my feed reader.
    Feed readers usually don’t have such reply options. In fact, feed readers don’t have a whole range of functionality I’d like them to have. Building my own feed reader as a generic application probably would be hard. But as personal software tool, a ‘narrow band‘ tool that caters just to me it becomes easier to do. I’m pretty predictable to myself, and my workflows are known to me, so there are not many ‘what-ifs’ to cater for. My preferences are the default. As a result such a local tool could be more versatile, and much smarter in responding to my wishes than any fancy application, because I know what I want.
    I said at the start I don’t know much about coding, but with some effort I can find my way in PHP well enough, and have been hand coding web pages ever since 1993.
    Microsub is a web standard that makes a key difference: it splits the part where feeds are retrieved from other websites and stored in a database, from the part that presents the contents of the database. The retrieving and storing part is the Microsub server, for which I use a WordPress plugin called Yarns, but there are various others (and you could also build your own). The server has an API that allows you to query the content it stores. The presentation and reading part is the Microsub client. The client sends queries to the server and shows the results on screen. And that’s the part I’m building. Because building that part is basically like building a website, that every now and then requests something from a database.
    The first step has been taken. I run a php script locally that shows me a webpage like in the image.
    Screenshot of my feed reader to be, channels on the left, fetched feed items on the right.
    It correctly grabs the groups of feeds and feed content from the Microsub server, and shows them on screen. It can of course be made to look nicer, but the basic concept works.
    To this, unlike other feed reading apps, I can add my own response buttons. As links, buttons, or a form below each post. For that I already have scripts I can reuse, from when I was making my Micropub client, the bit that does the posting to my site.
    Then I will be able to write my reactions directly underneath the bit I’m reading. Strengthening how my blog allows me to have distributed conversations. Getting that bit closer to the read/write web as it was envisioned.
    For many of the other elements on my list of ideal feed reader features, I probably have to do some local storage. Specifically for things like visualising the activity of a feed, or doing things like showing me the topics people in a specific community are talking about this week, local storage might be needed.
    I have a basic roadmap of steps to take, more or less following my post about this from last year around this time. For now this first step, a proof of concept that allows me to read feeds, is done.

  4. Today I posted a bookmark directly to this blog, straight from a feed reader I created myself. A few days ago I already posted about how I am building a Microsub client, which basically is the front-end of a feed reader: it’s the part where you actually read the content from the RSS feeds you subscribe to. It does not in itself subscribe to any feeds, or store what it gets from those feeds. That’s the Microsub server, and I use an existing WordPress plugin called Yarns for it. By splitting the server (subscribing, fetching and storing) from the client (presenting), making the feed reader becomes building a website that can show me whatever is stored in the server. It makes it possible to shape my feed reader the way I want it. I had the basic fetching and presenting part done earlier this week. The next step was interacting with the things I read from within the reader, having a reply button underneath each posting, with which I can post to this blog. I’ve got that part working now too. To build it I re-used things I previously already created. For instance I already had a form, to formulate a response (originally stuck on the back-end of another feedreader), and a way of posting directly to this site. So adding this was more a remix than coding something new. The only new additions were the ‘glue’ needed to join the existing parts together, and a bit of Javascript to be able to process the form in the browser, while staying on the same page as where I’m reading feeds. And it works!
    Here’s a posting by Peter, as presented in my feed reader:

    Note the button underneath which says in Dutch ‘respond to the post above’. Each posting has a button like that.
    Clicking such a button reveals a form (which is at first hidden, and revealed by a line of Javascript).

    In the form I specify what type of response it is (reply, bookmark, or favourite), and I write my reaction, and can add a quote from the article above which is useful if I’m responding to something specific, and provides context for readers on my own site who aren’t aware of the posting I’m responding to. It also allows me to change the title, author name and URL of the original post. This sometimes is useful when the title is very long, the name in the feed is a user name (e.g. ‘siteadmin’), or when the URL contains appended tracking elements that I want to remove.
    Underneath is another button saying ‘Process’ in Dutch.
    Hitting that button activates a little bit of Javascript to call the PHP script that processes the form, without leaving the page. It means that once I’ve clicked the button I can go on reading in the same page. The script that silently processes the form, turns what I’ve submitted into proper HTML for a posting, and then sends it on to my blog. Where it ends up as:

    On my blog you get to see what the processing script has created, including e.g. the icon for a bookmark (or reply or favourite).
    I’m pleased with how this works now, and I can start adding a few things. Like adding optional titles to a reaction (as I’ve done in this posting), or to add multiple tags or categories. For these too I have existing code sections I can re-use. Another element is being able to subcribe, unsubscribe and mark things as read from within the Microsub client.
    After that it will become more difficult, if I want to work down my list of things an ideal feed reader should be capable of.
    Part of that may require storing feed items client side, or maybe even also building my own Microsub server. So it’s a potential rabbithole I want to approach with caution. For now I will try this as my new workflow for a week or two.
    (also posted to Indienews)

  5. I can now create pages in WordPress using my personal Micropub client. This makes it possible for me to publish notes from my personal knowledge management system to my WordPress site as pages in the Digital Garden I keep there. Like this one as proof of concept.
    In the past weeks I created a way to publish directly from my notes to my blog using Micropub. I also added a selector to choose to which site I want to publish to.
    Now there’s an added option to create a page, and not just posts.
    Until now I created those pages manually whenever I thought to document something publicly. The result of that is that creating a page involves a certain friction, and the number of pages has stayed very low as a result. I hope this step may make my pages section more useful in sharing documentation about e.g. concepts I find important or things I created.
    Combined with the site selector this also means I can now easily add pages to my professional site, my company’s site and e.g. the IndieWebCamp.nl site.
    (also posted to Indienews)

  6. This page was created using my personal Micropub client. This allows me to post not only posts but also pages to my various WordPress websites. And to do so along several paths, such as directly from my local notes. This page is merely a proof of concept. My intention is to use this way of posting to better extend my publicly shared notes in my Digital Garden. For now it is just about creating new pages. A next step would be to also apply this to updating of pages.

  7. This was a pretty regular week, which was good to have and be able to get a few things done. I did feel tired a lot though. From next week most pandemic measures will be abolished, and we’ll see how that changes the equilibrium of our rhythms again.
    This week I:

    had a follow-up meeting with my business partners about a few points we didn’t get to in last weeks conversation.
    did some more monthly invoicing
    had the weekly client meetings
    had a session with two European Commission directorates about digital twins, comparing each other’s work and plans in these areas. Also prepared the meeting notes and circulated those later in the week, as well as having a follow-up conversation.
    welcomed a new colleague in a client team
    spent a day at a client’s office
    caught up with the director of the NGO I chair and planned a meeting for next week.
    did a session with the CIO office of a ministry about the coming EU data legislation
    joined a working session of national INSPIRE representatives, from France, Austria, Germany, Belgium, Denmark and the Netherlands, to discuss the EU data legislation’s impact and the DEP calls to prepare some of the sectoral data spaces envisioned.
    had an evening meet-up of the Dutch Creative Commons association to go through the new government agreement w.r.t. aspects of openness, such as open culture, open education, and open science.
    decided to join a trip to Montenegro in June with my old fraternity
    turned the coming new legal instruments for data sharing in to a list of questions to ask of a number of experimental projects in the Netherlands to explore what current data sharing or usage issues they encounter, and whether the newly created instruments would be useful for them. Not just to make things easier per se, but also to ensure responsible data governance and usage
    extended my micropub client with some more options, being able to choose more sites to post to, and to post pages not just blogposts.
    did some gardening, pruning some shrubs
    participated in the IndieWeb pop-up session about personal libraries.

  8. In reply to Publish Obsidian Documents to WordPress by Curtis McHale
    I didn’t come across this posting at the time. As you say, having to log in every single time as well as having to send it already formatted raw HTML (and not the markdown one writes in in Obsidian), are drawbacks. XMLRPC is blocked by my hoster (part of their security decisions), and I have disabled it within WP therefore. I went with Micropub to publish from Obsidian to WordPress, around the same time as this posting. As notes in Obsidian are plain text files in the local filesystem, I run a local script outside Obsidian periodically checking for files marked for publishing. Using Micropub it can post such files, while turning markdown into html, to several of my WP-run sites, both as post and as a page. The latter allows me to add them to my wiki-like section of my blog. Just posting at the moment though, not updating.

    To publish click the WordPress icon in your sidebar which will reveal a panel in the sidebar with a Publish button for you to click. Once you click the Publish button a window opens up with your username prefilled and asks you to fill in your password. The plugin … publishes RAW HTML on your site. … While this does work, it feels far from optimal to me. I’d love to see the option of pushing straight markdown to the editor.
    Curtis McHale

  9. This page is to sketch out my tentative thoughts about adding check-ins to my website.
    My history with check-ins
    From October 2004 I used Plazes, the original social geolocation service. I met one of the creators of Plazes at a workshop I organised in early 2004 when it was still in its early stages. I used it until sometime between 2008 when it was acquired by Nokia and 2012 when Plazes was shut down by Nokia.
    Foursquare was launched in 2009. My first Foursquare check-in was in September 2009. I used it similarly to Plazes. In 2014 it split up in both Foursquare and Swarm, of which the latter contained the check-in functionality. It led me to use Swarm less, and my last check-in was at the end of 2016.
    I also used Dopplr, which was a slightly different type of check-in service. Where Plazes and Foursquare tracked specific locations I was at that moment, Dopplr let me indicate a city where I would be in the future. I first used it in June 2007, shortly after it launched and I suppose after hearing about it at the Reboot conference that month. It immediately was very useful, and I list it in 2007 as a tool I actively use. I last used it in 2012 to announce my month long stay in Copenhagen. It shut down in 2013.
    In my site I have a posting category ‘plazes‘ for check-ins.
    For a while I posted check-ins, from March until September 2019. It was based on automatically importing Swarm check-ins into my site, for which I started using Swarm again temporarily. Since then the pandemic made checking in superfluous. I only checked in three times afterwards, two times I was ‘outside’ in 2020 between lockdowns, and once last summer, on our way to our holiday destination. That last one was a check-in I created by hand on my site, without using an external service.
    The purpose of check-ins
    For me the purpose of check-ins is to help create serendipitous meetings with people I know, and with people that I don’t know but are close to me in the network graph. Crossing paths are an opportunity, and they are scarce, making spotting them valuable.
    Such meetings can be aided in two ways:

    By checking in where I currently am, people I know or who know of me and who are in the same city at that moment could see me pop-up in their vicinity. This is like what Foursquare and Plazes let me do. It is how I met Peter.
    By checking into where I will be and when, people I know or who know of me and who also will be in the same city in that period. This too has been of tremendous value. By finding out beforehand that someone in my network and I will be in the same city at the same time, or because people in the city knew I would be visiting. In both cases it allows people to reach out to each other to agree a meeting.
    These effects in the past for me were never frequent, but they happened often enough to make checking-in when traveling (and checking other’s check-ins in places I usually frequent) a habit.

    Self check-ins
    The silos I used to use have gone away or changed in other ways. The average life span of a digital service is way shorter than the average life span of a person, or than the time span in which a digital service might be useful to a person. This means I am convinced there is value in bringing back things that were useful in the past, especially if done in a way that does not create another silo or exploits its users.
    It also means my own blog has been in existence longer than Plazes, Dopplr, Swarm, and indeed platforms like Facebook or Twitter. My blog is essentially the best place to contain check-ins. Check-ins are just another part of my avatar.
    My blog is also limited: I know many people and many people know of me who do not read my blog, so they would not encounter such check-ins.
    The needed check-in flow
    There are three elements to a check-in

    Determining my location or venue (either current venue, or future location)
    Posting the check-in for a location or venue
    Ensuring discoverability of my check-in

    Determining my location or venue
    This is what Foursquare/Swarm supported well. They’d use your position and compare it to a database of venues. You’d then select the right venue from an overview and proceed to checking in. A database of location names is not a trivial thing.
    For check-ins into a city you could use a geographic names database.
    This is never easy, and well outside the realm of something you’d do on your own website. What can be done is, during a check-in, go and retrieve information from such a database, if a commonly accessible option exists, and use it. Experimental projects like Meridian aim to build on venue information and geographic names contained in Open Street Map, and contribute back to it.
    Posting the check-in
    This is the easiest part, as it boils down to creating a post on my site. Shaping that post can take some effort, depending on the amount of detail I’d want to give.
    Does it link to the website of the venue I’m visiting, does it link to a page about a city I plan to be in? Does it show a map of the surrounding area? Does it link to a location in one of the Foursquare type of services? If it does anything like that it probably depends on information from the previous step.
    In its simplest form I’d name the venue or city simply by mentioning it in the post, and at most add a URL manually or a short sentence about what brings me there. As in the last check-in I did on this site. That last check-in contains a nice SVG icon, and that type of thing would need to be in a template. For a simple check-in I could use micropub, probably for ease of use as a stand-alone form.
    If I want to include retrieving and using information w.r.t. determining my location, then it would need several steps of interaction to help fill that submission form.
    Ensuring discoverability
    I think this is the hardest part. If the purpose is to allow serendipitous meet-ups, then any check-in must be easy to discover by others that I think would be worthwile to meet or others that think it would be worthwile to meet me. For these people to have to read my blog closely enough to know where I am / will be is too much to expect.
    Silos like Dopplr had limited numbers of users, who were more or less by default in the same sort of groups I was in. Having an account was the right level of preselection. Swarm much less so, but it allows you to mutually connect with others and disclose check-ins to your existing network only.
    This is the reason I used Swarm for check-ins before, as it was possible to check-in using Swarm (solving the problem of determining my location) and then post that to my site automatically (while the check-in in Swarm solved the discoverability part). It couldn’t be done the other way (initiate the check-in here, and syndicate it to Swarm).
    What is possible is to start with the regular readership of this blog, those that follow my RSS feed. That is a limited audience, but definitely a group of people that I would like to meet if an opportunity arises. It would be up to them to overcome the friction of responding to a check-in, but friction is not a bad thing per se. I also think that travel itself has a higher threshold than before, making check-ins connected to travel stand out more as well. Another step would be to alert other types of services or websites, e.g. micro.blog or posting it to my Mastodon stream or my private twitter account. Or post it as an activity pub message on this site, so it is available to an approved list of activity pub followers.

  10. Today at 14:07 twenty years ago, I posted my first blog post. Well over 3000 posts later, this blog has been an integral part of quite a stretch of my life, to the point where it is unavoidable that if you’ve read along you now probably know more about me than I think I’ve actually shared in writing.
    In the past few years I’ve taken this blog’s anniversary as a moment to reflect on some of my blogging practices. That yearly reflection started 5 years ago when I was just leaving Facebook. This time it coincides with #twittermigration, where many people are exploring federated options now that Musk has taken over Twitter. Whether that is something that will stick is uncertain of course, but it is interesting to watch playing out. Other earlier such reflections: 2018, 2019, 2020, 2021.
    Last year I wrote:

    For the coming time this note-to-blog pipeline, and making it easier for myself to post, will be my area of attention I think. Let’s see next year around this time, when I hit the two decade mark with this blog, how that went.

    Indeed, that is exactly what I did from early this year: ensure that I could post directly to this blog in different ways. The key to that was create a Micropub client, which posts to this site. Once I had that I could create different paths to feed a post to that Micropub client. From inside a feedreader, directly from my notes in Obsidian, or through a simple web form. More recently I created different versions of that web form, to also post check-ins, and announce travel plans. In all fairness, my habits in how I post things haven’t fundamentally changed yet: I’m writing this in the WordPress back-end. But increasingly I am using those other paths to get content into this site.
    Making it easier to post, puts the friction of blogging where it needs to be: wanting to write something.
    Connecting things up into flows, blurring the lines between my site, online interaction and my notes for instance, stays an interesting thing to experiment with. In the past months I started using Hypothes.is more intensively, to annotate things I read on the web. Already all those annotations seamlessly end up in my local notes, from where I can work with them, and where they concern my own site I’ve made them visible here.
    But most of all, aside from all the more nerdy things of tweaking this site and my information flows, this blog has been a source of conversation for twenty years now. It was my original hope, and my ongoing motivation to keep blogging.
    Which brings me back to the earlier mentioned #twittermigration. Musk declared the bird is freed, but it seems quite a few people think the bird was caught and rather take wing on their own. Quite a few of those are the people I early on conversed with through their blogs too. If there’s a key difference between ActivityPub/Mastodon and Twitter, it’s that the federated version only ‘works’ if you actually interact with other people. Likes don’t matter in highlighting a message. Boosts do only share a message with your own followers, and has no other effect. It doesn’t mean it will be put higher in the timeline of others, it’s all in the now. There’s no amplification. Conversation is the key, if you interact then others may also see it and join the conversation. Twitter used to be like that too.
    Conversation is key, and that is why I blog.
    Here’s to another year of blogging and conversation.

  11. Starting in 2010 I have posted an annual ‘Tadaa’ list, a list of things that made me feel I had accomplished something that year. I started doing it in 2010 because I tend to forget things I did after completion. Like last year I didn’t feel much like writing this. It seemed a greyish year, passing in the shadow of the war that Russia wages on Ukraine. A year where Covid is still very much around us, yet things sort-of returned to normal. But for a different value of normal, a somewhat twisted normal, a parallel one. An appearance and pretense of normal perhaps more than an actual normal. An intransitive year almost, taking me from 2021 to 2023, but without object. Or maybe it’s because the last few months were extremely busy, pushing through more than being in the here and now, which sapped the colour from the months preceding it. Which is as good a reason as any to try and list the things that did bring a sense of accomplishment. I do have my day logs from the entire year, as well as kept up posting week notes here, so I can look back at what went on these past 12 months.
    So here goes, in no particular order:

    The European High Value Data list has become law in December. Two years ago I had a defining influence on the data it lists for earth observation, environment and meteorology. Even if the implementation period is 16 months and some datasets may get a temporary exemption for another two years, and even if it doesn’t go far enough (mostly on company information) to the taste of many, it is an important milestone. It draws the line under discussions about paywalls and exclusive access rights that were already old when I got involved in open data in 2009, in favor of mandatory pro-active publication for all to use freely. I’m glad I could translate my experience in this field into something now enshrined much more solidly in EU law.
    We took regular breaks as a family. We started the year in Luzern, spent a week in Limburg in April, spent three weeks in Bourgogne doing most of nothing. Had weekend trips, to various musea for instance. One of the things E and I decided, while hanging out in front of our tent in the Bourgogne last summer, was to mark all school holidays in our own calendar in the coming year, to either take them off ourselves, or to keep them free of work appointments. I think it should be possible without impacting my output, but it will require careful planning.
    I’ve kept an actualised guide about the incoming EU data legislation in Dutch for a client. It gets automatically generated directly from my own working notes in Obsidian which appeals to me in terms of nerdy workflow, and it is highly used by Dutch government data holders and regularly mentioned as a very useful resource which speaks to its utility.
    I enjoyed homecooking a few software tools. Early in the year I adapted my OPML booklists so they are generated directly from my own book notes. (Although the negative side effect has been I did not blog about my reading at all, which I intend to change soon) I particularly enjoyed enabling myself to post through Micropub to my various websites. Through it I can post from various sources bypassing the WordPress back-end, inluding directly from my local notes in Obsidian, and from my feedreader. Every time feels like magic despite the fact I wrote the scripts myself. I think that sense of magic stems from the reduction of friction it affords.
    I helped the foundation I chair through a inconvenient period of administrative issues. Nothing serious in itself, but right at a moment where it did have consequences for the team, which I was able to cushion. We also extended the number of board members, laying a better fundament for the coming years.
    The influx of many new users into the Fediverse spurred my involvement in the use and governance of Mastodon. I helped plan a governance structure for the largest Dutch instance, and intend to help out in the coming year as well. We’re building a non-profit legal entity around it, and secured initial funding for that from a source in line with that non-profit status. I enjoyed also kicking off some discussion within the Dutch forum for standards that prescribes the mandatory standards for the Dutch public sector.
    I keynoted at BeGeo, the Belgian annual conference of the geo-information sector, at the invitation of the Belgian national geographics institute. It was fun to create the story line for it, as well as enjoyed the sense of traveling and meeting with a professional community I’m normally not part of. It’s the type of thing I often did for years, and I miss it I noticed. Something to look out for in the coming months.
    My company had a great year, apart from a hick-up after the summer, to the occasion of which the team rose fantastically. We grew despite that hick-up, adding two new team members in May and September, and signed an additional new hire in December. As of February we will be ten people. The work we’re doing is highly interesting, around digital ethics, data governance mostly, engaging new clients frequently. Our team is a great group of people, and I think we all take good care of eachother. We completed the 11th year of my company which I think is already an amazing run. For next year our portfolio is already mostly filled.
    During the pandemic lock-downs in 2021 we hired cabins for all team members at a holiday park to work and hang out together for a week while maintaining social distancing advice. We realised we wanted to do that yearly regardless of pandemics, and did so in 2021 again. It’s an important thing for both the social and professional dimensions of our company.
    I took my homecooked projects as the starting point for a presentation at WordCamp Netherlands to plead for more general adoption of IndieWeb principles, specifically webmention and microformats in WordPress which met with good responses and helped spur on at least one coder to finish and publish a plugin. I’m mostly a boundary spanner in these settings, at the edge of communities, in this case the WordPress community, and being able to bring a story and suggestions for change into a commmunity from another context and see it getting a response is something I enjoy.
    Seeing Y grow and thrive, in school, socially, reading, swimming, skating.
    Decided to join my old fraternity on their 30th anniversary trip to Montenegro, and am glad I did. Montenegro is a beautiful and rugged country.
    I’ve been writing in this space continuously for twenty years now. Even if my writing here in the past few months has been less frequent, an expression of how busy it was in other aspects of my life, blogging has been a constant and a key to creating new conversations, connections, ideas and experiments.
    I explored new tools to integrate in my personal workflow, like annotating with Hypothes.is, using machine translation (DeepL) and AI text and image generators. This as starting point for turning them into personal software tools in future months.

    We spent some days around New Year in Switzerland, visiting dear friends. As years go by, such things become more important, never less. The simple fact of time passing means old friendships carry ever more context and meaning.
    Ever onwards! (After having the first week of January off and spending it with the three of us that is.)
    E and Y discussing artworks in the Rijksmuseum Twenthe. A great way to spend time together.

  12. I’ve reconfigured my book list automation so it also publishes them to the book section on my blog.
    About a year ago, late 2021, I made it easy for myself to publish lists of books I’ve read in OPML. Before I first made those lists in early 2021 I would publish postings about some of my reading in the book section of this site. Switching to making OPML lists based on my internal notes meant I had stopped posting to the books section. There’s however no reason why I wouldn’t do both. The OPML lists are hardly discoverable, and posting them here as well means they are being shared in RSS too. Yet, I don’t want to do things twice, so tonight I automated it.
    The script that goes through my internal book notes on my laptop to create the OPML lists, now also creates posts for each book in my site. Not for all books, just for book notes that have changed in the last week and are part of the current year’s reading. It builds on my existing personal Micropub client I use to post other things to this site too. Meaning that if I run the script weekly it will automatically post any books I’ve finished that week. Today at the start I set the script to any book read this year, so this year’s reading list is up to date.

  13. I can now share an article directly from my feed reader to my Hypothes.is account, annotated with a few remarks.
    One of the things I often do when feed reading is opening some articles up in the browser with the purpose of possibly saving them to Hypothes.is for (later) annotation. You know how it goes with open tabs in browsers, hundreds will be opened up and then neglected, until you give up and quite the entire session.
    My annotation of things I read starts with saving the article to Hypothes.is, and provide a single annotation for the entire page that includes a web archive link to the article and a brief motivation or some first thoughts about why I think it is of interest to me. Later I may go through the article in more detail and add more annotations, which end up in my notes. (I also do this outside of Hypothes.is, saving an entire article directly to my notes in markdown, when I don’t want to read the article in browser.)
    Until now this forces me to leave my feed reader to store an article in Hypothes.is. However, in my personal feed reader I have already the opportunity to post directly from there to my websites or to my personal notes collection in Obsidian.
    Hypothes.is has an API, which much like how I post to my sites from my feed reader can make it possible to directly share to Hypothes.is from inside my feed reader. This way I can continue to read, while leaving breadcrumbs in Hypothes.is (which always also end up in the inbox of my notes).
    The Hypothes.is API is documented and expects JSON payloads. To read public material through the API is possible for anyone, to post you need an API key that is connected to your account (find it when logged in).
    I use JSON payloads to post from my feedreader (and from inside my notes) to this site, so I copied and adapted the script to talk to the Hypotes.is API.
    The result is an extremely basic and barebones script that can do only a single thing: post a page wide annotation (so no highlights, no updates etc). For now this is enough as it is precisely my usual starting point for annotation.
    The script expects to receive 4 things: a URL, the title of the article, an array of tags, and my remarks. That is sent to the Hypothes.is API. In response I will get the information about the annotation I just made (ID etc.) but I disregard any response.
    To the webform I use in my feedreader I added an option to send the information to Hypothes.is, rather than my websites through MicroPub, or my local notes through the filesystem. That option is what ensures the little script gets called with the right variables.
    It now looks like this:
    In my feed reader I have the usual form I use to post replies and bookmarks, now with an additional radio button to select ‘H.’ for Hypothes.is
    Submitting the form above gets it posted to my Hypothes.is account

  14. Bookmarked Why te database version and how it’s going (by Tienson Qin) Long time blog buddy Jörg Kantel, aka der Schockwellenreiter, points to the discussion…

Comments are closed.

Mentions