This is neat! I tried doing something similar but I couldn’t derive much use from it, and eventually stopped. How do you pull analytical data from these logs?
Most often, I simply look something up. To answer questions like “How much curls did I do with these weights last time?”.
For simple statistics I use bash. For example to answer the question “What is the distribution of my mood” I do:
grep -o 'mood:[^\(]*[^\( ]' log.txt | sort | uniq -c
I have not yet calculated correlations. Even though I have close to 2000 entries now, I expect it not to be enough to answer questions like “How does Vitamin B12 impact my energy?” just yet. To calculate specific correlations and do general data mining, I will probably write custom scripts. Those will read in the log and then do the calculations in memory.
There is a certain elegance in creating what is essentially a product, albeit a simple one, in a form of a text file spec instead of code.
I see one major practical issue if I were to try and adopt your approach for myself: do you know of a sufficiently smart text editor on a smartphone, to conveniently work with this type of file? At the very least it should support text macro. I guess synchronizing it between different devices can be done with Dropbox-like services.
Indeed, how to do it on a phone is a question that yet has to be tackled.
One approach I want to try these days is using Vim on a PinePhone.
Thanks for sharing! I’ve been mulling over similar ideas much of this year. I think self-tracking as you described here could even be done on top of the daily notes of a Zettelkasten, and as such would make for a great plugin (amidst other plain-text-as-structured-data plugins like spaced repetition) for neuron.
Zettelkasten uncovers some interesting possibilities, such as linking your “Slept_with_the_window_open” event using [[Slept with the window open]], which Zettelkasten editors (like nvim or cerveau) can help autocomplete, all the while giving you dedicated note space to describe that event.
[[Slept with the window open]]
 Some ideas here: https://github.com/srid/neuron/issues/363#issuecomment-695863825
Yes, there are some tools where you can define event types that you want to capture. Org-capture being another.
The difference to the syntax I describe is that here the log itself defines the event types. A dedicated self-tracking application supporting this syntax would suggest “Slept with the window open” if this event has appeared anywhere in the log before. Without the user having to define it separately. And without having to use underscores.
The rule that underscore equals space is just a convenience for when you use a plain text editor to write the log. I currently use plain vim for it.