/* */ /* */

Tuesday, June 24, 2014

Effective Modern C++ Status Report

In recent days, two major milestones for Effective Modern C++ have been achieved.  First, I sent a draft of the book's Introduction out for technical review. That was the last part of the book to be written, so I finally have a full draft manuscript. Second, I received an image of the book cover from my publisher, so I now know what the book will look like. My editor informs me that I'm the common crane, which elicited the same response from me and my wife: "common?!"

Working with O'Reilly is new for me. My past C++ books were published by Addison-Wesley, and my relationship with AW continues (both for past books as well as for books in my Effective Software Development Series). For Effective Modern C++, however, I concluded that O'Reilly was a better fit for me, and I'm quite pleased to be working with them.

A complete draft manuscript and a front cover design do not a book make. There's still a lot of work to be done, and I thought you might be interested in the schedule for it:
  • Now until July 31: I revise the manuscript to take comments from my technical reviewers into account. I currently have over 70 reviewer email messages (some extremely long and detailed) waiting to be processed, and I expect that number to increase significantly by the end of this month, which is when I've requested that reviewers get me their remarks.
  • August 1-15: I produce the book's index. This is my least favorite part of book creation, and I warn my wife well in advance that I'll be unusually irritating to be around during this time. Coming up with terms to index, including text rotations (e.g., "universal references, versus rvalue references," "rvalue references, versus universal references," "references, rvalue vs. universal") and page ranges is tedious, at best, and the tools available to get this information into a manuscript (e.g., into Microsoft Word, which is what I'm using) are primitive to the point of sadistic. There are professional indexers, but my experience (as well as that of other authors I know) has been that if you want a useful index for a book on C++, the content has to be created by the author. How practical it would be to have me identify the content and somebody else do the entry into the manuscript, I don't know. Index preparation is highly iterative, so the process would be more collaboration than hand-off, and my one prior experience with index collaboration did not go well.
  • August 16-30: A copyeditor goes over the entire book, looking for errors and inconsistencies in grammar, spelling, style, labeling, and more. No matter how clean you think your manuscript is and no matter how many people you've had review it, getting it back from a copyeditor is always a humbling experience.
  • September 1-5: I edit the manuscript one last time, taking the copyeditor's comments into account.
  • September 5: I deliver a final manuscript to O'Reilly. 
  • Early October: Digital versions of the book become available.
  • Late October: Print versions of the book become available.
If you're dying to see what's in the book, and you don't mind dealing with a manuscript that's in draft form (and hence contains technical errors, awkward prose, Item titles in need of revision, primitive diagrams, confusing explanations, and, I hope, some stuff in decent shape), Effective Modern C++ will be part of O'Reilly's Early Release Program, meaning you'll have a chance to see the book in the same form as my technical reviewers. You'll also be able to offer comments on it. As things stand now, the book is slated to be available in Early Release form the week of July 7th.


And now, if you'll excuse me, I have hundreds of reviewer comments to process...

Scott

32 comments:

Michael Burr said...

Great news. I'm looking forward to the 'early release' e-book.

Anonymous said...

I'm somewhat surprised by the lack of LaTeX, especially considering your problems with word

Scott Meyers said...

@Anonymous: Fundamentally, I prefer a WYSIWYG approach; see this blog entry. My decision to use Word ultimately boiled down to choosing something that was WYSIWYG and so common, it could be translated into whatever format my publisher ultimately wanted for production. (At the time, I had not yet chosen a publisher.) In retrospect, Word is somewhat worse than I expected (which is saying something, because I didn't expect much), but all the other choices had drawbacks, too. If I had to do it again, I don't know what I'd do, but in view of the reduced meaning of WYSIWYG in a multiple-platform world, I'd probably give markup languages a second look. But not with much enthusiasm.

Pete Goodliffe said...

I've really enjoyed writing my current (techie) book in asciidoc. O'Reilly's Atas platform is reasonable and lends itself to a good kind of collaboration between the author and publisher.

Scott Meyers said...

@Pete Goodliffe: Does AsciiDoc have a way to specify the alignment of table cells? I ask only because this was something I found that reST couldn't do (per my blog post (from 2008) here).

Pete Goodliffe said...

Yes; it's has surprisingly deep support for tables, including alignment, cell merging and cell size.

See:
http://www.methods.co.nz/asciidoc/chunked/ch23.html

I have to admit that this isn't something that I have used in anger in my book.

asciidoc is easily the best manuscript markup language I have seen.

See my ACCU presentation on the subject for a brief overview:
http://www.methods.co.nz/asciidoc/chunked/ch23.html

Anonymous said...

@Scott your 2008 reasons for WYSIWYG are outdated, imo.

First, latency in error detection is much reduced in LaTeX environments with a) syntax highlighting and b) an integrated PDF viewer with a two-stroke keyboard shortcut to update. Your examples of itemize levels and emphasize scope are quickly spotted.

Second, finding the exact LaTeX source location in your editor corresponding to a location in PDF is solved through "inverse search" by double-clicking in the PDF. Almost every LaTeX environment has this feature.

See http://en.wikipedia.org/wiki/Comparison_of_TeX_editors for more info. Personally, I prefer TexStudio, but I believe Emacs offers the same features.

Anonymous said...

O'Reilly? why, why, why?

Andreas Weis said...

O'Reilly has had some unfortunate issues regarding printing quality of Print-on-Demand titles in the past. This was especially prominent with diagrams, but was also noticeable in the type face to a sensitive eye.

Do you know whether the book is going to be printed on-demand or as a classical offset print? If it's going to be pod, would you consider offering a (higher priced) premium edition for your bibliophile readers?

I realize that this is kind of an anachronistic request in the age of eBooks, so apologies for that.

Scott Meyers said...

@Pete Goodliffe: Thanks for the additional info. I wasn't aware of AsciiDoc, and it's clearly worth learning more about. In principle, I still think that WYSIWYG is better than markup, but in practice, my experiences with WYSIWYG (in the form of FrameMaker, OpenOffice, and Word) is that they don't promise what they deliver, especially when it comes to things like cross-referencing and indexing.

Scott Meyers said...

@Anonymous: I'm sure that LaTeX authoring environments are better now than they used to be, but, as I noted in my reply to Pete Goodliffe, I still prefer WYSIWYG in principle. Markup-based approaches still have latency issues (even if they're reduced compared to what they used to be), and you need twice as much screen real estate: one window for the markup view, another for the formatted view. And the markup view is a mess, because it mixes markup and content.

Having said that, as I also noted in my reply to Pete Goodliffe, my experience with WYSIWYG is that the systems don't deliver on their promise. To enter a properly-formatted cross reference in Word in my current book, for example, the "WYSIWYG" text I have to work with is { REF _Ref361389627 \# "'Item '0" \r \h }. This was not an issue in FrameMaker (from 15 years ago!), but FrameMaker had other issues, especially when it came to index entries (an area in which Word is even worse).

Scott Meyers said...

@Anonymous: I plan to write about my decision to go with O'Reilly in a different blog post (but probably not terribly soon, because work on the book is more important).

Scott Meyers said...

@Andreas Weis: I don't know for sure, but I expect at least the initial print run to use offset printing. I haven't received a clear answer to my question about when O'Reilly switches from offset to POD.

Anonymous said...

@Scott did you ever look at LyX as a LaTeX wrapper (or its competitors TeXmacs or Scientific Workplace)?http://www.lyx.org/Screenshots No double screen estate, hides ugly markup, almost wysiwyg preview and pdf final output.

The difference between what you see and what you get is so minimal, that for all practical purposes, you have zero feedback latency and only need to look at a pdf when finalizing a document. Yet you have the full power of LaTeX.

Scott Meyers said...

@Anonymous: I don't remember if I looked at LyX. I remember looking at some WYSIWYG editor for LateX and not being impressed, but that was in 2008, so things may be quite different now.

Is there an easy way to go from LaTeX to epub? As time goes on, I'm convinced that PDF will be less and less important, because it's a page-based format, and as digital devices proliferate with different form factors and as user control over things like font sizes and device orientations becomes a given, page-based formats will fade.

Anonymous said...

Sorry, I am not knowledgeable enough about epub, you might want to consult tex.stackexchange.com or your local TeX guru or users group.

Ran Regev said...

It was Kurt Vonnegut, I think it is in cat cradle, that said you can know an author by reading its index.

Anthony said...

Scott, give a try to TeXStudio.

Anonymous said...

Scott, could you talk a bit more about the content of this book versus Overview of the New C++. Is the book (Effective Modern C++) a superset which includes the Overview or are they different books with different target audiences.

Scott Meyers said...

@Anthony: Thanks for the suggestion regarding TeXStudio.

Scott Meyers said...

@Anonymous: The books are aimed at different audiences. Overview of the New C++ is an overview of features in C++11 and C++14 that assumes no background in those versions of the language. Effective Modern C++ assumes that readers are already familiar with the basics of the new features, so it focuses on their effective use. As such, it covers topics not in Overview, and in cases where it discusses topics that are in Overview, it generally goes deeper.

Overview is designed to be your first exposure to features in C++11 and C++14, while Effective Modern C++ is designed to be the standard second book on the topic. There is some overlap between the two, but there's not a lot.

It's worth noting that I originally wrote Overview in 2009-2010, and while I've updated the materials regularly since then, if I were to start over now, I'd present some topics a bit differently. Effective Modern C++ represents my current understanding of C++11 and C++14, which I'd like to think is better now than it was five years ago.

Scott Meyers said...

@Andreas Weis: I just got confirmation from O'Reilly that the initial print run will be offset. It will also be full color, which was a pleasant surprise to me.

Anonymous said...

The crane is a bird associated with wisdom in Egyptian and Chinese mythology. Aren't all your books supposed to be(come) "common C++ wisdom"? :-)

Scott Meyers said...

@Anonymous: Let's hope the implication of the cover is supposed to be more wisdom than mythology :-)

Anonymous said...

Since yesterday, O'Reilly has this link live http://shop.oreilly.com/product/0636920033707.do and it mentions December as estimated release date. No Early Release either yet. Please tell us that the link is a placeholder with better news coming soon?!

Scott Meyers said...

@Anonymous: My editor tells me they'll be updating that page shortly to reflect the latest information.

As far as I know, we're still on track for Early Release later this week. I'll blog about that when everything is in place.

Scott Meyers said...

Hmmm, per my editor today, Early Release might not take place until next week. One reason is apparently that they want to change the cover design. I'm no longer to be the common crane. What I will be remains to be determined.

Andy Jones said...

Thanks for the update on the early release edition. Starting a new C++ project in the very near future and I'm keen to read EMC++ before I code myself into a corner.

Matt Linscott said...

Looks like the Early Release book is available for order now.

Scott Meyers said...

@Matt Linscott: Looks like you're right. (They told me it would be tomorrow. I haven't seen it yet.) I'll blog about this tonight or tomorrow so that you'll have a better idea what to expect from the Early Release ebook. Very briefly, it's a full draft, but it's not formatted as the final book will be, and there are a lot of issues that my technical reviewers have brought to my attention that have not been fixed in the draft.

Mark Atkinson said...

Hi - I purchased the preview PDF, great content so far but could you please ask the publisher to switch off the auto line numbering in the PDF for the next revision? Very distracting, hurts readability, apparently can't be disabled in the viewer.

I resorted to converting to Word via OneDrive which got rid of it (so it's not in the body text), but not an ideal solution.

Scott Meyers said...

@Mark Atkinson: The line numbers are in the PDF I sent to O'Reilly, so blame me, not them. However, I plan to keep the line numbers in pre-publication drafts I make available, because it facilitates bug reporting. It's a lot easier for both me and the person reporting a problem to say "On page n line m" than "On page n about halfway down the page in the third line of the second example..."

The line numbers will be absent from the final book, so that's something to look forward to :-)