This thread stuck in the back of my mind. Mostly because I didn’t like how you ended up with a solution where you have to log the thing before doing the thing.
[A Few Moments Later]
What if you started a timer before you brushed your teeth and submitted the data point only when stopping the timer? If you forget to add the data point, you will be reminded when seeing the still running timer. By the way, I’m just thinking aloud here, because if it works for you, there’s nothing wrong with it, of course. Hope you don’t mind the imposition.
This can be implemented quite neatly in emacs + beeminder.el (h/t @mbork). Create a teeth brushing task:
* TODO brush teeth
SCHEDULED: <2021-11-05 Sat .+1d>
Clock-in on the task. Brush your teeth. Mark the task as DONE. This stops the timer, submits the data point to your graph and re-schedules the task for the next day. If you for any reason don’t stop by your laptop to stop the timer, emacs will shout at you later and you will remember that you did in fact brush your teeth. If there’s no data point and there’s no running timer, you forgot and should derail.
If you start the timer and then the doorbell rings, hopefully you would remember to cancel or restart it, so you aren’t tricked into thinking you brushed your teeth.