I finished Ben H. Winters’ The Last Policeman; it’s one of those “wish I had written it” books. A few passages here and there don’t quite ring true, but then you hit things like this:
I was twelve years old and Nico was only six when we moved from the house on Rockland to the farmhouse on Little Pond Road, halfway to Penacook. Nathanael Palace, my grandfather, only recently retired from forty years in banking, had a wide range of interests: model trains, shooting, building stone walls. Already by prepubescence a bookish and private person, I was uninterested to varying degrees in all these activities but was forced by Grandfather to take part. Nico, a lonesome and anxious child, was avidly interested in all of them and rigorously ignored. He once got a set of World War II-era model airplanes, and we sat in the basement, the three of us, and Grandfather harangued me for an hour, refusing to let me quit until I’d successfully attached both wings to the body, while mechanically-minded Nico sat in the corner, clutching a handful of tiny gunmetal gray airplane parts, waiting for her turn: at first excited, then restlessly, and finally in tears.
Very much looking forward to the next two in the planned trilogy.
Brian Kernighan’s new book D is for Digital has arrived. As the subtitle says, it is, “What a well-informed person ought to know about computers and communications” (sort of like “Physics for presidents”). As you’d expect, the writing is crisp and clean; my only complaint is that it isn’t longer.
You wouldn’t know it from this blog, but I actually do still read books. In particular, I just finished Terrence Ryan’s Driving Technical Change: Why People On Your Team Don’t Act on Good Ideas, and How To Convince Them They Should. (Full disclosure: I’ve done two books with its publisher, Pragmatic, and am editing a third right now.) Ryan divides skeptics into the uninformed, the herd, the cynics, the burned, the time-crunched, the boss, and the irrational, then introduces several persuasion strategies and explores how they’ll work with each group. It isn’t rocket science, but it is well organized, hype-free, and useful. Recommended.
I noticed a book on the shelves at Scimatic last week called Small Memory Software: Patterns for systems with limited memory, by Noble and Weir. It took me a couple of minutes to realize why it seemed familiar: I reviewed it for Doctor Dobb’s Journal when it first came out. The topics are what you’d expect from the title—memory limits, adaptive compression, copy-on-write, and so on.
I liked the book when it first came out, and like it even more now. What struck me leafing through it, though, is how many of the patterns it presents are now important for large-scale computing because of the explosion in data set sizes over the past decade. (See for example Titus Brown’s recent post “The sky is falling! The sky is falling!“.) Nobody’s data fits in RAM any more, and everyone managing a data center has to worry about power consumption. In a way, it reminds me of how cosmology and subatomic physics are intimately intertwined.
I’m very pleased to announce that I’ve just signed a contract with Pragmatic to edit a book on the architecture of open source applications. Our goal is to describe the architectures of some moderately complicated pieces of software, both because they’re interesting in their own right, and to show readers how experienced software designers see the world. Contributors will explain:
- What are the major elements of the application?
- How do they interact?
- What alternatives did you consider and discard?
- What tradeoffs did you make?
The current list of contributors and topics is included below; I’m very excited to be working on this, not least because all of the author royalties will be donated to Amnesty International.
|Battle for Wesnoth
||Bill Hoffman and Ken Martin
||Titus Brown and Rosana Canino-Koening
||Doug Cutting and Tom White
||Juliana Freire, David Koop, and Claudio Silva
||Berk Geveci and Will Schroeder
||Eric Miraglia and Adam Moore
Announcements, Architecture of Open Source Applications, Books
After my PyCon lightning talk about software architecture, I got a couple of inquiries along the lines of, “So what kind of description are you actually looking for?” Michael Nygard’s chapter in Beautiful Architecture is a good example, but an even better one is Philip Ball’s wonderful book Universe of Stone: A Biography of Chartres Cathedral (subtitled Chartres Cathedral and the Invention of the Gothic in paperback for some reason). It both describes and explains one of the world’s great buildings, diving into minute detail where necessary, then zooming back to show how all the pieces (intellectual, historical, religious, and technological) fit together. Nothing like it exists for any piece of software—at least, nothing I’ve ever seen.
71 people have answered our questionnaire about Practical Programming. Here’s some of what they told us; I’ll summarize the questions about use of online programming resources and what we could do differently next time in a subsequent post.
Books, Learning, Practical Programming, Python
It’s been a busy three months—I was dropping balls left and right even before I got sick. In amongst all of it, though, I managed to get through a few books.
The first, and most disappointing, was Mills’s Practical Formal Software Engineering. It’s meant to be a textbook on formal methods of software development (think Z, statecharts, and all that), but it reads like the notes someone might take in such a course if the second half was rushed through. The first few chapters on counting and basic logic are littered with gnomic utterances (“Leibniz observed that all precise reasoning is like this.” Did he? When, and why, and most importantly, so what?). The middle chapters on UML, Z, and OCL are probably only comprehensible to someone who already knows what’s in them, and while the extended exercises at the end might be useful, I suspect most people will, like me, have lost faith by then.
Next is IEEE Computer Society Real World Software Engineering Problems: A Self-Study Guide for Today’s Software Professional. This is meant for people studying toward the IEEE’s certification exams for software engineers, and is definitely old school in its approach. A lot of the questions have to do with process (I really should use a capital ‘P’ there to reflect the reverence with which this book treats it), engineering ethics, and the like. It isn’t the kind of software development I do, but that’s more a reflection on me than on the book, and I expect to mine a lot of future exam questions from it.
Number three is Qian et al’s Software Architecture and Design Illuminated. It’s in the same family as the other software architecture books I tried, and discarded, when I was teaching a course on the subject at U of T. The authors do a good job of explaining the basics of UML, and of taxonomizing and describing a variety of architectures, but dammit, where are the real-world examples? If you were writing a book about mid-century American architecture, it would be littered with photos, sketches, and blueprints; no such book exists (yet) for software architecture. If anyone wants to take a crack at it, please let me know—I’ll be your first and best customer