I've often had a yearning for any kind of a todo list that meets the following requirements:
- Simple to use
- Easy to maintain
- Quick to start using
- High Mobility
- Require low effort
I have tried many kinds of "todo" lists. The first one is the ungeeky kind, Ye
Olde Paper. Paper is great, unfortunately it doesn'treplicate easily and
is easily lost when made portable. Post-It notes fall under this category -
easily lost, not mobile without high loss.
Next, I tried online "todo" lists such as
tadalist.com. These such organizational
tools are great and meet all but one of my requirements: requiring low effort.
I am a creature of habit, and learning new habits is difficult. This "new
habit" would be my continual visitation of the online todo list. What actually
happens is I update the todo list once, then promptly forget about it. That
means I need some sort of periodic reminder.
There exist many kinds of virtual "postit" programs. One such program is called
xpostitPlus. It wastes valuable screen realestate and is ugly. Furthermore, it
is not mobile unless I use X forwarding or replicate the notes database. GNOME
has a similar program called 'stickynotes-applet' or something similar. I don't
use GNOME, and I imagine that the stickynotes applet suffers from the same
problems as xpostitPlus.
So I got to thinking about how to best solve this problem. I immediately
thought about writing my own python-gtk app that would let me do it, but I
realized quickly that it would fall under the same problems as the virtual
postit programs. Furthermore, that's overengineering a solution to a simple
problem that can have a simple solution (pen and paper, remember). I remembered
that zsh has a 'periodic' feature that you can schedule jobs to occur every N
seconds. "Every N seconds" isn't quite true, and this becomes beneficial. It
actually schedules execution for N seconds after the last run but doesn't
actually execute until you reach a prompt. My solution is very simple,
portable, and easy for me to use.
In my .zshrc:
# Periodic Reminder!
PERIOD=3600 # Every hour, call periodic()
function periodic() {
[ -f ~/.plan ] || return
echo
echo "= Todo List"
sed -e 's/^/ /' ~/.plan
echo "= End"
}
Periodic is scheduled as soon as the shell starts, so I see my '.plan' file as
soon as I open an xterm or otherwise login. every hour I get a reminder. I may
change this to once a day or something, but for the most part my solution is
complete and meets my requirements.
My '~/.plan' file:
* Register for classes
* Pimp
* newpsm/newmoused
* rum
This solution is stupid simple and is effective:
- Simple to use: integrated into my shell
- Easy to maintain: with vi
- Quick to start using: 10 lines of shell and vi... done
- High Mobile: via ssh, local .plan replica, etc
- Require low effort: reminders are automatic
I may improve this later using xsltproc(1) so I can set priority levels and
other things, but for now this will definatley suffice.