Looking for ideas on how to use TiddlyWiki to track my reading habits.

204 views
Skip to first unread message

si

unread,
Oct 30, 2019, 1:52:32 PM10/30/19
to TiddlyWiki
Hi all.

I've been messing around with making a wiki to track what books I read and when I read them. I've run into a few sticking points and I'm curious to hear how others may have approached something like this (assuming there are people here who are as obsessive as me).

So what I have done is created a button that creates a book based on Title and Author data entered into an edit-text widget.

Then for the book tiddler itself I have a template with check boxes to mark the status of the book (to read, reading, read etc).

What I'm a little stuck on is how to manage reading a book multiple times. I would like to record the dates of each time I start and finish a book, and also the format it was in (sometimes I might read a physical copy and others listen to an audiobook).

I wonder if anyone has any suggestions for how to approach recording this data in TW?

I am generally interested in how others have approached anything similar so if you have any other ideas to share I would be most keen to hear/see them!

best, si

TonyM

unread,
Oct 30, 2019, 9:13:10 PM10/30/19
to TiddlyWiki
si,

What you seem to be asking for is a log process. I have a log system that allows me to log a note against any tiddler but it is written to a datatiddler with the key the datetime and contains the source tiddler title. Then a separate list can interrogate the datatiddler for all or just the current tiddler. You could add to this the different reading types.

  • Install the comments plugin and see if this is enough for you
  • Try my login tool here

The question you have posed highlights a valuable lesson, the book tiddler represents the book and always should. Reading a book is something different and it occurs multiple times and in you example can be done multiple ways. But if you try and force a multiple (Reading sessions) into a singular (book) it gets messy.

Regards
Tony

si

unread,
Oct 31, 2019, 6:21:54 PM10/31/19
to TiddlyWiki
Hi Tony,

Thanks for sharing your log tool, I think I will find some good uses for it.

For my problem it seems to me that one option would be to have one tiddler for a book with fields entitled "start", "finish" and "format", and then each could contain lists where each entry in the list references each time I read the book.

It sounds like you are saying that this is a bad idea? How would you go about structuring tiddlers that represent each time that a book is read?

regards, si

TonyM

unread,
Oct 31, 2019, 7:27:07 PM10/31/19
to TiddlyWiki
si,

I am not so sure what you are asking here, 


For my problem it seems to me that one option would be to have one ADDITIONAL? tiddler for a EACH? book with fields entitled "start", "finish" and "format", and then each FIELD? could contain lists ie a LIST FIELD? where each entry in the list TIME/DATE STAMP? references each time I read the book.

If you use a field to contain multiple entries that field can log one after the other, otherwise it typically contains only one value, that gets replaced after update. Yes you can do this and you will need to treat these fields as lists, the time stamp should perhaps be made into a title [[date time]] and you are likely to use the Listops Operators and Order Operators.

This is where the log tool instead would place this change in a Datatiddler.. Look for the data tiddler in the log tool to see what I have done. My log tool could be reworked to meet your needs but if your new to tiddlywiki it may not be so simple. The advantage of the log tool is actions on multiple tiddlers are logged in a timeline and can be all seen at once. You could create your own Log buttons for "start", "finish" and "format" that places the time date stamp in the log.
 
It sounds like you are saying that this is a bad idea? How would you go about structuring tiddlers that represent each time that a book is read?

This depends on your ultimate goal, will your data be in a form you can make use of as you wish.

Regards
Tony

PMario

unread,
Nov 1, 2019, 7:08:01 AM11/1/19
to TiddlyWiki
Hi si,

I am generally interested in how others have approached anything similar so if you have any other ideas to share I would be most keen to hear/see them!

In 2017 I did a howto video series, that created a "Script Manager Workflow". With 17 step by step videos, I did show, how the whole project woks. Basically explaining 80% of the code line by line.

As I did read your OP, I thought about the project. .... It uses different names, but I think it could be useful for you.

You can find more info in the introduction thread here in the group.

The project itself can be found as a bundle in https://wikilabs.github.io/editions/script-manager/   -> Select the right sidebar: More: System tab and you'll see the components.

!!!! BUT !!!!

If you directly start there, without investing about 2h looking at the videos, you'll probably waste 1 day or 2 to understand, what's going on.

have fun!
mario

si

unread,
Nov 1, 2019, 12:51:55 PM11/1/19
to tiddl...@googlegroups.com
OK so thanks your advice I think I have an idea of what I want to do. I must admit I am little confused though.

So here is the template I have created:

Book format: <$select tiddler='$:/book-format'>
<option>Physical book</option>
<option>Audiobook</
option>
</$select>


<$button>
<$wikify name=data-tiddler text="$:/
data/<<currentTiddler>>" >
<$wikify name=title-value text="
<<currentTiddler>> - <<now YYYY/0MM/0DD>>" >
<$action-setfield $tiddler=<<data-tiddler>> $index="
Title" $value=<<title-value>>/>
<$action-setfield $tiddler=<<data-tiddler>> $index="
Format" $value={{$:/book-format}}/>
<$action-setfield $tiddler=<<data-tiddler>> $index="
Start date" $value=<<now YYYY/0MM/0DD>>/>
Start
</$wikify>
</$wikify>
</$button>

<$button>
<$wikify name=data-tiddler text="
$:/data/<<currentTiddler>>" >
<$action-setfield $tiddler=<<data-tiddler>> $index="
End date" $value=<<now YYYY/0MM/0DD>>/>
Finish
</$wikify>
</$button>

With this template I can create a tiddler that represents a book (e.g. "The Bible") and add this template. Then every time I read the bible I can select the format from the dropdown box, press the "start" button which will add the format and the "Start date" to a json tiddler titled "$:/data/The Bible", as well as the title "<title> - <date>". The "finish" button will add today's date as an "End date" field in the json tiddler.

My main problem is that the data is overwritten every time I press the "start" button I want a new data entry every time I press the "start" button

In other words currently I can only  get this:

{
   
"Title": "The Bible - 2019/11/01",
   
"Format": "Physical book",
   
"Start date": "2019/11/01",
   
"End date": "2019/11/01"
}

but I want to be able to generate something like this:

[
{
   
"Title": "The Bible - 2019/10/31",
   
"Format": "Audiobook",
   
"Start date": "2019/10/31",
   
"End date": "2019/11/01"
},
{
   
"Title": "The Bible - 2019/11/01",
   
"Format": "Physical book",
   
"Start date": "2019/11/01",
   
"End date": "2019/11/01"
}


Does this seem like a sensible general approach to what I want to do?

I'm struggling to figure out how to do this from looking at your log tool.

I also want to be able to count the number of entries in the data tiddler so I can display how many times I have read the book?


Thank you very much for your help.

PLATO

unread,
Nov 2, 2019, 12:37:09 PM11/2/19
to TiddlyWiki

This is my BOOKs reading logs by Tidddlywiki

在 2019年10月31日星期四 UTC+8上午1:52:32,si写道:
Reply all
Reply to author
Forward
0 new messages