Thursday, February 12, 2009

Book writing methodology

James Savidge noted this page that describes the writing methodology of another book author. I thought I'd comment on what I do. I think what will become clear is that there is no one way to write books :).

As Danny Choo says, I dislike Word quite a bit. So I use LaTeX instead (the MiKTeX distribution in particular). This produces the DVIs that I look at on the screen as I am writing, and also makes the PDF files I send to Lulu.

Danny uses software to organize the content of his books. In particular, he uses Devonthink, which could be roughly described as scrapbook software. I do that work just as he does, but in a different manner.

When I was writing the mentoring course book, I had already decided what was going to be put down in paper and a rough sketch of the chapter structure. I do remember I spent some time changing the order of the chapters and so on. But basically it was set, and so then my job was to perform a brain dump.

This activity, the brain dump, is what I find most expensive. The hardest aspect of it is the serialization of concepts in a way that eliminates or at least strongly restricts the occurrence of forward references. In that way, new ideas can be presented in a constructive way that resembles to some extent how they came to be.

Let's go through an example of this. When I was taking algebra, we had mathematical induction exercises such as

  • prove that 1 + 2 + ... + k = k(k+1)/2
  • prove that 1 + 4 + 9 + ... + k^2 = k(k+1)(2k+1)/6
These proofs were done by induction, and so they required quite a bit of work. Only of course if we had been taught finite calculus instead, then these things would have been trivial. In addition, we would have known how to sum cubes, fourth powers, and any nth powers as well. All at once, with one swipe of the pen.

So, what I try to do is to present what would be the equivalent of these sums from a broad point of view, and then develop a chain of thought that solves all the occurrences in general. This saves time, and is more powerful because now if you were told to prove something like
  • 5 divides 7^n - 2^n, for all positive integer n
then you wouldn't use mathematical induction. What a royal mess! Instead, you could write 7^n as (5+2)^n, rewrite it using Netwon's binomial expansion, and then you would find that the last term is 2^n. If you take it out, then the remaining terms are all multiples of 5, you can extract 5 out as a common factor and clearly 5 divides 7^n - 2^n.

The difference is that if you use induction, you spend energy to prove that 5 divides 7^n - 2^n for all positive integer n. With finite calculus, you know that j divides (j+k)^n - k^n, for (basically) all j and k. Big difference.

My task is to write about the equivalent of finite calculus. And although I write about computer programming instead of actual mathematics (same difference anyway), the material has to flow in a mathematical manner. No forward references. Only previous results shown to be correct can be used at any one time. The way in which an idea is developed must be serialized such that it can be recreated in a reproducible manner by the reader, and so that the method of derivation can be made explicit for others to reuse.

What works best for me is to divide the contents of the book in chunks such as chapters, and make a rough sketch of each. But then, instead of using something like Devonthink, I hold it in my head. Something that I wrote about in the Fundamentals book is that the place where one can think faster is in one's brain. Then why bother with the very slow sensory / tactile interface unless absolutely necessary? Everybody knows that thrashing the page file is bad. Then why do it ourselves by choosing an arbitrary way to organize our thoughts for physical replication? That just adds CRUD homework on top of our thoughts. Had a new idea? Great, now spend time putting it in the computer with a scrapbook entry. And it gets even worse, because if we happen to radically change the way we think, then the endless hours we spend making pretty looking representations of what we used to believe need to be redone. I'd rather spend most of my time thinking new things instead.

Eventually at least the beginning of the chunk becomes stable enough that subsequent iterations don't change it. Then, that gets written down. And writing goes very fast too, because the vast majority of the details and how the material plays with everything else has already been thought out. The thing that I do which is closest to using Devonthink is to add notations such as
  • % this or that subtle detail
  • % such and such material comes first, then the other stuff
to the LaTeX file so I do not forget. However, these are rather minimal.

No comments: