The problem
The new year is a traditional time for adopting new
organizational schemes, among other oft-broken promises to oneself of
improved habits. In that vein, I recently adopted a new system for
managing my TODO list.
Managing a household involves a lot of infrequent tasks that are easy
to forget like checking filters on various appliances every few months
and similar invisible maintenance tasks. I had been managing such tasks
using recurring Google Calendar events with email reminders, but it
was getting unwieldy for multiple reasons. It didn't provide a good
record of whether and when tasks were completed (which matters for tasks
that should be done some number of weeks or months since the last time
it was completed, not since the last time I was reminded of it).
Additionally, it
doesn't provide a good way to share the TODOs with other members of the
household who are also responsible for some of those tasks. And it also
cluttered up my calendar with items that didn't really have a meaningful
assignment to a particular day or time.
The solution
Task management systems are very personal: while I will describe what I
came up with that hopefully I will continue to find useful, what works
for you may be very different.
I set up a TODO list for my household (plus a separate one just for
myself) using Sleek which uses the todo.txt format
(see todotxt.org for more info and other software).
The directory containing the TODO file is shared with the rest of the
household with Syncthing. For backups, the directory is a
ZFS dataset, so it is automatically snapshotted regularly and included
in my backups. If you wanted, you could also apply my copy on save
logic to snapshot every change, but that's likely
overkill.
Example tasks
While the simplicity of the todo.txt format means it's easy to edit by
hand or use any tool including ones you write yourself, the Sleek GUI
handles the syntax for you so it is accessible to non-technical users as
well.
Sleek supports "threshold" dates before which tasks are hidden from view
by default and recurring tasks which can be "strict" (based on due date,
prefixed with +
) or not (based on completion
date), which allows the specification of tasks like "check
funance filter 2-3 months since the last time it was checked":
rec:3m t:2025-02-15 due:2025-03-15 check furnace @filter
as well as "pay the electric bill between the 20th and the end of each
month":
rec:+1m t:2024-12-20 due:2025-12-30 pay electric @bill
The thresholds allow for keeping the noise down on the list by hiding
tasks that cannot be done yet (can't pay a bill that hasn't arrived yet)
or don't make sense to do so soon after they were last done.
The details