David Rogers <davidandrewrog...@gmail.com> writes: > Eric Abrahamsen <e...@ericabrahamsen.net> 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---