Tracking time is key to my Retrospective habit(s). I track my personal and professional time in Emacs org-mode.
Key points:
- Everything is a
TODO
(or at least 80% of things) - Different files for different flows
todos.org
: Catch-all for TODOsretrospective.org
: Contains daily/weekly/etc retrospectives
- Track time with
org-clock
- Personal emacs config provides agenda views, customized clock-in and clock-out behavior,
clocktable-by-category
(a) for retrospectives - View
TODO=s with =org-agenda
andorg-super-agenda
(see Personal emacs config)
Workflow
Daily
Throughout the day I follow this loop:
- Open my agenda view for today (see Personal emacs config)
- Start work (
clock-in
) on one of:- what I’ve scheduled for this point the day
- the top-priority unscheduled item
- When done:
clock-out
- Go to step 1
Then, at the end of the day I do a brief retrospective:
- Open retrospective file
- Insert a new heading for the current day
- Insert a
clocktable-by-category
(a) - Review where my time went during the day
- Reschedule any items I didn’t get to (and think about why)
Weekly
- Open my retrospective file
- Insert a new heading for the current week
- Insert a
clocktable-by-category
(a) - Review where my time went during the week and if I want to make any changes
- Open my agenda view for planning the week (see Personal emacs config)
- Schedule items such that I’m 60-80% booked each day; leave Slack in my schedule for unexpected items or for those which take more time than expected
Scheduling org-mode events for different times on different days
Some of my TODOs have schedules which don’t mesh with org-mode’s model of deadlines and scheduling. org-mode doesn’t support scheduling a TODO for more than one time:
Scheduling an item in Org mode should not be understood in the same way that we understand scheduling a meeting. Setting a date for a meeting is just a simple appointment, you should mark this entry with a simple plain timestamp, to get this item shown on the date where it applies. This is a frequent misunderstanding by Org users. In Org mode, scheduling means setting a date when you want to start working on an action item.
Items have just the one SCHEUDLED
property. They can have more than one timestamp; however, org-mode increments all of the timestamps when you mark the item as DONE
(see org-auto-repeat-maybe
) — not just today’s timestamp.
My hack-ish fix is to have duplicate TODOs. That is, for an event that has a different time on weekdays and weekends:
* Do the thing
SCHEDULED: <2023-11-27 Mon 10:00-10:30 ++1w>
* Do the thing
SCHEDULED: <2023-11-28 Tue 10:00-10:30 ++1w>
* Do the thing
SCHEDULED: <2023-11-29 Wed 10:00-10:30 ++1w>
* Do the thing
SCHEDULED: <2023-11-30 Thu 10:00-10:30 ++1w>
* Do the thing
SCHEDULED: <2023-12-01 Fri 10:00-10:30 ++1w>
* Do the thing
SCHEDULED: <2023-12-02 Sat 08:00-08:30 ++1w>
* Do the thing
SCHEDULED: <2023-12-03 Sun 08:00-08:30 ++1w>
This would be annoying if I used the built-in clocktable
which would show a separate line-item for each TODO:
#+BEGIN: clocktable :block "2023-W48" ...
#+CAPTION: Clock summary at [2023-11-28 Tue 09:37], for week 2023-W48.
| File | Headline | Time |
|----------------+------------------+--------|
| | ALL *Total time* | *3:30* |
|----------------+------------------+--------|
| Personal TODOs | *File time* | *3:30* |
| | Do the thing | 0:30 |
| | Do the thing | 0:30 |
| | Do the thing | 0:30 |
| | Do the thing | 0:30 |
| | Do the thing | 0:30 |
| | Do the thing | 0:30 |
#+END:
Instead, I use clocktable-by-category
(a) which supports merging duplicate headings into one line-item with a duration equal to the sum of the duration of the duplicates:
#+BEGIN: clocktable-by-category :block "2023-W48" ... :merge-duplicate-headlines t
#+CAPTION: Clock summary at [2023-11-28 Tue 09:37], for week 2023-W48.
| Category | Headline | Time |
|----------------+------------------+--------|
| | ALL *Total time* | *3:30* |
|----------------+------------------+--------|
| Personal TODOs | *Category time* | *3:30* |
| | Do the thing | 3:30 |
#+END: