October 27, 2007

Bulk view

Choosing a daily schedule in Emacs

There’s more than one way to plan your day in Emacs, just like there’s
more than one way to do everything in Emacs. The basic end of the
spectrum includes Diary, Calendar, and Appt. More sophisticated
modules include Org (part of Emacs 22) and Planner (available
separately). Then there are Emacs modules to export and import
calendar data to and from external programs, such as Remind.

If all you need to do is keep track of recurring events such as
birthdays and anniversaries, then Diary can be a good fit for you. All
it takes is one text file specifying the dates and descriptions of
one-time or recurring events, and one line in your ~/.emacs file to
display the diary entries for today whenever you start up. If you
switch to either Org or Planner later on, you can configure your Emacs
to include information from your old diary file.

If you find yourself wanting more integration with your task list and
your notes so that you can see everything related to the day, then
you’ll want to go for either Org or Planner. The choice between the
two depends on how you want to plan your day. …

If you’ve worked with a paper-based planner or a typical calendar application
for a while, then Planner might be a good fit for the way you think.
Planner has a strong day orientation. With Planner, you plan your
schedule in terms of day pages, and optionally cross-reference the
tasks with project pages. You can keep your schedule as plain text on
your day page, or you can follow the format suggested by Planner so
that your scheduled tasks and appointments will be added to Emacs’
appointment reminder system. Planner is similar to the scheduling
method of Franklin-Covey day planners and other paper organizers. I
like Planner because it’s easy to scribble notes onto my daily
schedule, just like I would pencil comments into my paper planner.

Org focuses on projects instead of days. With Org, you plan your
projects first, and then schedule specific tasks or appointments onto
your calendar. Your daily view is then dynamically generated from the
headlines of the outline nodes that are scheduled for the day. You
need to use a special format, but built-in commands make it easy to
create and edit timestamps. Org has great support for David Allen’s
Getting Things Done (GTD) productivity technique. If you think in
terms of next actions or outlines, Org is a good fit for you.

You can still think in terms of projects with Planner, but you’ll need
to remember to use the built-in commands for editing functions so that
your changes are also reflected in the day pages. You don’t need to
organize your Org file by project. You can throw everything into one
outline if you want. However, you’ll still need to use the
dynamically-generated summary view (org-agenda-list) to see your daily
or weekly schedule, and reading all the text associated with the day
could mean some jumping around.

In short:

  • If you think in terms of day schedules, start with Planner.
  • If you think in terms of projects or outlines, start with Org.

If you haven’t figured out how your brain works yet, I recommend
starting with Org.
I think that the project-based approach will
probably help more people out in the long run. I have to admit that I
love Planner and I’ve been using it very happily for more than four
years. I love being able to add all sorts of free-form notes while
going through the day, and Planner makes it easy to publish that as my
blog. (Automatically removing all my private notes, of course!) I’ve
gotten used to the way Planner works, and because of my extensive
modifications, Planner’s gotten used to the way I work as well. If
you’re starting from scratch, you might like Org’s better support for
projects, outlines, and overviews. Give Org a try first. If you find
yourself wanting more flexibility in your day view, try Planner next.


If you’ve tried both, I’d love to hear your thoughts on the
differences between them. I’m trying to figure out when one fits
better than the other because I’m working on a book called “Wicked
Cool Emacs”. I love Planner, I’m getting the hang of Org, and I’d love
to hear from other people who have given both a shot. =)

Random Emacs symbol: message-forward-decoded-p – Variable: Non-nil means the original message is decoded.

On Technorati:

Tweaking day-specific planner pages

If you set planner-day-page-template to a function. Planner invokes
the function when creating a new day page. This means that you can do
all sorts of stuff. For example, to include the day name in your day
template, add the following code to your ~/.emacs:

(setq planner-day-page-template (lambda ()
  "Day page template for Sacha."
  (let ((date (planner-filename-to-calendar-date (planner-page-name))))
    (insert (calendar-day-name date) "\n* Tasks\n\n\n* Schedule\n\n\n* Notes\n"))))

Let’s say that you wanted to have day-specific messages:

(setq planner-day-page-template (lambda ()
  "Day page template for Sacha."
  (let* ((date (planner-filename-to-calendar-date (planner-page-name)))
         (day (calendar-day-of-week date)))
    (insert (cond
             ;; Day of week starts from 0
             ((= day 0) "Woohoo! Sunday!")
             ((= day 1) "Oh no, it's Monday")
             ((= day 5) "T.G.I.F.!")
             ((= day 6) "I love Saturdays.")
             ;; The rest of the days
             (t "Is it Friday yet?"))
            "\n\n* Tasks\n\n\n* Schedule\n\n\n* Notes\n\n"))))

… although you might want to have a more upbeat way to think of weekdays. ;)

You could do lots of things to your day page template. You could
include one line describing your career goals into your planner every
weekday and one about your personal goals every weekend. You could use
fortune to include a random work-related joke or quotation during the
weekday and a fun-related one during the weekend. You can even include
text based on the current month or day or year, if you wanted.

It pays to learn Emacs Lisp. Crazy Emacs geeks like me
build all sorts of entry points for customization, so you’re really
just limited by your imagination. =)

Random Emacs symbol: w3m-toggle-inline-images-internal – Command:
Toggle displaying of inline images on current buffer.

On Technorati:

Emacs: managing schedule

If you spend a lot of time in Emacs—writing code, reading mail,
saving the world—then it makes sense to manage your schedule in Emacs
as well.

Here are some productivity tips for getting the most out of Emacs scheduling:

  • Make it easy to add to your schedule. Bind your appointment-creation functions to shortcut keys and practice using them until you’ve memorized where they are.
  • Make it easy to review your schedule for the day. The keybinding C-c s is handy for this. If you prefer not to use the Control key, then F9 s or any of the other function keys might work. Diary: Bind M-x diary to a shortcut key. Org: Bind org-agenda-list to a shortcut key. Planner: Bind planner-goto-today to a shortcut key.
  • Set up an automatic reminder system such as Appt. If you can trust that your reminder system will interrupt you even if you’re focusing on something else, you’ll worry less about missing appointments. You’ll find it easier to stay focused because you won’t need to check your schedule as often.
  • If you need to be reminded earlier than normal, create another, earlier appointment. For example, if the commute to a meeting takes half an hour, you don’t want to be reminded of the meeting only 10 minutes before it starts. Create another appointment that starts at least half an hour before so that you’ll be on your way. It might be a good idea to start even earlier.
  • Planning ahead helps you save time and avoid stress. Plan your day the night before, or in the morning if you need to. Spend a little time during the weekend to review your upcoming week, making sure to schedule in time for your important tasks. Diary: C-u 7 M-x diary. Org: org-agenda (bind this to C-c a), choose the agenda view (a), and switch to week (w). Planner: Use planner-appt and M-x planner-appt-forthcoming-display. To include this in your Planner page, create a section for forthcoming appointments. For example, on your Saturday and Sunday templates, you can add a section heading * Forthcoming Appointments. I’ll post code on how to have day-specific templates soon.

On Technorati:

Random Emacs symbol: custom-variable-p – Function: Return non-nil if VARIABLE is a custom variable.