<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Xaprb &#187; writing</title>
	<atom:link href="http://www.xaprb.com/blog/tag/writing/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.xaprb.com/blog</link>
	<description>Stay curious!</description>
	<lastBuildDate>Wed, 17 Mar 2010 00:49:12 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>High Performance MySQL 2nd Edition gets revised and translated</title>
		<link>http://www.xaprb.com/blog/2008/08/02/high-performance-mysql-2nd-edition-gets-revised-and-translated/</link>
		<comments>http://www.xaprb.com/blog/2008/08/02/high-performance-mysql-2nd-edition-gets-revised-and-translated/#comments</comments>
		<pubDate>Sat, 02 Aug 2008 13:05:30 +0000</pubDate>
		<dc:creator>Xaprb</dc:creator>
				<category><![CDATA[High Performance MySQL]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[errata]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[OReilly]]></category>
		<category><![CDATA[translation]]></category>
		<category><![CDATA[writing]]></category>

		<guid isPermaLink="false">http://www.xaprb.com/blog/2008/08/02/high-performance-mysql-2nd-edition-gets-revised-and-translated/</guid>
		<description><![CDATA[Just thought I&#8217;d update you.  We got quite a few good errata from readers, and I took a couple weekends and went through the book with a fine-toothed comb, catching typos and subtle errors that crept in at some point (TPC benchmarks were labeled as TCP benchmarks &#8212; did you catch that one?).  [...]


Related posts:<ol><li><a href='http://www.xaprb.com/blog/2009/06/07/an-ongoing-thread-of-blogs-on-mysql-performance/' rel='bookmark' title='Permanent Link: An ongoing thread of blogs on MySQL performance'>An ongoing thread of blogs on MySQL performance</a> <small>In the las</small></li><li><a href='http://www.xaprb.com/blog/2010/02/22/cary-millsap-thinking-clearly-about-performance/' rel='bookmark' title='Permanent Link: Cary Millsap: Thinking Clearly about Performance'>Cary Millsap: Thinking Clearly about Performance</a> <small>Cary Mills</small></li><li><a href='http://www.xaprb.com/blog/2009/11/07/a-review-of-optimizing-oracle-performance-by-cary-millsap/' rel='bookmark' title='Permanent Link: A review of Optimizing Oracle Performance by Cary Millsap'>A review of Optimizing Oracle Performance by Cary Millsap</a> <small>Optimizing</small></li></ol>

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>Just thought I&#8217;d update you.  We got quite a few good errata from readers, and I took a couple weekends and went through the book with a fine-toothed comb, catching typos and subtle errors that crept in at some point (TPC benchmarks were labeled as TCP benchmarks &#8212; did you catch that one?).  I marked up my book and mailed it to O&#8217;Reilly, who went well above and beyond what they normally do for errata.  Normally, once a book is in print they will fix only serious technical errors.  They fixed everything, even going as far as rearranging page breaks and moving figures to improve readability.</p>

<p>The second printing is on Monday August 4th.  Already!  I think the book has been selling a lot better than anticipated.  I know I am psyched to see it remain in the top couple thousand on Amazon.  And they thought it was a big deal when it broke five thousand!</p>

<p>In other news, it&#8217;s going to be translated into Spanish, Polish, and Portuguese.  So now all my friends in Brazil will be able to read it in their native language.</p>

<p>And Percona&#8217;s two expert consultants in Poland, too.  No undue influence was exerted.  I didn&#8217;t even know it would be translated.  Really!  We do have a Spanish-speaking consultant who lives in Spain, but he is a native English speaker.  Now, all we need are Russian, German, Lithuanian, and Ukrainian translations and I think we&#8217;ve pretty well got the company covered, at least until we hire again.</p>

<p>Related posts:<ol><li><a href='http://www.xaprb.com/blog/2009/06/07/an-ongoing-thread-of-blogs-on-mysql-performance/' rel='bookmark' title='Permanent Link: An ongoing thread of blogs on MySQL performance'>An ongoing thread of blogs on MySQL performance</a> <small>In the las</small></li><li><a href='http://www.xaprb.com/blog/2010/02/22/cary-millsap-thinking-clearly-about-performance/' rel='bookmark' title='Permanent Link: Cary Millsap: Thinking Clearly about Performance'>Cary Millsap: Thinking Clearly about Performance</a> <small>Cary Mills</small></li><li><a href='http://www.xaprb.com/blog/2009/11/07/a-review-of-optimizing-oracle-performance-by-cary-millsap/' rel='bookmark' title='Permanent Link: A review of Optimizing Oracle Performance by Cary Millsap'>A review of Optimizing Oracle Performance by Cary Millsap</a> <small>Optimizing</small></li></ol></p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.xaprb.com/blog/2008/08/02/high-performance-mysql-2nd-edition-gets-revised-and-translated/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Book Review: Building powerful and robust websites with Drupal 6</title>
		<link>http://www.xaprb.com/blog/2008/07/20/book-review-building-powerful-and-robust-websites-with-drupal-6/</link>
		<comments>http://www.xaprb.com/blog/2008/07/20/book-review-building-powerful-and-robust-websites-with-drupal-6/#comments</comments>
		<pubDate>Mon, 21 Jul 2008 03:18:33 +0000</pubDate>
		<dc:creator>Xaprb</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Review]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[Content-Management-System]]></category>
		<category><![CDATA[David-Mercer]]></category>
		<category><![CDATA[Drupal]]></category>
		<category><![CDATA[writing]]></category>

		<guid isPermaLink="false">http://www.xaprb.com/blog/2008/07/20/book-review-building-powerful-and-robust-websites-with-drupal-6/</guid>
		<description><![CDATA[


I just finished reading Building Powerful and Robust Websites with Drupal 6 (this title on Packt&#8217;s site).  I&#8217;ve been working on a website powered by Drupal, and though it was obvious that Drupal is very flexible and capable, I was getting pretty lost in the website.  So I wanted to read a book [...]


Related posts:<ol><li><a href='http://www.xaprb.com/blog/2009/06/04/writing-a-book-about-maatkit/' rel='bookmark' title='Permanent Link: Writing a book about Maatkit'>Writing a book about Maatkit</a> <small>I&#8217;ve</small></li><li><a href='http://www.xaprb.com/blog/2009/12/13/review-pentaho-solutions-bouman-dongen/' rel='bookmark' title='Permanent Link: A review of Pentaho Solutions by Roland Bouman and Jos van Dongen'>A review of Pentaho Solutions by Roland Bouman and Jos van Dongen</a> <small>Pentaho So</small></li><li><a href='http://www.xaprb.com/blog/2009/08/22/a-review-of-beginning-database-design-by-clare-churcher/' rel='bookmark' title='Permanent Link: A Review of Beginning Database Design by Clare Churcher'>A Review of Beginning Database Design by Clare Churcher</a> <small>Beginning </small></li></ol>

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p style="float:right">
<a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&#038;location=http%3A%2F%2Fwww.amazon.com%2FBuilding-powerful-robust-websites-Drupal%2Fdp%2F1847192971&#038;tag=xaprb-20&#038;linkCode=ur2&#038;camp=1789&#038;creative=9325"><img style="float:right" src='http://www.xaprb.com/blog/wp-content/uploads/2008/07/robust_drupal_6.jpg' alt='Drupal' /></a></p>

<p>I just finished reading <a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&#038;location=http%3A%2F%2Fwww.amazon.com%2FBuilding-powerful-robust-websites-Drupal%2Fdp%2F1847192971&#038;tag=xaprb-20&#038;linkCode=ur2&#038;camp=1789&#038;creative=9325">Building Powerful and Robust Websites with Drupal 6</a> (<a href="http://www.packtpub.com/drupal-6-create-powerful-websites/book">this title on Packt&#8217;s site</a>).  I&#8217;ve been working on a website powered by Drupal, and though it was obvious that Drupal is very flexible and capable, I was getting pretty lost in the website.  So I wanted to read a book that would explain it to me.</p>

<p>Unfortunately, this book didn&#8217;t help me much.  I&#8217;d give it 2 out of 5 stars.</p>

<p>Overall the content of the book is not about what the title promises.  In fact, I&#8217;d say the title ought to be something like &#8220;an introduction to&#8230;&#8221; or &#8220;basic concepts with&#8230;&#8221; instead.  Unfortunately, these titles don&#8217;t really capture the spirit of the book either.  It&#8217;s hard to actually explain what the book is about, and I think that&#8217;s its main problem: the book has an identity crisis.  It can&#8217;t decide what it is really trying to say, and thus it seems to go from one topic to another without a really strong direction.  (It does have some direction and organization, but it could be stronger.)</p>

<p>As a result I now know almost nothing about Drupal that I didn&#8217;t discover by trial and error over perhaps 8 hours or so working with a live site.</p>

<p>The book is 380 pages and I think it ought to be a lot shorter to cover the material it covers.  The writing is far too wordy, so whole paragraphs sometimes end up saying nothing at all.  For example, &#8220;reduces the amount of work required later down the line&#8221; should just be &#8220;saves work later.&#8221; A lot of what&#8217;s included is just irrelevant.  For example, the preface spends a lot of time telling me that the Internet is an exciting revolution, yada yada:</p>

<blockquote><p>The Internet is arguably one of the most profound achievements in human history.
It has become so pervasive in our lives that we hardly even notice itâ€”except when
it happens to be unavailable! It&#8217;s one of those things that make you sit back and
wonder how people got along without it in the old days. Without the ability to
surf the Internet to order groceries, do our banking, book flights and make travel
arrangements, meet friends, meet partners, download music and videos, study, run
businesses, trade shares, run campaigns, express views, share ideas, learn about
other people&#8230; where would we be?</p></blockquote>

<p>There&#8217;s a lot of that throughout the book, unfortunately. See if you can understand this:</p>

<blockquote><p>Chapter 8 gives you a run down of how attractive interfaces are created in Drupal
through the use of themes. As well as discussing briefly some of the considerations
that must be taken into account when planning your website and ends off by looking
at how to make important modifications to your chosen theme.</p></blockquote>

<p>And on page 4: &#8220;little to now experience&#8230;&#8221; and later, a really confusing one: &#8220;How you deal with file system settings really depends on what type of content you use to visualize your site.&#8221;</p>

<p>The typesetting is also hard to read.  For example, it&#8217;s set ragged-right, but even worse, there are many places where lines are broken far shorter than they need to be.  It looks to me like they just put Word documents onto paper with no real typesetting.</p>

<p>When the content actually picks up momentum, it covers a bunch of things I could do without, such as explanations of what open source is, and Drupal&#8217;s licensing.  As I said, this book has an identity crisis; these are important topics, but <em>not in this book.</em>.  In chapter 3, I begin to see some stuff about how to <em>use</em> Drupal.  But then it jumps right into how to set up forums.  Unfortunately I really missed explanations of the concepts.  The concepts are too intermingled with the examples, which I didn&#8217;t understand because I was only reading the book, not actually working through the examples.  I got lost very quickly and never found myself again.</p>

<p>This book is not skimmable to get info at any level other than following along with the author &#8212; I mean, installing your own copy and literally performing every action the author performs so you can see it in action.  For example on page 69, there&#8217;s a lot of talk about containers &#8212; and then it says &#8220;click Add container to bring up a page&#8230;&#8221; wait, I thought that&#8217;s what we were doing already?  I&#8217;m sure I read it wrong, but unless I&#8217;m willing to build myself a website on my laptop to follow along, I can&#8217;t tell.  I really wanted the book to explain things to me without making me work through the examples.  I&#8217;m sure it&#8217;s hard to do, but it must be possible.</p>

<p>At the end of each chapter, there&#8217;s a summary.  They are too congratulatory.  &#8220;This chapter provided a good grounding in the basics of controlling access to your site&#8217;s content.&#8221;  I disagree.  Then later, &#8220;From learning about what considerations must be taken into account when planning a website&#8217;s look-and-feel, to making changes to the code, this chapter has provided a firm grounding in the fundamentals of working with Drupal interfaces.&#8221;  Again, I just didn&#8217;t get that out of it when I read it.</p>

<p>So what <em>was</em> I looking for from the book?  I wanted to understand what Drupal&#8217;s special lingo means, really.  I mean, if you&#8217;ve worked with Drupal, you&#8217;ve seen all the words it reinvents for its own special uses &#8212; taxonomy, hierarchy, term, vocabulary, node, field definition, content type, and on and on.  Each of these means something really particular in Drupal &#8212; not at all what we mean in common English.  I am still confused about all this: what each of these things really is, how each relates to the other, why I see them in various contexts, when I should use one instead of another, and so on.</p>

<p>In summary, I&#8217;d say that I&#8217;m now even more convinced that Drupal is almost ridiculously flexible and powerful, but this book just didn&#8217;t help me much.  It is a noble effort but alas, I needed more from it.</p>

<p>PS: <a href="http://www.xaprb.com/blog/2008/06/15/what-is-it-like-to-write-a-technical-book/">some people have asked me about the grammar rules and regular expressions I used while writing my own book</a>.  This book is a great example of how specific those are to my own writing.  If I were this book&#8217;s author, I would have a rule to catch &#8220;make use of,&#8221; &#8220;head on over,&#8221; and &#8220;go ahead.&#8221;   There is also a lot of &#8220;of course&#8221; that substitutes for a real explanation on topics where I really wanted more help understanding.</p>

<p>Related posts:<ol><li><a href='http://www.xaprb.com/blog/2009/06/04/writing-a-book-about-maatkit/' rel='bookmark' title='Permanent Link: Writing a book about Maatkit'>Writing a book about Maatkit</a> <small>I&#8217;ve</small></li><li><a href='http://www.xaprb.com/blog/2009/12/13/review-pentaho-solutions-bouman-dongen/' rel='bookmark' title='Permanent Link: A review of Pentaho Solutions by Roland Bouman and Jos van Dongen'>A review of Pentaho Solutions by Roland Bouman and Jos van Dongen</a> <small>Pentaho So</small></li><li><a href='http://www.xaprb.com/blog/2009/08/22/a-review-of-beginning-database-design-by-clare-churcher/' rel='bookmark' title='Permanent Link: A Review of Beginning Database Design by Clare Churcher'>A Review of Beginning Database Design by Clare Churcher</a> <small>Beginning </small></li></ol></p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.xaprb.com/blog/2008/07/20/book-review-building-powerful-and-robust-websites-with-drupal-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>High Performance MySQL is going to press, again</title>
		<link>http://www.xaprb.com/blog/2008/07/15/high-performance-mysql-is-going-to-press-again/</link>
		<comments>http://www.xaprb.com/blog/2008/07/15/high-performance-mysql-is-going-to-press-again/#comments</comments>
		<pubDate>Wed, 16 Jul 2008 02:17:20 +0000</pubDate>
		<dc:creator>Xaprb</dc:creator>
				<category><![CDATA[High Performance MySQL]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Books]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[writing]]></category>

		<guid isPermaLink="false">http://www.xaprb.com/blog/2008/07/15/high-performance-mysql-is-going-to-press-again/</guid>
		<description><![CDATA[Apparently High Performance MySQL, 2nd Edition is selling quite well &#8212; I&#8217;m not sure exactly how well &#8212; because we&#8217;re preparing for a second printing.  This makes me very happy.  I don&#8217;t think they anticipated going back to the press for quite some time.

The book fluctuates between sales rank 1000 and 2000 on [...]


Related posts:<ol><li><a href='http://www.xaprb.com/blog/2009/06/07/an-ongoing-thread-of-blogs-on-mysql-performance/' rel='bookmark' title='Permanent Link: An ongoing thread of blogs on MySQL performance'>An ongoing thread of blogs on MySQL performance</a> <small>In the las</small></li><li><a href='http://www.xaprb.com/blog/2009/11/07/a-review-of-optimizing-oracle-performance-by-cary-millsap/' rel='bookmark' title='Permanent Link: A review of Optimizing Oracle Performance by Cary Millsap'>A review of Optimizing Oracle Performance by Cary Millsap</a> <small>Optimizing</small></li><li><a href='http://www.xaprb.com/blog/2009/04/17/sessions-of-interest-at-the-percona-performance-conference/' rel='bookmark' title='Permanent Link: Sessions of interest at the Percona Performance Conference'>Sessions of interest at the Percona Performance Conference</a> <small>Having wri</small></li></ol>

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>Apparently <a href="http://www.highperfmysql.com/">High Performance MySQL, 2nd Edition</a> is selling quite well &#8212; I&#8217;m not sure exactly how well &#8212; because we&#8217;re preparing for a second printing.  This makes me very happy.  I don&#8217;t think they anticipated going back to the press for quite some time.</p>

<p>The book fluctuates between sales rank 1000 and 2000 on Amazon during the day, and has reached as high as 600 or so.  This is just phenomenal.  The O&#8217;Reilly team was psyched when it broke 5000, and so was I &#8212; but now we&#8217;ve stayed under 2000 for a long time (except when Amazon sold out of it).  Frankly I&#8217;d have thought that for a niche-market book like this, we&#8217;d have been in the 10,000 range or something like that.</p>

<p>Clearly we (the authors, editors, publisher, etc) have done something right!  This is a great feeling.</p>

<p>Thanks for sending errata, by the way.  I have just completed proofreading the whole book myself, and found a number of things that may be fixed in the second printing.  I think certain types of errors won&#8217;t be fixed, but the important ones certainly will be.</p>

<p>Related posts:<ol><li><a href='http://www.xaprb.com/blog/2009/06/07/an-ongoing-thread-of-blogs-on-mysql-performance/' rel='bookmark' title='Permanent Link: An ongoing thread of blogs on MySQL performance'>An ongoing thread of blogs on MySQL performance</a> <small>In the las</small></li><li><a href='http://www.xaprb.com/blog/2009/11/07/a-review-of-optimizing-oracle-performance-by-cary-millsap/' rel='bookmark' title='Permanent Link: A review of Optimizing Oracle Performance by Cary Millsap'>A review of Optimizing Oracle Performance by Cary Millsap</a> <small>Optimizing</small></li><li><a href='http://www.xaprb.com/blog/2009/04/17/sessions-of-interest-at-the-percona-performance-conference/' rel='bookmark' title='Permanent Link: Sessions of interest at the Percona Performance Conference'>Sessions of interest at the Percona Performance Conference</a> <small>Having wri</small></li></ol></p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.xaprb.com/blog/2008/07/15/high-performance-mysql-is-going-to-press-again/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>What if you find errors in High Performance MySQL?</title>
		<link>http://www.xaprb.com/blog/2008/06/28/what-if-you-find-errors-in-high-performance-mysql/</link>
		<comments>http://www.xaprb.com/blog/2008/06/28/what-if-you-find-errors-in-high-performance-mysql/#comments</comments>
		<pubDate>Sat, 28 Jun 2008 16:10:34 +0000</pubDate>
		<dc:creator>Xaprb</dc:creator>
				<category><![CDATA[High Performance MySQL]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[errata]]></category>
		<category><![CDATA[printing]]></category>
		<category><![CDATA[proofreading]]></category>
		<category><![CDATA[writing]]></category>

		<guid isPermaLink="false">http://www.xaprb.com/blog/2008/06/28/what-if-you-find-errors-in-high-performance-mysql/</guid>
		<description><![CDATA[The book is done now, right?  What&#8217;s next?

Don&#8217;t tell my wife this, but a book is never done.

Right now I&#8217;m proofreading the printed copy.  I proofread PDF after PDF during production, but some problems will always slip through and make it to paper.  I&#8217;m finding quite a few little mistakes.  For [...]


Related posts:<ol><li><a href='http://www.xaprb.com/blog/2009/11/07/a-review-of-optimizing-oracle-performance-by-cary-millsap/' rel='bookmark' title='Permanent Link: A review of Optimizing Oracle Performance by Cary Millsap'>A review of Optimizing Oracle Performance by Cary Millsap</a> <small>Optimizing</small></li><li><a href='http://www.xaprb.com/blog/2009/06/07/an-ongoing-thread-of-blogs-on-mysql-performance/' rel='bookmark' title='Permanent Link: An ongoing thread of blogs on MySQL performance'>An ongoing thread of blogs on MySQL performance</a> <small>In the las</small></li><li><a href='http://www.xaprb.com/blog/2010/02/22/cary-millsap-thinking-clearly-about-performance/' rel='bookmark' title='Permanent Link: Cary Millsap: Thinking Clearly about Performance'>Cary Millsap: Thinking Clearly about Performance</a> <small>Cary Mills</small></li></ol>

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>The book is done now, right?  What&#8217;s next?</p>

<p>Don&#8217;t tell my wife this, but a book is never done.</p>

<p>Right now I&#8217;m proofreading the printed copy.  I proofread PDF after PDF during production, but some problems will always slip through and make it to paper.  I&#8217;m finding quite a few little mistakes.  For example, at one point we refer to <a href="http://www.tpc.org/">TPC</a> as TCP three times in a row.  Oops.</p>

<p>These problems will be corrected in the next printing.  Please notify me if you find any errors yourself, and I&#8217;ll add them to the list of things to fix!  Also let me know if you find things that should just be &#8220;fixed&#8221; in general.  For example, the layout and page-breaking on pages 364 and 365 is totally confusing &#8212; it&#8217;s hard to tell which figures are associated with which text.</p>

<p>I&#8217;m not offering rewards like Donald Knuth, sorry&#8230;</p>

<p>I will place a list of errata on the official <a href="http://www.highperfmysql.com/">High Performance MySQL Second Edition</a> website, including a non-mangled Figure 8-12.  (Another thing that didn&#8217;t make it through production unscathed.)</p>

<p>Related posts:<ol><li><a href='http://www.xaprb.com/blog/2009/11/07/a-review-of-optimizing-oracle-performance-by-cary-millsap/' rel='bookmark' title='Permanent Link: A review of Optimizing Oracle Performance by Cary Millsap'>A review of Optimizing Oracle Performance by Cary Millsap</a> <small>Optimizing</small></li><li><a href='http://www.xaprb.com/blog/2009/06/07/an-ongoing-thread-of-blogs-on-mysql-performance/' rel='bookmark' title='Permanent Link: An ongoing thread of blogs on MySQL performance'>An ongoing thread of blogs on MySQL performance</a> <small>In the las</small></li><li><a href='http://www.xaprb.com/blog/2010/02/22/cary-millsap-thinking-clearly-about-performance/' rel='bookmark' title='Permanent Link: Cary Millsap: Thinking Clearly about Performance'>Cary Millsap: Thinking Clearly about Performance</a> <small>Cary Mills</small></li></ol></p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.xaprb.com/blog/2008/06/28/what-if-you-find-errors-in-high-performance-mysql/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>What it&#8217;s like to write a technical book, continued</title>
		<link>http://www.xaprb.com/blog/2008/06/23/what-its-like-to-write-a-technical-book-continued/</link>
		<comments>http://www.xaprb.com/blog/2008/06/23/what-its-like-to-write-a-technical-book-continued/#comments</comments>
		<pubDate>Mon, 23 Jun 2008 20:59:41 +0000</pubDate>
		<dc:creator>Xaprb</dc:creator>
				<category><![CDATA[High Performance MySQL]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[writing]]></category>

		<guid isPermaLink="false">http://www.xaprb.com/blog/2008/06/23/what-its-like-to-write-a-technical-book-continued/</guid>
		<description><![CDATA[My post on what it&#8217;s like to write a technical book was a stream-of-consciousness look at the process of writing High Performance MySQL, Second Edition.  I got a lot of responses from it and learned some neat things I wouldn&#8217;t have learned if I hadn&#8217;t written the post.  I also got a lot [...]


Related posts:<ol><li><a href='http://www.xaprb.com/blog/2009/06/04/writing-a-book-about-maatkit/' rel='bookmark' title='Permanent Link: Writing a book about Maatkit'>Writing a book about Maatkit</a> <small>I&#8217;ve</small></li><li><a href='http://www.xaprb.com/blog/2009/12/19/how-to-write-a-good-mysql-conference-proposal/' rel='bookmark' title='Permanent Link: How to write a good MySQL conference proposal'>How to write a good MySQL conference proposal</a> <small>I&#8217;m </small></li><li><a href='http://www.xaprb.com/blog/2009/04/12/how-to-write-to-a-perl-variable-as-if-its-a-filehandle/' rel='bookmark' title='Permanent Link: How to write to a Perl variable as if it&#8217;s a filehandle'>How to write to a Perl variable as if it&#8217;s a filehandle</a> <small>This is re</small></li></ol>

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>My post on <a href="http://www.xaprb.com/blog/2008/06/15/what-is-it-like-to-write-a-technical-book/">what it&#8217;s like to write a technical book</a> was a stream-of-consciousness look at the process of writing <a href="http://www.highperfmysql.com/">High Performance MySQL, Second Edition</a>.  I got a lot of responses from it and learned some neat things I wouldn&#8217;t have learned if I hadn&#8217;t written the post.  I also got a lot of questions, and <a href="http://toc.oreilly.com/2008/06/oreilly-author-and-editor-air.html">my editor wrote a response</a> too.  I want to follow up on these things.</p>

<h3>Was I fair, balanced and honest?</h3>

<p>I really intended to write the post as just &#8220;here&#8217;s what it&#8217;s like, just so you&#8217;re prepared.&#8221;  But at some point I got really deep into it and lost my context.  That&#8217;s when I started to write about the things that didn&#8217;t go so smoothly with the publisher, and some of these things had a little extra sting in them that I would have done well to edit out.</p>

<p>All of us are human and the process wasn&#8217;t that bad, all things considered &#8212; the book was just a massive project that put huge demands on all of us and stressed everything from the capabilities of our chosen tools to our patience.  As the <a href="http://toc.oreilly.com/2008/06/oreilly-author-and-editor-air.html">editor points out in his response to my blog post</a>, this is precisely why nobody else has ever been able to pull this off.  This book stands head and shoulders above the crowd.  It&#8217;s just hard to write, and very few people in the world actually have the knowledge to do it, much less the time, inclination, and ability.</p>

<p>Everything I said was (I believe) factual and correct, although as the editor points out there are different stories behind them.  I also want to mention that I&#8217;d shared all those concerns with my editor; I avoid criticizing people behind their backs.  In hindsight, throwing all of my concerns onto a blog post without warning isn&#8217;t the kind of thing I like to do either.</p>

<p>So I believe I was honest, but unfair to the editor.  I&#8217;ve apologized to him.  And by the way, yes I would work with him again, and I fully expect that it would be easier because I have learned more about the process.</p>

<p>I ran this post by my editor before publishing it.</p>

<h3>A deeper explanation of my heuristics</h3>

<p>Several people asked me to say more about my heuristics for improving the quality of the writing.  I&#8217;ve already explained many of them, but here&#8217;s more:</p>

<dl>

<dt>(were|was|is|are|has been|be)( [a-zA-Z]+)? [a-zA-Z]+ed\&gt;</dt>
<dd>This regular expression can help find some occurrences of passive voice.  It finds a word or phrase that&#8217;s some variation on the verb &#8220;to be,&#8221; usually in the past tense; followed by an optional word (probably an adjective); followed by another word that ends in &#8220;-ed,&#8221; which is also potentially a verb in the past tense.  This is not the only way to write in the passive voice, but it&#8217;s kind of the classic.  Here are some examples: &#8220;the blog post was posted,&#8221; &#8220;the benchmark was rapidly created.&#8221;</dd>

<dt>(were|was|is|are|ha[sd] been|be)( [a-zA-Z]+)? [a-zA-Z]+e[dn]\&gt;</dt>
<dd>An enhanced version.  As I looked at the preceding point, I saw some other simple examples it doesn&#8217;t catch.  For example, it doesn&#8217;t catch &#8220;had been&#8221; and it doesn&#8217;t catch verbs like &#8220;written.&#8221;  Ironically, the first thing that came to mind as I thought about examples was &#8220;the book had been written.&#8221;</dd>

<dt>while|since</dt>
<dd>There&#8217;s nothing wrong with these words, except when they&#8217;re used in lieu of &#8220;because&#8221; to indicate causality.  This is a problem for non-native English speakers, because these words have a temporal meaning too.  For example, &#8220;Since MySQL 4.1 has no stored procedures, you have to use MySQL 5.0 if you want stored procedures.&#8221;  If you aren&#8217;t a native English speaker, and even if you are, it&#8217;s easy to read that as &#8220;MySQL has had no stored procedures since version 4.1, &#8230;&#8221; and then when your eyes reach the part about MySQL 5.0, it makes no sense.  My rule for this is to say &#8220;because&#8221; when I mean &#8220;because.&#8221;</dd>

<dt>using<dt>
<dd>Real examples: &#8220;Using MyISAM tables works very well&#8221; can become &#8220;MyISAM tables work very well.&#8221;  And &#8220;A final possibility is simply to switch to using a table&#8221; can become &#8220;Finally, you can use a table&#8221; instead.</dd>

<dt>in order</dt>
<dd>The phrase &#8220;in order to&#8221; can almost always be replaced by &#8220;to.&#8221;  It also tends to show a rough transition between the first and second phrases in a sentence.  Perhaps these phrases should be integrated into a single phrase.  &#8220;You can use this regex in order to find poorly constructed sentences&#8221; can become &#8220;this regex can find poorly constructed sentences&#8221; or &#8220;You can find poorly constructed sentences with this regex.&#8221; I prefer the latter; it is very direct, and that straightforward, simple writing style is really important in complex subject matter.</dd>

<dt>of course|without saying|obviously|clearly|needless</dt>
<dd>It goes <strong>without saying</strong>, but <strong>of course</strong> these words <strong>obviously</strong> point out when I&#8217;m writing stupid things that I <strong>clearly</strong> need to take a closer look at.  <strong>Needless to say</strong>, most of the phrases in this paragraph are indeed needless to say.  They are a red flag for lazy writing, such as glossing over a difficult point that should instead be explained &#8212; hard work, but necessary.</dd>

<dt>whether<dt>
<dd>I found quite a few places where the phrase &#8220;whether or not&#8221; was used.  This can be shortened: &#8220;to see whether or not the disk is the problem&#8221; can become &#8220;to see whether the disk is the problem.&#8221;  But better yet, the phrase often glues together poorly written phrases into an awkward sentence, just as &#8220;in order to&#8221; does.  Can &#8220;whether&#8221; be replaced by &#8220;if?&#8221;  Or does the sentence or paragraph just need to be reworked completely?</dd>

<dt>allow</dt>
<dd>This word can usually be replaced by &#8220;let.&#8221;  &#8220;The remaining settings allow MySQL to allocate more RAM&#8221; can become &#8220;The remaining settings let MySQL allocate more RAM.&#8221;  Occasionally, it is part of a larger phrase or thought  needs to be shortened and clarified.  &#8220;When nobody is writing, readers obtain read locks that allow other readers to do the same&#8221; became &#8220;When nobody is writing, readers can obtain read locks, which don&#8217;t conflict with other read locks.&#8221;</p>

<dt>ensure</dt>
<dd>I found that this word is often subtly misused. It really means &#8220;guarantee&#8221; but is often used as &#8220;double-check&#8221; or &#8220;make sure.&#8221;  I don&#8217;t want to be too dogmatic about this word: its usage in modern English is complex (<a href="http://dictionary.reference.com/browse/assure">see the usage note on assure here</a>; that in itself might be a reason to avoid it).  But I found many places where I wanted to remove it in favor of an explicit instruction that tells the reader to take action.  &#8220;Ensure&#8221; as an instruction is kind of a politically correct way to tell someone to do something, and I&#8217;m not afraid to just tell you to do it if I think you need to.  I don&#8217;t want you to miss my meaning.</dd>

<dt>only</dt>
<dd>I have a habit of using this word incorrectly.  &#8220;I only have ten fingers&#8221; should be &#8220;I have only ten fingers.&#8221;</dd>

<dt>as (we|you)|again,</dt>
<dd>These phrases usually show a place where the writing is confused and redundant.  They show up in places like &#8220;as we already said, you should tune your server&#8221; and &#8220;again, you should tune your server.&#8221;  Any instruction to the reader to break the narrative flow is a place to examine whether the concepts are in the right order.  Cross-references, footnotes, and reminders are not always evil, but they&#8217;re to be regarded with suspicion.</dd>

</dl>

<h3>Readability metrics</h3>

<p>The tools I used to find sentences and phrases that score badly on some readability metric were pretty helpful to me as I tightened the writing up more and more.  Nobody has reviewed the book yet, but I think when they do, they&#8217;ll be unlikely to mention &#8220;oh, and by the way the writing is wonderfully compact!&#8221;  If we pulled this off right, you won&#8217;t notice that the writing is clear and compact.  Writing is like a stereo system: you&#8217;re supposed to hear the music, not the speakers.</p>

<p>Anyway, my point is that we expanded the first edition&#8217;s actual coverage many times over, and ended up with only 658 pages of actual material.  So the writing is much more compressed, and to do that you have to find and eliminate confusing writing.  Confusing writing usually means that the concepts don&#8217;t flow clearly, and it takes more words to say the same thing because you&#8217;re kind of bumbling about, gesturing at your meaning from several angles instead of saying it clearly just once.</p>

<p>Here&#8217;s how I analyzed each chapter:</p>

<ul>
<li>I used OpenOffice&#8217;s export feature to export the file to MediaWiki format.  This is a plain-text markup format.  I forget now why I didn&#8217;t just export to text, but there was something about MediaWiki format that made it easier to munge with Perl.</li>
<li>I ran my clean_text.pl program against the exported file to convert the format to a simpler one without special characters and markup.  Some of the markup (footnotes, for example) stayed in the text and confused the metrics, but that&#8217;s life.</li>
<li>I ran my analyze_text.pl program against this to find the &#8220;worst&#8221; places.</li>
</ul>

<p>As I wrote in my previous post, the analyzer uses a combination of readability metrics and &#8220;other stuff&#8221; to measure the badness of each sentence and paragraph.  It aggregates sentences and paragraphs by the metrics.  I calculated the number of words, percent of complex words, syllables per word, number of sentences, words per sentence, and a bunch of other things, as well as the standard readability metrics.  Each sentence and paragraph got scored on these.  Then I printed overall metrics, and sorted the sentences and paragraphs worst-first and printed out a snippet of the offending text.  Here&#8217;s a <a href="http://www.xaprb.com/articles/ch04.txt">sample of chapter 3&#8217;s metrics</a> (originally numbered chapter 4) at some intermediate stage in the writing process.</p>

<p>This was a lot of work.  If I had been writing with Vim, I could have done better.  I could have used the compiler integration and set my &#8220;make&#8221; program to the analysis program.  If you use Vim and you don&#8217;t know about this, it&#8217;s a pity.  My next book will be written in Vim, by the way.</p>

<p>Actually, I probably could have done better regardless, but this was good enough.  I just searched for the snippets and then examined what was going on.</p>

<p>There were some false positives.  For example, bullet-points often scored badly on the readability metrics, and so a five-word bullet point item would look like terrible writing just because it was short enough that it had a high percentage of complex words.  It&#8217;s not an exact science.  Maybe next time will be better.</p>

<p>If you&#8217;d like to see the source code, here&#8217;s the <a href="http://www.xaprb.com/articles/clean_text.txt">clean_text.pl</a> and here&#8217;s the <a href="http://www.xaprb.com/articles/analyze_text.txt">analyze_text.pl</a>.  Enjoy!</p>

<p>Related posts:<ol><li><a href='http://www.xaprb.com/blog/2009/06/04/writing-a-book-about-maatkit/' rel='bookmark' title='Permanent Link: Writing a book about Maatkit'>Writing a book about Maatkit</a> <small>I&#8217;ve</small></li><li><a href='http://www.xaprb.com/blog/2009/12/19/how-to-write-a-good-mysql-conference-proposal/' rel='bookmark' title='Permanent Link: How to write a good MySQL conference proposal'>How to write a good MySQL conference proposal</a> <small>I&#8217;m </small></li><li><a href='http://www.xaprb.com/blog/2009/04/12/how-to-write-to-a-perl-variable-as-if-its-a-filehandle/' rel='bookmark' title='Permanent Link: How to write to a Perl variable as if it&#8217;s a filehandle'>How to write to a Perl variable as if it&#8217;s a filehandle</a> <small>This is re</small></li></ol></p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.xaprb.com/blog/2008/06/23/what-its-like-to-write-a-technical-book-continued/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
