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
A1XBugfix: Newlines in planner-id from E-Mail from Win Treese {{Tasks:928}} (PlannerModeCompletedTasks)
A2XBugfix: Commit emacs-wiki-link-at-point patch from E-Mail from Ray Fix {{Tasks:929}} (EmacsWikiMode)
A3XPick up the projector {{Tasks:916}} {{Schedule:8:00-9:00}} (Adphoto)
B1XPatch: planner-rmail from E-Mail from Frederik Fouvry {{Tasks:922}} (PlannerModeCompletedTasks)
B2XBugfix: Check out bbdb-anniversary vs planner-notes-index from E-Mail from Charles Philip Chan {{Tasks:921}} (PlannerModeCompletedTasks)
B3XChange the font-locking of verbatim and example from E-Mail from fouvry {{Tasks:924}} (EmacsWikiMode)
BXFix all the TLA logs {{Tasks:925}}
B5XBuy mom Super Lemons and a huge box of chocolates {{Tasks:899}} (Adphoto)
B6XFind receipts for new equipment {{Tasks:920}} (Adphoto)
C1XFeature: Merge planner-search-notes into planner-notes-index, maybe {{Tasks:631}} (PlannerModeCompletedTasks)
C2XCatch up on Peppy's blog from 2004.04.21 {{Tasks:908}}
C3XCatch up on Marcelle's blog from 2004.04.21 {{Tasks:907}}
C4XCatch up on Jerome's blog from 2004.04.21 {{Tasks:906}}
C5XFeature: Regexp search from planner-search-notes - headlines or including bodies. Hey, instant news aggregator! {{Tasks:633}} (PlannerModeNotesIndex)

~/.diary schedule

8:00 9:00 Pick up the projector {{Tasks:916}}
13:00 16:30 Mom's talk
17:30 19:00 Aikido


2. Choosing and Using Open Source Software: A primer for nonprofits

Categories: None -- Permalink
Link from Ignatius Hsu on [email protected]:

Here's a good resource. Choosing and Using Open Source Software: A primer for nonprofits, published by NOSI (Nonprofit Open Source Initiative) http://nosi.net/primer/html

E-Mail from Ignatius Hsu

1. sacha/fix-tla-log {{04.04.21,EmacsHacks}} 11:17

Categories: EmacsHacks#24 -- Permalink
(defun sacha/fix-tla-log ()
  "Correct a wrong commit.
Run this inside the arch subdirectory for the patch in your
repository, not your project tree."
  ;; Copy the log file
       ((directory (car (file-expand-wildcards "*.patches")))
           (concat (file-name-as-directory directory)
                   "new-files-archive/{arch}/*/*/*/[email protected]/patch-log/patch-*"))))
         (car (file-expand-wildcards "*.tar.gz")))
        log-md5 tar-md5)
     (when directory
       (if (file-newer-than-file-p "log" log-file)
             (delete-file log-file)
             (copy-file "log" log-file))
         (delete-file "log")
         (copy-file log-file "log"))
       ;; Recreate the tar.gz
       (delete-file tar-file)
       (call-process "tar" nil nil nil "zcvf" tar-file directory)
       ;; Calculate checksums
         (call-process "md5sum" nil t nil "log" tar-file)
         (goto-char (point-min))
         (re-search-forward "^\\([^ ]+\\)\\s-+log" nil t)
         (setq log-md5 (match-string 1))
         (re-search-forward "^\\([^ ]+\\)" nil t)
         (setq tar-md5 (match-string 1)))
         (setq modes (file-modes "checksum"))
         (insert-file-contents "checksum")
         (goto-char (point-min))
         (re-search-forward "^Signature-for")
         (delete-region (point-min) (match-beginning 0))
         (re-search-forward "^md5\\s-+log\\s-+\\([^ ]+\\)$")
         (replace-match log-md5 t t nil 1)
         (re-search-forward "^md5\\s-+.+?\\.tar\\.gz\\s-+\\([^ ]+\\)$")
         (replace-match tar-md5 t t nil 1)
         (when (re-search-forward "BEGIN PGP SIGNATURE" nil t)
           (delete-region (line-beginning-position) (point-max)))
         (let ((pgg-output-buffer (current-buffer)))
           (pgg-sign t))
         (delete-file "checksum")
         ;; Sign the checksum
         (write-file "checksum")
         (set-file-modes "checksum" modes)))))