NEW: For a prettier blog interface, see the Wordpress version!

~/.diary schedule
9:00 12:00 Class
13:30 16:30 Class
18:00 21:00 Attend the performance festival at YDC
Tasks
Priorities - A: high, B: medium, C: low; Status - _: unfinished, X: finished, C: cancelled, P: pending, o: in progress, >: delegated. Covey quadrants - Q1 & Q3: urgent, Q1 & Q2: important
BXAttend the performance festival at YDC {{Schedule:18:00-21:00}}
B3Xplanner-replan-task - update the timelog when we replan (PlannerModeMaintenance)
B4XReply: E-Mail from Harvey Chua (TaskPool)
Notes

1. Kanji for the day: 11:35

初めて会う人と話す時、緊張しないで頑張ってきださい。
はじめてあうひととはなすとき、きんじょうしないでがんばってください。
hajimete au hito to hanasu toki, kinjou shinaide ganbatte kudasai.

頑張ってきださい。| Try your best. 緊張しないで頑張ってきださい。| Try your best not to be nervous. 話す時、緊張しないで頑張ってきださい。| Try your best not to be nervous when you speak. 初めて会う人と話す時、緊張しないで頑張ってきださい。| Try your best not to be nervous when you speak to someone you've just met for the first time.

2. Updating the timelog: 17:11

Categories: EmacsHacks#38 -- Permalink
I often update my task descriptions. We haven't found a neat way to do this in-buffer, so I use planner-edit-task-description. However, if I update the task description or replan a task, my timelog data gets out of date. This code snippet updates all matching tasks in the timelog, and can serve as an example for code that updates things after a task is edited.
(defadvice planner-replan-task (around sacha/planner-timeclock activate)
  "Update the timelog as well. Warning! Do not have duplicate tasks!"
  (let ((info (planner-current-task-info)))
    ad-do-it
    (with-current-buffer (find-file-noselect timeclock-file)
      (goto-char (point-min))
      (while (re-search-forward
              (concat
               "^. [^ ]+ [^ ]+ "
               "\\("
               (regexp-quote (planner-task-plan info))
               "\\)"
               ": "
               (regexp-quote (planner-task-description info))
               "$")
              nil t)
        (replace-match (ad-get-arg 0) t t nil 1))
      (save-buffer)
      (kill-buffer (current-buffer)))))

(defadvice planner-edit-task-description (around sacha/planner-timeclock activate)
  "Update the timelog as well. Warning! Do not have duplicate tasks!"
  (let ((info (planner-current-task-info)))
    ad-do-it
    (with-current-buffer (find-file-noselect timeclock-file)
      (goto-char (point-min))
      (while (re-search-forward
              (concat
               "^. [^ ]+ [^ ]+ "
               (regexp-quote (planner-task-plan info))
               ": "
               "\\("
               (regexp-quote (planner-task-description info))
               "\\)"
               "$")
              nil t)
        (replace-match (ad-get-arg 0) t t nil 1))
      (setq planner-timeclock-current-task (ad-get-arg 0))
      (save-buffer)
      (kill-buffer (current-buffer)))))

3. Factors for idea growth: 17:53

Categories: None -- Permalink
From ParaMode in ZhurnalWiki :
But the history of Para mode does highlight three deep sources of power that, in one form or another, lie behind all successful new ideas --- and not just in the software realm. Those power sources are:

- a boundless extensibility --- the potential to modify, customize,

and reconfigure something far beyond the original conception. People's minds have that. So do human languages and mathematical systems. So does software ... provided the initial developers don't get selfish and lock the doors to change.

- a solid foundation --- something to build upon that does at least

part of the job well, something reliable yet elegant and æsthetic. It's impossible to do everything ourselves; we must rely on the work of our ancestors.

- a culture of sharing --- so that several people, each with a piece

of the jigsaw puzzle, can get together and come up with a solution. Sharing works well (or should) within a family, a small group, or a properly-run company. Ill-wrought "Intellectual Property Rights" laws, however, truncate the sharing process and give short-term profits to idea-squatters ... at the expense of long-term progress for all.

ParaMode in ZhurnalWiki

4. Refactoring Planner annotation code: 19:03

Categories: EmacsHacks#39 -- Permalink
Many planner files just contain code for creating hyperlinks from the current buffer. This does not have anything to do with the idea of planning, but simply makes planning information available from more buffers.

If we separate this functionality from planner.el, we can make it easier for people to play around with context-sensitive hyperlinking without having to deal with planner's complexity.

To make it easy for other people to play around with this, the composition function needs to be flexible. Annotations should be returned as (uri text) pairs, and a -composition-function can put the two together in the appropriate format, escaping as necessary. Highlighting will be provided in a separate file that defines a minor mode that can be placed anywhere.

Other people's code for creating annotations, then, would just involve calling -get-uri, or -as-kill, or -to-string. We can use the hook mechanism to get the appropriate annotations for the current buffer. -core.el will provide a method for resolving links, and it should be something that can be used as browse-url-browser-function.

planner code also specifies how to mark up links. If we're moving the annotation code into a layer that doesn't know about publishing, what will happen to the code? In that case, we will define URL transformation functions in either emacs-wiki or planner. Yes, that would work...

I need to think of a good name for it. uri.el? Yeah, that sounds okay.

5. YDC Festival: Puppet shows: 19:38

Categories: None -- Permalink
I caught the tail end of a puppet show carried out with store-bought dolls: Barbie, Billikin... I was surprised at how far one could get with a lapel mike, a box frame, nice backgrounds, and wire hooks to hang dolls from. It might be fun to do something like that for kids.
Previous day | Next day

I'd love to hear about any questions, comments, suggestions or links that you might have. Your comments will not be posted on this website immediately, but will be e-mailed to me first. You can use this form to get in touch with me, or e-mail me at sacha@sachachua.com .

Page: 2004.12.16
Updated: 2005-06-1812:17:1212:17:12-0400
NOTE: ANTI-SPAM MEASURE NOW IN PLACE. Please answer the following question with the right number in order to send me your comment.
What is two minus one? (hint: one ;) )
Name:
E-mail:
URL:
Comments: