emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Eric Abrahamsen <eric@ericabrahamsen.net>
To: emacs-orgmode@gnu.org
Subject: Re: Suggestions for progress tracking
Date: Sun, 11 Nov 2012 11:48:52 +0800	[thread overview]
Message-ID: <87bof43il7.fsf@ericabrahamsen.net> (raw)
In-Reply-To: 87sj8jcjie.fsf@gmail.com

David Rogers <davidandrewrogers@gmail.com> writes:

> Eric Abrahamsen <eric@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---

  reply	other threads:[~2012-11-11  3:45 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-11-07 14:00 Suggestions for progress tracking Eric Abrahamsen
2012-11-09  7:39 ` David Rogers
2012-11-11  3:48   ` Eric Abrahamsen [this message]
2012-11-11 10:56     ` Ian Barton
2012-11-25 11:29 ` OT: Tracking progress of LaTeX/PDF output pages (was: Suggestions for progress tracking) Karl Voit

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87bof43il7.fsf@ericabrahamsen.net \
    --to=eric@ericabrahamsen.net \
    --cc=emacs-orgmode@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).