In the past week I’ve started three personal experiments that use AI (in this case Claude Code). For each, the experiment lies in automating steps in my cognitive work that are useful or necessary but not the actual cognitive work itself. They’re helper activities, supporting the main task. For two of the three that is the clear focus, the third is slightly different.

The three experiments are:

  • Filtering on interests in my feed reader, let’s call it ‘Weak-tAIs’.
  • ‘Slopsidian’, lifting concepts and argumentation from papers into Obsidian notes, and linking them iteratively.
  • Explore questions with pre-existing ‘recipes’ that take a specific philosophical perspective. Perhaps I should dub this type of language game ‘WittgenstAIn III’.

It started from an automation task, which I mentioned here: manipulating non-fiction e-books. I have a script that I can point to an e-book in my Calibre collection, and then will populate a note with elements from the book: foreword, index and literature list, content overview, all if present, and for each chapter of the book the first and last few paragraphs. This is what I look at and skim whenever I want to gain a first impression and understanding what a book is about, and what questions it addresses or what it proposes. All very Mortimer Adler. From it I can then decide which parts of a book to read more closely, which parts likely contain things I am already familiar with or fall outside my current interest in the book. From those skims I jot down things in my note for the book. This quickly turned out to be useful to me, because it removed the wall between the e-book and my notes by bringing parts of the e-book into my notes temporarily where I could more quickly go through them in preparation for ‘proper’ reading (although in fact it is part of reading).

It got me thinking what other helper activities in reading and filtering I could identify.
Helper activities are tasks that support a main task by making it easier or providing guard rails. Checklists are an example, they ensure that you don’t skip important steps. In most cases nothing will immediately go wrong if you don’t do the helper activity but if you do them the main task gets a little easier to do well. A lot of helper tasks can be regularly automated, like the e-book excerpt script above. Others less so because they contain elements of processing actual texts, like the three experiments I describe here. There perhaps using a model like Claude Code can be of value (and hopefully soon, through local model deployment).

A brief description of the three experiments:

Weak tAIs
I order my RSS feeds by social distance for reading. Part of the reasoning is that I want to be well informed about what close ties write, but I am aware that interesting information likely comes from a wider social distance. This practice has been in place for some two decades and enormously valuable all that time. The most interesting stuff usually comes from the third layer, a folder named ‘c150’, in my feedreader: close enough to know who the author is, and engage in interaction if I want, disconnected enough for them to encounter things I am less likely to have already seen myself. That is the The Strength of Weak Ties (1973) as Granovetter called it.

I also keep a list of current interests, a bit like Feynman’s dozen or so currently favourite problems. For each interest I have formulated a few aspects:

  • what is conceptually interesting to me in a topic (e.g. my interest in EU digital and data policy conceptually is that it forms a geopolitical proposition externally, while being a quality improvement instrument internally that takes rights and societal values as yardstick),
  • am I theoretically interested or more practically,
  • do I have a knowledge fundament for the topic or am I a newbie,
  • is there a link with any long term goals,
  • can it be put into a specific context or tied to a specific issue/question,
  • can I shape or create an enduring practice around it,
  • can I build a bridge to outputs, like blogposts, presentations, or client proposals

My feedreader tracks just under five hundred people writing on the open web. That can easily amount to two thousand postings in a week. I can have several intentions to start reading, one of them is to find and read material relevant to my list of current interests. A reading intention does not do away with items, it’s not a filter to remove material. It’s essentially just a view on the entire set of incoming items in the feed reader that I usually construct in my mind. What if I can construct those views on my screen too?
The ‘c150’ social layer, the weak ties, what do they write about that connects to the fields of interest from my list? Such filtering does not lend itself to text based search based on fixed terms. I usually skim titles for first impressions, and click opportunistically through the postings. What if I can have a model weigh the postings and compare them to my list of current interests, to mark them for my attention? In aid of that one specific reading intention.

That’s what the first experiment does: label postings that seem to fit my interests, and express why. So that I can skim the folder of weak ties by interest, and read those items first if my intention is to explore those interests. I limited it to the c150 folder as feeding all rss feeds into the model is consuming a lot of time and tokens, so I started with the part most likely to bring useful results.
The labeling works now as part of my feedreader. I am not yet convinced of the quality of it though. The motivation for the labels usually is along the lines of "it fits interest X but not in the way you’re looking for", which to me means it actually doesn’t really fit.

Slopsidian
This week I read an article about AI documenting its own actions and output in a wiki, and saw one or two similar efforts described. I applied that to a different helper task, which is the preparation of reading a paper and helping me to decide to dig deeper. This is similar to skimming a non-fiction book, but more involved. Can AI reliably pull from a paper the concepts used and introduced, and the line of argumentation? Saving them both in a single note for the resource, and in separate notes for each of the concepts? Additionally can it logically link concepts from different resources? This is what an ‘ingestion skill’ now does for me. I let it store the output it generates in a folder that I can also open as an Obsidian vault, hence the name Slopsidian. The papers come from my Zotero collection, meaning I previously saved them. That original step of curation also means I have a line or two about why I thought them interesting at the time. Feeding that curating decision and the paper into the ingestion skill allows a second order look at a paper. What are the concepts discussed, and, reading the output, do I think some of those are of interest to me? If so, I can look at the paper more closely and do my own note making and paraphrasing and placement in my actual Obsidian collection. Lifting out concepts works rather well, the linking is less useful in the first experiences (too obvious, not sparse enough) and can seem forced when you look at why some concepts get linked.

WittgenstAIn III
The third experiment is a bit more on the edge I think. Here the probabilistic language games that LLMs are have more of a free rein. Part of the university courses on philosophy of science I did 25 years ago was using different philosophical schools of thought as lenses to approach a question. Not to answer the question, that is hardly ever the point after all, but to holding it, and holding it differently. Plato’s essentialism, Kant’s transcendence, dialectics (Hegel), phenomenology (Husserl), Wittgenstein II’s analytical method, hermeneutics (Heidegger), deconstruction (Derrida), and Rorty’s pragmatism. For each of these, for over 2 decades, I’ve had a recipe in my notes to apply to a question.
I put together a ‘language game’ in which I pose a question, which a ‘router’ prompt tries to match to one or more of the 8 recipes, or to a combination of recipes chained together (e.g. first look at a question from an analytical perspective and then feed the results in to a deconstruction exercise.)
My existing multi-step recipes are followed, and output is generated for each of those steps, into a resulting note.
I read those resulting notes, lift out what catches my eye or what resonates and I use it to flesh it out more, for me to hold the question still longer. Models are language games of a sort, so hence the name WittgenstAIn III, a third iteration, extending the second Wittgenstein’s language games to and with AI.
The output here makes me more uncomfortable than the other two. Reasoning is being mimicked, with the usual overconfident wrongness we’ve come to expect from generative AI, and that works out in odd ways sometimes. Still there is utility that can be lifted from the output. It is a good kickstart for exploring questions to quickly see if a recipe might yield something or not, judging by my first attempts in this experiment. It does certainly lower the threshold, as helper task, to engage with the recipes. I’ve used it more in the past days than in the past months. Part of that is the novelty of the experiment, and that may wear off quickly, but perhaps it carries the kernel of more habitual use.

Earlier this week I started reading an ebook and was a bit irritated because the book did not show me a table of contents. This seems to be a regular thing in ebooks. Already earlier I have complained here about why ebooks, or perhaps mostly e-readers, make so little use of the affordances of digital files.

ePUB files are really XML in zipped archives. Since I left Amazon and the Kindle reader behind, all my ebooks are ePUB files. XML means that the files are machine readable and highly structured. That opens up possibilities to manipulate them.

I used Claude Code to ask a few questions about ePUB files and how they are treated by e-readers. E-readers deal differently with the information in an ePUB file. They may load a table of content into a local database, and use that to allow navigation, or ignore various pieces of information in the XML altogether.
For fun, I asked Claude Code to check the XML file of the ebook I was reading earlier this week, to see if it actually contained a table of contents that was just not shown to me in my reader. Turns out it did.

I also asked it, if it would take a lot to extract a table of contents from an ebook. It doesn’t, so I now have a first script that finds the table of contents if present, or builds one from the headers in the ePUB’s XML if not. The php script saves it to a markdown file that I can then use in my book notes, to group my thoughts and annotations.

In my Kobo reader, and in my Calibre reader the ToC information that the ePUB file provides outside the regular content of the book (NCX or xhtml), is accessible through the reader’s interface, but not part of the reading experience itself. I generally like my ToC to also be presented in the book, like it is in a paper one, and I actually prefer it not at the start as is usual but at the end, near notes, references, and literature lists, to have all the book’s metadata together to glance at. For that a ToC must be not separate from the book’s content, but within it. It would need to be in the ‘spine‘, the part that is presented for reading by readers.

If I annotate or highlight in a book, those are kept by an ereader separate from the book and refer to specific points inside the XML (through canonical fragment identifiers, CFI). You can alter an e-book, it’s XML after all, but that would shift the position of content fragments, and existing pointers from annotations and highlights would then point to the wrong lines in a book.
So if I add a ToC, grabbed from the existing metadata or constructed, inside an e-book, my preference to having it at the end is actually useful. Because if I add it to the end, it will not shift anything I may have annotated or highlighted already, messing up the pointers in the annotation file.

Next to extracting a ToC I’m also thinking about extracting other meta-information (like indexes, references, lists of images or tables) but a first glimpse into some ebooks suggests that those are not usually listed in the Manifest of an ebook, so would have to be constructed from clues inside the book.
However it will help me read non-fiction non-linearly if I could extract such things, e.g. the figures and tables present. It seems to me a number of such steps should be straightforward from the structure of an ePUB file, others need a parser to extract the right information and shape in a useful form, but still can be done with regular scripts (e.g. show me the first and last two paragraphs of a chapter to get a notion what it talks about), yet others do need a (local) LLM, e.g. to summarise each section of a book separately. I’ll see how far I can get, and learn about the ePUB format along the way, with deterministic code first to extend my personal and local toolkit on my computer.

Update 12-04-2026: I now have a script, that I run in my browser, which allows me to select an ebook from my Calibre library, and then explores it w.r.t. the table of contents, reference and literature sections, and images, and also pulls in the first and last few paragraphs of a chapter (which let’s me explore what a chapter is about, Adler style). All that gets turned into a markdown file that is then put in the corresponding book note in my Obsidian vault using the right template.

At PKM Summit this weekend one thing that stood out was that many have started creating their own tools, and were using vibecoding to create them.

While the term agency turned out to be unknown to almost all participants, that is of course what such tools create. The ability to do things, individually or as a group, in this case by creating your own tools to get there.
The power of finding new agency was felt and expressed by quite a few, and played a role in a good number of sessions too.

When I first encountered computers, in the early 1980s, creating your own stuff was the norm. It was almost the only option. Making the machine work for myself. Like software to keep my ham radio logs and print QSL cards.
These days I run a good many smaller and larger personal pieces of tooling on my laptop. Things like making it easy to search by date in my photos on Flickr, or posting to my website from my internal notes, or from within my feedreader.
Things that reduce friction, speed things up, reduce dependency on external systems.

Vibecoding, and especially the Claude Code style of vibe coding, is bringing people to create their own tools, who weren’t able to do so before. A pool of latent needs they can now tap into on their own.

Some I know are really now learning how a computer works under the hood through their vibe coding. Testing the limits of their machines, finding out how fast local stuff can be. Discovering the power of APIs, the utility of cron jobs, and learning how to run their own VPS or local servers.
Others are creating little tools that work the way they want. An app to present books from their collection in that one specific way just so. A mobile app for public transport built on your own existing commute patterns and nothing else. Apps pulling in data from several sources and presenting them in one interface that likely only makes sense to themselves.

Tools built by people realising they are pretty predictable to themselves, and that such highly localised and specifically contextualised predictability now lends itself to automation by the intended user themself.
Tools, in short, where, access to and control over data lies fully with the user, where applications are views on that data (and multiple apps use the same data), and interfaces queries on the data. Along the lines of Ruben Verborgh’s 2017 article “Paradigm Shifts for the Decentralised Web“ but then way more personal. The decoupling that is possible between data, applications and interfaces is even more powerful when you can do them all three for yourself. And then mash them up in any which way you want.

Vibecoding is allowing people to jump the barriers to entry to that. And judging by the stories they share, it feels like pole vaulting over them, not just clearing the barriers. That energy then propels them on to do more.

Over the past months I’ve also heard regularly how people are cancelling paid subscriptions to various online services, and switching to their personal tools that fit their use case much more precisely.

There are many ethical, political, and societal issues with much of the gen AI world, and how models come about, and how corporate vendors exploit and leverage their power.
Yet, where these things are not just consumed but used locally as a leg-up to a different level of self-reliance, it looks quite different. Something is brewing it feels like.
A shift, and I’d love to see more people explore and extend their own agency with such tools.

Favorited Ollama Claude Code integration by Ollama
Favorited LM Studio Claude Code integration by LM Studio blog

Last Friday I participated in a workshop by Frank Meeuwsen on using Claude Code. I’ve been reluctant to use Claude Code for the basic reason that it uses cloud run models by default. This means that my inputs and any context I provide leave my machine to be gobbled up into the data foraging models. Nevertheless it was fun, I improved on my existing personal feed reader (a presentation layer on top of FreshRSS that allows me to write responses while I’m reading feeds).

However tempting it is to continue vibecoding with Claude Code and watching it work its way through my coding requests, that is not the way to go. After some online searching I found the above two pages, that explain how to point the program Claude Code to use the local end point of either Ollama or LMStudio. That’s more like it!

Now I need to figure out which LLMs that can be downloaded (or run on a VPS perhaps) are best suited to the type of tasks I want to set it. For coding, local agents, translation, and semantic work. There can be multiple models of course, as I can switch them up or run them sequentially (and in parallel if I deploy them on a VPS I think).

Open models can be used with Claude Code through Ollama’s Anthropic-compatible API

Ollama documentation

This means you can use your local models with Claude Code!

LM Studio blog

Early December I blogged about wanting to build a stronger habit of bookmarking and annotating in Hypothes.is (which sends everything on to my notes in Obsidian). Over the past month that has worked out nicely, with steady additions to my bookmarks and annotations, unlike before.

In that early December posting I mentioned wanting to fix two things:

Today I made a first version of tool to allow me to share to Hypothes.is from mobile. I reused the same code I made for posting within my feedreader, but with added precautions and checks because it needs to live on the open web to function.

The reason I wanted to build my own tool is that one way of doing this, through a proxy server run by Hypothes.is, will be switched off by February. The suggested replacement for mobile somehow doesn’t work in my mobile browser. I don’t know why, and felt it’s better anyway to try and build my own thing.

In this first iteration, it’s a regular webform served from one of my domains, that I bookmarked. While browsing online, I can copy the URL and e.g. the title of a page to the clipboard, and then open and populate the webform by selecting the bookmark, adding a comment and some tags. Hitting submit, sends it all to Hypothes.is. This works best if you have a clipboard on your mobile that can have multiple entries, so you have the material for one or more bookmarks and annotations on it.

So my second fix from last month I’ve now created. Probably I will iterate a bit on this, to see if I can reduce the number of steps involved.

I’ve reached 2000 bookmarks and annotations in Hypothes.is. A large chunk of those 2000 bookmarks came this month, some 20% of them. Because, mostly I think, I’ve hit on the right mindset that makes bookmarking/annotating in hypothes.is a habit. Next to having a bit more energy and mental space in general than I had for a long time, that really helps too.

Exactly four years ago today I created my Hypothes.is account. I made my first annotation there only in April 2022, and started using it regularly in late August 2022.

Two thousand isn’t a whole lot of course. Annotation is not just bookmarking, and a single page can have many annotations. Still it is relatively more than the 3200 bookmarks I collected in Delicious over the span of eleven years, from summer 2004 to summer 2015, and the hundreds I saved to Evernote between 2016 and 2020. And it makes Hypothes.is the only new addition to my otherwise shrinking distributed online presence in the past years.


The graph of my annotations, a start in the fall of 2022, then a steady linear path for two years, followed by a little jump and a much flatter usage for a year, ending in a strong jump.

I noticed early this month that something seemed to be shifting in my annotations.
Three elements are part of that shift, and they combine to make a more active habit

  • I made it easier to bookmark and annotate, by reducing the friction to annotate from right inside my feedreader.
  • I let go of the internal voice that any annotation should be a ‘proper and serious’ annotation, a result of thinking. Annotation is an every day activity, creating the breadcrumbs that may result in deeper thinking later on in my notes. All annotations flow automatically into my local notes, where I can work with them and re-use them.
  • I start with a question or topic and wander where hyperlinks take me for 15 minutes or so. This is the type of browsing like it’s 1993, when that was the only way you could take in the world wide web (and actually for a short while: take in the entire web). It feels natural, and it feeds actual current interests, work-related, side interests and every day things. It makes annotation an every day activity for real.

The first two changes make it easier to start annotating. The last change makes the biggest difference, as it results in short bursts of new annotations in a steady rhythm.

Hypothes.is isn’t a widely used tool out on the open web. It is mostly used in educational settings, for classes and groups, and integrated into learning systems. It does have a few social features though, like the ability to not just follow (through RSS e.g.) but also respond to other people’s annotations. Like in the old days of Del.icio.us that is a way to find others interested in the same thing as you but from a different perspective and using different language to describe it. I have a small roll of Hypothes.is users. You can also check out who is annotating using similar tags to yours to find new people.