Book Reviews

I read books (remember those?). These days, I try to write reviews of them.

An Introduction to Object Oriented Programming, 3rd ed

I’ve had Timothy Budd’s textbook on object-oriented programming on my bookshelf for some time. It was a textbook in one of my undergraduate courses and, at the time, it only received a fairly cursory inspection (though not before becoming the source for one of my collected quotes). I decided to read it more or less cover-to-cover to refresh myself on the nuts and bolts level of object oriented ideas.

Probably the most useful thing I took from the book is a much clearer sense of the distinction between overloading and overriding. It’s a distinction which at first seems a bit academic, but then you discover that one can be settled at compile time and the other only at runtime. Then it matters quite a bit.

Also of value is that Budd uses a wide selection of OO languages as examples. Java and C++ form the bulk of the code, but numerous other languages make appearances. The wide selection allows Budd to contrast different approaches that languages can take. A lot of the time I found myself relieved that I don’t program in C++, which thanks to its design constraints is a fountain of accidental complexity.

The text is generally straightforward; I only had one or two places where a closer reading was required. The diagrams are clearly the author’s. Sending his Word diagrams to a professional designer might have made them a bit easier on the eyes.

The key, though not fatal, weakness of the text is its age. The 3rd edition was written in 2001. Java and C# were still young, Ruby had not yet risen to its current prominence and the great bifurcation of the software development world into pre-blog and post-blog bodies of knowledge had yet to really take hold. In many ways this book is a capstone on the glory days of OOP — the 1990s. As we look back now, OOP has simply faded into the firmament, a paradigm so dominant that other conceptual approaches are best distinguishable by their not-OOPness. Some things faded more than others, of course — where now the frantic collecting and publishing of patterns?

All in all it is a passable book. For those wanted a general introduction to the larger body of work up through the 90s, Budd’s book is suitable. Otherwise, I suspect, most practitioners these days are osmosing their OOP concepts from tweets.

Comments Off on An Introduction to Object Oriented Programming, 3rd ed

Collected Fictions of Jorge Luis Borges

Sometimes, when I think nobody is looking, I like to indulge in the pleasant daydream that I am intelligent. In order to conceal the truth I must occasionally read more deeply into things than any smart person would have to in order to speak learnèdly about something.

And this is how I came to buy and read the Collected Fictions of Jorge Luis Borges, as translated by Andrew Hurley. In highschool I was, for my sins, set down to study Latin American literature by the curriculum designers of the International Baccalaureate. I found most of Higher-Level English to be frustrating and tedious. But I’m very grateful that, as a side effect, I was exposed to a smattering of short stories by Borges.

Some time later I found myself expounding on the themes and meanings of some of his most famous short stories — particularly The Library of Babel and The Lottery in Babylon — and it struck me that I only knew a handful of Borges’s stories. I decided that on my long holiday to the USA I would take the full collection as companion to From Dawn to Decadence.

I’m not sure this was an entirely wise decision. Take my above remark that I sometimes think of myself as clever. Borges is a genius. Moreover, his the full-contact kind of genius. Suppose I was a gifted amateur boxer. I might hold a decent opinion of my skills. Then put me in a ring with a Mike Tyson in his prime and call my next of kin.

This is the experience of trying to read Borges short stories back to back, one after the other. I can only encourage other readers not to do so. Some of the stories are supremely tightly wound coils of ideas. In the space of a few pages Borges can raise and dismiss whole universes of possibility. It is often only later that one begins to unravel his wire and discover that it runs everywhere and through everything.

It’s worth noting that in fictional terms, there are almost two Borgeses. One Borges delights in writing sketches of Argentine and Latin American life, usually with the little flourishes of fantasy that gave rise to the term “magical realism”. And then there is the second, much more famous Borges, whose stories are bold expeditions of discovery into lands of metaphysical paradoxes.

You can see this difference if you look at the difference between Collected Fictions and the more popular selected collection, Labyrinths. The first contains both kinds of Borges. The latter is almost exclusively selected from amongst the brain-stretching monsters.

As a person with a Computer Science degree, it is the second Borges who speaks to me. The Library of Babel and The Lottery in Babylon are a kind of Lovecraftian horror story for anyone who grasps the possibilities of combination. He begins with very simple premises (a very large library of random books; a society governed by random lots) and slowly, slowly, the dread begins to build. It speaks to his talent that Borges can produce in about 10 pages the creepy-crawly terror that Lovecraft sometimes built in purple prose over hundreds of pages (see, for example, At The Mountains of Madness).

Many of the stories reward re-reading and I often find myself having a spark of insight while reading. Take Lottery, for example. At the conclusion of the story the reader is left wondering if there really is a Lottery. The point, of course, is that the fantastical Lottery is indistinguishable from plain reality. Borges has neatly come full circle to demonstrate that mere chance is like an invisible, monstrous tyrant in our lives. It struck me because he explained it much better than I ever could.

Or take Pierre Menard, Author of the Quixote. Borges illustrates postmodernism better than the postmodernists; he tangentially illuminates the difference between syntax and semantics better than a famous book with a dragon on the front. And he does it in a handful of pages in a made-up review of the work of a man who doesn’t exist.

Borges is sometimes well ahead of his time. The Garden of Forking Paths might seem trite to the aficionado of lazy science fiction TV, but this short story predates the Many-World interpretation of Quantum physics by more than a decade. Borges got there first and explained it better.

If I have one complaint about the work of Borges, it that is lumped together with other writers under the heading of “Magical Realist”. It’s one of the more egregious injustices of literary history that Gabriel Garcia Marquez is considered in the same breath. 100 Years of Solitude is a lazy scribble without many redeeming features. Its popularity comes about as the same reason Sean Penn was christened “Best Actor” for his performance in Milk: politics. Marquez thumbs the eye of colonial capitalism. All very noble. But this hardly makes him a genius.

But politics fades. I am reasonably confident that the second Borges, the young metaphysical Borges (which the older man sometimes joked about), will continue to be spoken about in a hundred years. The rest will fall away.

Recommended; however, most readers will be better served by the smaller and more focused collection in Labyrinths.

Comments Off on Collected Fictions of Jorge Luis Borges

From Dawn to Decadence

In Greek mythology, Cassandra was a prophetess with a particular curse. Her prophecies of tragedy are inerrant, but they are never believed. She is forever doomed to see each tragedy twice, knowing that without the curse, her prophecies could have been prophylactic.

In reading Jacques Barzun’s From Dawn to Decadence, I was struck that a historian is a kind of Cassandran figure. Barzun’s magnum opus condenses the last 500 years of the incredibly prodigious culture of the Western world in 800 densely-written pages. It is all there, he seems to cry. But nobody can hear him. The world is deaf to its own past.

This is the third time I’ve read this book; I come back to it every 4 or 5 years. I took it with me on a long holiday through North America, as companion and foil to the complete short stories of Borges.

Barzun’s particular gift is he can deftly navigate the reader along the unceasing, ever-broadening river of genius. And it is very much like a river. At time it was necessary to set the book down for a few days to let things settle in; I found myself marking pages frequently for future reference.

He is fearless in being idiosyncratic in his selection. Florence Nightingale warrants a bold header; Karl Marx is raised, summarised and dispatched in about a page. While his writing reveals a Burkean Cassandra, he is nevertheless happy to apply his own standards to history. Figures are promoted or demoted according to his own estimation. Current popularity doesn’t apply to his estimates. Consequently, for example, Shakespeare is barely present until some time after his death, when his works begin to make inroads on the Western mind.

It is in the final chapter that Barzun reveals the “Decadence” that his title alludes to. I am not so sure I agree with his conclusion that Western culture has passed into decline; at least not entirely. These treasures of culture that we can still see are preserved because, at the time, the elites embraced them. The “demotic” culture which Barzun is uneasy about is probably a constant. Great novels have been written for hundreds of years. But far more cheap pulp has ever been written than anything else. If Barzun lived in any other time, he could have made the same argument from the same inconsistent samples of past and present.

Possibly the most frustrating part of reading such a survey is that Barzun will hold out a shimmering jewel, turn it over once or twice, then move on. I was forever wishing he could linger for longer here and there. But as the book progresses this becomes, understandably, more and more impossible. The treatment of Luther, Rabelais, Erasmus and Montaigne is collectively about as long as the early 20th century, a time Barzun considers to hold the entire modern world in prototypal form. The worst of it is: each name brought up, each master, each body of brilliance … each of them can only be fully embraced and studied by someone with the time and position like Barzun’s. The rest of us will have to settle for horrible compromises. How much can be gotten to in just one ordinary lifetime?

It is an exhausting, exhilarating, terrifying and wonderful book. Highest recommendation.

1 Comment

To Engineer is Human: The Role of Failure in Successful Design

So, it’s been a while since I wrote a book review. And I have, in fact, been reading the odd book here and there. I read everyone’s favourite late-noughties manifesto The Lean Startup, which was a few good insights smothered in thousands of words of undergraduate-essay padding. I followed that with Steve Blank’s The Startup Owner’s Manual. It made a wonderful fwooshing sound as it zoomed over my head. Fun fact: it’s actually three books. Or rather, the same book thrice.

What I ought to have done is to try to stick to my intention to review every book I read, even if only briefly. But I didn’t. So until I go back to one or other, I’m declaring bookruptcy and excusing myself from those reviews.

That leaves Henry Petroski’s To Engineer is Human as the most recent book I knocked over.

What’s it about?

Petroski covers a lot of ground, but the core of his argument is that we learn more from failure than from success. For a structural or civil engineer, success doesn’t exist as a distinct quality. It’s merely the absence of failure.

Petroski expands this to say that every structure is a hypothesis. An experiment: will this configuration of matter, under these conditions, perform this function, for this time span?

This is important because sometimes the hypothesis is proved in the negative. No: due to some unforeseen combination of factors, the design is a failure. Often these failures are instructive. Subsequent designs evolve away from those failures. Perhaps a new line of thinking is abandoned, perhaps bigger safety margins are used, or some combination of the above.

After a while, the safety margins begin to shrink again; possibly creating the seeds of a new failure. And so on it goes, in a sinusoidal process of oscillating caution and optimism. It reminds me somewhat of the “secular cycles” that Turchin outlined in War and Peace and War, particularly the Father/Son dynamic that lead to “imperiopathosis”.

Part of Petroski’s answer to this cycle is to place the study of failure close to the centre of the intellectual life of engineers. And I think that’s a sound idea. Some professions, such as law, enjoy deep, deliberately self-conscious institutional memories.

Profession Envy

My own profession is, perhaps optimistically, called “Software Engineering”. A common claim is that we shouldn’t be allowed to call ourselves engineers — our products fail more often, and more spectacularly, than the work of the ordinary civil or structural engineer.

Well, look. We’ve been comparing ourselves to a Platonic Ideal, not to actual engineering. At least if Petroski’s account is to be taken as fair. Petroski demonstrates that while it appears in principle that an engineer can design the “perfect” bridge, in actual fact the engineer faces a great deal of uncertainty. The problem domain remains unknown. In fact the solution domain is full of variance too. All of this can be obscured by the falsely confidence-inducing precision of numerical solutions to integral equations.

It might well be that a bridge, unlike most software, can be built exactly as specified on time and on schedule. But that’s a matter of building the bridge the right way; it remains to be seen whether the bridge will be the right bridge. Many iron bridges failed not because they were built badly — later rail carriages simply became too heavy.

Our cousin engineers give off the illusion of perfect mastery over unruly reality through safety margins. Designs are overbuilt to the extent that can be economically, physically and logistically justified. It’s not that civil or structural engineers are necessarily better engineers. Rather, the nature of dealing with physical matter enables them to create large safety margins to protect against unforeseen variance, mere chance and human error.

Software engineers don’t get to do that. We can’t make two copies of a piece of code and suddenly enjoy an improvement in code quality. Computers move pretty fast, so when we make mistakes, the mistake can happen a lot of times before it is corrected. And sometimes, as with the Ariane-5 launch, it only has to happen once.

So take heart, my fellow Software Engineers. The grass isn’t necessarily greener on the other side of the fence. There’s just more of it, in case some patches go brown.


Petroski’s writing is urbane and lucid and I found a lot of it thought provoking. Recommended, especially as a counterpoint and forerunner to Drift into Failure.

Comments Off on To Engineer is Human: The Role of Failure in Successful Design

Anatomy of Movement

Anatomy of Movement by Blandine Calais-Germain, is a damn good book.

Some time ago I bought, read and reviewed Lon Kilgore’s Anatomy Without a Scalpel. It’s a decent book, helpfully focused on strength trainees, and the chatty text makes it a relatively easy read.

Anatomy of Movement is simply much better. The drawings are crisp, the explanations are concise and there’s more coverage on the major areas of movement. Little dashes of humour in the drawings add a light hearted sense of fun.

Calais-Germain’s background is dancing. The book therefore looks at musculoskeletal from the point of view of how the parts move.

Each chapter follows a common structure: landmarks, movements, major elements or joints, connective tissue and muscles. Each chapter rounds out with clever diagrams demonstrating how muscles cooperate to perform certain common movements.

I will keep this review mercifully short. If you are an athlete or coach who wants to bone up on your anatomy, this is an excellent book.

Highly recommended.

Comments Off on Anatomy of Movement