Sunday, February 22, 2009 
Watchmen (book)
Title: Watchmen (book)
Author: Alan Moore, Dave Gibbons
Rating: 4.5 stars out of 5
Publisher: DC Comics
Copyright: 1987
Pages: 416
Keywords: graphic novel, superheroes
Reading period: 14–22 February, 2009

Set in an alternate 1985 where costumed heroes are real—and outlawed—Watchmen follows six adventurers. Rorschach, half-mad, continues his vigilante activities. Nite Owl is retired and a worrywart. The former Ozymandias—the world's smartest man—is now one of the richest. The Comedian is murdered at the very beginning; after the Keene Act passed, he was allowed to continue operating as a government enforcer. Dr. Manhattan was transformed into a superbeing in a nuclear accident in 1959; he is America's strategic weapon in the arms race with the Soviets. And the former Silk Spectre is his girlfriend.

These people are not boy scouts, fighting for truth, justice, and the American Way. They are flawed individuals with motivations that are often murky, even to themselves.

Who watches the watchmen? Who indeed?

The very presence of masked adventurers over the last fifty years has transformed society. Dr. Manhattan is both responsible for many technological advances, such as flying cars, and the locus of much of the world's tension. When he disappears off the face of the earth, destabilizing the balance of power, the Soviets immediately invade Afghanistan and Pakistan.

Rorschach meanwhile is convinced that someone is going after masked adventurers, and investigates. He's right. There is something going on—something unspeakable.

Watchmen tells a complex story, weaving together many different strands into a tapestry that is a triumph of the comic book. The narrative moves back and forth across fifty years, collecting many viewpoints. And the comic within the comic–the Tale of the Black Freighter—accentuates the main storyline. The artwork too repays careful study. There's often two or three things going on in a single panel. Truly, a picture is worth a thousand words.

Originally published in twelve issues, Watchmen was promptly republished as a book. It is one of the titles that gave rise to the category of graphic novel, deserving the Hugo that it won. The film adaptation will be released in March.

Highly recommended.

posted on Sunday, February 22, 2009 8:07:47 PM (Pacific Standard Time, UTC-08:00) 
#    Comments [0]
Saturday, February 21, 2009 
Eric's hand over bingo cards

Emma, Eric, and I went to Gay Bingo this evening. It's a monthly fundraiser for the Lifelong AIDS Alliance. This is not your grandmother's church bingo: the Sisters of Perpetual Indulgence are the ushers and the show is MC'd by a drag queen.

Every Gay Bingo has a theme. Tonight's was the Love Boat, the campy 70's TV show. Many in the audience dress for the occasion. I wore the nearest thing to a lounge suit that I had; Emma accessorized a nautical top with a scarf. We brought Jill and Dick the last time we went. They have an enormous collection of costumes and they were some of their choice Fifties glad rags.

I've been there perhaps ten times over the last 15 years. For the first decade, it was held in the basement of a synagogue on Capitol Hill. It was always packed. Finally, they moved to a larger space, the South Lake Union Naval Reserve building, a few years ago. That's always packed too.

It's always a lot of fun. And for a good cause too.

posted on Sunday, February 22, 2009 7:37:24 AM (Pacific Standard Time, UTC-08:00) 
#    Comments [0]
Friday, February 20, 2009 
Procrastination

Aaron Swartz has a moderately interesting piece on productivity and procrastination.

We all procrastinate. I certainly procrastinate.

Sometimes my procrastination is tantamount to making sure that my pencils are very, very sharp. More often, I find myself surfing the web, free associating off in random directions. There's no end to the fascinating distractions.

In lesser cases, I procrastinate because I'm bored or not fully engaged in what I'm doing.

When I have a more severe case, I think fear is the root cause. I don't really know how to proceed, I don't really understand what it is that I'm supposed to be doing, and I don't really want to come to grips with it. And so I don't. My fear of the pain dissuades me.

When I finally do get over the hump, quite often, I'll find myself engaged in the problem and have difficulty tearing myself away. I develop a sense of accomplishment about the problem. At best, I find myself in a state of flow.

The key to my getting started seems to be to find some small, manageable piece that I can accomplish. The momentum gets me on to the next piece and then the next.

Easier said than done, alas.

posted on Friday, February 20, 2009 8:48:13 AM (Pacific Standard Time, UTC-08:00) 
#    Comments [2]
Thursday, February 19, 2009 
Bloomsday reading

So how do I go from the Project Gutenberg etext to LaTeX?

Here's the Gutenberg text for the pictured fragment:

(BLOOM'S WEATHER. A SUNBURST APPEARS IN THE NORTHWEST.)

THE BISHOP OF DOWN AND CONNOR: I here present your undoubted emperor-
president and king-chairman, the most serene and potent and very puissant
ruler of this realm. God save Leopold the First!

ALL: God save Leopold the First!

BLOOM: (IN DALMATIC AND PURPLE MANTLE, TO THE BISHOP OF DOWN AND CONNOR,
WITH DIGNITY) Thanks, somewhat eminent sir.

WILLIAM, ARCHBISHOP OF ARMAGH: (IN PURPLE STOCK AND SHOVEL HAT) Will you
to your power cause law and mercy to be executed in all your judgments in
Ireland and territories thereunto belonging?

BLOOM: (PLACING HIS RIGHT HAND ON HIS TESTICLES, SWEARS) So may the
Creator deal with me. All this I promise to do.

MICHAEL, ARCHBISHOP OF ARMAGH: (POURS A CRUSE OF HAIROIL OVER BLOOM'S
HEAD) GAUDIUM MAGNUM ANNUNTIO VOBIS. HABEMUS CARNEFICEM. Leopold,
Patrick, Andrew, David, George, be thou anointed!

The Gutenberg transcriber has converted all italics to uppercase. All accents on letters have been lost (there were none in this fragment).

Here's the corresponding LaTeX that I derived from the above:

\stage{(Bloom's weather.
A sunburst appears in the northwest.)}

\DownConnor:
\gab{1470}
I here present your undoubted emperor-president and king-chairman,
the most serene and potent and very puissant ruler of this realm.
God save Leopold the First!

\All:
God save Leopold the First!

\Bloom:
\stage{(in dalmatic and purple mantle,
to the bishop of Down and Connor, with dignity)}
Thanks, somewhat eminent sir.

\WillArmagh:
\stage{(in purple stock and shovel hat)}
\gab{1480}
Will you to your power cause law and mercy to be executed
in all your judgments in Ireland and territories thereunto belonging?

\Bloom:
\stage{(placing his right hand on his testicles, swears)}
So may the Creator deal with me.
All this I promise to do.

\MikeArmagh:
\stage{(pours a cruse of hairoil over Bloom's head)}
\latin{Gaudium magnum annuntio vobis.
Habemus carneficem.}
Leopold, Patrick, Andrew, David, George, be thou anointed!

I could simply have used \em to get italics, but I'm a big believer in semantic markup, so I wrote a set of custom macros, like \stage and \latin. The name macros, like \Bloom and \All, are defined in terms of the \role macro. The \gab macro lists the line number in the Gabler edition of Ulysses. It's useful for looking up reference works and it would have been hard to do in reStructuredText.

\newcommand{\stage}[1]{\emph{#1}}
\newcommand{\role}[1]{{\textsc{#1}}}
\newcommand{\Bloom}{\role{Bloom}}
\newcommand{\gab}[1]{\marginpar{#1}}

I used Vim to massage the text.

  • For my own sanity, I have broken each clause onto a separate line. Much of this can be done by substituting a newline after every period and right parenthesis. The other breaks require manual splitting and joining of lines.
  • Transforming BLOOM: into \Bloom: is a trivial text substitution, :%s/^BLOOM: /\\Bloom:\r/
  • All the uppercase text has been converted to mixed case. Much of it needs to be bracketed by \stage{} in this chapter. The rest needs to be treated as \latin{}, \hebrew{}, \french{}, and so on.

I used the following Vim macro to bracket the visual selection with \stage{}.

" ;s => SELECTION -> \stage{selection}
vnoremap <buffer> <silent> ;s u`>a}<Esc>`<i\stage{<Esc>

Breaking it down, since that looks like line noise.

vnoremap Visual-mode keymap; no further expansion of the right-hand side
<buffer> Buffer-local. Won't apply in other buffers.
<silent> Mapping won't be echoed on the Vim command line
;s Mapping is bound to sequence ;s
u Make highlighted text lowercase; cancels selection
`> Go to end of former visual selection
a}<Esc> Append }
`< Go to beginning of former visual selection
i\stage{<Esc> Insert \stage{

It's necessary to append to the end of the selection first. Were I to first insert at the beginning, the append would happen seven characters (len('\stage{')) too early. (I picked this trick up from Christian Robinson's HTML macros.) Then I have to go back and convert a few characters to uppercase with the ~ operator.

This workflow isn't for everyone and it would be difficult if I had to hand it off to someone else. Most non-geeks would prefer to use a WYSIWYG tool like Word. I loathe Word and I want the control.

All of this is somewhat tedious, since even with useful Vim macros taking care of many of the changes, I still have to make manual tweaks on almost every line. But this is also a virtue, as it makes me intimately familiar with the text.

The hardest task—at least for me—is making the dramaturgical decisions. Usually, it can be hard to decide exactly to whom a particular line should be ascribed—making sense of Bloom's interior monologue, for example, or splitting a long stretch of narrative between several narrators. This year's chapter is written in the form of a play, so that particular problem is gone. Last year was the first time we abridged a chapter. This year, we have to reduce 60,000 words to 15–20,000 words. Whether that's by breaking the chapter into two or more readings, or by deep, deep cuts, I have yet to decide. And that's where the line-by-line familiarity is helpful.

posted on Thursday, February 19, 2009 8:38:21 AM (Pacific Standard Time, UTC-08:00) 
#    Comments [0]
Wednesday, February 18, 2009 
Bloomsday reading

I have a long-standing fascination with typography. In the late '80s and early '90s, I became quite adept with TeX and LaTeX, the well-known scientific typesetting system. When I was at ICPC, I think I read the TeXbook cover to cover—twice. I became the TeX administrator for the CS department while I was at Brown.

And then I moved to Seattle to work for Microsoft and entered the world of Windows, and I left TeX behind for more than 15 years.

I wrote the other day that I prepared the Bloomsday scripts in XML for several years, using XSLT to generate HTML. I used to send the HTML to the readers, but everyone's browser paginated differently when printing, which led to confusion at rehearsals. So I started giving them PDFs: problem solved except for the person who needed a large-print version.

Last year, I prepared the script with reStructuredText. Normally, I use reST to generate HTML, but reST can also generate LaTeX. I decided to use rst2latex to take advantage of LaTeX's superior typesetting.

I wasn't happy with the results. The script looked like a crappy technical paper from the '90s, thanks to the tired Computer Modern layout. CM works well for math, less well for text, in my opinion.

The MacTeX extras included XeTeX, a modern variant of TeX that supports Unicode and OpenType fonts. I experimented with using Hoefler to set the script. You can see the results above: it looks gorgeous.

More to come.

posted on Wednesday, February 18, 2009 8:11:43 AM (Pacific Standard Time, UTC-08:00) 
#    Comments [0]
Tuesday, February 17, 2009 
LetMeGoogleThatForYou

On a mailing list, I saw a dumb question answered with a link to LetMeGoogleThatForYou.

Try this: http://lmgtfy.com/?q=is+there+a+Santa+Claus

Or this: http://lmgtfy.com/?q=exploding+coca+cola

In the old days, you might admonish someone to ask smart questions.

posted on Wednesday, February 18, 2009 7:14:26 AM (Pacific Standard Time, UTC-08:00) 
#    Comments [0]
Monday, February 16, 2009 
Fragment of Cyclops script

I'm about halfway through the 60,000-word Circe chapter of Ulysses, converting it to LaTeX.

For several years, I took the plaintext from the Project Gutenberg etext, prepared the script in XML, used XSLT to transform it into HTML, tarted it up with CSS, and then saved it as a PDF. You can see a screenshot above.

I'll write up tomorrow why I switched to LaTeX last year.

posted on Monday, February 16, 2009 8:43:25 AM (Pacific Standard Time, UTC-08:00) 
#    Comments [0]
Sunday, February 15, 2009 
Father and Son Warwick Hats

My talented wife got back today from four days at the Madrona Fiber Arts Festival in Tacoma. As you can see from Emma's Flickr page, she's knit a lot of beautiful pieces.

I'm hoping she will revive her dormant blog and write more about some of her projects. She does have some writeups at Ravelry (Facebook for knitters) under her username Emma, but that's only visible to members.

posted on Sunday, February 15, 2009 9:10:24 AM (Pacific Standard Time, UTC-08:00) 
#    Comments [0]
Saturday, February 14, 2009 
Bleeding Kansas
Title: Bleeding Kansas
Author: Sara Paretsky
Rating: 4 stars out of 5
Publisher: Signet
Copyright: 2008
Pages: 593
Keywords: fiction
Reading period: 4–13 February, 2009

In the 1850s, three anti-slavery families settled next to each other in rural Kansas: the Grelliers, the Schapens, and the rich Fremantles. Seven generations later, the last of the Fremantles is gone, the Grelliers are progressive farmers, and the Schapens are belligerent fundamentalists. Gina Haring, a Wiccan lesbian from New York, housesits the Fremantle mansion, while she tries to pick up the pieces of her life. Inadvertently, she triggers a cascade of changes. Most notably, the Grellier son, at odds with his anti-war mother, enlists and is killed in Iraq, sending her into a deep depression.

Paretsky has moved her focus from her series of novels about V.I. Warshawski, a female PI in Chicago, to rural Kansas, where she grew up. It's her take on What's the Matter With Kansas?, the transformation of a populist anti-slavery state into a deep-red locus of reactionaries.

It's a mostly sympathetic portrait of beleagured farmers. The main characters, Jim Grellier; his 14-year-old daughter, Lara; and Robbie Schapen, the 14-year-old misfit, are well-drawn and believable. The romance that develops between Lara and Robbie is tender and touching. The rest of the Schapens, though, are something of a caricature.

posted on Sunday, February 15, 2009 7:19:25 AM (Pacific Standard Time, UTC-08:00) 
#    Comments [0]
Friday, February 13, 2009 
Gran Torino
Title: Gran Torino
Director: Clint Eastwood
Rating: 4 stars out of 5
Copyright: 2008

Clint Eastwood directs himself as Walt Kowalski, a retired auto worker. Newly widowed, estranged from his sons, and haunted by his Korean War experiences, Walt is a bitter, racist old bastard.

He doesn't like the Hmong immigrants who live next door and he nearly shoots the teenage boy, Thao, when he catches Thao trying to steal his beloved 1972 Gran Torino. The theft was to be the reluctant Thao's gang initiation. The gang come by to punish Thao and Walt runs the “gooks” off his lawn at gunpoint. The Hmong neighbors start bringing over food and flowers in gratitude. Walt is confounded and wants to be left alone. Then Walt rescues Thao's sister, Sue, from some “spooks”, and she invites him over to a celebration.

Walt slowly thaws as he realizes that he has more in common with the Hmong than he does with his own children. Thao is sent over to work for Walt as penance for the attempted theft. You guessed it, Walt and Thao begin to bond. Things go well for a while, then the gang comes back.

Eastwood is convincing as the flinty-eyed old son of a bitch who can stare down gangbangers a quarter of his age. And convincing too as the damaged, lonely old man, with a good heart under the foul-mouthed exterior.

Less convincing was the overly neat ending, when Walt goes to deal with the gang.

Recommended.

posted on Saturday, February 14, 2009 7:35:17 AM (Pacific Standard Time, UTC-08:00) 
#    Comments [0]
Thursday, February 12, 2009 
Clipboard

I mentioned in my post on reStructuredText that I use a little command-line tool, pbcopy, to pipe the output into the clipboard. I finally found a similar tool for Linux, xsel.

  • Mac: pbcopy (UTF-8 aware, unlike the built-in version of pbcopy) copies its input to the pasteboard (Mac name for the clipboard); pbpaste writes the pasteboard to stdout.
  • Linux: xsel gets and sets the X selection.
  • Windows: winclip reads and writes the clipboard in a variety of formats. Use -m for UTF-8 text. The winclip binary is available as part of the outwit package.
posted on Thursday, February 12, 2009 8:51:18 AM (Pacific Standard Time, UTC-08:00) 
#    Comments [0]
Wednesday, February 11, 2009 
Sugar

A good piece in yesterday's New York Times about sugar in the American diet:

How sweet it is! The American diet, that is. While the current recommendation is a maximum intake of eight teaspoons of sugars a day, one 12-ounce can of regular soda (or a 20-ounce bottle of VitaminWater) delivers eight or nine teaspoons. That means you are at or over the limit before you’ve eaten a single cookie or container of fruit-flavored yogurt, or even some commercial tomato soups or salad dressings with added sugars. The result is an average daily intake of more than 20 teaspoons of sweet calories.

Marshall Brain demonstrated the amount of sugar in soda. Eight teaspoons of sugar is a startling amount when it's placed in one pile.

In the early to mid-90s, I drank about a liter of Coke a day. It caught up with me. I long ago kicked that particular habit, to the betterment of my waistline.

posted on Wednesday, February 11, 2009 8:01:59 AM (Pacific Standard Time, UTC-08:00) 
#    Comments [0]
Tuesday, February 10, 2009 
Snow over Yesler Street

This is, by far, the snowiest winter that I've ever experienced in Seattle—and I was in Ireland for the worst two weeks.

At least the snow that came down yesterday and today didn't stick.

posted on Wednesday, February 11, 2009 7:14:52 AM (Pacific Standard Time, UTC-08:00) 
#    Comments [2]
Monday, February 09, 2009 
Facebook Groups

As you can see from the attached picture, I just created Facebook Groups for three social organizations that I'm involved in: Freely Speaking Toastmasters, Wild Geese Players of Seattle, and BiNet Seattle.

I set up a LinkedIn group for FSTM too.

posted on Tuesday, February 10, 2009 7:47:24 AM (Pacific Standard Time, UTC-08:00) 
#    Comments [0]
Sunday, February 08, 2009 
Taken
Title: Taken
Director: Pierre Morel
Rating: 3 stars out of 5
Copyright: 2008

Liam Neeson is Bryan Mills, a former CIA “preventer” who reluctantly lets his teenaged daughter visit Paris. Kim is abducted by an Albanian prostitution ring and he sets out to rescue her. Non-stop mayhem and action ensue.

Taken works fairly effectively as an action movie in the Bourne mode. The plot moves fast enough that you don't have time to reflect upon the gaping holes or the improbable effectiveness and invincibility of Mills.

Neeson carries the movie, convincing as the pissed-off hardass who'll go to any lengths to find his daughter.

posted on Monday, February 09, 2009 7:28:43 AM (Pacific Standard Time, UTC-08:00) 
#    Comments [0]
Saturday, February 07, 2009 
Vincent Reilly

I talked to my mother this afternoon. She's still in Dublin, helping Michelle out with Harry. My father went back to Cape Town in mid-January to enjoy the golf and the South African summer. My parents spend several months a year there.

They have a small cottage in Hout Bay, in a residential complex. The buildings are terraced together. The other night, the cottage two doors down caught fire and the woman inside died. My father slept through the whole commotion forty feet from his bedroom, and knew nothing about it until the next day.

We knew he was a sound sleeper—and a heavy snorer—but this tops everything.

posted on Saturday, February 07, 2009 8:57:54 AM (Pacific Standard Time, UTC-08:00) 
#    Comments [1]
Friday, February 06, 2009 
Circe and the Friends of Ulysses

It's time to start thinking about this year's reading of Ulysses for the Wild Geese Players of Seattle. The next chapter to be tackled is Circe, the nightmare scene in the brothel.

Most chapters require a lot of work to tease apart into a staged reading, to make sense of the different threads of Bloom's inner monologue, or to attribute fragments of conversation to different characters, for example. This chapter is written in the form of a play; attribution is easy.

But Circe is also enormously long: some 60,000 words. For comparison, many novels are in the range 80–100,000 words. Last year's chapter was 20,000 words and I cut 5,000 words off. It took us the best part of two hours to read those 15,000 words. Clearly, we cannot read the whole chapter. Even if we had the stamina to read for six or seven hours, no audience would put up with it.

My task for this weekend, then, is to re-read the chapter and see whether it makes more sense to simply cut the hell out of it, so that we can complete Circe this year, or to divide it into two or three pieces, which will have to be read at different times.

posted on Friday, February 06, 2009 8:00:01 AM (Pacific Standard Time, UTC-08:00) 
#    Comments [0]
Thursday, February 05, 2009 
Bowling Score Sheet

There's a flamefest going on at the moment between Robert "Uncle Bob" Martin and Joel Spolsky over the value of Test-Driven Design and the SOLID principles. I find TDD valuable and I'm reading Martin's Clean Code at present.

Poking around in the links led me to Uncle Bob's Bowling Game Kata, a Powerpoint deck demonstrating using TDD to score a bowling game.

Ron Jeffries has a very ugly OO implementation and a cleaner procedural version of the Bowling Game. Digging around in the archives of his XP Magazine turns up many other ruminations on the Bowling Game

At Atlas, I was loaned to one group that used the Bowling Game for a pair-programming interview. I found it to be a valuable exercise. It showed us whether the candidate could actually code or not and it gave us a feel for what it would be like to work with them. It gave the candidate a taste of Agile work practices like TDD and pair programming. Of course, in a real pair-programming exercise, I would have been actively making suggestions instead of holding back.

We interviewed four candidates while I was on that team. Two passed, were hired, and worked out. One failed, failed other interviews, and was eliminated. The fourth candidate was very experienced, gave great whiteboard while talking through the exercise at the beginning, and turned out to be completely horrible. He floundered badly and wrote ugly, buggy code. That eliminated him, even though he had done well on the other rounds.

posted on Thursday, February 05, 2009 8:56:04 AM (Pacific Standard Time, UTC-08:00) 
#    Comments [0]
Wednesday, February 04, 2009 
Twitter and Facebook

For a long time, I disliked Facebook. It seemed to consist entirely of annoying acquaintances attacking me with vampires or sending me pointless “gifts”.

I've used Facebook more in the last month and it's been less annoying than I remembered it. I check it once or twice a day and see updates from people I know. More entertaining than exasperating.

Twitter, though, has not clicked for me. Brevity is good, but Twitter is too minimalist. Stream-of-consciousness ejaculations. Opaque URLs disdaining explanation. Feh.

Scott Hanselman has a different take on Twitter.

Maybe I need to “follow” a better class of people.

I'll go and yell at those damn kids to get off my lawn now.

posted on Wednesday, February 04, 2009 8:31:38 AM (Pacific Standard Time, UTC-08:00) 
#    Comments [0]