Wednesday, November 5, 2008

Two Projects in One

I'm working on Fastware!, a book about how to write software that runs quickly. Unlike my C++ books, Fastware! will be language-independent, and it will cover a much broader range of topics than just code. (At one extreme, for example, it will consider hardware memory hierarchies, and at the other, separate processes potentially written in different languages.) I've already got a detailed outline, a sample chapter, a growing bibliography, and a ton of material I'm looking forward to incorporating. The first part of "The Fastware Project" is the normal stuff that goes into writing a book: figuring out what to include, learning enough to explain it well, and expressing it in words, diagrams, examples, etc.

The second part is the authoring itself, and my writing has been stalled for quite some time as I've wrestled with the question of what it means to write a book these days. For conventional print books, things are easy for an author, because the game is pretty well understood: ink is black, paper is white, standard font size is around 10 point, page dimensions are generally around 9"x6" with maybe a margin of around 1" on all sides. Experience tells us that we shouldn't mix too many fonts in a book, and physical constraints tell us that if we have a spreadsheet with 100 columns in it, shrinking it down to fit on a single page will likely render its content incomprehensible. So authors avoid trying to do things like that.

But I don't think the ink-on-paper world is the one I want to write for any more. I still want to write something that is recognizably a book, but I want to think of ink on paper as but one of many possible output devices. Others include computer screens (big with color support), portable ebook readers like Kindle (smaller and currently with no color support), and portable devices that happen to support text (e.g., iPhones -- very small with color support). I also want to try to support audio as an output device, because text-to-speech systems make the automatic generation of audiobooks practical, and I think this is a form of information consumption that is likely to increase in popularity.

How does one write for such a variety of output devices, and what authoring tools exist to facilitate the task? What's the proper use of color, given that it may or may not be available? What's to be done about diagrams and tables when the output form is audio? These are the kinds of questions I'm trying to think about before I do any more writing, and they're the issues I expect to address in my initial blog entries. I hope you'll help me find my way by offering comments on the issues I raise.

10 comments:

edwinvandegrift said...

Hi Scott,

First off, I have to say that I can't wait for you to get to the content of Fastware. I've very much enjoyed your prior publications, and I'm sure it will turn into a fascinating project.
I understand your concerns, but I feel a bit split myself. I would definitely want a book, paper & ink, but I find it very valuable to have something easily searchable as a PDF at the same time. Call me old-fashioned if you want, but for regular reading I haven't found anything yet that gives the same comfort as a book.

Looking forward to following your blog!!
Thanks,
Edwin van de Grift

Ps: Besides I'd one day like an autographed copy of one of your works. LOL!!

gerhard said...

Hello Scott,

I only can emphasize what Edwin van de Grift already said. Having a (good old-fashioned) book plus a PDF version is very close to optimum (at least for me).
I'm not sure, if reading a book on a device like a mobile phone can be satisfying?

Gerhard

Glenn Puchtel said...

First, I agree that paper and ink seems archaic given today’s technology. Still, reading print on paper is far easier on the eyes and any other media. More so, I can write in/on it too. Still, they are cumbersome and contain bugs – acknowledged by ‘errata’ sheets.

I have authored a book as well; albeit not in the same league as yours; however, I always wished my book could be a living document whereby it would always reflect the current line-of-thought – this I think is the promise of technology. I suggest that cost of ownership is yet another consideration. That is, if I buy a book, should I have to pay full price for its second printing? I am sure the publishers would say yes, but it just does not seem right somehow.

Anyway, more to your points, color is tricky and subjective. While on the OS/2 Presentation Manager team, we always struggled with it… far too much. In the end, everything had to be configurable. More so, 1 in 12 people have some sort of color deficiency.

Regarding output media, as mentioned, other than paper I have found reading on a monitor fatiguing and non-portable. When I read a new book, it is typically away from my computer and its environment. I like the idea of audio; sometimes it is hard to describe something in words – this is especially true in technical books. My first reaction regarding diagrams, tables and audio is that they are mutually exclusive, but I could be wrong, I need to think about that more.

In summary, its temping to embrace technology; however, sometimes technology is a solution looking for a problem. In other words, it is hard to improve upon a good, old-fashion book. Still, a hard-copy book, especially a technical book lacks the ability to stay current. In a perfect world, well my world anyway, I would like to carry a portable device like a ‘Kindle’, and my library would/could update in a similar manner to the way Windows checks for updates; however, I think that would rock the publishing world.

Regards,
Glenn Puchtel

Larry said...

Scott,

When television went from black and white to color they had the same problem. Some of the clothes that the news casters wore looked good in both B&W and color and some not. You need to know what each color does in each medium (E.g., red maps to black and light yellow maps to white. So a yellow tie with a white shirt did not work).

You have two ways to go with layout. You can either have different sets of markup, one for print, one for color monitors, and another for B&W monitors, large screens or small screens, etc.; in which case the layout is a little different in each medium. Or you have to try to finesse each block of text, graphic and image to work in all mediums at the same time. You can’t always find a way that works for all mediums. I think the first way is better. It’s more work to write it and keep it all in sync. (Use a markup with an #ifdef – if any exist(?)) But I don’t think the small differences in layout matter to the user.

With audio only you will lose information. You can summarize a table but there is no way to convey the structure. If you have a list of 100 items you can’t just read the list. People’s minds shut down after you’ve read more than 10 items. Sometimes more sometimes less. Those parts that are not just text must either be summarized or lost.

Good luck,
Larry Beck

Audie Carnevale said...

I can see you sketching out a grid to compare various medium, and then at this primitive state of technology we are in, needing to limit how (or whether) some of the medium are used.

A printed book is easiest to read. It is also interactive in the sense we can make notes in it, add cross references, underline key points and refer to it in other of our books (in XYZ book we may want to refer back to your book -see p.72, The Fastware Project by Scott) etc. Don't overlook the importance of each owner of your book (regardless the medium) wanting to "personalize and extend" the content in these ways.

A pdf has different ways of interaction, notably, searchability. If you own a slightly expensive version above the reader, you can also "personalize and customize" the content.

Audio offers convenience for many, but not everyone is good at auditory learning, and diagrams and samples of technical details don't turn to audio well or easily.

Maybe each medium becomes a subset or augmentation to one or more main conveyors of content? One might be little more than an audio teaser/infomercial; another might be an encapsulation of key ideas, etc.

Personally, I'm liking the audio-visual capabilities of tools like Camtasia, PPT, PDF, Quizzes, video talking head, field video, screen movies for some types of content, etc. that can be burned onto a set of CD's. We are working on using that sort of media to provide a 32 hour online (and offline via CD) certification training program for XVT, as well as in another venture using the same media-mix to teach philosophy.

I think these do a great job of persuasive communication.

But personally, I have an extensive library of good ole fashioned books--all well marked up and now treasured. I love books.

Ken said...

To distill your content down to a format that supports all the potential outputs including audio book and small mobile devices, you're down to such a small common denominator that you almost may as well be writing in plain text. The extreme opposite alternative is to maintain each output on its own so you can catch errors and awkwardnesses from the reader's or listener's perspective. Everything in between is wrought with compromises.

Is it untoward to suggest perhaps that there is no better person for the job of writing the next killer publishing app than the author of so many excellent books on how to write rock solid code?

Greg Prosch said...

Scott, your problem is similar to preparing a meal for people with different dietary constraints. Bill is a vegetarian, Susan is allergic to dairy, Jeff can't tolerate anything spicy, Martha only eats Kosher foods...

Thus, it seems you either end up cooking separate meals for each of them or settling for something that is less than palatable. Similarly, you could develop multiple versions with the same core content --which seems like a lot of work-- or you try to accommodate them all and end up with a product that is subpar on every medium.

Maybe you should talk to the folks at Amazon about the features you want in the next Kindle, like color and sound bites and then target that. I for one am holding off until Kindle 2.0 at least so if you could influence that in the right direction I'd be in your debt ;-)

Murty Dasari said...

Hi,

While you are looking for ways and tools to write the content that works seamlessly on a variety of end applications, another way to see the problem is providing same content based on capabilities of the end-device or application.

I don't know of any standardization on this front for a wide range of applications in the entire spectrum of communications, but this problem is solved in the wireless world where there are similar needs to provide content on heterogeneous user-agents (mobile devices). It invovles transformations of the same "content" to end device based on their capabilities described as user-agent profiles.

http://en.wikipedia.org/wiki/UAProf

This doesn't fit well for what you are looking directly, but I hope it gives another angle to think about the problem.

Best regards

Anonymous said...

1. Scott, I agree with your notion of producing camera-ready copy. I consider your work exemplary not only for C++ correctness but for clarity, relevance, succinctness, and usability. Your indexing has to be at least tied for the best I've seen. As an author, for effective and pleasurable communication, I rank you with C.S. Lewis, and I try to emulate your writing qualities as best I can in my own.

2. EVerybody seems to ignore WordPerfect. But even 10 years and more ago, it was providing nearly anything you're asking for, and robustly and relatively intuitively; moreover, it has handled several flavors of SGML in and out since at least v. 8 and has written PDF that long. In the day, it actually edited Word-format docs better than Word; dunno whether this is still true. I don't think I've ever seen any product that could handle more foreign formats for translation/insertion, whether graphic, document, or spreadsheet. Definitely really WYSIWYG, and easy to insert codes (its own internal markup) where you actually want them.

I don't use it much any more simply because the Linux versions are unmaintained and OpenOffice is good enough for my normal needs and always at hand. Most documents, if I can, I try to render in not-heavily-formatted HTML using Xemacs, but if I had camera-ready in mind, I would somehow run WordPerfect 8 for Linux, or some Windows version running on WINE or Winders-under-VMware. I do know what you mean about Frame (which goes triple for Interleaf). I suggest you try a copy of WordPerfect; it's cheap. (You may even like an older version better than something new; not sure.) I do NOT recommend any emulation it has of Word but rather to use it on its own terms. I think that if you used it for about 2 weeks straight, you'd be hooked.

Anonymous said...

First, I agree that paper and ink seems archaic given today's technology. Still, reading print on paper is far easier on the eyes and any other media. More so, I can write in/on it too. Still, they are cumbersome and contain bugs ­ acknowledged by `errata' sheets. I have authored a book as well; albeit not in the same league as yours; however, I always wished my book could be a living document whereby it would always reflect the current line-of-thought ­ this I think is the promise of technology. I suggest that cost of ownership is yet another consideration. That is, if I buy a book, should I have to pay full price for its second printing? I am sure the publishers would say yes, but it just does not seem right somehow.

Anyway, more to your points, color is tricky and subjective. While on the OS/2 Presentation Manager team, we always struggled with it… far too much. In the end, everything had to be configurable because no single theme fits all. Further, 1 in 12 people have some sort of color deficiency.

Regarding other media, I have found reading on a monitor fatiguing. More so, when I read a new book, it is typically away from my computer and its environment, so I can concentrate better. I do like the idea of audio; sometimes it is hard to describe something in words ­ this is especially true in technical books. My first reaction regarding diagrams, tables and audio is that they are mutually exclusive, but I could be wrong, I need to think about that more.

In summary, its temping to embrace technology; however, sometimes technology is a solution looking for a problem. In other words, it is hard to improve upon a good, old-fashion book. Still, a hard-copy book, especially a technical book, lacks the ability to stay current.

In a perfect world, well my world anyway, I would like to carry a portable device like a `Kindle', and my library would/could update in a similar manner to the way Windows checks for updates. Further, I could annotate it, and put electronic bookmarks for easier recall.

Well, those are my initial thoughts, hope it helped in some way.