Over the years I’ve tried many different ways to remember stuff. I’ve tried paper calendars and diaries, which just got forgotten and gathered dust. I’ve tried post-it notes, which just get lost. I’ve tried keeping stuff in my head, which works some of the time, but the amount of time it works decreases with age.
Of course, I’ve also tried many software solutions. I’ve tried iCal, which is great but not portable enough. I’ve tried Google Calendar, which is very cool but for some reason doesn’t work for me. I’ve tried 30Boxes, which is beautifully designed but also doesn’t quite work for me. I’ve even tried Outlook, but that has the same problem as iCal.
After realising that graphical calendar applications don’t work for me, and because of my love of the command line, I went looking for a command line application. I found remind, and so far it’s working better than anything I’ve tried before.
Remind uses text files to store reminders, so you can edit them with any text editor you like, or write scripts to add reminders, or there are front-end applications if you like that sort of thing. The contents of the files look something like this:
REM Feb 2 MSG Ground Hog Day% REM Feb 14 MSG Valentine's Day% REM Mar 17 MSG St. Patrick's Day% REM Apr 1 MSG April Fool's Day% REM May 5 MSG Cinco de Mayo% REM Sun May [Week_2] MSG Mother's Day% REM Mon May [Week_3] MSG Victoria Day% REM 06 Nov 2008 +3 AT 13:00 +120 MSG Doctor %b.% REM 24 Nov 2008 +3 AT 08:00 +60 MSG Dentist %b.% REM Tue 1 +3 MSG Quiz Night %b.%
REM is the keyword for reminder, which most of your entries will begin with (there are other keywords, but for simple usage REM is all you need).
After REM comes the date the reminder will happen on. There is a huge variety of possible date formats making for ultimate flexibility. You can specify a full date, like the Doctor appointment above, or just a partial date, such as the statutory holidays above or even the quiz night entry, which evaluates to the first Tuesday of every month.
After the date you can specify an optional delta, for example +3, which means remind me every day starting 3 days before the event. You can also use *n which means repeat every n days.
Next is the optional time setting, for example AT 13:00, meaning the event happens at 1pm. This can also have a delta, for example +60, meaning remind me 60 minutes before the event starts.
Finally, we tell remind what to do when it’s time to remind us. Usually we just want a message, so that’s what the MSG keyword is for, which is followed by the message itself. The message can contain substitution variables, such as the %b in the above examples. The %b evaluates to “in n days”, “tomorrow” or “today” depending on how close we are to the event.
There are many other options, and it can be a little overwhelming if you try to figure it all out, but if you stick with the basics until you find you need something more, it’s a very powerful tool. There are lots of useful resources relating to remind at Roaring Penguin.