My current, October 2019, WP set-up is:

Theme: Sempress (with adaptations in a child theme I created)


  • Akismet Anti-Spam
  • Bridgy, for posting to Twitter from my site (and through the service getting back-feed from Twitter and Mastodon). I should be using Syndication Links as a replacement, but haven’t installed that yet.
  • Category to Pages WUD, to add categories to pages, which I use to make my 1-man ‘wiki’
  • Classic Editor, as some of the IndieWeb plugins don’t work with WordPress block structure, so I retain the old posting interface
  • IndieAuth
  • IndieWeb
  • Mastodon Autopost, to post to Mastodon from my site
  • Micropub, to allow me to post to my site using various clients such as Indigenous on my Android
  • Post Kinds, to create different types of postings, including likes, bookmarks etc.
  • Posted Today, to create ‘on this day in …’ lists of my older posts
  • Postie, to post on this site by sending an e-mail
  • Semantic-Linkbacks, to present mentions, likes etc from others in a nicer way
  • Simple Location, allows me to add locations to postings. Don’t actually use it.
  • Ultimate Category Excluder, allows me to keep specific categories on/off the front page, in/out the RSS feed, search or archive overviews. I use this a lot, creating different content streams
  • WebMention, to let other sites know I link to them, to hear from other sites they link to me
  • WebSub, not sure why I’m using it or what it does
  • Widget Context, to keep some widgets off single post pages as they interfere with correct microformats interpretation (machine readability)
  • Wordfence Security
  • Yarns, a microsub server. Not actively in use yet. I’m trying to set-up one of my existing WP test site as my microsub server. As I don’t want all my feed subscriptions in my live site’s WP database. So ideally I have the subscriptions in another site, while interacting with them from this site.

Ten of these plugins are IndieWeb related, and form a collective block of functionality.

I post in three languages on this site: English (mostly), Dutch, German (sometimes).
To better allow language detection I have added mark-up for it in various places. I also add translation links to the RSS feed items that are not in English.

Note: All my non-English posts are in specific categories that provide the language (e.g. nederlands for Dutch, and deutsch for German)

Adaptations made:

Translation links in RSS feed items

In functions.php of my (child)-theme I added (based on this code by Jan Boddez):

add_filter( 'the_content_feed', 'my_content_feed' );
function my_content_feed( $content ) {
	global $post;
$testurl = get_permalink($post);
if ( has_category( 'nederlands', $post->ID)) {
     $basetranslate = '';
     $testedurl = urlencode($testurl);
     $basetranslate = $basetranslate.$testedurl;
     $addedlink= '<br/><a href="'.$basetranslate.'">machine translation into English</a><br/>';
     $content = $content.$addedlink;
if ( has_category( 'deutsch', $post->ID)) {
     $basetranslate = '';
     $testedurl = urlencode($testurl);
     $basetranslate = $basetranslate.$testedurl;
     $addedlink= '<br/><a href="'.$basetranslate.'">machine translation into English</a><br/>';
     $content = $content.$addedlink;

	return $content;

Setting page wide default language

The function for setting a page wide default considers two cases: when displaying a single post, and when displaying a category archive.
In functions.php of my (child)-theme I added:

function tonsempress_language_attributes($langtoets){
  // ton: if called from single or cat will have right language otherwise default
$langtoets ="en-us";
if (is_single()){
if ( in_category('nederlands') ) {
$langtoets = "nl-nl";}
if ( in_category('deutsch') ) {
$langtoets = "de-de";}
if (is_category('nederlands')){$langtoets = "nl-nl";}
if (is_category('deutsch')){$langtoets = "de-de";}
  // return the new language attribute
  return 'lang="'.$langtoets.'"';

add_filter('language_attributes', 'tonsempress_language_attributes');

Setting item language on front page

Items on the front page (!) that are in Dutch or German will get a span with their language attribute set accordingly. I changed this in index.php of the child theme, where it considers if a Dutch or German category post is being displayed, in the WordPress Loop:

<?php /* Start the Loop */ ?>
<?php while ( have_posts() ) : the_post(); ?>
	/* Include the Post-Format-specific template for the content.
	* If you want to overload this in a child theme then include a file
	* called content-___.php (where ___ is the Post Format name) and that will be used instead.
<?php /* if in Dutch or German categories, on the homepage added Oct 2019*/?>
	<?php  if ( is_home() ) {
                    if ( in_category( 'nederlands' ) ) { ?><span lang="nl-nl"><?php }
                    if ( in_category( 'deutsch' ) ) { ?><span lang="de-de"><?php }
	get_template_part( 'content', get_post_format() );

	/* if in Dutch or German categories, on the homepage added Oct 2019*/
		if ( is_home() ) {
                     if ( in_category( 'nederlands' ) ) { ?></span><?php }
                     if ( in_category( 'deutsch' ) ) { ?></span><?php }

<?php endwhile; ?>

The TechPledge is a Hippocratic oath like pledge for individual tech professionals. It is aimed at promoting human centered technology and at instilling reflective practices around tech as a key responsibility for tech professionals.

It was written during the 2019 TechFestival by the ‘Copenhagen 150’ a group of people in tech in diverse roles from over 40 countries, in 24 hours.

In the days after launch some criticisms were voiced, which are gathered below. This so it is possible to formulate a response, and perhaps adapt the TechPledge when warranted.

  • The pledge doesn’t have teeth. We need laws and regulation.
  • My specific technology(-concern) isn’t mentioned (e.g. nanotech, AI, Facebook, nuclear energy etc)
  • My specific societal concern isn’t mentioned (e.g. toxic online behaviour, verbal violence, misogyny, bigotry, hate)
  • Issues taken with specific wording (e.g. addiction, control)
  • This will not change any company’s behaviour
  • It’s too long / not concise enough (The Techpledge is 238 words, the English translation of the Hippocratic oath and the modern Geneva version are both over 300 words and the Hipprcatic oath has endured two and a half millennia
  • Will it actually be persuasive to prevent creepy (yet lucrative) behaviour?

(to be structured/added)
On addiction:
Person 1 (original tweeter:) Yes manipulation and influence exists. Yes, design shapes behavior in context. Yes, techs habits, but more like candy than heroin.

On control:
Me: It needs to be taken in the flow of the context of the as a whole. In that context I find it’s clearer what’s meant. For control I’d had suggested manipulation. I agree that maybe too much hinges on current perceptions of dark patterns and less timeless. That said calling out dark patterns is important. Perhaps the pledge should have said that, not willing to cooperate in designing/deploying dark patterns.
Person 2: If you are intentionally using “dark patterns”, you are intentionally using psychology to compel or addict.
Person 3: But mostly it does not make much sense. For instance fighting for democracy may in some cases entail deregulating tech or increasing control.
Me: I think you’re reading ‘control’ differently here. Control and boundaries are needed elements in any complex environment, just as allowing for emergence and experimentation, for sure. Intentionally and opaquely aiming for compulsion is a diff type of control, though.


PKM, in Harold Jarche’s terms is Personal Knowledge Mastery. I use the label loosely for the entire construct of how I collect, process and share information (see an overview of Information Strategies related blogposts), plus my personal processes for setting goals, doing my work, and reflecting on my work. This second part for instance includes the methods I use for creating ideas, evaluating them and getting to action.


The term I use for my feedreading. I follow people and in my feeds they ar categorised along social distance (from close friends, ever wider circles to total strangers).

It is also a notion of how I approach discovery: people link to or mention other people’s posts, I read the post and look up who wrote it etc. This triangulation works across various forms of social platforms. Also e.g. Friend1 visited a place, that place was also visited by StrangerA who has a blog which turns out to be interesting. StrangerA is added to my feeds.


For 2019’s Q1 I want to do a ‘weekly hack’. There are many small odd jobs around the house, on my computer, our network, or in my workflows. They often are in my todo lists, but never get done, simply because they never have any urgency attached to them and so the rest of my life goes first. Yet they often do hinder me, and keep nagging to be resolved. Either that or they are the small wished for fixes (I really should have a page for X / I really should make a template for Y).

So 12 ‘hacks’, fixes or odd jobs in Q1 2019 it is. If it becomes a habit after that it will mean doing some 4 dozen small things to make life easier per year. That’s a lot of things done incrementally over time. A first braindump gave me some 20 things to choose from (and the one I ended up doing first wasn’t even on that original list, but came to me later 😉 ).

  • 19#01 Create and use a template for the first read through and note taking of a non-fiction book.
    I made it in Tinderbox, which is an outliner plus mapping tool by Mark Bernstein. The template is mostly based on this WikiHow page on reading non-fiction, with some added questions (e.g. concerning assumptions made by the author)

    (the template in map and in outline view).
    For each book I copy that template. Each element in the outline/map is also a note which can have text, images etc. Tinderbox then lets you export the whole thing as a document, in this case the summary of my reading notes of a book. Which can then be blogged or published in other ways. [Category: workflow, habits]
  • 19#02 Did an edit in Open Street Map. For a long time open data consultant and activist, I actually do very little with data. My focus is on helping government entities change, so that their data becomes available routinely and at high quality. So, while Open Street Map (OSM) is a re-users of large amounts of Dutch open government data I never actually edited something in it. Peter’s suggestion this week triggered me to change that. [Category: learning]
  • 19#03 Export notes from presentation deck. I regularly give presentations, and use the speaker notes to write out the story and to present. Writing up the presentation story afterwards I used to copy by hand the presenter notes to my text editor and then turn it into a blogpost. This is however time consuming (copy and pasting text from each slide). To make that easier I searched for an applescript online and adapted it to my use. Now copying the notes to the clipboard is just one click, and then it is stored in my ClipMenu tool to past into whatever editor or word processor I want to use it in. Available from github.
  • 19#04 Add an ‘on this day’ function. To show blogposts from earlier years on the current day. Added and fixed a plugin, that provides a shortcode.
  • 19#05 Automatically transform bank journal entries into procurement journal entries Made an Applescript that takes the bank journal entries from my double entry book keeping system as csv, and then for the entries that are marked as procurement, creates the correct entry for the procurement journal. Output is in CSV again, which I can directly import into my book keeping system. Script published on github
  • 19#06 I redid my changes to the Semantic Backlinks plugin to display webmentions differently on my site. After an update my earlier changes had been overwritten. So following my own earlier documentation, I fixed it again.
  • 19#07 Fixed the authorization header issue on my site. This was keeping me from using microsub and micropub applications to post to my site. Having tried various things suggested online, in the end the Drupal fora provided the right answer. Adding RewriteRule .* – [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] to htaccess solved the issue
  • 19#08 Added experimental check-ins to the blog. Ultimately I’d like to recreate the Plazes and Dopplr experience, available to just my network.
  • 19#09 Wrote a new front page text for my professional web presence.
  • 19#10 Redid all the tile stones on the roof terrace, in preparation for putting some plants, berries, there.
  • 19#11 Convinced a site I’m following to switch to a full article text rss feed, replacing the title/summary only feed they had before. I had asked them a long time ago, and they wouldn’t saying it was too difficult. This time, figuring out which CMS they used I included the description of where in the settings to make changes. Positive response within the hour. Lesson: enable people to act by including what they need to do so.
  • 19#12 Growing more edible things for the little one, and ourselves Got berry shrubs (and planters) for the roof terrace. Blueberries, red berries, raspberries, and blackberries. It gets a lot of sun up there. Hopefully that translates into lots of berries.