Daily Notes: A Community Project!

Daily Notes

A new Daily Note is created each day when a document is opened, inside the container /Daily Notes. Its name is the day’s date. Only one note is created for any given day. If the document is not opened on a given day, no note is created.

The text of the daily note might be blank, or it might contain some prompts or reminders of things you might want to include.

2023-07-04
Main Tasks:
Current Reading:
Listening To:

We might also set the prototype of the note, and perhaps enter some useful metadata. If the document is a novel we are writing, we might record the word count of the current draft.

The Main Thing

The core task is to create today’s daily note when the document is first opened, without bothering the user. It might be nice if the daily note were created automatically, even if the document was left open overnight.

Constraints

It would be nice if Daily Notes were easy to set up, even if you’re new to Tinderbox. Notes should be readily customizable. For example, it would be great if we could simply copy a note or two to a Tinderbox, and then the Tinderbox document would automatically set everything up.

Optional Details

Some of the preloaded text might reflect information gathered elsewhere. For example:

Weather: Sunny, 20°

A writer might use Daily Notes as a place in which to write a 20-minute exercise each day; in this case, we might include a prompt selected at random from a container of writing prompts:

Today’s Topic: The dark knight on the road

Tarot Card: The Lovers

Oblique Strategy: Infinitesimal gradations

If the daily notes are part of the Tinderbox where we’re writing a book, we might record some measure of progress:

Word Count: 23,475

Most Recent Work: Chapter 13/ Section 5 — Hannah Makes A Blunder

A kindergarten teacher might want to pay special attention to one child each day. Typically, each child is chosen in turn, though we might override this.

Special Attention: Riley. Liam B.

Arbitrary Suggestions For Further Reading

previous thread: Daily Notes: A Community Project

Matthew Weeks, How I Built My Daily Notes Page Template in Roam Research through 1 year of daily use and refinement. https://matthewweeks.medium.com/how-to-build-a-dynamic-daily-notes-page-template-in-roam-research-4f38b23a62a3

Eshan Kadaroo, How to Use DAILY NOTES in Roam Research for Beginners. https://www.youtube.com/watch?v=RakMYwM5CyI

Maggie Appleton, Daily Notes Pages. Daily Notes Pages

Tech With Ed, How I use Logseq Daily, https://www.youtube.com/watch?v=JCIdJBZGQLQ

Brage Bjørkmo, Brage Bjørkmo’s Daily Notes Setup (in Tana). Tana

Additonal suggestions very welcome!

I have a simple daily note approach in Tana, which is driven by the way I’ve configured the #day supertag. Each new daily note contains the fields shown in the image, plus a canned search that collects everything with the #Task supertag that is not marked complete.

The difference from Tinderbox is that Tana is (for now) a cloud-based database, not a document-oriented local file. My Tana daily notes are hubs for collecting notes that don’t yet have home in another note. (Maggie writes about this in the Roam context, and more recently created a video with Rob Haisfield to explain how she uses daily notes in Tana.).

If I were doing daily notes with Tinderbox, where would I put them – in a “Daily Notes” document I curate every day? I certainly wouldn’t want every new Tinderbox document I create to get an automatic daily note; which would be a mess.

Also, Tana, Roam, Craft, and others provide a calendar to both quickly shift to other days’ notes, and, if the day selected doesn’t already have a daily note, one is create. Again, this works well in a database, but I don’t see it working well in a Tinderbox document.

I am creating daily notes for my projects during the day in the tbx for the specific project. For this I have defined a prototype setting the actual date with OnAdd generating notes for each meeting or brainstorming session with myself. Tasks generated in the meeting are childs of the meeting with topic, due date and contact name.

On the go I am generating daily notes in draft on my iphone or on paper. At my desk, I am putting them into the tbx for the specific project of the note.

I am using aliases a lot for connecting daily notes with subprojects or other meetings.

In the past I have used craft calendar daily notes but to much organisational effort for me.

1 Like

Hi Mark,

Sorry for the daft question, but I assume the purpose of the thread to give people things to work on to develop their Tinderbox skills, and ultimately to provide a template for a journal that anyone could use and adapt?

If so, do you want people to provide fully working starter files, or just to propose solutions we’ve found for the individual tasks as we go along? For example, after playing around with the ‘automatic daily note creation’ I think I’ve found a way to do that using create() (I was pleased, but the solution won’t be a surprise to experts of course…)

Should I post that snippet now, or wait till I have a full working template?

As I said, sorry for the daft question…

I think this is a new feature that Mark is proposing, to have TBX automatically produce a daily note. In addition to helping index what we are working on in a TBX file, it could also capture other data automatically, e.g., weather, program in the file, etc.

I really is an interesting idea. I’m curious how it would work, however, for people that work across multiple Tinderbox file (I have about 6 TBX files that I work off of constantly, and about 7 other project ones).

I think snippets are great!

Not all Tinderbox files will want daily notes, and plenty of people won’t want them at all. I’m thinking, first of all, of a fairly common chore: keeping a running word count to reflect progress toward completion of a paper or book. In the past, I made a note manually and dragged it into a container. The container calculated the word count, stored it in the note, and draw a graph of the progress. But now we don’t even need to do that: we can do that automatically.

I envision a sample file someday with a single note, Daily Note Installer. Its text begins:

Daily Note Installer

Copy this note and paste it into the Tinderbox document in which you wish to keep daily notes. That document should already have Built-In Hints installed. The rest of this note contains various settings and options.

For example, the following line specifies that name and location of the Tinderbox container that will hold your daily notes. You can change the name to customize your document

Container: /DailyNotes

Thanks both! I just add the snippet for the automatic note creation first as I’ll need to think about the rest of it in more detail…

This snippet below has worked so far: if I delete today’s note, it’s automatically added again. I left it open last night while the computer slept and this morning a new note had been created with the new date.

I added this to the “Daily Notes” container rule:

create("/Daily Notes",date("today").format("y-M0-D w"))

(It’s in the rule in the screenshot, but I suspect the edict is a better place for it…)

Obviously, the date format is changeable at discretion, though one caveat is that you don’t seem to be able to use the UK/European method of using / as the date delimiter, because that’s interpreted as a call for a new container and you end up with:

- Daily Notes
– 02
---- 02
------- 2023

So you can’t use the simple format("l") form and I rolled my own.

At first I tried with agents and so on adding checking mechanisms to see if there is an existing note, but then I found that create does this checking automatically. I’ve not moved on to populating the note contents yet, but that doesn’t feel like it’s the most complicated part of the problem.

I’ll have a go at giving the rest fo the problem a try – I’ve got an idea but it will take some working out…

1 Like

So, am I on the right lines?

Makes sense! Another approach would be to use ISO 8601 dates through .format(“=”). These look like:

2023-02-03T09:45:43-05:00

We only want the date part. We use .split to split at the T, then grab the first part:

date("today").format("=").split("T")[0]

Thanks, Mark!

Ok, here’s a quick and dirty first stab at the ‘Daily Note Installer’. (Sample file at the bottom of this post…)

If you copy the it to a new TBX, then enable its $Rule, it will (or at least it does for me :grinning::

  1. Create an attribute to hold the user’s preferred container name, then populate it by extracting from the text

  2. Create the notes container with their preferred name

  3. Create a prototype container and give it an On Add action to make new children into prototypes automatically. (Neither will be necessary or will trigger if they already have prototypes of course. And I don’t actually use the prototype for anything in this first draft – it’s just there as a stub for the enhancements to come).

  4. Adds an $OnAdd action to the Daily Notes container to give all new children the pDailyNote prototype.

  5. Finally, give the Daily Notes container the $Rule to create new daily notes inside it – that’s the same code as my snippet above. This rule will automatically create the first daily note.

The $Rule for the ‘Daily Installer Note’ is this:

createAttribute("DailyNotesContainer");
$DailyNotesContainer = $Text.extract("Container: (.*)"); 
create($DailyNotesContainer); create("/Prototypes"); 
$OnAdd("/Prototypes") = "$IsPrototype = true;"; 
create("/Prototypes", "pDailyNote");
$OnAdd($DailyNotesContainer) = '$Prototype="pDailyNote"';
$Rule($DailyNotesContainer) = 'create("/DailyNotes",date("today").format("y-M0-d w"))';

When you copy the Daily Note Installer into a new TBX file, the $Rule isn’t enabled – I assume this is security feature.

The process for the user would be:

  1. Copy the Daily Note Installer to a new TBX.

  2. Change the default configuration in the text of the note (at the moment only Container is set up…)

  3. Enable the rule.

It should then work…

I’m not a programmer, so it’s very rough and ready and I’m sure it can be improved greatly, but as proof of concept, is it of any use?

TBX before enabling the rule:

TBX after enabling the rule:

Ready to test:

Daily Note Installation (before).tbx (94.8 KB)

2 Likes

EDIT: $Rule($DailyNotesContainer needs to be amended to

$Rule($DailyNotesContainer) = 'create(date("today").format("y-M0-d w"))';

I.e. remove the identification of the path, otherwise it won’t create new Daily Notes in the right container if the user has changed the default. I won’t change the sample TBX as this is still only a rough draft.

1 Like

Hi all, in my project daily notes I am trying to group my notes by topic using an agent. But i want to keep the outline order in the agent as in the original notes.

Example

2023-02-01 Meeting 1 (topic a, b, c)
Note 1 with topic a
subnote 1 with topic a
subnote 2 with topic a
subnote 3 with topic a
Note 2 with topic b
Note 3 with topic c

2023-02-15 Meeting 1 (topic d, a, c)
Note 1 with topic d
Note 2 with topic a
Note 3 with topic c
subnote 1 with topic c
subnote 2 with topic c

My goal is to have an agent with all notes of topic a as

agent „topic a“
2023-02-01 Meeting 1
Note 1 with topic a
subnote 1 with topic a
subnote 2 with topic a
subnote 3 with topic a
2023-02-15 Meeting 1 (topic d, a, c)
Note 2 with topic a

The agent is selecting all notes with „topic a“ using attribute $uTopic
I have tried sort by outline order original and by sibling order but the resulting order is not usable.

Is this doable at all in Tinderbox ?

Are you keeping the date of the meeting in an $Attribute (say $StartDate).

If you are, then the first step is to sort on $StartDate. This gives you:

You can set your Meeting Note prototype to fill in the $StartDate for the notes and sub notes automatically.

I’m only using your test data, so you may need to add to the sort with a second sort category, (and you may need to add another attribute to accommodate that), but it will depend on what needs to be done.

I hope this gives you something to work on.

2 Likes

THANKS! Looks very good. I will try it in my file and come back.

@rcramer As a followup, I tried putting in additional data (an extra note with topic ‘a’ and an extra meeting on day one) and this turned out to complicate matters a lot…

I tried various ways, but the following seems to work: set the first sort to “StartDate” as before, and the second to “OutlineOrder”, but make sure that the transform dropdown box on the left is set to “original note”.

This seems to work better but I’m sure there’s are still edge cases which need to be ironed out. Hope it helps get you started though!

1 Like

Working like a charm! The only difference in my file is, that the notes on the 3rd outline level are shown at the same level as their parent on the 2nd level. Will play a little bit with it and come back.

Thanks for your support and effort !

I may misunderstand the context but note that aliases inside agents are only every siblings: no nesting is supported. Agents return (visual) lists rather than outlines.

Thanks Mark. So outlining is not possible in the agent.

1 Like

Yes, correct. Once you understand the agent is producing a list the status quo is more obvious—even if not the outcome you were after.

You also can’t put actual note or other agents inside an agent. One exception is that in maps of agents (i.e. the map of the contents of the agent) you can add adornments. But as adornments are map-only features that doesn’t help for outlining.

1 Like

Yes, that’s right, agents don’t allow nesting.

That’s why it needs a bit of fiddling to get the ‘flat’ list in the right order. Hopefully, my second post achieves that for you.

Of course, there’s no reason why you can’t make the Meeting Notes title a little bigger (and/or a different colour) than the Notes titles, and those a little bigger than the sub notes. This will give them a little more visual separation. (Obviously, you do all this in the prototypes, so it’s fully automatic.)

2 Likes