emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[O] Writing Challenge


From: Bob Newell
Subject: [O] Writing Challenge
Date: Sat, 19 Oct 2013 11:03:18 -1000
User-agent: Gnus/5.130008 (Ma Gnus v0.8) Emacs/23.3 (gnu/linux)

A couple of us who are writers have worked on a "writing challenge"
spreadsheet. This year, for the upcoming National Novel Writing Month,
I've greatly modified (read: made more complex) the challenge
spreadsheet, and implemented it in org-mode.

It's attached, for anyone who's interested. I know there are other
writers and WriMos out there.

It probably has bugs. No, it surely has bugs. Comments welcomed.

I'm kind of attachment-challenged so if it doesn't appear below, get it
at

http://www.bobnewell.net/filez/newchallenge.org

-- 
Bob Newell
Honolulu, Hawai`i
* Sent via Ma Gnus 0.8-Emacs 23.3-Linux Mint 13 *

#+STARTUP: align

* The new writing challenge - how it works

There are three numbers that enter into the challenge: base words,
quota words, and target words. The base is the minimal number of words
to write every day to count as a writing day. The quota is the number
of words you must write to meet the challenge. It is a dynamic value
which increases as you write more and decreases as you write less. The
target is the number of words you must write to reach your word goal by
the end of the challenge.

So for NaNoWriMo, the target is definitely 1667. The base can be
whatever you wish, but 250 seems good as a general number, for NaNo as
well as other challenges. The base should /not/ be set too high. The
whole point is to make each and every day a writing day, and not make
it so burdensome that it's easier to skip.

In non-NaNoWriMo-like situations, you may well want to set the target
equal to the base. It's up to you. However, if you have a deadline for,
say, a 10,000 word novelette, you can set the target accordingly by
dividing the number of days to deadline by the required word count.

You must write at least the 'base words' every day to keep
your chain going. If you write at least 'base words' you get a score
addition equal to your new chain count, but never less than a one point
addition.

Chain count increases by 1 if you meet quota exactly. It increases by
less than 1 if you're under quota but still at least at the base words
count. Chain count increases by more than 1 if you exceed quota. Chain
count will always increase if you meet base word count.

Quota then changes for the next day. The value is the multiple of the
most recent chain count times the increment value. The increment value
shouldn't be set too high. 4 is a good number; this would mean an
increase of about 120 over the course of the month if you write to
quota each day.

If you don't do the base word count, on the first day you miss, chain
count goes to -1. The chain count decreases by one for each missed day
in a row. The total score is decreased on each missed day by the chain
count. So as you miss more days, score drops faster. Quota gets reset to
the base word count. Score never goes below zero, though (it's like a
total reset when you reach zero).

When you starting meeting the base word count again, chain count is
changed to a positive number with the scoring and quota rules as above.

Sensitivity to being under or over quota is fairly low. The recommended
logbase value is 100 which yields log 100 of words/quota). You do get a
boost for being way over quota and less of a boost for being under, but
the real sensitivity of the method is to writing the base amount every
day for as many days in a row as possible. For this reason a low value
of logbase (which would lead to bigger chain count changes) isn't
recommended.

The target influences score but not chain count. Score is increased or
decreased based on both daily performance vs. target and cumulative
word count vs. cumulative target. The parameter tdlogbase controls
daily sensitivity, and tclogbase controls cumulative sensitivity. Make
these large numbers (like 1000) to largely cancel these score effects
if you don't want them. 100 for tdlogbase and 200 for tclogbase are
recommended for moderate but not excessive influence. 

Note that it is possible for score to decrease even if base and or quota
are met in a given day, due to target influences. Getting way behind on
cumulative target will have lasting effects. 

Point counts can get pretty large with sustained writing. The method
should be reset after each "challenge" period, which might be 30, 60, or
at most 90 days. A month is probably best.

This method is derived and modified from the original Hawai`i challenge
(by Tony Pisculli) which, while truly excellent, was fairly static and
used fewer tracking and scoring factors. The new method is more in line
with what you'd expect from an MIT engineer.

The advantage of the new method is that it is dynamic and adjusts to
performance. The more you write, the more you need to write to get
bigger bonuses. If you slack off, you still need to write minimums but
there is some mercy on the quota.  Bonuses are sustained by being built
in to the chain count. This makes the new method a "stretch"
method. However, using log 100 instead of log 10 ensures that the
"stretch" is reasonable.

Bugs: They are here. Obviously haven't found them yet. Let me know.

Comments and improvements (especially to the formatting, which I
particularly don't care for) are welcome. Please email
address@hidden

Bob Newell
Honolulu, Hawai`i

Version: 0.01 alpha, 17 October 2013

* The challenge spreadsheet

#+CONSTANTS: base=250 target=1667 increment=4 logbase=100. tdlogbase=100. 
tclogbase=200.

| <3> | <7>     | <8>      | <7>     | <7>     | <5>   | <6>    | <6>    | <7>  
   |
| Day | Words   | Quota    | Chain   | Cum Wds | Targ  | Cum T  | Plus/min | 
Score   |
|-----+---------+----------+---------+---------+-------+--------+--------+---------|
|   1 |         | 250      |         |         | 1667  | 1667   |        |      
   |
|   2 |         |          |         |         |       |        |        |      
   |
|   3 |         |          |         |         |       |        |        |      
   |
|   4 |         |          |         |         |       |        |        |      
   |
|   5 |         |          |         |         |       |        |        |      
   |
|   6 |         |          |         |         |       |        |        |      
   |
|   7 |         |          |         |         |       |        |        |      
   |
|   8 |         |          |         |         |       |        |        |      
   |
|   9 |         |          |         |         |       |        |        |      
   |
|  10 |         |          |         |         |       |        |        |      
   |
|  11 |         |          |         |         |       |        |        |      
   |
|  12 |         |          |         |         |       |        |        |      
   |
|  13 |         |          |         |         |       |        |        |      
   |
|  14 |         |          |         |         |       |        |        |      
   |
|  15 |         |          |         |         |       |        |        |      
   |
|  16 |         |          |         |         |       |        |        |      
   |
|  17 |         |          |         |         |       |        |        |      
   |
|  18 |         |          |         |         |       |        |        |      
   |
|  19 |         |          |         |         |       |        |        |      
   |
|  20 |         |          |         |         |       |        |        |      
   |
|  21 |         |          |         |         |       |        |        |      
   |
|  22 |         |          |         |         |       |        |        |      
   |
|  23 |         |          |         |         |       |        |        |      
   |
|  24 |         |          |         |         |       |        |        |      
   |
|  25 |         |          |         |         |       |        |        |      
   |
|  26 |         |          |         |         |       |        |        |      
   |
|  27 |         |          |         |         |       |        |        |      
   |
|  28 |         |          |         |         |       |        |        |      
   |
|  29 |         |          |         |         |       |        |        |      
   |
|  30 |         |          |         |         |       |        |        |      
   |
|  31 |         |          |         |         |       |        |        |      
   |
#+TBLFM: $3='(if (eq "@-1$2" "") "" (calcFunc-max $base (+ $base (* $increment 
@-1$4))));L::$4='(if (eq "$2" "") "" (if (>= $2 $base) (calcFunc-max 0. (+ 1. 
(+ (calcFunc-max 0. @-1$4) (string-to-number (calc-eval 
"log(div($2,$3),$logbase)"))) )) (if (> @-1$4 0) -1 (- @-1$4 1))));L::$5='(if 
(eq "$2" "") "" (+ $2 @-1$5));L::$6='(if (eq "@-1$2" "") "" $target);L::$7='(if 
(eq "@-1$2" "") "" (+ $target @-1$7));L::$8='(if (eq "$2" "") "" (- $5 
$7));L::$9='(if (eq "$2" "") "" (if (> $4 0) (calcFunc-max 0 (+ 
(string-to-number (calc-eval "log(div($5,$7),$tclogbase)")) (string-to-number 
(calc-eval "log(div($2,$6),$tdlogbase)")) (calcFunc-max $4 1) @-1$9)) 
(calcFunc-max 0 (+ @-1$9 $4))));L::@3$3=$base;N::@3$4='(if (eq "@3$2" "") "" 
(if (>= @3$2 $base) (+ 1.0 (string-to-number (calc-eval "log(div(@3$2, 
@3$3),$logbase)"))) -1.));L::@3$5='(if (eq "@3$2" "") "" 
@3$2);L::@3$6=$target;N::@3$7=$target;N::@3$8='(if (eq "@3$2" "") "" (- @3$5 
@3$7));L::@3$9='(if (eq "@3$2" "") "" (if (> @3$4 0) (calcFunc-max 0 (+ 
(string-to-number (calc-eval "log(div(@3$5,@3$7),$tclogbase)")) 
(string-to-number (calc-eval "log(div(@3$2,@3$6),$tdlogbase)") ) @3$4)) @3$4));L

* End Notes

Usage: 
1. At start of challenge, edit the #+CONSTANTS line to suit. Press C-c C-c.
2. Each day enter word count and then recalculate
   with C-u C-u C-c *.
3. Uh, save the file...

Keep copy for use in making new challenges.

Important: You MUST (require 'calc-ext) in your startup.


reply via email to

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