emacs-orgmode
[Top][All Lists]
Advanced

[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---





reply via email to

[Prev in Thread] Current Thread [Next in Thread]