December 16, 2004

Kanji for the day

December 16, 2004 - Categories: -Uncategorized

初めて会う人と話す時、緊張しないで頑張ってきださい。
はじめてあうひととはなすとき、きんじょうしないでがんばってください。
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.

Updating the timelog

December 16, 2004 - Categories: emacs

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)))))

Factors for idea growth

December 16, 2004 - Categories: -Uncategorized

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

Refactoring Planner annotation code

December 16, 2004 - Categories: emacs

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.

YDC Festival: Puppet shows

December 16, 2004 - Categories: -Uncategorized

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.