What Kitaab Is

blog meta kitaab

published 2023-06-04 21:48

updated 2023-09-22 15:53

I think at least in part I'm beginning to understand why I find it difficult to write about my own processes and systems in these notes. All my other notes are notes for me. I don't need to explain to myself what these systems are, because I am the one building and using them! Anyways, in attempt to further practice writing for other people(?), here's more on Kitaab.

Some History

Kitaab has been many systems over many years, and is a system I fell into because of what I can now identify as ADHD. Before I was a high level computer wizard, or was allowed to own a smartphone, I would carry around a small notepad and a pen around in a blazer pocket. In fact, I wore a blazer specifically so I could carry this notebook around easily.

As I grew more tech savvy, I incorporated more software. Task Warrior, Vim, NVim, TiddlyWiki, Git, The specific setup I use changes with my needs, though Task Warrior and plain text files have been with me since the beginning.

What I Use Now

A lot of my nvim config is configured specifically for Kitaab. I use a custom format, that has vim highlighting I wrote, alongside a command that adds an updated date to files on save. Combed with vimwiki, vim-zettel, telescope, hologram and a couple of custom shortcuts, I get a system that is fairly easy to use inside vim to create and extend my wiki files, and can view images. On top of this, I define a few alias, which are bash pipelines that give me fuzzy search across meta data of my files; such as tags[#]_ , whether they're linked, and whether they're formatted correctly. I use these to both browse through these notes, and make them denser over time. Coming in contact with surprise notes about things I'd previously done is always a joy. Importantly, there's a systemd script that adds all my changes to git every hour. I love git, but I'm never really merging things or have particular "working states", I just want everything added without having to remember to do it. This system works well for me.

The custom format is the vimwiki format with the vim-zettel addon as well as additions for , and %update metadata. I'm experimenting with Footnotes that register with the linking system, largely inspired by ReStructured Text, but basant hasn't implemented parsing of this yet.

There's also taskwarrior which is tightly coupled with the plain text notes through another small script I wrote that creates a templated and tagged file for extra notes regarding a task. I still have trouble delineating between "tasks" and "notes". Tasks are just notes that haven't been completed yet. They become docs effectively on completion. This note is also a kind of doc, thinking about it. But not one that's particularly useful to me 🤔. I define projects, and tags for these, but generally no due dates. I'll write absolutely everything that I think of in here, and process them as an inbox (unlabelled tasks get the +in tag). Somewhat inspired by the GTD method. I tend to peruse through this list for something that catches my attention, and it means I always have things to do. So far I've never added any work tasks to this list, as it totally screws up my motivation. As I move into contract work I imagine I will be using it to track my work tasks as well. I am a heavy user of contexts to narrow down what I should even come across given my current mood, but will occasionally clean up tasks that I'm no longer interested in doing as well. I also have alias' setup for task warrior to make my life easier at the command line, but am also partial to taskwarrior-tui, though I do have some changes that I think would make it better.

On mobile, I use task-add (which I'm now learning has been removed from app stores due to copyright claims?) which can sync to my task warrior server through Wireguard and through lan networks, because it's on mossnet. I quite like this for viewing my tasks (and wish taskwarrior-tui was similar), but adding tasks through it is still a pain, I tend to leave them unlabelled and label them at my computer. Since I configure all of this through Nix, I've been able to use nix-on-droid to utilize all of the above easily on my android device as well, when it comes to nvim and the scripts. Kind of amazing.

Then there's poonam. Originally used to experiment with networkx and visualize my notes spatially (something I still wish to do), it has since grown in usage to provide a number of utilities. It provides a filtered set of my notes that then get passed to my static site generator to build the website you're reading this on. It pulls a few other tricks in this process, including breaking it in a small, fun way. It also provides a cli tool to identify issues and combat them. It'll delete empty notes, or notes that are only templates. It'll list all notes that don't have any titles. It'll create indexes per tag containing output in plain text to make it easier to navigate from inside vim. It creates smart backlinks to files that are linked.

All of these tiny scripts and tools separately contribute to my ease of access to writing down everything with ease. It all culminates in Basant, my static site generator, and the output you read now. There's a shoddy CI system that updates the nix derivation of both basant and poonam in my declaration, and then runs the deployment for the box running my website. This happens nightly, ensuring that my website is up to date with my changes. I have been wondering if I can lower the rate at which it is called (once every 3 days?), but I haven't done so yet.

I tend to draw a soft boundary between these notes and tasks that I create, and material I come across on the internet. I do still consider Shaarli and Wallabag a part of Kitaab in some sense. The links and articles I collect are still quite important to me, and as mentioned, they follow the same taxonomy when it comes to tags. Further integration between the two remains to be seen.

There's sometimes when writing words isn't enough and I wish to draw pictures with a pen. In such cases I turn to hyperplane, which is connected to Kitaab via SyncThing so the pdf files remain available to me even when I'm away from it. I tend to also read all the Wallabag articles I've saved from this device, it's part of my morning routine to read articles that I've collected. A sort of personal newspaper.

Being a link hoarder, whenever I come across a link I'm interested in I save it to Shaarli, and often turn to Shaarli when I'm looking for something. It's probably not worth the effort it takes to maintain, but I love being able to surface old things I once saw that I knew I would want one day, but not today. Makes me feel like a cyborg. I recently forked the Shaarli web extension I was using on Firefox because it didn't have shortcuts. Sometimes I read an article without wallabag, and in cases where I find an annotation I wish to save I use grasp which saves into the mossnet copy of Kitaab. I don't have a particularly good reason for having it set up this way, since I haven't configured my phone to use grasp, though theoretically this allows for that.

= What's on the Horizon? =

So with that walk-through complete (I wonder if I'll ever get around to taking any screen captures of it's use, I highly doubt it, though it would be cool to look back on one day), what else am I trying to add to this collection of tools? To be fair, I've spent the last couple days developing a few more of these designed to help me clean up, and "densify" Kitaab with more links, which motivated me to write about it. Primarily next I'm looking to simplify Basant (and write a bunch of tests for it) because currently it's a nightmare to work with. Once it's cleaned up, I'll probably be re-working the design.

  • Specify the custom format explicitly (write a pandoc parser?) or switch to ReStructured Text
  • Auto-OCR of hyperplane notes
  • Spatial view into my notes and their structure
  • Tasks with dates automatically creates events in a "tasks" calendar so I get notifications for them
  • Tasks with projects that have a UDA that indicates they have a git repo, sync their issues with that repo
  • Semantic search engine across all my notes (+ bookmarks and saved articles)
  • Better integration of wallabag annotations
  • Integration of Kobo annotations
  • A rofi interface to searching through my bookmarks
  • Promnesia

There are some tools I'm interested in trying, before I decide to totally take over from my current vim plugins and write something myself:


# Tags are shared across a lot of my services: Task warrior, wallabag, shaarli.