$msg = ""; $myaddress = "sacha" + "@" + "sachachua.com"; $page = "2007.10.28.php"; $page_title = "2007.10.28"; $page_updated = "2007-11-0420:09:5620:09:56-0500"; $maintainer = "sacha" + "@" + "sachachua.com"; require_once "include/calendar.php"; require_once "include/planner-include.php"; require_once "include/header.inc.php"; ?>
|A||X||@10:45 Skype chat with my mom (family)|
|A||X||1h Answer my mail|
|A||X||30min Work on PR application - write neat version (paperwork)|
|A||X||30min Explore Org timeclock reporting (WickedCoolEmacs)|
|A||X||30min Work on the book some more - write about Planner timetracking (WickedCoolEmacs)|
|A||X||30min Work on book (WickedCoolEmacs)|
|A||X||10min Scan my certificate (paperwork)|
|WickedCoolEmacs||0:33:08||6.3%||30min Work on book|
|.||0:30:41||5.8%||30min Work on the book some more - write about Planner timetracking|
|.||0:21:19||4.0%||30min Explore Org timeclock reporting|
|Not Planned||2:24:13||27.3%||1h Answer my mail|
|paperwork||0:39:26||7.5%||30min Work on PR application - write neat version|
Day began: 11:22:10, Day ended: 21:09:48 Time elapsed: 9:47:38, Time clocked: 8:48:28 Time clocked ratio: 89.9%
~ 950 words so far...
Whether you submit detailed timesheets to clients or not, it's a good idea to estimate and keep track of the time you spend working on tasks. I find that this helps me focus on the task at hand, and the schedule feedback allows me to get a better idea of how much time it will take to do something in the future. It's also a good way to find out where your time goes, of course.
It's easy to clock work time under Org. When on a TODO item, type C-c C-x C-i (org-clock-in). Work on the task. When you're done, mark the task as done with C-c C-t (org-todo), which automatically calls clock-out. You can also clock out of a task manually by calling C-c C-x Co (org-clock-out). The elapsed time will be added to the task headline. To review the time summaries for your project, type C-c C-x C-d (org-clock-display). If you want to add notes when you mark a task as done, add "#+STARTUP: lognoteclock-out" to the beginning of your file.
How would you use this to keep track of your day? One way is to keep track of the difference between your planned schedule and your actual schedule. Add time estimates to your tasks. For example,
** TODO 20min Respond to mail
could represent twenty minutes of handling mail. Clock in and out of tasks as you do them. To review the day's accomplishments, type 'l' (org-agenda-log-mode) from the agenda view. This shows the completed tasks and the time it took to accomplish them.
(Now I'm tempted to write an easy way to filter the Org task view by estimated number of minutes. ;) Another nice little hack before that would be to have a modeline countdown based on the estimate of the currently-clocked-in task. Hmm. And then there's displaying the list of tasks for today and choosing which one to clock in on... That would be fun to do, too. And then there's calculating velocity and doing evidence-based scheduling... The list goes on!)
On Technorati: emacs
Random Emacs symbol: minibuffer-local-map - Variable: Default keymap to use when reading from the minibuffer.
Planner uses timeclock.el, which is part of GNU Emacs. To make sure that all of the relevant libraries are loaded when you start Emacs, add the following to your ~/.emacs:
(require 'planner-autoloads) (require 'planner-timeclock)
To start the clock on a task, type C-c C-i (planner-task-in-progress). The task will be marked as "in progress" and the timer will start. To clock out, mark the task as done (C-c C-x, planner-task-done) or clock out manually with C-c C-o (timeclock-out).
To see a summary of your time use for any day, call M-x planner-timeclock-summary. To see a summary of your time use for a range of days, call M-x planner-timeclock-summary-show-range. The range function is particularly useful for weekly time reports, which I find myself now doing.
For even more fun, call M-x planner-timeclock-summary-show-range-filter, which filters plan pages and descriptions using the specified regular expression. For example, to show only the time entries from the last seven days that included the keyword "@work", call M-x planner-timeclock-summary-show-range-filter and specify "@work" as the filter, "-7" as the start date, and "." for the end date. You'll get a quick view of all your work-related time-clock entries.
If you use this often, you might want to create a shortcut to show the timeclock summary for the current file. The following code defines a function that displays the timeclock summary for the current page (day or plan), and binds this function to C-c C-s in Planner mode files.
(require 'planner-timeclock-summary) (require 'planner-timeclock-summary-proj) (defun sacha/planner-timeclock-summary-show (page) "Show the timeclock summary for PAGE (defaults to the current page)." (interactive (list (planner-page-name))) (if (string-match planner-date-regexp page) ;; Day page (planner-timeclock-summary-show page) ;; Plan page (let ((data (planner-timeclock-proj-make-alist page))) (switch-to-buffer (get-buffer-create planner-timeclock-summary-buffer)) (erase-buffer) (insert (planner-timeclock-proj-build-report data))))) (define-key planner-mode-map (kbd "C-c C-s" 'sacha/planner-timeclock-summary-show))
This allows you to see how much time you've spent for the current day or project.
If you like seeing this, you might want the timeclock information automatically inserted into your Planner pages. To do so, add the following to your ~/.emacs:
(planner-timeclock-summary-proj-insinuate) ; For plan pages (planner-timeclock-summary-insinuate) ; For day pages ;; It's easier when both of them overwrite the same report (setq planner-timeclock-summary-section "Timeclock" planner-timeclock-summary-proj-section "Timeclock" ;; Modify this to include your other template sections planner-day-page-template "* Tasks\n\n\n* Schedule\n\n\n* Timeclock\n\n\n* Notes\n\n\n" planner-plan-page-template planner-day-page-template)
The sections are updated only if they exist, so you can remove the sections or add them to your Planner files any time you want.
CAUTION: Because the time information is stored in a separate file, Planner gets confused if you edit the task details. Make sure you use the built-in functions for editing the task description (planner-edit-task-description) or changing the project associated with a task (planner-replan-task).
On Technorati: emacs
Random Emacs symbol: planner-expand-name - Function: Expand the given NAME to its fullest form.
I find it useful to keep track of which tasks I've started. Adding the following line to the start of my Org file adds STARTED to my to-do status keywords.
#+SEQ_TODO: TODO(t) STARTED(s) WAITING(w) | DONE(d)
Here's some code to make it easier to clock in and out of tasks:
(defun sacha/org-clock-in-if-starting () "Clock in when the task is marked STARTED." (when (and (string= state "STARTED") (not (string= last-state state))) (org-clock-in))) (add-hook 'org-after-todo-state-change-hook 'sacha/org-clock-in-if-starting) (defadvice org-clock-in (after sacha activate) "Set this task's status to 'STARTED'." (org-todo "STARTED"))
Random Emacs symbol: isearch-update-ring - Function: Add STRING to the beginning of the search ring.
Summary - In terms of my goals from last week:
|Organize information||Haven't rearranged our group Activity yet.|
|Plan external blog||Brainstormed names. Now to brainstorm topics...|
|Plan podcast||Done. Several ideas, even.|
|Library run||Done. Picked up more books.|
|Meeting with Gordon Lee||Done. Scheduled another meeting this week.|
|Emacs blog entries, pages||Blog entries done, not yet laid out into pages or merged into text|
|Dogear podcast script, audio||Drafted, but not satisfied with quality|
|Dogear podcast video||Waiting for script|
Next week's goals:
UP: My second week of work was dominated by CASCON, the conference organized by the IBM Toronto Center for Advanced Studies. I presented a short paper about my thesis, summarizing 72 pages and 1.5 years of my life into five minutes and what really amounts to this sentence: "Blogs, bookmarks, and people-tags may be able to help people find expertise within their company, so let's make a search engine that combines all three." I also enjoyed helping out with Stephen Perelgut's Second Life workshop, even though only half of the people could get on the metaverse. Aaron, Bernie and I met a couple of times during the conference, and I did manage to squeeze in some "real work" as well. I also had my two-week check-in with my manager. We're thinking of making those weekly, just to keep everyone in the loop. A couple of market scans here and there, some podcast plans... work is good, and getting even better.
UP: I got back in touch with Gino Ledesma, a friend of mine from university. We had a lot of fun catching up. I was thrilled to hear about what he and my other batchmates have been up to, and particularly by the way he's been giving back to the Philippines. His company is very impressed by him and is looking for more Filipinos to hire. That's gotta be something. =) That reminds me: I need to introduce him to Winston Damarillo, who might be interested in having Gino give some presentations to his Java folks.
DOWN: Trapeze lessons have been postponed. It was an informal class in somebody's loft, and that somebody needs to now focus on med school. Ah well. Time to look for another form of exercise. I don't really feel like spending money on this, and I'm sure I can find plenty of free, fun ways to exercise around the house. Winter is coming, so running might not be my cup of tea. I'll look around for ideas.
DOWN: The paperwork requirements for the permanent residency application are a little bit intimidating, aren't they? I felt overwhelmed earlier. W- gave me a wonderful hug and helped me remember to divide and conquer.
UP: I've found a good way to get more material for my book. =) It's easy for me to write if I think of things as blog posts. Even basic information is fun to share. But I need to protect that time. I managed to write a little bit during the evenings, and more during the weekends. Let's see if that works out next week too.
DOWN: The downside to this is that I'm not sure how to make the time to meet my friends face-to-face. I'm growing a lot more protective of the rare four-hour chunks I can carve out of my day, so I tend to keep the weekends for myself. A wonderful home life makes me want to spend more time at home instead of going to cafes and meeting friends. Blogs are easy to fit into the spaces in my day, but what about the friends who don't blog? I'll try tweaking my schedule a bit this week. Tomorrow I'm going to go to DemoCamp, but only the pub night part, and I'm planning to go after dinner. It doesn't make that much sense to go back and forth considering I'm working from downtown, but I can do productive things on the subway (hmm, rush hour, so that means listening to a podcast or doing blue-sky thinking), and I do like being there when J- comes home from school. =)
DOWN: E-mail is also lower on my priority list. It's becoming easier to tell myself, "I'm going to do one hour of e-mail, and that's that." Or 30 minutes, or whatever time I can set aside. I'm a little mixed about this because a number of books I've read recommended quick responses as a way of showing you care, but as long as expectations are also adjusted, I think things will be fine. If I take a long time to reply, it's just that I have other priorities.
UP: And somehow I still found the time to read library books and encode more notes, too! =) I probably won't be updating my Booksnake blog for a while (again, other priorities!), but my workflow is getting better.
UP: I'm happy with the overall balance of this week. My 50,000-feet view is becoming clearer: I want to become a practice evangelist, business practice maven, or whatever the proper term is. On the ground-view, I manage to complete most of my planned tasks without feeling as if I'm wasting time. In terms of personal stuff, I'm doing well, too. =) Happy with this week, can't wait for the next.
On Technorati: weekly
Random Emacs symbol: make-hippie-expand-function - Macro: Construct a function similar to `hippie-expand'.
Inbox items: 15 as of 16:35