As I wrote earlier, I consider diary to be an underappreciated Emacs built-in.
I got interested in it again when I wanted to schedule a recurring
meeting in Org for the third Tuesday of every month. I saw on
Reddit that some folks use diary-float in place of the usual active
timestamp to achieve this. So I added this after the meeting header
to make it work:
* Third Tuesday of the Month Club SCHEDULED: <(%%diary-float t 2 3) 19:00-20:00>
I have five meetings that use this method of automatic scheduling. I like this approach because of its simplicity and elegance. Unfortunately, it doesn't behave the same way as a recurring task.
When I mark a recurring task as complete, Org reschedules it for the next date on which it should occur. And it changes DONE to TODO to ensure the event shows up on the agenda for the next occurrence.
This doesn't happen for a task that's scheduled with diary-float.
When marked complete, the headline remains at DONE; the next event
won't show up on the agenda.
And so Fengyuan Chen wrote next-day-spec1
to solve this issue. Unfortunately it doesn't work with the latest
versions of Emacs.
One of the many recognized cognitive biases is called the Sunk Cost
Fallacy2, which impels an individual to favor an inferior (or
incorrect) solution because a significant amount time, money, and/or
effort has been invested in the solution. Well, I've invested time
and effort in both diary-float
and next-day-spec, so I've continued to
endorse it as a solution.
But even if rescheduling did work, I think it's better to have each meeting scheduled as a subheading of the overall meeting topic, like this:
* Third Tuesday of the Month Club
** DONE May 2026: <2026-05-19 Tue>
:LOGBOOK:
CLOCK: [2026-05-19 Tue 18:54]--[2026-05-19 Tue 20:12] => 1:18
:END:
- Note taken on [2026-05-19 Tue 21:20] \\
We ate pizza. Again.
** TODO June 2026: <2026-06-23 Tue>
** TODO July 2026: <2026-07-21 Tue>
The advantage to this is that clocked time and notes are organized neatly within each individual subtopic, not aggregated into one logbook and a series of notes. If the aggregated time is desired, one could insert the log report. I'll review this in another post.
But it's fun to schedule events that occur on irregular dates, such as National Engineers Week (US), which is the week in which George Washington's birth anniversary occurs3. Here's how you can add it to an Org file:
* TODO Celebrate Engineers Week! SCHEDULED: <%%(equal (calendar-gregorian-from-absolute (calendar-dayname-on-or-before 0 (calendar-absolute-from-gregorian (list 2 22 (calendar-extract-year date))))) date)>
Do you have a favorite use for dairy?
1 https://github.com/chenfengyuan/elisp/blob/master/next-spec-day.el2 Sunk cost - Wikipedia
3 https://www.holidayscalendar.com/event/national-engineers-week/
No comments:
Post a Comment
Thank you for taking time to comment. Please note that comments may be deleted if they:
* Contain link(s) to a domain outside USA or Canada or to a commercial enterprise.
* Include non-English words or characters.
* Are irrelevant to the subject matter of the post.
For posts older than 14 days, comments are moderated and require approval.