Daily notes for 2024-02-25

ยท 945 words ยท 5 minute read

The daily log in Tiddlywiki with Streams ๐Ÿ”—

I fiddled around with Workflowy a while back, and it has been in the back of my head, since. There is something about the whole outliner thing that is compelling, but when I see examples from people who are heavy outliner users in the wild I get this sense there’s a sweet spot between “useful chunking of information” and “stilted and hard to consume/digest,” and … we all have different cognitive styles, I guess is all I’ll say.

As near as I’ve been able to piece together some ideas out there in note-taking land, I’d like my personal notes setup to involve:

  • A daily log
  • A daily personal task list
  • The ability to digress from the log

I’d like my log to be somewhat structured, meaning timestamped entries of a consistent format.

I don’t care if my personal task list for the day has much metadata, because we’re closer to the “shopping list” end of the spectrum than the “project management” list. I guess it can have no metadata besides “have I done it yet.”

Digressing from the log doesn’t mean much besides, “is it easy to think of something, quickly make a new node/page/tiddler and start typing.”

The apparent term of art for all this stuff is “intersitial logging.” That is fewer syllables than “keep track of what you’ve done during the day,” but has the benefit of higher syllabic density.

An outliner is a pretty good tool for those things because it brings some structure, favors the terse, and frees you from worrying about managing the arrangement of the text in favor of managing the arrangement of the content.

Outlining with Streams ๐Ÿ”—

Digging around for outliners for Tiddlywiki I came across Streams, which sticks a little outliner widget in each Tiddler. Click the “+” button, and you’re in a node in your outliner. Tab to indent, shift-tab to outdent, grab the nodes by their handles to reorder. Each node, in turn, is its own Tiddler.

I am not entirely sure how I feel about that last part, and if it were not for a filter you can apply to your sidebar to hide all the subtiddlers Streams produces in the open and recent lists, I am pretty sure I would hate it. But you can drop some code into the sidebar shaddow Tiddler to clean all that up and only see the root of a stream.

There’s enough there to play around, anyhow.

I made a simple Espanso trigger to timestamp my log entries:

# Make a timestamp
  - trigger: ":log"
    replace: "''[{{mydate}}] '' "
    vars:
      - name: mydate
        type: date
        params:
          format: "%r"

So, open a new node in the outline, type :log, start typing.

Finding the escape hatch with Streams Fusion ๐Ÿ”—

Because I’m a nervous soul who is always wondering how to back out of things like this, there’s also the Streams Fusion plugin, which gives you a little icon at the bottom of a stream to merge all the sub-nodes in a stream into a single, unified chunk of text.

That’s cool, because in a daily log you can be creating a proliferation of digressions and sidebars, not all of which qualify as full-fledged chunks of thought or interesting directions. So, click that button at the end of the day and all the nodes in the outline are turned into normal markup (links intact, if you added any) that looks like an outline, but all the child tiddlers from the root are removed and nodes you linked in a digression become backlinks to the newly merged daily log.

Alternately, you can turn the outline nodes into simple paragraphs. This morning I came across something while I was reading, started outlining, said all I’d had to say about that stream of thought, and went ahead and merged it all into a normal tiddler.

In evolving practice I don’t know whether I’ll fuse many daily pages or not. The part of me that doesn’t like the underlying sprawl of nodes even if I’ve hidden it from myself is still paying too much attention to what’s going on underneath. It’s a fine line between due diligence and unhealthy perfectionism. The benefit of fusing logs will be improved searchability for log entries themselves, since search results will go back to a single day’s log page instead of its child nodes. That seems to be kinder to future me.

Tasks in my log with Espanso and regexps ๐Ÿ”—

Once I decided to let the Streams experiment run, I waffled around about how to integrate tasks into my log. The “interstitial logging” people encourage a single, unfified stream of log entries and tasks created as they come up. Tiddlywiki’s core conception of tasks is that they should be nodes (“tiddlers,” yes) with a todo tag. That’s a little cumbersome in the Streams workflow.

So I did a quick experiment with the Sticky Todo plugin as a way to make a Streams node a task.

Sticky Todo uses markup like this to turn any text into a todo that appears in your sidebar:

<<sticky "Take out the recycling">>

That’s not too hard to remember, but it’s sort of type-y, so I made an Espanso shortcut that leverages its ability to do regexps:

- regex: ":todo\\((?P<todo>.*)\\)"
    replace: "<<sticky \"{{todo}}\">>"

So I can start a node with :todo(some task) and Espanso replaces it with <<sticky 'some task'>>

It’s 7 keystrokes minus the task content instead of 13? Plug it into the table and bask in the efficiency!

Espanso is useful for stuff like this where there’s no way I could figure out how to get Tiddlywiki to automate this in any reasonable timeframe.