Category: Tech Writing

  • Thoughts on the Semi-colon

    (A college friend asked for my thoughts on the semi-colon, and I was happy to throw out some)

    I made screenshots of Bryan Garner’s Modern English Usage about semicolons. 

    Conventions for punctuations change with each generation. When editing that Clay Reynolds interview, I noticed that he punctuated things very strangely. In fact, he had taught English grammar and punctuation at the college level for over a decade and read all sorts of grammar books while pursuing his Phd. He used lots of commas and runon sentences throughout the interview. True, he died before he could go over everything again (and so a certain number of these anomalies were simply errors), but I was aware that he viewed punctuation and sentence length much differently than I did. Although he used  semi-colons, he didn’t use many of them, preferring instead to make lots of commas (which I try to avoid doing). 

    He also used Oxford commas (i.e., putting a final comma in a list of items), so that meant more commas in his text. I tend not to use the Oxford comma; that’s just the way I had learned it in high school and saw no reason to change even though I recognized that sometimes it made sentences seem ambiguous (and I had to be careful about that). So I was more prone to use semicolons.

    (Lately I’ve been using the Oxford comma more often and have noticed that it allows for more variety in sentence structure, which may or may not be a good thing).

    I love semi-colons, but I don’t use them that much. I also use parenthetical statements more than the average writer would.  I also use m/n dashes for certain long sentences.

    I went over some recent writing of mine (both fiction and nonfiction) and found fewer semicolons than I would have thought.  Often I use  parentheses and m/n dashes  instead to  relieve the strain of overly long sentences.

    EXAMPLE: I like semi-colons; on the few occasions when it’s necessary to use them, I sometimes resort to parentheses (but only if the thought  inside the parentheses is simple).

    (NOTE: I really like starting out a sentence with a short statement such as “I like semi-colons;” and then continuing the thought. Also, at the end, I could have also used an m dash instead of the parenthesis).

    With the example, I could have easily put a period there instead of a semi-colon, but I thought it deserved to be one continuous thought. Formal writing tends to avoid sentence fragments, but sometimes a fragment can convey meaning effectively.

    When reading aloud, it should be easy to know when to breathe. A semi-colon makes that easy. Good sentences should be light and fluffy and occasionally strange. Although it’s true that semi-colons can result in longer sentences, the semi-colon can relieve the overall burden of breathing/reading  without making the flow of sentences seem too staccato.  

    Horray for semi-colons! I see no reason to avoid them unless they make your sentences too long. Also, I would try to avoid using semicolons more than once in a single paragraph if you can help it.

    Some authors of the past have used  multiple  semi-colons  and parenthetical statements in a single sentence to convey long-winded things (I’m looking at you, Faulkner and Proust!) These techniques can work up to a point. I loved reading Proust with all his twists and turns and cascade of mental associations, but found Faulkner’s prose in Absalom, Absalom to be absolutely insufferable. In contemporary times, I don’t think you could get away with that anymore (you don’t want people switching to social media in the middle of an interminable sentence!)

    As I mentioned, my arsenal currently  includes a mixture of semi-colons, parentheses, and  m dashes when trying to convey a longer thought. But that introduces all sorts of punctuation complexities. Semi-colons generally belong outside the quotation marks even if it looks strange. Occasionally, just to avoid having to deal with a tangle of punctuation rules, I will  iron the whole thing out into multiple sentences  even if it ends up making me sound like a dufus.

  • Fun with MS Word Wildcards

    It’s been a while since I’ve done a geeky post (see my April post about setting up WordPress using the latest themes and blocks.).

    But every so often (maybe once a month or two) I end up confronting a technical issue which I absolutely must solve, and I cannot find the answer on the web. People say that half of being an IT guy is being able to use search engines to find the information you need. I generally agree, but sometimes the problem is very odd or maybe you don’t know exactly what problem you are seeing or even if you are using the incorrect terminology. Also, search engines are not as helpful for advanced geeks. Almost all the problems you encounter are complex and have an unusual set of circumstances that no forum thread is going to replicate exactly.

    Partly the problem is having too many sources of information and being unable to winnow the relevant information. Sometimes postings on user forums are just not relevant. Sometimes you just lack enough information or smarts to understand the answer when it is staring right at you. Yes, I admit it: personal stupidity is often the primary barrier to a solution.

    Describing the Problem: A Messy OCR Conversion

    Recently I have been using a book scanner (CZUR ET18Pro) which scans the page and then uses the Abby Finereader engine (but NOT the actual software) to handle OCR conversions. It generally works great for books, but not great for scans of journal articles apparently. The scan can be converted into text pretty accurately, but you have two more issues: First, CZUR puts the text content for each page into a separate frame object. Second, some pages (such as pages of a journal) don’t have enough spaces between paragraphs, causing CZUR to insert paragraph marks at the end of EVERY line. (So if a paragraph has 6 different lines, instead of having 1 paragraph mark at the end, it has 6 different paragraph marks).

    About the frames problem, I was quickly able to find a solution from the search engines. You could manually remove each frame or you could run a simple VB script to globally remove these frames using (like here or here) .

    The second problem — paragraph marks after every line of text is a pretty hard one. I spent days figuring it out. I have two possible solutions: either I manually adjust all the line breaks or I must come up with a way to clean up these OCR documents.

    Manually adjusting the line breaks is tedious, but not terribly hard. I just have lots of pages to do; ideally I would have a way to globally clean up these documents with MS Word’s Find and Replace. I’ve certainly used Find and Replace for documentations — even for complex substitutions. But I need to write some find/replaces that won’t cause any further damage and do it in a way that is easy to repeat.

    Ultimately I know that I’m going to have to search for a single paragraph mark and replace it with nothing. That is the Big Substitution — and also the potentially most destructive. The trick is protecting the paragraph marks which you want to be there. But how? You should convert these instances to a temporary value which are immune to the Big Substitution — and then after the substitutions are complete, you can convert this temporary value back to a good paragraph mark.

    Also, the order is important. If you get the order wrong, you may create extra work.

    Microsoft Office offers some powerful functionality for Search/Replace. Indeed Word offers a limited number of preset search parameters. The first question: Do I “enable wildcards” in the search box?

    I quickly realized that enabling wildcards offered more options for text processing. It included a lot of syntax for regular expressions. It still is complicated to write your strings to replace, but the big stumbling block is: how do you search for paragraph marks when wildcards are enabled?

    Curiously, this is not documented on the MS Word documentation. Here is the magical voodoo answer from this great article:

    You may wish to identify a character string by means of a paragraph mark ¶. The normal search string for this would be ^p. ^p does not work in wildcard search strings! It must, however, be used in replace strings, but when searching, you must use the substitute code ^13.

    Finding and replacing characters using wildcards By Graham Mayor: (mirrored here)

    You read that right: When searching, you must use wildcards and use ^13. But when you are trying to reintroduce paragraph marks into the MS Word file, you must not use wildcards and instead use ^p.

    Another gotcha I noticed is that if you remove too many paragraph returns, it will corrupt the files. Instead of getting a clean substitution, the MS Word file is totally blank except for a giant mishapen blob of dark lines and dots.

    Here is the series of steps I devised.

    1. Correct the obvious scanning errors, most of which will be highlighted. Usually they are hyphenated words which are broken up into two separate lines.
    2. With wildcards turned on, you will need to manually search for optional hyphenation
      • Goal: remove optional hyphenation
      • Find: ^-^13
      • Replace (leave blank)
      • Manually or Globally? Globally. (this operation works pretty accurately)
      • Comment: Do this first because it messes up the substitutions later. Warning: this will not uncover some of the hyphenated words which were broken into separate lines.
    3. Remove MS page breaks (some of these were accidentally added). Make sure to uncheck Use Wildcards for this find/replace. If it is easier, you can just copy the wildcard in the Find section.
      • Goal: remove all page breaks
      • Find: ^m
      • Replace (leave blank)
      • Manually or Globally? Globally
      • Comment: Uncheck Wildcards and choose Page Breaks from the dropdown under “Special”
    4. Remove MS section breaks.
      • Goal: remove all page breaks/section breaks
      • Find: ^b
      • Replace (leave blank)
      • Manually or Globally? Globally
      • Comment: Comment: Uncheck Wildcards and choose Section Breaks from the dropdown under “Special”
    5. Page through the entire chapter and add an para mark + $sectionbreak$ whenever there should be a thematic section break.
    6. Manually page through the chapter and convert para marks followed by a capital I (Often it just so happens that the word I starts a line without it necessarily being the start of a new paragraph. You need to manually use Find/Replace to make sure you are doing only when I is the beginning of a new paragraph. You substitute these instances with $realparagraph$I Yes, that is an actual capital I after the $ sign
      • Goal: find/replace all new para + I
      • Find: ^13I
      • Replace $realparagraph$I
      • Manually or Globally? Manually
      • Comment:
    7. Now search for every time a para mark is followed by a capital letter. Note that the capital I is not included in this range of values
      • Goal: search for all new line paragraphs except capital Is
      • Find: (^13)([ABCDEFGHJKLMNOPQRSTUVXYZ"“])
      • Replace: $realparagraph$ \2
      • Manually or globally? Globally. It still will correct some things wrongly, but you can fix these.
      • Comment: Find has grouped the two terms with parentheses which allow you to reference them in the Replace statement (Note the \2 with the space before the backslash. I included a regular quote and beginning smart quote in the Find statement, but I think only one of them actually worked in my document. There are a number of false positives, so I recommend doing this manually.
    8. Now for the Big Substitution. Eliminate all single instance of a paragraph return at the end of a line
      • Goal: Eliminate all single instances of a para return
      • Find: ([!^13])^13([!^13])
      • Replace \1 \2
      • Manually or Globally? Globally (but Have that Ctl-Z ready!)
      • Comment: This searches for three elements where the middle element is a paragraph return, but the preceding or succeeding element is NOT a paragraph return. (The ! means “not”; the parenthesis will group things into element 1 and element 2 which are referenced in the replace statement. This step is very tricky. The Find statement prevents MS word from removing every paragraph return — just the ones at the end of the line. I can’t understand why the Find statement requirements 3 (instead of 2) elements, but somehow it never seems to yield satisfying results.
    9. Now you will reintroduce paragraph marks where they are supposed to be
      • Goal: Substitute the holder $realparagraph$ with an actual paragraph return. You must turn off Wildcards!
      • Find: $realparagraph$
      • Replace: ^p
      • Manually or Globally? Globally
      • Comment:
    10. Now you will add extra spaces (in the form of paragraph returns around the section breaks.
      • Goal: Add extra space around section breaks. You must turn off Wildcards!
      • Find: $sectionbreak$
      • Replace: ^p$sectionbreak$^p
      • Manually or Globally? Globally
      • Comment: When I have finished cleaning the MS Word version, I actually use a cut-paste operation to import them into Docbook XML using the Author mode of XML Oxygen editor. I will be replacing the $sectionbreak$ into custom html code, so I don’t need to convert them here. I just want it easy to see where the section breaks are.

    There you have it. I tested this thoroughly on my test file. Over the next week I’ll do it with different files. Maybe I’ll uncover some anomalies or extra steps, but this is probably enough (I’m guessing).

  • A friendly exchange between an technical author and reviewer

    This fun thing is something I published in 2000 on my old site — and has since become dead. A mixed review of a famous book on programming prompts a reply from the author and a friendly
    discussion about book reviewing

    My Original Review (August 2000) about the book Mastering Regular Expressions by Jeffrey Friedl

    I haven’t read the book from cover to cover but have read parts of it. I don’t deny that it is informative and occasionally helpful (especially if you come from a perl background). But the book as it stands is not appropriate for someone starting out in regular expressions. Instead it provides a lot of depth as far as how regular expressions are used in specific tools and all the different standards for regular expressions.

    But a lot of this information on regular expressions is not relevant or necessary for composing plain vanilla bash regular expressions. I suspect that the majority of readers will find a few chapters helpful, but will skip over at least a few chapters that have no bearing on their work. To spend so much time in a book talking about the different implementations of regular expressions is to beg the question about whether you should read a general book or instead read a book about the implementation of r.e. specific to your computer language.

    I have two complaints. First, the book does not try to teach you the art of writing regular expressions (it assumes a certain level of familiarity already). As a learning book, it may not be satisfy your needs. The second complaint is that the book doesn’t include an adequate reference section or at least a section you can refer to when trying to write your own regular expressions. I found myself flipping back and forth from pages to try to find the aspect of regular expressions I need. A more methodical reference chapter or appendix is sorely needed.

    Don’t get the impression I am not recommending this book. It is a fine book; only be sure that you thumb through it at a bookstore to make sure that the kind of material it presents is what you are looking for. For me it was not. The best teaching book I’ve found to explain regular expressions is Practical Guide to Linux by Mark Sobell. It’s old, but it explains regular expressions, sed, awk and grep better than any book, including this one. This book presented the clearest examples of any computer book I have encountered.

     

    The Author Responds (December, 2001)

    This evening I noticed your review of my book “Mastering Regular Expressions” on Amazon. I’m sorry that you didn’t get out of it what you desired of it. Perhaps if you had more of a need for advanced regex use, it would have been more valuable.

    In your review, you make two specific complaints. The first, “does not try to teach you the art of writing regular expressions”, makes me wonder what book you’re revewing. Teaching that art is the heart of the book, and the 100 or so pages that make up chapters 4 and 5 do nothing but teach that art. Perhaps they were part of what you didn’t read (you don’t learn an art by flipping around and reading tidbits like it’s a Reader’s Digest 🙂

    You also comment “(it assumes a certain level of familiarity already)”. Well, the later chapters assume you read chapter 1, which starts out from scratch.

    I find your comments puzzling because as you said yourself, you haven’t read more than “parts of it”, so how can you make any claim about what it doesn’t do? Sure, I know it can’t be all things to all people, but you really knocked it right where I’m the most happy with it.

    You’re right about your second complaint, though (needs a better reference section). My original thought was that I wanted to teach the thinking of regular expressions, and leave most tool-specific stuff to your tool’s manual. Why would someone want to pay for a copy of what they already have? But I find it’s a common desire, so in the 2nd edition I added 25 pages to Chapter 3 (which is really the lost child of the first edition), with a much expanded use of the “=> XX” page references that make the page flipping (which you can never eliminate) much more bearable. Anyway, I do hope that the book is able to prove its value to you sometime.

     I Respond to the Author (December 2001)

    Thanks for your reaction. It is an honor to receive something from the author himself!

    I write reviews of Oreilly books very often, and actually I request review copies from them every so often.

    The first thing I should say is that I consider myself a nonprogrammer, and it’s quite common for me to write reviews of subjects about which I know absolutely nothing. I’m a technical writer and I focus more on the “readability” and organization of the book.

    So I am writing as a nonexpert. And to be honest, I haven’t used regular expressions much, although I imagine that the time for that will come.

    I remember reading the first few chapters (perhaps a little too breezily , I’ll admit), and enjoying them and finding the information useful. The examples were also very good. I just found the detail about the different engines overwhelming and not really relevant to my current needs. (For some people, this information may be the best part of the book,I”ll admit).

    With programming books, one’s reaction to them changes over time. Some books I initially think are horrible, and then I find myself referring to over and over. With others, it’s just the reverse. Sometimes I feel I should write “updates” on amazon about what a numbskull I am.

    So please don’t get the impression that I was panning the book.

    Regex is such a broad subject, and every programming language seems to have their own quirks. The changes you mentioned sound interesting and could probably make an excellent book even better.

    On another note about not reading,etc. An anecdote. My friend (a professional book reviewer) often would choose books to review on the basis of how little reading was required to actually write the review. On some books, he wrote the review while barely opening the book! While this seems dangerous, sometimes initial impressions can be helpful.

    The Author Responds to my Response (Dec 2001)

    I’m not so sure that one should consider an email from me to be an honor — most of my friends procmail me away 🙂

    I appreciate your detailed reply, Robert, though I still feel that your review is unjust. It’s not that it says negative things (for certainly, any book can’t be all things to all people, nor even do what it intends to do perfectly). It’s that I feel that *had* you used the book as it was intended (and as the preface — the book’s instruction manual, so to speak — suggests), your concerns would have been answered and your review would have more accurately reflected the contents and usefulness of the book. (Such a review certainly may well have included negative comments that came with your deeper knowledge of what you were were reviewing — I know that the book is far from perfect.)

    I’ve seen a few negative reviews of my book over the years that have basically said “I wanted to book to be X, and it wasn’t!”. In every case, “X” was something that the book was not intended to be, so while I wish the reviewer had had a better experience with the book, such a review does serve a purpose to clarify to the reader of the review what the books does and doesn’t do.

    I guess what it comes down to is that if one feels the needs to begin a review with “well, I’ve not really read this book”, I feel one probably shouldn’t be offering a review at all. I realize that putting out more reviews gets you brownie points at Amazon, but it’s really not fair to me or to your readers. At least, that’s my feeling.

    Regex is such a broad subject, and every programming language seems to have their own quirks.

    Ha, if you still have a copy of the book, see the first sentence (and footnote) of the last paragraph of p62 🙂

    If you thought my book was “excellent”, your review very much does not give that impression. It gives the impression that the book is very bad at doing exactly what I belive the book is best at doing (bringing a novice up to speed, and teaching the *art* of writing a regex). As it’s written, I belive your review does a disservice to me and to all the readers of your review.

    I’m aware that there are people who do their job poorly. It’s sad, in any field, and all the worse when it hurts others. I try not to do mine here at Yahoo poorly, nor mine as an author. (My overriding principle when I’m writing was given to me by an author friend who said “you do the research, so your readers don’t have to”. People are paying *their* *money* for my book, so I’ll be dammed if I’m going to give them anything but my very best effort.)

    The 2nd edition concentrates mostly on the popular scripting languages (VB and other .NET Framework languages, Java, Perl, Python, Ruby), and less on the old Unix tools (awk/sed/lex). If it happens to land on your desk, I hope you find it useful.

    A Friend Makes a Very Valid Point (Dec 2001)

    Bobby, this is very interesting/amusing to read. I don’t recommend responding to him again, but perhaps you might have clarified that the books I choose that “require the least reading” are either 1) books with very little text to read, 2) reissues of books I’ve read before, 3) anthologies of literary material that I’m often already familiar with, or that only require a sampling of stories to be read for a broad impression, or 4) reference encyclopedias that are not meant to be read cover to cover, but which have certain important entries. He might think I idly try reviewing technical things I have no knowledge of. Actually, it’s my prior knowledge of a subject that enables me to review certain books quickly without much effort.

    (Now it can be revealed; this critic/friend is Michael Barrett, book and movie critic extraordinaire!)

    I Become Philosophical (August 2002)

    I am very sympathetic to this author’s defensiveness about his book. One has only to look over the hundreds of rave reviews on amazon to realize that the book is one of the most praised books on publishing today. As Andy Oram writes, “Yet Mastering Regular Expressions came out and became an instant hit. The Perl community (where regular expressions had taken hold most strongly at the time) treated Friedl as a hero. His talk at the first O’Reilly Perl Conference filled a large hall right up to the back doors. We sold out all copies of his book at the conference, even though it had released six months before, and brought in another batch of copies that were promptly sold out as well. Five years after publication and 22 years after the death of McLuhan, the first edition still sells several hundred copies per month and is continually recommended on mailing lists and in journal articles.”

    During the year 2000 I reviewed lots of books that I only half-understood (or at least wouldn’t be able to really understand until I tried it out myself). Often one’s gut instincts about a book are right; sometimes they are not. Sometimes a book which didn’t seem user-friendly at first turns out to be exactly what you need. Conversely, some books which look useful may in fact be too simple or too esoteric to be useful.

    So I went back to the book and read a few more chapters, afraid that I had seriously misjudged this book. Well, surprise, surprise! I not only stood by my previous opinion, I found myself justifying my original decision to review a book I hadn’t read all the way. To review a technical book requires, in all fairness, that you read the book from start to finish. That seems like an obvious point, but it is completely wrong. It overlooks the fact that reviewing is often about reporting what the book contains and doesn’t contain. With technical books, how do you criticize? You are reading a subject that you are probably a novice at, and the author is certainly an expert. Aside from pointing out technical errors (and from what I’ve heard, all technical books seem to have their fair share of them), the critic can talk about writing style, logical approach to the subject and whether the book covered the subject in a way that newbies could understand. My original review was not delivering harsh criticism to the book really; it was merely suggesting some reasons why this particular book might not be useful for some people.

    As a matter of fact, Friedl has a nice breezy writing style that is a delight to read. And indeed, it looks like a novel—the book is full of prose. Chapters 4 –the real crux of the book–gives a step-by-step guide to solving problems using regular expressions, explaining the syntax and showing some great examples. Chapter 5 is about optimizing, and the rest of the book hovers on the topic of Perl. My main problem was and still is that I couldn’t find what I needed whenever I picked it up! In contrast, whenever I wanted help on deciphering or writing regular expressions, I found myself referring to the much simpler “ Practical guide to Linux” .The author admits as much in his initial response that the first edition lacked an adequate reference section, and it seems likely that the second edition will address that difficulty.

    While Mr. Friedl has every right to respond to his critics, I have to wonder whether he is a shade too indignant. No book can win over everybody. Even if a book comes close to achieving that, it will no doubt attract a crowd of critics eager to deflate the hype, to burst the bubble, to rain on the parade. Of course, I intend to do no such thing. But amidst a chorus of lavish praise, the temptation of a critic to inject a modicum of dissent becomes irresistible.

  • Tutorial: How to control the crap which appears on your Facebook wall

    facebook

    facebook3

    Screencapture courtesy of the wonderful SnagIt software.

    That said, I have to admit that I am not telling half the story here. First, you can use the dropdown menu to fine-tune who can see these wall posts. You can even create customized groups that can’t view your wall.

    Facebook is adept at hiding  options and interfaces. I have to admit that its improved privacy settings look  sleek; they have simplified a lot so the user can find  things. On the other hand, I didn’t even know this options screen even existed until 30 minutes ago when I accidentally pressed Options and then Settings and then Settings a second time (yes, you have to do it twice, or the pretty screen won’t appear).

    Sometimes checking or unchecking one option can reveal or hide several others. You won’t really know what you’re missing until you manually try every one.

    And Facebook’s  help is atrocious. First, I did a cursory check on the Facebook site. Looks clean and organized, right? Wait, shouldn’t how to use the Wall  appear first on the list of FAQ?  And if the site is adept at hiding configuration options, wouldn’t you expect that the answers to the more complex questions would contain screenshots and videos?  In fact, when I expanded all the questions for this section, I didn’t find a single screenshot. Not one.

    fb2

    One of the problems is that Facebook stores everything in a database, so the views of help topics can’t be arranged or prioritized manually.  Everything is hidden or spread out into several pages. The information is atomized, and you have to click several links to see the relationship between two various screens. Also, Facebook uses a lot of terms whose meaning might be unclear.   What is a Wall? What is a post? Unfortunately  Wall is used in many contexts, so it’s easy to mix up help topics on how to write on other people’s wall with how to control one’s own.  The help topics for Wall are  hierarchically arranged, and that’s good, but it’s also too much for one page. That means having to click onto several pages to see the topics, and when that happens, you start yearning for a better arrangement of the help topics themselves.

    I don’t have a whole lot of advice for Facebook (except that maybe they could commission a few full-fledged tutorials or web demos).  Facebook is already on top, so they don’t need to worry about web traffic or teaching users how to do stuff. My main complaint is not with the help, but the fact that you can’t personalize your home page. For example, out of my 200 friends  I am mainly interested in posts from about 10 people, so I want to see their posts before  anyone’s else’s. Also, I almost never want to see posts from applications (Farmville, etc) and rarely wish to see Facebook  announcements.  Facebook has some algorithm for hiding and showing posts, but the user doesn’t really know what it’s doing. It’s black box technology.  I would love to have more transparency about how  Facebook  is filtering this information. Are they guessing? Are they counting clicks? Or are they relying on explicit indications of interest from me? 

    The user will never know.

    I’m not mentioning  my main objection to FB, which is that they prevent you from archiving message and older posts or even accessing them. (I wrote about that in my blogpost Pushback on Social Media). 

    Related: Here’s how to specify that a certain FB friend cannot make a comment on your microposts.  Privacy Settings –> Custom –> Customize Settings. On Things Others Share, select Can Comment on Posts –> Choose the dropdown list –> Custom Edit –> Hide this From and type the name of the individual in the text box. It should prompt you for names. Choose Save Settings. Whew! I didn’t realize it was so complicated!

  • Something I am really proud of!

    I’ve been writing a technical book on Plone and uncovering all sorts of user issues and bugs. I’m particularly proud of finding this one: it’s something that software developers would never notice – and yet would bug the living crap out of anybody creating content.

    One little known fact about technical writing is that you uncover all sorts of software bugs and usability issues during the process of writing documentation. I spend a lot of time researching and testing…maybe even more than I do actual writing.

  • Google Docs is ….useless?

    I just discovered something NASTY: the HTML export on Google docs is totally useless. BR tags everywhere instead of P tags. What was google/writerly thinking?

    Over the last year or two I have been keeping more and more of my personal documents and record keeping  on Google Docs, mainly for safety reasons. Recently I wrote an entire essay on Google Docs, intending to transfer it over to my blog when I was done.

    But alas! When I pasted over to Live Writer, I see nothing but carriage returns (regardless of whether I copy/paste with my mouse or export to HTML). I even tried copying HTML content over to the WordPress edit window. Still awful.

    My solution was to transfer the text content over to NoteTab Light (a free program), then copy/paste it over to Live Writer. Problem Solved!

    (Even though I didn’t need to use them in this particular case, NoteTab Light has several text processing functions that has saved my skin many times. I endorse this product highly and have even paid for the professional version of the product.  But the free version NoteTab Light is every bit as good.

    Google’s stupidity explains why I do most of my composition & editing with Live Writer & WordPress.  I use Note Tab Lite for raw editing, Personal Brain for outlining & organizing & mindmapping and XML Oxygen for structured writing.

    June 15 Update: The situation is not as bleak as I feared. Old Google Docs did have this problem, but Google Docs recently improved to a version that is more HTML friendly. Strangely though, the content is contained within SPAN tags instead of P tags (which might be almost as bad).  For older documents, I see a mix of BR tags and P tags, so it may depend on how content was created/pasted.

  • Docbook, Pandoc, Rants and Some Decent Free Fonts

    I’m working on a user manual and am in the process of discovering several tools to do the job.

    Here’s RSTA,  an online restructured text editor which lets you output into HTML and PDF. This is mainly of interest to people in the plone and python world.

    Python programmer extraordinaire Mark Pilgrim explains why he codes in HTML and not Docbook. From the comment section, I learn about Pandoc, a great program for converting different forms (LaTex, RST, markdown, HTML, Docbook, gosh – just about everything!).

    Here’s the Pandoc user guide and an online converter. The key, I’m guessing is how it handles unicode and document fragments, but I look forward to finding this out.

    Pilgrim also does a rant about the restrictive fonts:

    I know what you’re going to say. I can hear it in my head already. It sounds like the voice of the comic book guy from The Simpsons. You’re going to say, “Typography is by professionals, for professionals. Free fonts are worth less than you pay for them. They don’t have good hinting. They don’t come in different weights. They don’t have anything near complete Unicode coverage. They don’t, they don’t, they don’t…”

    And you’re right. You’re absolutely, completely, totally, 100% right. “Your Fonts” are professionally designed, traditionally licensed, aggressively marketed, and bought by professional designers who know a professional typeface when they see it. “Our Fonts” are nothing more than toys, and I’m the guy showing up at the Philadelphia Orchestra auditions with a tin drum and a kazoo. “Ha ha, look at the freetard with his little toy fonts, that he wants to put on his little toy web page, where they can be seen by 2 billion people ha h… wait, what?”

    Let me put it another way. Your Fonts are superior to Our Fonts in every conceivable way, except one:

    WE CAN’T FUCKING USE THEM!

    Soon — and I mean really fucking soon, like “this year” soon — there will be enough different browsers in the hands of enough different people that can use any possible font on any possible web page. And then a whole lotta people will start noticing fonts again — not just Your People, just also Our People. People who couldn’t tell a serif from a hole in their head, but they’re gonna be looking for new fonts. People who are just savvy enough to be tired of Comic Sans will be looking for a new font to “spruce up” their elementary school newsletter, which, in an effort to Love Our Mother (Earth), they now publish exclusively online.

    A typeface designer responds:

    As a type designer I feel like I have to step in and say something here. First off the majority of typefaces designed in the past twenty years haven’t been made by big foundries but by individuals working on type in their spare time. Second, typefaces receive no copyright protection in the United States so copying font files and renaming them for sale is pretty much legal. Third, fonts have been available on peer-to-peer networks since before the days of Napster and in 2000 it was estimated that only one out of fifty instances of a typeface file (postscript or TrueType files) was paid for, and it has only gotten worse.

    I have over forty commercial typefaces available for sale through various type re-sellers around the world and my average yearly income off the typefaces is $115, even though I regularly see my typefaces in use on the web, on TV in print and in video games. I used to think that one day I’d have a nice supplemental income from my typefaces but the reality of the situation is that people like you don’t value the effort that goes into making a typeface. I haven’t designed a new typeface in eight years now and I have no desire to do so. Why should I when you’re going to be a big bitching twat you greedy self-centered tantrum throwing teenager?

    Actually, the whole thread has a lot of expletives and rants, but lots of issues come up.  Actually, the most valuable information I gleaned from the threads were the names of some decent free fonts: Gentium, Day Roman, Yanone Kaffeesatz, Yanone Tagesschrift, Delicious, Aller, Charis SIL, Doulos SIL, Junicode,  Linux Libertine, the Liberation and Droid families, and Computer Modern (or, more likely, its Type 1 version, Latin Modern).

    See also the Open Font library (here’s the beta version, which seems buggy—the search results only gives 1 result). Here’s a general list of the most famous free fonts, separated by license type.

    Here’s a good (and indispensable) article about how to use the font-face css rule to use any of these awesome free fonts. Here’s another how-to. Here’s a nice demo.

    Update: This browser support table shows that Chrome 3 (the current version) does not support embedded fonts, and that Chrome 4 will be released in 2010. Also, Internet Explorer only supports EOT fonts. (I’m not 100% sure what that means; according to the link in the previous paragraph, EOT is a Microsoft implementation of fonts. Certainly there has to be a conversion tool? Update 2: this font wiki has this information and more).

    The free font issue is important for distributing ebooks. (Here’s a mobileread discussion). The .epub standard supports embedded fonts (I think), and having a unique font makes reading a more enjoyable experience when reading on a  Kindle or Nook.  I am growing weary of the same font on my Sony PRS 505 reader.

    I guess I haven’t mentioned it yet, but I’m working on two creative commons ebooks and am working on a user guide to publish on Booksurge and possibly as an ebook as well. For that reason, I’ve been learning a LOT about docbook. Overall, I’m happy with its flexibility even though the learning curve was steep –and also I’m depending a little too much on a on a noncommercial license of Oxygen XML editor. If I wanted to do something commercial, I’d have to pay $349 for a full version and $199 for an Author version (which lacks some  XML/XSLT tools but has an easier interface). Frankly, Oxygen is incredible, but I’m close to making commercial use of it.

    Serna XML editor (the free version) is good for authoring, but I haven’t figured out how to validate it using various  schemas and DTDs. Apparently, Serna uses python plugins to enable validation of various XML languages like docbook and DITA. It looks like Serna only supports 4x versions of Docbook; I could be wrong.

    By the way, after I finish one or two ebook projects, I plan to write an article about using docbook for ebook creation.

  • Job Interview Test

    Yesterday I interviewed for a technical writer job. Three people interviewed me,  and overall it went well. At the end, they asked me to take a short written test. This was a little unusual, but it went fine. They handed me a written set of instructions and left me alone with a laptop. On the laptop were two open windows: the company’s software and an empty  MS Wordpad file.  As they were leaving me,   I interrupted:

    “Wait, how much time do I have for this?”

    “There’s no time limit,” the woman said. “Just do it at your own pace.”

    “So where is your office – where do you sit?”

    “Oh, we sit at the office at the opposite side of the hallway.”

    “So how do I let you know when I’m done?”

    “You can just tell the receptionist.”

    “But what happens if I need help?  If I don’t understand something in the exercise or if the laptop malfunctions, how do I reach you?”

    “I’ll come back to check on you in about 10 minutes.”

    “By the way, do the people in the cubicles nearby know how to reach you?”

    “I think so.”

    “When I finish with the writing test, what do I do?”

    “Just save your work and tell the receptionist.”

    “So is it ok if I save the work on the local desktop…and name it ‘Robert Nagle test’?”

    “That’s fine.”

    “By the way, does the laptop still have the writing samples from other candidates?”

    She laughed. “Maybe. I can’t remember. Actually, you have Internet access, so you might be able to access the company’s public documentation as well.”

    “Ok,” I said. “I got it. You’ll check with me in a few minutes.”

    “Yes, good luck.”

    Hours later, I realize that this one minute preliminary  conversation  was probably more important than the written test itself. Part  of being a good technical writer involves  understanding directions and making sure you’ve been given adequate  information to do the  work on your own.  At my last job, the  primary  subject matter expert (SME)  lived in Australia; as a result, I had to structure my entire work schedule around the fact that he was available for questions for only 30-60 minutes at the end of my day (because of the time difference).   I usually spent between 4:00 PM and 6:00 PM gathering various questions to ask him via chat or email before I left. The next morning when I checked my email, the answers were usually waiting for me (to my amazement and relief).

    Looking back at this writing test, I realized that I made two mistakes:  1)I should have asked for the interviewer’s cell phone number in case I needed help and 2) I should have run my completed writing sample through the Google Docs spellchecker before finishing it. In my defense, I did check to see if the laptop had a copy of MS Office 2007 installed; if I did, I almost certainly would have used its amazing spelling/grammar check tool.

    Did I pass? I don’t know; I am still waiting to hear from them.

    **************************

    Robert Nagle  (idiotprogrammer at gmail.com) is a Houston-based technical writer. You can view his resume/writing portfolio here.