Yesterday Martijn Aslander demonstrated the personal information tools he recently created. I came away inspired. Perhaps not by the tools as such, and more because of the pathways of thinking it opened. And because everything was so blazingly fast. All vibe-coded, as he has no coding skills himself.
I can see how the way his brain works is aided by the structure and availability of information his personal toolbox provides him. However, I myself would be more interested in shaping a personal tool like this towards being able to facilitate me in my processes and habits, as well as let me work towards actual outputs.

The Digitale Fitheid (Dutch language platform) community (Digital Fitness, the English language platform) has a monthly face-to-face meet-up in Utrecht, and yesterday was this year’s last. In the morning E had attended a session by Frank Meeuwsen on how to use Claude Code to quickly build something from scratch. In the evening I joined Martijn’s session on what he is calling his ‘Theta OS‘.

Some observations.

  • Martijn’s Theta is mostly a dashboard on local information. It shows him lots of different pieces of information at a glance. Each of these things, hotel bookings, books, payments, tasks, quantified self measurements and more, can live and be accessed in their own little apps and silos, but he uses the dashboard to combine them in context. At the outset he said that having his own established ontology (in the information sense, not the philosophical) was a prerequisite. That sounds very true, as the purpose here is having an extremely personal tool. The value is in combining various information sources on purely personal criteria on the fly.
  • His tool stack is sqlite (a lightweight database, installed by default on my Mac), with node.js (to run javascript), and regular html and css for the front-end using the local webserver on his laptop. I didn’t have node.js on my Mac, installed it now to be able to try some things.
  • He is not a coder, so everything is vibe coded with Claude Code. And while maintaining that makes him able to quickly create things, he spent some 500 hours in Claude Code in the past months. Makes me wonder what he could have done in those 500 hours if he hadn’t used it. I do recognise that given his nature, a organised path of exploration and learning would not have been feasible, though might well have resulted in a similar proof of concept after 500 hours.
  • Because of this he wasn’t really able to conceptually discuss the results other than what it does on the front-end and what it means to him. When asked about the architecture of the tool he therefore asked Claude Code to whip up a description.
  • In working with Claude Code he did not feed it his personal information, but abstracted structures. E.g. to incorporate a CSV with personal information he would provide the structure and a bit of dummy data to get a parser or importer and change the database structures. Then use the importer for the actual data outside of Claude.
  • To Martijn Theta is for surfacing and combining little pieces of data and information. He also uses markdown notes a lot (with Obsidian as viewer), but Theta keeps all the small pieces out of his notes. Only when he combines things into something more informational he brings it into his markdown notes. I find this distinction makes sense, as I am usually adverse to ‘make Obsidian do everything for me’ type of efforts. I use several tools that work on my Obsidian notes but do not attempt to be part of Obsidian. Largely absent yesterday was the other way around in the demo / discussion: getting small bits out of Obsidian into his dashboard.
  • The entire thing as it is now is a tool that clearly and visibly had an evolutionary path, as opposed to a planned-for structure and design. This appeals to me a lot. It is the same with my own personal tools and system of notes. Others sometimes remark on how it would impossible for them to create something like it for themselves. Thing is, neither could I. The current state evolved over time, and does not lend itself to reconstruction. That this sense of evolution stands out to me after a few months of Martijn spending that 500 hours in total on his Theta OS too, to me is a strong argument in favor of his approach.
  • This is reinforced by how he clearly builds intensively on his own structures and habits. As I often remark too, I am predictable to myself, and it means any software tool you build for yourself can make choices based on that predictability. If I want to save something I know which attributes I care about, and in which form I want to have them available. If I make a shopping list I know the order of the supermarket shelves of the store I’ll visit. If I’m near a Dutch railway station in the evening, it is most likely I intend to take a train home, that type of thing. The same is true for my information strategies. I know where I store my book notes and how, as I’ve been doing it for ages etc.
  • Building on that predictability he makes functionalities in Theta highly contextual. If he bookmarks a LinkedIn profile, it means he wants a person note with a few distinct fields from the profile (e.g. current role and location), and bookmarking then means the creation of such a person note in the same way as all his existing person notes already are. If it’s a recipe it pulls out the recipe, converts cooking terms and measures to Dutch terms and measures, and makes the ingredients available to dump into a shopping list.
  • Similarly everywhere he has a ‘copy to clipboard’-button in his Theta, it has a contextually determined template, so he can paste it into something else in the way he needs it at the destination. I use those templates in different places already, the way I send a bookmark to my blog, my annotation tool, and how an annotation is imported into my Obsidian notes, how I save a webpage in markdown to my notes, are all determined by a template that takes the same basic information but styles and orders it differently based on purpose and destination.
  • That contextualisation sometimes needs persistent data from outside. He incorporates such data into his local database. E.g. all the place names for the Netherlands, so he can recognise a place name in his own material, or search with any of them across his material. Or the list of translated cooking terms mentioned above.
  • He created his own e-mail client interface (using IMAP to access his mail accounts). This allows him to create processing geared to his own routines. E.g. a button to process an e-mail as a hotel reservation, or as parcel delivery announcement, or to pull location or event data from etc. That information then surfaces in his dashboard where it is made useful. It resulted in a rather long row of specific processing contexts but I can definitely see the power of it. Like I tinker with my ‘ideal feedreader’, doing the same for an ‘ideal e-mail interface’ where the point is to not let things reside in e-mail but make it findable and useful outside of it makes a lot of sense. And again, because you are predictable to yourself it is obvious what ‘outside’ means in each instance.
  • He created ‘companion apps’ (using Mac’s Xcode to make them for iOS, I wonder if something similar for Android exists) for his phone, allowing him to access and work with information on the go.

On the train home, I started exploring both sqlite and node.js in more detail, to figure out if and how I may want to add it to my local personal tool set.
Can I use this to reignite my work on my personal toolsuite? That work is more aimed at facilitating myself in my processes and helping me achieve outputs.
Despite going to bed late, I woke unexpectedly early, given the holidays and weekend, and felt the need to explore more. So the session definitely kicked something in gear. It does need my personal approach of course, and I have plenty of relevant notes on this from the past years to use for it. Years ago, back in 2017, I already gave the effort a name too, Aazai.
I set up sqlite and node.js this morning to have a sandbox to try some building blocks out.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

To respond on your own website, enter the URL of your response which should contain a link to this post's permalink URL. Your response will then appear (possibly after moderation) on this page. Want to update or remove your response? Update or delete your post and re-enter your post's URL again. (Find out more about Webmentions.)