How to work with the Journal feature

Keeping a Journal with TiddlyWiki and in Obsidian in the past has been an on-off relationship for me. I use journals for my own benefit, not for publication and I find that by writing down the day’s important happenings is a cathartic process. It’s almost like a guilt-free confession to yourself! I’m determined to take up creating journals in a more systematic way than before and to have a way to review a summary of them by time period or other parameters e.g. certain field values.

However, my current Journal template must be revised. I’ll create a top section heading, !! ''Highlights'' and a <<divider>> (a CSS styled divider line that I also use elsewhere in my wikis). Anything that I write between these elements which could be a few bullet points and occasionally plain text would be a summary of the day’s journal. Below the divider I may add more notes and details.

Each bullet point and the plain text may be formatted. For example, bold or italics.

All my journal tiddlers are tagged Journal and their title always begins with YYYY-MM-DD.

I would greatly appreciate your ideas and advice on the following two points.

A. Technical: How may I create a list of journal titles showing per title the tiddler title and any content between the elements in the top section as I described above?

B. Practical:

  • Do you use Journals and if so, what fields do you use?
  • Do you capture elements like mood, energy, importance?
  • Any other elements that I could consider?
  • Do you use more tags?

Give this a try:

<$list filter="[tag[Journal]!sort[modified]]">
   <$let out={{{ [{!!text}split[!! ''Highlights'']nth[2]split[<<divider>>]nth[1]] }}}>
   <$link/>
   <blockquote>

   <<out>>
   </blockquote>
   </$let>
</$list>

Notes:

  • $list filter finds all tiddlers tagged with Journal and sorts by modified date, newest first.
  • $let uses a “filtered transclusion” to extract the Highlights section of the journal tiddler:
    • {!!text}split[!! ''Highlights'']nth[2] gets all content after the highlights heading syntax
    • [<<divider>>]nth[1] discards any content following the divider (including the divider macro itself)
  • $link show the journal tiddler title (as a link to that tiddler)
  • <blockquote>...</blockquote> adds some formatting to display the highlight text
  • note the blank line before <<out>>. This ensures that any bullet items, tables, etc. contained in the highlight text is correctly output using “block” mode formatting rather than “inline”.

enjoy,
-e

5 Likes

IMO you should use YYYY-0MM-0DD so they start with 01, 02 and so on. So your journal titles are sorted alphabetically in the right order.

3 Likes

The default of a Journal tiddler is set so that it is opened and edited within the same day. In this way, it’s convenient bacause you can save it, put it away and come back to it using the New Journal button or a shortcut.

But the default could be set to the hour or even to a month.

I haven’t been using jornal tiddlers for a while. Maybe because I had so many of them and it was hard to find things.

And I’m thinking I might give it another go very soon.

I’ll touch on the practical elements. Everyone is different and this is just my subjective experience.

As background: Around 2017, I found a lot of days were blending in. I started keeping a diary of the day’s events to see if my life really was that boring. I didn’t follow any methodology or online hype; it was entirely my own idea. I kept it up for about 4 years. My entries were usually quite brief (partly constrained by doing it on paper). Over time, I came to prefer not writing in a particular style, so it was just prose - and not in shorthand either.

I am glad I did though it ultimately became a chore to commit to a daily diary, and it became yet another obligation to fulfil in my mind before I could call it a day. I tried to do it with less frequency but I got less out of that. I also tried some hyped-up ideas like gratitude, but quickly dropped them. I think forcing these things distracted from what it was giving me, and the fact they were forced meant I could not actually integrate e.g. gratitude as a practice or way of being.
So after far too long, I decided to stop keeping a journal in 2021.


I have returned to the practice over late 2024-early 2025, but in TiddlyWiki instead of an annual diary/planner book. I now do it only when I feel like it, which is every week or so, focusing on the first things that come to mind.

One constant is that I have never gone back and read my journal entries, apart from a couple of instances where I wanted to see a very specific event some years ago. It was the same event both times, actually. It is just a way for me to process feelings & happenings more than anything.
For me the process of writing is a way to meditate on an event in a way that isn’t problematic rumination. Being able to read back an entry gives me almost no value, while the process of writing a cohesive thought about events in my life is very helpful.

I would also add that this is a very private document. I do not include a list of tasks to complete in my journal. I will only describe my subjective experience with them, if I feel it relevant. Again, I just let the words flow.

A usual entry will be the day’s date, and then me recounting some of the main events of the past week or two. I just let the words flow, not rewriting them too much, until I feel satisfied. I will on rare occasion consult previous entries (over the past 1-2 weeks only) but will almost never edit them - not as a matter of principle but as there would be little purpose for what I’m getting out of my journal; a subjective document of time as it is now, to me.

Do you use Journals and if so, what fields do you use?

A journal-date field as recommended by a previous topic here (you’ll have to search for it, quite a few people use it). I can then have a more human readable title. I favour DD MMM YYYY - DDD, which would give output like ‘27 December 2025 - Saturday’.

Do you capture elements like mood, energy, importance?

I did in the past, but I preferred using it for the purpose stated above, so it is free-format prose. The only requirement is a title and entry date.

I am personally not on board with ‘quantified self’ approaches and don’t do that anywhere else in my life. I found that tracking these things got in the way and created an additional obligation, which I didn’t want to put on myself.

Any other elements that I could consider?

Heavily interlink your journal with the rest of your wiki. I link names of people especially. You can then see them under More → Missing. I also have backlinks visible, so I can see the different times someone or something has impacted me in some way.

3 Likes

@yan Missing and Backlinks: :agree.

I’m going to be trying Monthly Journals for a while.

We could excise the entries. But we’d lose the tags. Let’s find a way to add tagging to the 'excise dialogue box.

Thank you very much. So sophisticated, but elegant solution. Your accompanying explanation added a lot depth and understanding about how it works. I’m awed by it.

There’s one minor point that maybe would be a useful refinement. In the albeit unlikely event that a tiddler tagged Journal happens not to have the !! ''Highlights'' heading it would be better if that tiddler were not listed or maybe list it but show No Highlights?

EDIT: If I were to add a journal-date field using the format YYYY-0MM-0DD how could I get a listing for date ranges?

You are absolutely right. It’s a big improvement to do as you suggest.

Thank you for sharing your rich experience with keeping a Journal. It’s very valuable to me and I share some of your experiences, especially those about feeling the weight of keeping consistently a daily diary. It’s true that many days in my life are the same and/or are not worth noting anything about them. I too read about “gratitude” and similar ideas, but I never truly believed in them.

I’ll try and keep my Journal as simple as possible, maybe more as a record of events in my life that are worth skimming over at some point in time. Hence the prospective use of the Highlights as a magnet to draw me to the salient part of each Journal.

You might also want to experiment with Text excerpts by Tobias to see if that might be of use.

1 Like

I do a Journal entry when ever the mood arises now, but when I was busier I did it every day. To make it smoother I did the following;

  • Edited the New Journal and New Journal Here buttons to also add journal-date=<<now "YYYY0MM0DD0hh0mm0ss0XXX">> add to the <$action-sendmessage $message="tm-new-tiddler" this means I can use any name and always have the journal-date to find and sort journals.
  • I use the menu plugin and place a test version of the new Journal button in the menu of the Form “28th December 2025” to display todays date and click to create. I can also use this to return to the Journal any time on the same day.
  • I only enter prose or ad hoc notes to the Journal tiddler but;
  • I Use a template to display over the Journal tiddler that has groups of checklist of do every day items, and instructions to follow to make my wiki work well, these use fields on the the journal tiddler to store checked items.
    • These could be used to lookup the journal tiddlers and return statistics, or last day I did something less common etc…
    • The template also displays date info eg
      • “Journal date: Sunday 28th of December, 2025. Week 52 DOY 362”
      • <$text text={{{ [{!!journal-date}format:date[DDD DDth of MMM, YYYY. Week 0WW DOY ddddd]] }}}/>
  • I have a sidebar Journals Tab to access recent journals;
[[Recent Journal entries (14)|$:/PSaT/journal-tab/sideBar]] {{$:/core/ui/Buttons/new-journal}} [[Selective journal]]<br>

<$list filter="[all[tiddlers]has[journal-date]!sort[journal-date]limit[14]]">
   <$link/>, <$text text={{{ [{!!journal-date}format:date[on DDD of week WW]] }}}/><br>
   <$list filter="[all[current]get[day-note]]">> ''<small title="day-note for above journal"><$text text=<<currentTiddler>>/></small>''<br></$list>
</$list>
  • If you follow the link to “Selective Journal” there are a number of ways to list and view journal tiddlers, by month year etc…

enjoy

2 Likes

Thank you for the information. At last I understand how to create and populate properly the journal-date field!

I’m still struggling how to take advantage of the journal-date field in order to view the results of @EricShulman’s <$list> filter for a range of dates or a “dates-before a date” or a “dates-after a date” scenario.

filter for a range of dates:

<$let from="20240101" to="20251201">
<$list filter="[all[]has[journal-date]!sort[journal-date]]
   :filter[{!!journal-date}compare:date:gteq<from>compare:date:lteq<to>]">

before a date:

<$let before="20240101">
<$list filter="[all[]has[journal-date]!sort[journal-date]]
   :filter[{!!journal-date}compare:date:lteq<before>]">

after a date:

<$let after="20240101">
<$list filter="[all[]has[journal-date]!sort[journal-date]]
   :filter[{!!journal-date}compare:date:gteq<after>]">

-e

2 Likes

Thank you again for your wonderful help. I also started using a few buttons for it using the following code.

<div style="background: #f9f9f9; padding: 15px; border: 1px solid #ddd; border-radius: 8px; margin-bottom: 20px;">
<div style="margin-bottom: 15px;">
   <$button class="tc-btn-invisible" style="border: 1px solid #ccc; padding: 2px 8px; border-radius: 4px;">
      Today
      <$action-setfield $tiddler="$:/state/range" 
         start=<<now "YYYY-0MM-0DD">> 
         end=<<now "YYYY-0MM-0DD">> />
   </$button>

<$button class="tc-btn-invisible" style="border: 1px solid #ccc; padding: 2px 8px; border-radius: 4px;">
   Last 7 Days
   <$action-setfield $tiddler="$:/state/range" 
      start={{{ [<now "YYYYMMDD">] :map[subtract[7]format:date[YYYY-0MM-0DD]] }}} 
      end=<<now "YYYY-0MM-0DD">> />
</$button>

<$button class="tc-btn-invisible" style="border: 1px solid #ccc; padding: 2px 8px; border-radius: 4px;">
      This Month
      <$action-setfield $tiddler="$:/state/range" 
         start=<<now "YYYY-0MM-01">> 
         end=<<now "YYYY-0MM-31">> />
   </$button>

<$button class="tc-btn-invisible" style="border: 1px solid #ccc; padding: 2px 8px; border-radius: 4px;">
      This Year
      <$action-setfield $tiddler="$:/state/range" 
         start=<<now "YYYY-01-01">> 
         end=<<now "YYYY-12-31">> />
   </$button>

</div>

   <strong>From:</strong> 
   <$edit-text tiddler="$:/state/range" field="start" type="date"/>
   &nbsp;&nbsp;
   <strong>To:</strong> 
   <$edit-text tiddler="$:/state/range" field="end" type="date"/>
   &nbsp;&nbsp;
   <$button>
      Clear Dates
      <$action-setfield $tiddler="$:/state/range" start="" end=""/>
   </$button>
</div>

<$let 
   startDate={{{ [{$:/state/range!!start}split[-]join[]addsuffix[000000000]] }}}
   endDate={{{ [{$:/state/range!!end}split[-]join[]addsuffix[235959999]] }}}
>

   <$list filter="[tag[Journal]!sort[modified]]">
      <$list filter="[is[current]get[journal-date]compare:integer:gteq<startDate>compare:integer:lteq<endDate>]" variable="match">
         
         <$let out={{{ [{!!text}split[!! ''Highlights'']nth[2]split[<<divider>>]nth[1]] }}}>
            <strong><$link/></strong>
            <blockquote>

               <<out>>
            </blockquote>
         </$let>

      </$list>
   </$list>

</$let>
1 Like