append first notebook
I use note taking apps to remember things about people, write down project ideas and thoughts, keep track of upcoming birthdays and recent addresses to send letters.
I also particularly care about logging data like my spending, my cats weight or the time I spent playing games on a particular date. I then like to aggregate and analyze this data because everything else is prompts.
In this article I want to explore two ways to update information about a particular concept or person, and a way to quickly log information. and show a vibe coded demo that tries something different.
When I used obsidian, there were too many ways to do things. For example, if I want to update some life event about a friend Alice, I can navigate to their page and, maybe make a new header with todays date and write the down update. I call this concept-page first approach. This is clean, because each page has information specific to it, but there is overhead in going to the page and making a date entry even with keyboard shortcuts or slash commands.
Bob.md
# 2025-01-02
Met at a conference, he is traveling to Indonesia next week.
# 2025-01-12
He got engaged?!
:PROPERTIES:(3 fields)
The other alternative is to write the paragraph in todays journal and tag or link Alice. In former case, I can see a lot of context about Alice, including when what happened with them and how things change over time.
In the latter case, I have a a good overview of the day where I can see multiple notes about multiple people and other events. I can scroll back in time and see a snapshot of the day. A particular journal paragraph can link to multiple people so there is no duplication and I don't have to open 3 pages if I have an event with all 3.
2025-01-02.md
Met [[Bob]] at a conference, he is traveling to Indonesia next week.
I think [[Alice]] was asking about ring sizes.
With backlinks, can still aggregate all notes mentioning a concept. Clicking on #Alice could give me all journal entries with them, so we can get a overview of blocks. However, I noticed the implementation backlinks can differ a lot.
Sometimes it is just the title, or some number of characters, or maybe a paragraph. It is actually fairly finnicky to implement in a way that feels pleasing. (Maybe configurable backlink rendering is the next hot PKM thing?) In the apps I used, it did not give you the full context of a person when you mention them, so I still had friction because I had to open the individual journal page.
The final part I want to talk about before showing the demo is tracking metrics. In lifelab, I have a data block called spending where I log how much I spent on some item. I add the spending entries to everytime I do a purchase. Then, I have a code block which aggregates spending blocks and lets me know how much budget I have left for the year. I pin it in my sidebar to have an ad-hoc dashboard. I also track my game time and our cats weight, because the cat is obese. Now, there are two ways to do this in Obsidian.
- Have a cat.md file with a markdown table with dates and the weight. Updating it means I need to open the file, add a row with the date and write down the latest weight. This is scriptable using templater but it is still a sequence of things you need to do and some overhead.
| Date | Weight (kg) | Notes |
|------------|-------------|-----------------|
| 2025-01-05 | 6.8 | post-vet visit |
| 2025-01-12 | 6.7 | |
- Update the current journal page frontmatter with a key-value. You can aggregate this later using obsidian databases or any scripts since it is programatically extractable. The problem here is you clutter the journal frontmatter with a lot of data and it isn't super clear when it starts and ends, and you need to query all journal data to collect the weight because you don't know in which files it is added.
---
date: 2025-01-11
cat_weight: 6.5
spending: 45.50
game_time: 2.5
---
Aggregating over this can actually be annoying because frontmatter might have some entries missing when I don't add them! Now we are enforcing the data to be in all journal entries.
What if we can tag a person (or anything), which simultaneously opens the page? It feels like skipping a half second step is superfluous but it felt pretty good for me. In this claude coded demo, you can write (tag) a entity or concept and immediately add information to it. After pressing enter, it is appended to the page with todays date. Alternatively, you can type @Alice and press enter, this opens a view collection of all notes about them. If you tag multiple concepts, the text will be added to all of them. You can also filter using multiple tags using intersection
As a bonus, it can do light regex to automatically collect data. If you writ @weight 190 lbs, it detects the number using regex and stores it. Everything after the number is considered a comment and not highlighted. If you open @weight, it shows a trend (computed from numbers) on the header. You can use this to track any metrics and it is fairly fast to add, and there is no configuration needed, just start adding a new metric like @mood and after adding 3 entries it will automatically compute trends for you.
To create a task, just write @tomorrow TODO task. There is a special tag (@upcoming) that aggregates all future tags from today. All entries have implicit journal day tags so you can reconstruct the given day.
This is not that good for long form writing but it is fairly easy to quickly add information and capture metrics on the fly (significantly faster than my current approach).