iCal

links for 2007-10-26

iCal 2 todo class properties

Just in case you’d like to play around with the to do creation itself, iCal has a few properties for the todo class that can be added in a similar fashion to what you see in the PARTB string from totodo.sh:

  • completion date (date) : The todo completion date.
  • due date (date) : The todo due date.
  • priority (no priority/low priority/medium priority/high priority) : The todo priority.
  • sequence (integer, r/o) : The todo version.
  • stamp date (date, r/o) : The todo modification date.
  • summary (Unicode text) : This is the todo summary.
  • description (Unicode text) : The todo notes.
  • uid (Unicode text, r/o) : A unique todo key.
  • url (Unicode text) : The URL associated to the todo.

Remind Like Water: totodo.sh

(Part of the Remind Like Water series)

The idea is to separate out the repeating/recurring tasks from the regular projects and actions (contained in a GTD program like iGTD or OmniFocus), and hook it up with a calendar system of some sort. Using remind and iCal, we can make that happen with a smidgen of sealing wax and bailing wire.

This shell script takes the output of the standard rem -q command and creates individual to do items in iCal from it. Pretty simple and barebones at the moment, but works. It will need to be in your path in the terminal and made executable. If you scoff at my mad script skills, feel free to offer alternative approaches — I’d love to hear them.

Like anything nowadays, the script may cause blindness or extreme rashes, so make backups before testing.

#!/bin/sh
# by Robert Daeley
# version 0.1 2007-06-07
# assumes existence of iCal calendar called "remind"
# run in your terminal with ./totodo.sh

REMINPUT=$(rem -q | sed '/^Reminders /d;/^$/d' | \
 tr "\n" "," | sed 's/,$/ /')

PARTA='make new todo at the end of todos of calendar \
 remcal with properties {summary:"'
PARTB='", due date:thisday}'
IFS=","
for TODONAME in $REMINPUT; do
    osascript -e 'set remcal to "remind"' -e 'set thisday \
     to current date' -e 'tell application "iCal"' \
     -e "$PARTA$TODONAME$PARTB" -e 'activate' -e 'end tell'
done

Remind Like Water, disclaimer

I should add that this “Remind Like Water” project is more of a feasibility analysis than anything else. In other words, don’t try this at home. ;)

I both love and hate when my system gets in flux — love due to finding new ways to organize, hate due to the plate-spinning getting precariously out of control.

With the flux comes the need for a decision, covered in the above links. I just don’t feel comfortable investing the time in iGTD yet, and kGTD is pissing me off. Remind is a great reminding system, but not a great to-do tracking system. I may have to revert to something simpler for now — say, an OmniOutliner-based document of my own, possibly with a scripted interaction with Remind and/or iCal, but way less involved than kGTD.

I say “pissed off” at kGTD, when really I should be thanking it for helping me get back on the path to an organized life again. So much got out of control this past year, I can liken it to a train derailment, with car after car falling to the wayside.

Remind Like Water, part 2

So, after some investigation and experimentation, here are the tools so far for my “Remind Like Water” project.

A tiny Applescript is also used, but only due to iCal’s apparent inability to deal directly with a shell command script.

This project isn’t complete by any means, but these are the first steps, seeing if my idea is feasible.

Remind

I created a “Remind” folder in my home folder, as well as making a ~/.reminders file via Terminal.

Inside the Remind folder are several files for various purposes:

  • birthdays (family and friends)
  • home (non-work appointments and errands)
  • local (hometown events)
  • office (work meetings and events)
  • recurring (daily and other tasks)
  • seasons (http://wiki.43folders.com/index.php/Earth_Seasons)
  • sports (baseball games)
  • sunrisesunset (http://wiki.43folders.com/index.php/Remind_Cookbook)
  • tv (weekly television shows)

All of these are included in .reminders with lines that look like:

INCLUDE /Users/robert/Remind/birthdays

Growl

Installed the growlnotify utility, which enables me to interact with the Growl notification system, running Remind commands, the results of which are displayed in Growl message windows.

iCal

Created a new event called “Remind” that is scheduled for 05:00 and repeats every day. It uses an alarm to run a script (unfortunately an Applescript is necessary) called whatupdog.scpt

whatupdog

This command, once Remind is set up properly, serves to get your current day’s reminders, then display them in a Growl sticky message:

remind ~/.reminders | growlnotify -s

Just to avoid any directory and portability issues, here’s what it will look like with all the pathnames added (assuming everything is in the same place on your system):

/usr/local/bin/remind /Users/robert/.reminders | /usr/local/bin/growlnotfiy -s

I put that line in a file called whatupdog which is saved in my ~/Scripts folder and made executable via chmod.

Also there is an Applescript that contains only this line:

do shell script "/Users/robert/Scripts/whatupdog"

saved as whatupdog.scpt in the same spot.

Thanks to the iCal alarm mentioned above, I would then get a sticky Growl note every morning — and since iCal handles alerts even if the computer is asleep or off, I theoretically won’t miss anything.

Quicksilver

This will eventually be used to append events and to-do items to the various ~/Remind files.

More to come.

Syndicate content