[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [O] Suggestions for progress tracking
From: |
Eric Abrahamsen |
Subject: |
Re: [O] Suggestions for progress tracking |
Date: |
Sun, 11 Nov 2012 11:48:52 +0800 |
User-agent: |
Gnus/5.130006 (Ma Gnus v0.6) Emacs/24.2 (gnu/linux) |
David Rogers <address@hidden> writes:
> Eric Abrahamsen <address@hidden> writes:
>
>> I'm starting another novel translation, and want to keep track of
>> progress in org (I've blown too many deadlines in the past). I've been
>> looking at the habits functionality, but it doesn't quite match what I
>> want, and I'm looking for a little advice here. I'd like to:
>>
>> 1. Set myself a minimum of pages translated per day, on weekdays.
>> 2. Record how many pages I do each day.
>> 3. View some habit-style report of how I'm doing relative to my goal.
>> 4. Project when I will be done with the novel at the current rate of
>> progress.
>>
>> Obviously I'll be writing some custom elisp to get all of this
>> functionality, but I'm looking for some advice on the best way to build
>> the basics. Habits are currently based on either/or values: "done" or
>> "not done", which doesn't incorporate enough detail. Properties seem
>> like the best way to keep track of number of pages translated per day,
>> but that means having a separate TODO heading for each day of work.
>> State logging could do it, but there are no pre-fab ways of extracting
>> data out of the log itself.
>>
>> It seems like there are so many good tools here: the history reporting
>> of habits, or the progress cookies you can put in headlines, etc. But
>> they're all tied to headlines or list items being in an on or off state:
>> TODO/DONE, checked/unchecked.
>
> I think the key for making this work with Org is choosing a unit of work
> (ten pages, a hundred pages, one page, one chapter, whatever) as your
> standard, thus allowing you to use the on/off nature of the list items
> to your advantage. Org also gives flexibility about the time-frames
> you're working within, so use that too if necessary.
[...]
> Maybe your original method, tallying pages per day after the fact, could
> be used for the first few days, to arrive at some reasonable numbers to
> plug into the habits.
I guess you're right I'll eventually need to set a daily target. But
it's going to make a very big difference to me to know by _how much_ I
was under or over. At any rate, I've started logging, with a capture
template that gives me something like this:
--8<---------------cut here---------------start------------->8---
* Santi Schedule
DEADLINE: <2013-06-01 Sat>
:PROPERTIES:
:PAGES: 502
:ID: 908fc17c-c620-4212-98eb-2e028f08dce3
:END:
** <2012-11-07 Wed> :log:
:PROPERTIES:
:PAGES: 9
:END:
** <2012-11-08 Thu> :log:
:PROPERTIES:
:PAGES: 3
:END:
--8<---------------cut here---------------end--------------->8---
Something tells me I'll eventually make these into TODOs, but maybe I'll
also try to jury-rig an Agenda timeline view that will give me a sense
of my varying progress over time. Below is my first stab at a function
to read and use this data. Anyhow, thanks for the food for thought!
Eric
--8<---------------cut here---------------start------------->8---
(defun my-translation-schedule ()
(interactive)
(require 'org)
(save-excursion
(org-id-goto "908fc17c-c620-4212-98eb-2e028f08dce3")
(let ((deadline (org-entry-get nil "DEADLINE"))
(page-total (string-to-number (org-entry-get nil "PAGES")))
(completed 0))
(org-map-entries
(lambda ()
(setq completed
(+ (string-to-number (org-entry-get nil "PAGES")) completed)))
"+log"
'file)
(let* ((remaining-days (- (org-time-string-to-absolute deadline)
(org-today)))
(remaining-pages (float (- page-total completed)))
(pages-per-day (fceiling (/ remaining-pages remaining-days))))
(message "%d pages left to go, you'll need to do %d pages per day to
finish by %s"
remaining-pages pages-per-day deadline)))))
--8<---------------cut here---------------end--------------->8---