Planner Tip #2: Streamline undated tasks

One of the coolest things about Planner is the way you can tweak it to fit the way you think. Customizing planner-create-task isn't about shaving seconds off your task-creation time. It's about making it easier to get tasks out of your head and into Planner.

Variables like planner-expand-name-default and planner-use-day-pages make it easy to change Planner behavior to fit common ways of doing things. If you want to make greater changes, you can add advice to functions. See "Advising Functions" in the Elisp info manual for more information. Function advice is called only after arguments have been read. If you want to change the way arguments are asked for, define a new function and make an alias to it, or just redefine the old one.

Do you prefer working with mostly-undated tasks? Defaulting to undated tasks allow you to postpone thinking about when to do something. It keeps your day page task lists meaningful and manageable, too. This also makes Planner a better fit for the Getting Things Done method (GTD), which encourages a distinction between getting tasks into your trusted system and deciding when to do them.

Creating undated tasks

Let's say that you want to create undated tasks while still using day pages for other parts of Planner. Here's one way to do that.

(defadvice planner-read-task (around sacha activate)
  (let ((planner-use-day-pages nil))
    ad-do-it))

To disable that piece of advice, use M-x ad-deactivate RET planner-read-task.

What if you want to create dated tasks if planner-create-task-from-buffer is called with the universal prefix (C-u)? Disable the previous piece of advice or remove it from your ~/.emacs and use this instead:

(defun planner-read-task ()
  "Return a list of information for a task."
  (list
   (read-string "Describe task: ")
   ;; This part changes
   (when current-prefix-arg
     (if (condition-case nil (calendar-cursor-to-date) (error nil))
         (planner-date-to-filename (calendar-cursor-to-date))
       (let ((planner-expand-name-favor-future-p
              (or planner-expand-name-favor-future-p
                  planner-task-dates-favor-future-p)))
         (planner-read-date))))
   ;; This part still stays the same
   (when planner-use-plan-pages
     (let ((planner-default-page
	    (if (and (planner-derived-mode-p 'planner-mode)
		     (planner-page-name)
		     (not (string-match planner-date-regexp
					(planner-page-name))))
		(planner-page-name)
	      planner-default-page)))
       (planner-read-non-date-page
	(planner-file-alist))))
   planner-default-task-status))

What if you always want to prompt for the date, but want it to default to undated when you hit RET? Use the following to your ~/.emacs instead:

(setq planner-expand-name-default nil)
Copying undated tasks somewhere

If you're working with undated tasks, then you probably want to make sure they're copied onto a task page somewhere. You can use planner-multi to automatically do so when you create a task.

(require 'planner-multi)
(setq planner-multi-copy-tasks-to-page "TaskPool")

You can specify multiple pages for planner-multi-copy-tasks-to-page. For example:

(setq planner-multi-copy-tasks-to-page "TaskPool [[TaskPoolByProject][p]] [[TaskPoolByContext][c]]")

If you want to be explicitly prompted for pages, but default to Task Pool if not specified:

(defun planner-read-task ()
  "Return a list of information for a task."
  (list
   (read-string "Describe task: ")
   (when (and planner-use-day-pages current-prefix-arg)
     (if (condition-case nil (calendar-cursor-to-date) (error nil))
         (planner-date-to-filename (calendar-cursor-to-date))
       (let ((planner-expand-name-favor-future-p
              (or planner-expand-name-favor-future-p
                  planner-task-dates-favor-future-p)))
         (planner-read-date))))
   (when planner-use-plan-pages
     (let ((planner-default-page "TaskPool"))
       (planner-read-non-date-page
        (planner-file-alist))))
  planner-default-task-status))

Have fun with undated tasks!

Congratulations to the ACM people!

Ateneo de Manila University hosted an ACM ICPC regional competition for the first time. Notable results:

Hong Kong 1st place, 8 problems.
Ateneo Linden BoyZ (Mark Punzalan, Allan Espinosa, Topher Rigor) 3rd place, 7 problems.

Totally cool!

Daylight savings time

So... hmm... I'll be thirteen hours away from home, right?

"It's Sunday, October 30th ... Do you know what time it is?"

This is just a quick note to remind you that Canada returns to "Standard Time" on the last Sunday of October each year. So at 2:00am on Sunday, October 30th (last night), we re-set our clocks back one hour, to 1:00am (effectively losing one hour of the day). People usually reset their clocks just before going to bed on Saturday night. So when you wake up on Sunday, you have an extra hour to sleep in.

Please note though that with this return to "Standard Time" the early evening hours will now be darker sooner. This is often a dangerous time for pedestrians, because while your routines have not yet changed, the natural light has diminished dramatically, making it more difficult for drivers to see you when crossing streets. So please be extra careful in the evenings. And if you are driving or riding a bicycle, you will also have to be extra careful on Monday evening (Hallowe'en night), because there will be many small children out and they are often not familiar with street traffic dangers. And all of you cyclists should remember that your bikes require front and rear lights when riding at night — it's the law. It is also a very safe and effective way for you to be seen by oncoming road traffic and pedestrians.

E-Mail from Dermot Brennan

Yesterday’s Halloween party

Pictures at http://sacha.free.net.ph/notebook/wiki/2005.10.30.php . :) It was fun!

Vision

Your vision will become clear
only when you look into your heart.
Who looks outside, dreams.
Who looks inside, awakens.
- Carl Jung

E-Mail from Harvey V. Chua