The purpose of art is to delight us; certain men and women (no smarter than you or I) whose art can delight us have been given dispensation from going out and fetching water and carrying wood. It's no more elaborate than that. — David Mamet

A remarkable, strange, and graceful novel about an Asian-American graduate student named Regina Gottlieb who is deeply attracted to the professor who is teaching chansons. What appears to be a familiar academic romance tilts wildly when Regina falls madly in love with the Professor’s wife. Only in the elegant coda does it become clear that this story might not be about Regina after all.

September 9, 2013 (permalink)


The core of this interesting exploration of test-driven development is an attempt to describe in some detail the process of developing a non-trivial network application. A frequent obstacle in treatments of unit tests and of refactoring is simply demonstrating their utility to skeptics: if the examples are small enough to grasp easily, they are small enough to dismiss as toys. It’s easy to convince yourself that these techniques spend time to polish impractical little gems, especially if you’re a pointy-haired manager with urgent deadlines and little concern for the fate of the code after a successful launch wins you a promotion.

I always despised the whole idea of lab partners. To save a a little space and equipment, the school would yoke you to some bystander who might be useful but often was not. Pair programming always struck me as a ghastly idea, though is can be interesting in very small doses when you’re getting up to speed in a new area. To a considerable extent, this feels like pair programming in print.

Still, there’s good material here. Freeman and Pryce don’t dodge difficult issues, such as concurrency, and they embrace an interesting test style that freely mixes acceptance and unit tests.

August 17, 2013 (permalink)


Clean Code
Robert C. Martic

An interesting and readable tutorial about current code aesthetics, this book is the software engineer’s Strunk and White.

Again, it’s remarkable how greatly style has changed within the past decade. In the 20th century, you were supposed to write comments. Now, we don’t: if the code is so unclear as to need a comment, it needs to be fixed. Martin does devote an entire chapter to comments, in a quaint gesture toward the elegant weapons of a more civilized age, but it feels out of place.

More interestingly, Martin is an extreme proponent of what I call the tiny methods style. He does not hesitate to make code longer — even substantially longer — in order to break up large methods. A proper method, to Martin, is one you can see at a glance.

Clean Code begins with a pleasant chapter in which the luminaries of the Agile Era propound their vision of clean code. This is interesting and useful and the accompanying portrait sketches are great: for the people I know, the likenesses are terrific. Readers will note the preponderance of beards, and it’s interesting to learn that jUnit originated as a diversion on a plane. The rest of the book’s illustrations are juvenile puns executed by an artist who has not quite mastered the anatomy of the hand, and they add little. The code examples are clean but a few blunders creep into the text. You generally don’t see this from Addison-Wesley or O’Reilly; Prentice-Hall should have caught them.

July 28, 2013 (permalink)


In 1832, Parliament passed the Reform Bill that was the culmination of decades of bitter struggle and controversy. It was, in essence, a modest reapportionment. The composition of Parliament under William IV was still based on medieval populations. Some villages that had shrunk almost to nothing still sent two members to Parliament, while the huge new industrial cities of the Midlands had no representation at all. The fight to slightly enlarge the electorate to include a slightly broader selection of wealthy men had inflamed passions; observers of all persuasions agreed that Britain stood at the abyss.

Yet, in the end, Reform passed. This lively volume shows how.

What’s striking about the fight of Reform is not that the institutions were sounder than ours or the people better, but that the fear of disaster was shared by both the radicals, who could easily envision a military dictatorship, and by the ultraconservatives, who could readily imagine revolution followed by Terror. Both sides were intransigent but even the fire-eaters could see something to fear on each flank. Reform came because a majority feared insurrection more.

The same has often been true in the US, even at times of great polarization. In the Civil Rights struggle, even solid Southerners like Johnson and Ervin knew that there was something worse than integration: they could see it in Watts and Detroit, and the South had feared it since Toussaint L’Ouverture’s revolt in Haiti. In the Great Depression, even staunch Republicans could imagine something worse than the New Deal: they could see it in the Bonus Army and they could see it in Moscow. The story of the Great Compromises is entirely driven by knowledge that the terrible swift sword was credible and that Judgment would not forever be postponed.

But is that true today? We have credible threats of right-wing violence: the 2000 white-collar riot in Florida, Josh Marshall’s litany of strange right-wing private militias and mercenaries, the whole fever dream of assault-weapon resistance to Big Government or Blue Helmets. But no one really worries anymore about the extreme left -- about revolution. We have no Eugene Debs, no Malcolm X, not even a Henry Wallace; when the right needs to conjure up a Radical for rhetorical effect, the best they can manage seems to be Bill Ayers, a primary education activist! A thriller writer can easily imagine a right-wing takeover, and they do: Seven Days in May, The Handmaid’s Tale. Nobody can see a plausible left-wing takeover; when Hollywood needs one, it conjures up things like Chinese Fleets or Space Aliens.

The Right feels free to be irresponsible because the worst possible government is the government they already have. Any left-wing president is always going to be looking at a largely right-wing judiciary and a largely right-wing military; they can easily imagine a very bad government and have good reason to take steps to prevent it. But, if the right truly believes this is the worst of all possible governments, they have no need to be reasonable because their unreasoning cannot be punished.

(An earlier version of this note appeared here).

July 25, 2013 (permalink)


Embassytown
China Miéville
Before the humans came, we did not speak so much of certain things. Before the humans came, we did not speak so much.

These are the crucial lines of Embassytown, and it is representative of Miéville’s accomplishment that such an enigmatic and unlyrical statement should come to mean so much.

Embassytown addresses an old challenge of science fiction: how can we talk about (and with) people who don’t think like us? The Arieki speak a language the requires two voices. For Arieki, thinking and speaking are inseparable: they literally say what they think. (This wouldn't work for humans, because humans think many things at once; the Arieki have a unicameral mind.) Arieki cannot say things they do not believe. This has obvious evolutionary advantages; if Joe says, “there are tasty sheep over the hill,” you know that Joe is telling you what he believes and not luring you into a trap. Disadvantages are obvious as well; Arieki cannot reason counterfactually. The simile is the latest in Arieki technology, and Arieki construct monuments or broadcast staged scenes in order to create new similes with which to think.

In fact, our narrator is a simile: she is “the girl who ate what was given to her.”

It’s a complex world, executed with Miéville’s usual flair, and also with his customary reliance on places more interesting than people.

July 18, 2013 (permalink)


This book is organized and presented as an Objective C homage to Scott Meyers’ classic work, Effective C++. The new book is good and interesting and provides useful tips for working in Objective C, but it’s far less interesting than Meyers.

What made Meyers’ book both necessary and important was the subtlety and indirection of modern C++. Over the years, C++ gradually developed a family of practices and customs that are not obvious, even to experienced programmers. In particular, const-correctness and exception safety are pervasive and essential to everyday C++, they’re fundamentally different from other languages, they’re easy to get wrong, and once you do get stuff wrong in your code, the blight spreads rapidly. C++ style requires that, if class A publicly inherits from B, then B is a kind of A; this convention contradicts everyday usage in other familiar languages. Some facilities — run-time introspection, ubiquitous type conversion — turn out to be good things to avoid even though they seem inviting, and others, such as preferring C++ streams to C’s printf, are worth adopting despite their initial learning curve.

There’s some of this in Objective C as well, but the focus in Effective Objective C 2.0 rests on syntax and semantics. Much of this is good and almost all is completely sound, but I think these tips miss many real issues in writing modern Objective C effectively. Some of these include:

  • Key-value observing, its use, and its discontents
  • The contested morality of adding new categories to standard objects
  • The contested utility of introspection
  • Pervasive use of task queues for managing concurrency
  • Block idioms as a replacement for C++ stack-based resource management
  • Design conflict between using delegates , requesting notification, and passing blocks
  • Design conflict between using one broad protocol or several narrow protocols
  • Desirability or otherwise of macros, especially in unit testing

Of greatest concern, I think, is the sparse discussion of concurrency. Sure, NSOperation and Grand Central Dispatch are great. But we have thousands of programmers now, all launching concurrent tasks left and right, who never studied concurrency formally and who don’t know a Petri net from a Petri dish. They need constructs and guidelines to keep them from stumbling into thickets of confusion when they’re just trying to get stuff done.

July 13, 2013 (permalink)


Nick Hornby adored Blau’s Wonder Bread Summer in a recent column for The Believer. He liked it so much that I opted for Blau’s first book.

This is a slight but interesting book about a slight but interesting girl. Jamie’s 14. Her sister Renee, who is 16, hates her. Her parents are hedonistic boomers who annoy both girls with their pot smoking and their naked swim parties. Jamie’s mother is open and uninhibited about sex, which drives Jamie nuts. Jamie has cool friends and a cool boyfriend and Renee is headed for Outward Bound, and so everything is set up for her summer to come completely unglued.

June 24, 2013 (permalink)


Rewired: The Post-Cyberpunk Anthology
James Patrick Kelly and John Kessel, eds.

A Readercon purchase, this anthology collects later work of noted Cyberpunk writers and a few post-cyberpunk notables.

Bacigalupi’s “The Calorie Man” is an intriguing first cut at the central plot of The Windup Girl. Where The Windup Girl’s Jaidee finds himself in the midst of a procedural thriller, here we have a Run To Freedom, the backstory of Neuromancer or “The New Rose Hotel.” It’s well done, though the tone is exactly like The Windup Girl and Ship Breakers.

Doctorow’s “When Sysadmins Ruled The Earth” is solid Doctorow, describing a disaster that leaves pudgy, unkempt internet maintenance people in charge of everything. Di Filippo’s “What’s Up Tiger Lilly?” is close in spirit: a mega-rich inventor who is otherwise callow and feckless is forced by circumstances to get out and do things. Both try to replace the heroic punks of early cyberpunk with credible techies, and both ultimately condescend to the unfortunate characters whose failing is that they know stuff and upon whom the writer must therefore inflict suitable torments. Elizabeth Bear’s enigmatic “Two Dreams On Trains” explores the street artist’s dilemma: you can be famous, everyone knows your work, but they’ll haul you off to jail nonetheless. It’s a fine story, but Banksy lived it already: do we need spaceships?

June 7, 2013 (permalink)


Wonder Boys
Michael Chabon

This novel made a great, and greatly under appreciated, movie, and I wanted to see whether the book is equally good.

It is.

The performances do a remarkable job of capturing Chabon’s voice, and the screenplay stays quite close to the novel, especially in the crucial opening chapters. The differences between novel and film are often subtle — changing a black jacket to white, adding an extra female character, cutting a transitional episode.

June 7, 2013 (permalink)


Gaudy Night
Dorothy L. Sayers

The best of Dorothy Sayers’ mysteries and among the best mysteries of all time.

The Oxford of Gaudy Night is a wonderful wish-fulfillment fantasy where all smart people have read one’s books, have discussed them with their friends, and have intelligent questions about them at their fingertips.

May 26, 2013 (permalink)


Fun Home
Alison Bechdel

Bechdel’s acclaimed comic of gay identity, the death of her father, and her parents’ troubled marriage is nearly as good as its sequel, Are You My Mother? Again, what’s most interesting here is not the weight of a comic that deals seriously with serious matters, but the way Bechdel weaves together a story and a novel of ideas in the small compass that comics allow.

And you’ve got to love any sophisticated college student who discovers, browsing in a bookstore, that she’s a lesbian.

June 24, 2013 (permalink)