lectionary /lekʃəneri/
n. (pl. lectionaries) a book or list of
readings corresponding to a calendar
org-lect
is an extension for Emacs Org mode. It calculates a reasonable
pace needed to attain some user-defined numerical goal within a
given timeframe.
It can be used for books, classes, hours of work, word count goals for writing, and so on. If you miss a day, it will recalculate the remaining days evenly. I’ve used it to motivate myself to complete online courses and make large reading goals more manageable (even when the material in question was fantastically dull). It won’t solve procrastination on its own, but it can make certain large tasks seem less daunting.
Some GTD practitioners might find this approach counter to David Allen’s philosophy, which I don’t deny, but I hope it is useful to them and anyone else regardless.
Suppose you wanted to read War and Peace over the course of a month. A quick calculation shows that you’ll need to read about 40 pages every day to make consistent progress. How would you put this into Org?
- Put “Pages 1-40,” “Pages 41-80,” … “Pages 1200-1220” and so on
all on separate subheadings, setting a
DEADLINE
orSCHEDULE
entry for each one (too much busywork, inflexible) - Set a daily repeating task or habit saying “Read 40 more pages” (boring, and still inflexible: what if you miss a day?)
- Forget dividing up the task at all, trusting that you’ll just be able to police yourself every day and know when you’re falling behind (good luck :))
- Not use Org at all (blasphemy)
- Use
org-lect
At minimum, the task should have a LECT_PAGES
or LECT_UNITS
property (it doesn’t matter which) and a DEADLINE
.
The LECT_PAGES
property consists of two numbers separated by a
space. The first is the current unit or page, and the second is the
total.
The LECT_EFFORT
property allows effort to be scaled up or down for
specific days of the week. It should consist of seven
space-separated numbers, each denoting the relative effort assigned
to a day of the week, beginning with Sunday. For example:
0 1 1 1 1 1 0
puts equal effort on weekdays only1 1 2 3 0 1 0
puts equal effort on Sunday, Monday, and Friday, twice as much on Tuesday, three times as much on Wednesday, and none on Thursday or Saturday.
If this property is not set, every day between now and the deadline (inclusive) is given equal weight.
At the moment, the code provides the org-lect-update-today
and
org-agenda-lect-update-today
functions, which will put the number
of units needed for the current day into the PAGESTODAY
property.
This can then be displayed in a custom agenda file or in column mode
if desired. I’m currently working on implementing a headline cookie,
similar to what is used for checkboxes.
I typically bind both functions to C-\
(one in Org, the other in
agenda mode). I have found it most helpful to make org-lect
items
habit items as well.
The current version is simply a set of functions I have written while customizing Org for myself (though I did use it to complete a semester-long online class in under three weeks last year!). Improvement opportunities abound.
Reports, pull requests, patches, threats of bodily harm, etc. should all be done here on github.
This program is free software: you can redistribute it and/or modify it under the terms of version 3 of the GNU General Public License as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.