Date: 17 May 2004 07:38:42 -0000 Message-ID: <20040517073842.5331.qmail@plover.com> To: mjd-book@plover.com Subject: Mark Dominus book news: the book enters production Organization: Plover Systems From: Mark Jason Dominus If you forgot what this list is about, or you don't know why you're getting this message, please see http://perl.plover.com/book/ To unsubscribe, send a blank message to mjd-book-unsubscribe@plover.com. ---------------------------------------------------------------- 1. Today I finished the book and sent the completed manuscript to the publisher. Tomorrow it enters production. That means that Morgan Kaufmann will start copy editing it in a couple of weeks, and a couple of weeks after that I will get the copy edits back for checking. Then it goes through another edit cycle. Then there's layout and design, and we figure out the cover, and I supply the front matter. Somewhere in there they have an index made, and they have artists redraw my cruddy illustrations, and they send the manuscript to famous people so that they can get blurbs for the back cover. Eventually it goes to press. If I remember correctly, printing takes about six weeks. It's been a long, long road, but the bulk of my work is done; it's now mostly in the hands of the MK folks. 2. We finally have a title. The title of the book is Higher Order Perl and the subtitle will probably be something like "using functions to write functions". The title was supplied by Mark Foster. Thanks, Mark! 3. Most of the work of the last few weeks has been writing tests to test the example code. In this, I was assisted by Robert Spier. I can't say enough good things about Robert. He was amazingly diligent and thorough, cheerful, and a pleasure to work with. I could not have done the testing without him, and without the testing the book would have been substantially worse. I was astonished at how little of my code actually worked. My advice to anyone writing a book about programming: Do not wait until the very end to write the tests. Write them as you go. 4. In case you are curious, the final word counts are pages lines words chars A B C 2201 12352 77119 35 39 33 chap01.txt 1074 5419 37755 15 17 16 chap02.txt 2756 15805 100924 45 50 42 chap03.txt 4469 22539 150454 64 71 68 chap04.txt 2753 12989 88519 37 41 42 chap05.txt 3501 16785 112385 48 53 53 chap06.txt 1733 7328 50674 21 23 26 chap07.txt 5881 27232 200863 78 86 89 chap09.txt 4876 21760 152354 62 69 74 chap12.txt 29316 142640 973877 408 450 444 total The page counts are estimates, calculated from the plain text output. "A" estimates 350 words per page. "B" estimates 317 words per page. "C" estimates 66 lines per page. I printed out chapter 12 tonight and it was about 66 pages long. 5. The final result was similar to what I originally proposed, but also substantially different from it. Here's the original chapter list I proposed: I. Recursion II. Dispatch tables III. Caching, Memoization and Lazy Computation IV. Iterators V. Streams and infinite lists VI. Higher-order functions: Merging, filtering and reducing VII. Higher-order functions: Composition VIII. Functional parsing IX. Object-oriented programming X. Building our own object-oriented programming system XI. Constraint systems XII. Control flow Here are the chapters I actually submitted: 1 Recursion and Callbacks 2 Dispatch Tables 3 Caching and Memoization 4 Iterators 5 From Recursion to Iterators 6 Infinite Streams 7 Higher-Order Functions and Currying 8 Parsing 9 Declarative Programming The approximate corespondence is: I - 1 II - 2 III - 3 IV - 4 5 (new) V - 6 VI, VII - 7 VIII - 8 IX, X (gone) XI - 9 XII (gone) We might still break chapters 4 and 9 into two chapters each. I don't know. I was sad to have to drop chapter X, but I had to stop sometime. Also I could not think of any plausible examples. 6. I don't have any sample chapters for you this time, so I thought about what I could show that might be interesting. I thought of two things. As I was working on the book, I often wrote chunks of text that didn't make it into the final manuscript. I hate to throw anything away, so I deposited all this stuff into a series of files named JUNK. You mailing list folks can look at the JUNK if you want. Some of it might be interesting. Some of it might be unintelligible. But if you have nothing else to do, you might enjoy looking at it. It's in [ Sorry, goodies are available only to mailing list subscribers. Send mail to mjd-book-subscribe@plover.com to subscribe. ] For some reason there is no JUNK file for chapter 12. I guess I must have left all the junk in the manuscript. As usual, I must remind you: a. Please do not distribute these URLs. They are for you mailing list folks only. If people want to see the junk files, please encourage them to join this mailing list. To subscribe, send email to mjd-book-subscribe@plover.com or visit the subscription form at http://perl.plover.com/book/#mlist People who subscribe will receive an automatic message directing them to whatever secret goodies are presently available. b. Do not distribute the documents either. Some form of them might go back into the manuscript at some point, and I don't want my cruddy junk files circulating on the internet where some Slashdot pinhead will mock them. The other bonus I'm going to send out is the first release of "Mod", which is the formatting system I used to write the book. It's like Perl's POD documentation, except better in several ways: 1. It's extensible. 2. It's fast. 3. It has features in it for writing books, such as Mathematics markup Cross-references Indexing Automatic test exatraction I think it is a big success, and I think other people might want to use it. I don't have time to package it tonight, because I must go to sleep. But you can look for it on CPAN in the next few days. 7. I have been writing up the "thank you" section. This mailing list was tremendously helpful. I can't thank everyone on it by name (about 600 names!) but I would like to thank the folks who made special contributions. Some of them are: Darius Bacon Greg Bacon Stas Bekman David Combs Michael Fischer Francesc Guasch Torsten Hoffman Brian King Daniel Koo Wolfgang Laun Abhijit Menon-Sen Steffen M:uller Luc St. Louis Rob Svirskas Ben Tilly Iain "Spoon" Truskett David "Novalis" Turner Damien Warman Roland Young I am planning on going over all the mail I received from mailing list subscribers and on accumulating a list of names of people to thank. But there is so much mail spread out over so long that I am afraid I will miss someone important. So if you are on the mailing list and you sent me comments or suggestions about one of the sample chapters, or advice, or anything else, and you would like to be thanked, and you are not on the list above, please let me know, and that way I can be sure I do not omit you. 8. Thank you all. I will report back next time something happens. From now on, happenings will be driven by Morgan Kaufmann, rather than by me, so they will probaly be more regular and frequent than they have been in the past.