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
BXWrite to Graduate House postponing move-in again (2005.07.10 MoveToCanada)
BXWrite thank-you e-mail to everyone who came (2005.07.10 social)
BXType everyone's index cards into my computer (2005.07.10 social)
BCMerge sectionalization code : E-Mail from Peter K. Lee (2005.07.10 planner feature)


1. Next Action: A single-file Getting Things Done tool

Categories: productivity#9Permalink

If you're looking for a fast, simple TODO manager, check out Next Action by Trim Path. It's a single-page application with a built-in editor, and all you need is Mozilla Firefox 1.0 or later. (IE 6.0 will also somewhat work.)

Try it out! If you like how it encourages you to think of your tasks in terms of the context, search the Net for more information about David Allen's "Getting Things Done" method.

火災で全てのコンピューターデイスクが駄目になってしまった時、会社はもうお手上げの状況だった。 The company was really up shit creek when a fire destroyed all their computer discs.

On Technorati: , ,

2. Also from Trim Path: Javascript MVC framework

Categories: None — Permalink

Junction brings the power of the Ruby on Rails web MVC framework to JavaScript. It makes it much easier to develop web-based applications that runs, validate input, process data, and produce output in modern web browsers like Mozilla Firefox. Well worth looking into!

私はコンピューターを操作するのがやさしいことがわかった。 I found it easy to operate the computer.

On Technorati:

3. semi-form letters: hooray for open source!

Categories: emacs#20Permalink

I needed to write 31 thank-you-for-attending-my-send-off-party e-mail messages. Instead of having a generic letter that I'd send to lots of people all listed in To: or Bcc:, I decided to personalize it a bit by including their nicknames, two-year goals, and a personal message I'd add to each letter in different places.

Fortunately, my mail client was up to the task. One of the benefits of having both your contact information and your mail client in an easily-programmable environment is that you can hack together a quick program to do exactly what you want.

I had typed everyone's two-year-plans into my contact information manager's Notes field following a special format. It was the work of a few minutes to record and run a macro that extracted the data and created a signature for each person who attended my send-off party.

I then wrote a couple of short functions that looped over the currently displayed contact records and drafted messages for each of them following a template.

This resulted in 31 drafts I could edit and send without hassles. Much fun!

For future reference (and for the handful of Emacs geeks or learners in the audience), here's the code I used to make it all happen:

(defun sacha/bbdb-send-form-mail (bbdb-record &optional subject template)
  "Compose a form message to the people indicated by the current BBDB record(s)."
  (interactive (list (if (bbdb-do-all-records-p)
                         (mapcar 'car bbdb-records)
                     (read-string "Subject: ")
                     (read-string "Template (<NICK>): ")))
  (if (consp bbdb-record)
      (let ((records bbdb-record))
        (while records
          (sacha/bbdb-send-form-mail-1 (car records) subject template)
          (setq records (cdr records))))
    (sacha/bbdb-send-form-mail-1 bbdb-record subject template)))

(defun sacha/bbdb-send-form-mail-1  (bbdb-record &optional subject template)
  "Compose a form message for one person."
    (if bbdb-inside-electric-display
       (list 'sacha/bbdb-send-form-mail bbdb-record subject)))
  ;; else...
  (cond ((null bbdb-record) (error "record unexists"))
        ((null (bbdb-record-net bbdb-record))
         (message "%s record unhas a network addresses." (or (bbdb-record-name bbdb-record) "Unknown")))
        (t (bbdb-send-mail-internal (bbdb-dwim-net-address bbdb-record)
                                    subject (list bbdb-record))
           (goto-char (point-min))
           (when (re-search-forward "--text follows this line--" nil t)
             (forward-line 1)
             (insert template)
             (goto-char (point-min))
             (while (search-forward "<NICK>" nil t)
               (replace-match (or (bbdb-record-getprop bbdb-record 'nick)
                                  (bbdb-record-name bbdb-record))
                              t t))
             (when (bbdb-record-getprop bbdb-record 'signature)
               (goto-char (point-max))
               (insert "\n")
               (let ((p (point)))
                 (insert (bbdb-record-getprop bbdb-record 'signature))
                 (fill-region-as-paragraph p (point))))
             (goto-char (point-min))
             (if (re-search-forward "^Subject: $" nil t) (end-of-line))))))

I used M-x local-set-key to bind sacha/bbdb-send-form-mail to M. * M then applies the function to all displayed records. ../emacs/miniedit.el makes it easy to edit long strings in the minibuffer, and that made the template much easier to write.

Emacs totally rocks. Nothing else has ever given me this much power.

自動車製造は人間の労働者に代わって、コンピューターが組み込まれたロボットによって行われている。 Car manufacturing is carried out by computer-programmed robots in place of human workers.

On Technorati: ,

4. Things you can do with RSS

Categories: None — Permalink

Check out Things You Can Do with RSS for lots of interesting uses for RSS aggregators like Bloglines. =) Great stuff! It's a wiki, so you can add your favorite use of RSS to the list too.

このコンピューターのことはよく知っている。 I know a lot about this computer.

On Technorati: