November 7, 2007

Bulk view

Setting up appointment reminders in Org

Although the agenda view is very handy, it is generally not a good idea to check the agenda view every three seconds to see if you have upcoming appointments. You can set up Org to use the Emacs appointment reminder system, which can pop up a reminder buffer before your appointment or display a reminder in the modeline.

org-agenda-to-appt scans all your agenda files for appointments for today. The code for org-agenda-to-appt can be found in org.el. It's marked experimental, so future versions may not include it. If you do not have org-agenda-to-appt, add the following to your ~/.emacs:

;; Make appt aware of appointments from the agenda
(defun org-agenda-to-appt ()
  "Activate appointments found in `org-agenda-files'."
  (interactive)
  (require 'org)
  (let* ((today (org-date-to-gregorian
		 (time-to-days (current-time))))
	 (files org-agenda-files) entries file)
    (while (setq file (pop files))
      (setq entries (append entries (org-agenda-get-day-entries
				     file today :timestamp))))
    (setq entries (delq nil entries))
    (mapc (lambda(x)
	    (let* ((event (org-trim (get-text-property 1 'txt x)))
		   (time-of-day (get-text-property 1 'time-of-day x)) tod)
	      (when time-of-day
		(setq tod (number-to-string time-of-day)
		      tod (when (string-match
				  "\\([0-9]\\{1,2\\}\\)\\([0-9]\\{2\\}\\)" tod)
			     (concat (match-string 1 tod) ":"
				     (match-string 2 tod))))
		(if tod (appt-add tod event))))) entries)))

Load today's appointments every time you start Emacs by adding the following to your ~/.emacs:

(org-agenda-to-appt)

or call it interactively with M-x org-agenda-to-appt.

If you delete an appointment from your Org agenda file, the corresponding alert is not deleted. To delete the appointment, use M-x appt-delete and select it from the list.

A better way to keep your appointment list clean would be to remove all the appointment entries before calling org-agenda-to-appt. Add the following to your ~/.emacs to do so:

(defadvice org-agenda-to-appt (before wickedcool activate)
  "Clear the appt-time-msg-list."
  (setq appt-time-msg-list nil))

To learn more about configuring the Emacs appointment reminder system, check out the Emacs manual.

On Technorati:

Random Emacs symbol: ibuffer-mode - Function: A major mode for viewing a list of buffers.

Planning my career – first stages

It's much easier to act than it is to react, and it's less stressful too. When you have goals and clear ways to work towards them, other people tend to go along with the suggestions.

My job is to make my manager and my team members look good. That means understanding the pressures they're under and helping them meet those expectations while making the best use of my talents. It's a good thing my goals are flexible

So, where do I want to go?

I want to gather, refine, document and spread good practices around Web 2.0 and other collaborative technologies. That's one of my medium-term goals. Because the market is still emerging, I need to make my own rain. If I can do that part effectively, then projects that fit my interest in that will flow into the pipeline over the next year.

I also need to develop skills in an area that my department specializes in. This reduces the pressure on my manager and makes him look good. If I can do it in a way that also helps me advance to my own goals, all the better. Portal seems to be the best fit, because it naturally leads into Web 2.0. I need to find out how to get started with that. I want to look at the jobs that I'm not currently qualified for, to give me an idea of which skills are in demand. This covers my short-term career planning.

And I still want to do my book and have a good home life. Tall order, but it can be done.

So, what can I do to make this easier? Now that I've got my goals straight, it'll be easier for me to prioritize my day-to-day activities. Because I'm doing a lot of things, time spent "sharpening the saw" becomes even more valuable. I need to know and use whatever tools and practices that can save me time. I need to continue reflecting on and incrementally improving the way I work. That's the best way to keep it manageable.

Let's see how this goes. =)

Random Emacs symbol: utf-fragmentation-table - Variable: Char-table normally mapping non-Latin mule-unicode-* chars to iso-8859-*.