From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Abrahamsen Subject: Re: Suggestions for progress tracking Date: Sun, 11 Nov 2012 11:48:52 +0800 Message-ID: <87bof43il7.fsf@ericabrahamsen.net> References: <87sj8l7bta.fsf@ericabrahamsen.net> <87sj8jcjie.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([208.118.235.92]:49663) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TXOUE-0005ty-EF for emacs-orgmode@gnu.org; Sat, 10 Nov 2012 22:45:33 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TXOUB-000479-CL for emacs-orgmode@gnu.org; Sat, 10 Nov 2012 22:45:30 -0500 Received: from plane.gmane.org ([80.91.229.3]:42586) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TXOUB-000474-53 for emacs-orgmode@gnu.org; Sat, 10 Nov 2012 22:45:27 -0500 Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1TXOUI-00034Q-Hy for emacs-orgmode@gnu.org; Sun, 11 Nov 2012 04:45:34 +0100 Received: from 114.250.116.99 ([114.250.116.99]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sun, 11 Nov 2012 04:45:34 +0100 Received: from eric by 114.250.116.99 with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sun, 11 Nov 2012 04:45:34 +0100 List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org David Rogers writes: > Eric Abrahamsen 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---