Sunday, August 28th, 2011

Mort by Terry Pratchett
My rating: 5 of 5 stars

A Discworld book is a peculiar thing in itself, and a particularly peculiar thing to try to review. Being a series about a magical disc-shaped world standing on the backs of four elephants (who themselves stand on the back of the Great A’Tuin, a gant turtle), it is not something which takes itself too seriously. And when you have a specific book about Death wanting a little help and relaxation, the seriousness drops down into negative numbers. This book is anti-serious. Simply by placing it on a coffee table next to a copy of the very serious An Inconvenient Truth can cause the Earth’s temperature to drop by three degrees.*

A book review, on the other hand, (even the poorly-written ones that I’m responsible for) is an inherently serious thing. In a book review, I’m expressing my Opinion about a piece of Art. In the very best reviews, I’m attempting to make an Argument to convince you that my Opinion is Correct. That sort of thing is incompatible with a book where Death really likes kittens and has a man-servant named Albert.

So, instead, I will merely point out that Sir Terry Pratchett has been knighted. By the Queen. For writing. So of course his books are going to be fantastic. (Yes, this book review commits an appeal to authority.) In addition, the Discworld’s Death is simply one of the finer anthropomorphic personifications in all of literature (indeed, he is one of the finer mythological entities in all of literature). In addition to being fearsome and otherwordly, he is also surprisingly human. It’s a tough thing to pull off.

I will also point out (since this is technically a review of the audiobook) that reader Nigel Planer is brilliant. I find myself slightly compulsively doing an impression of Nigel doing Mort doing an impression of Death’s smallcaps: “NO!” (only in smallcaps). It’s been much fun.

But just a great book in a great series. The only reason I’m giving this 5 stars is because I’m physically unable to give it 6.

* A side effect of my reading a Terry Pratchett book is that I start imitating his style without being able to help it; but my imitations are always particularly poor.

Sunday, August 21st, 2011

The God Engines
The God Engines by John Scalzi
My rating: 3 of 5 stars

The God Engines

I knew this would be dark fantasy…but jiminy. Dark almost feels like the wrong word. Maybe “harsh fantasy” would be a more appropriate descriptor. Because it’s certainly that. Some of the sequences were really tough to read (or, in my case, listen to): violent torture, grisly human sacrifice, and an ending that is most assuredly not a happy one all combine to make this a rather disturbing tale.

Which isn’t to say that it’s bad. It’s not. Not at all. The world is imaginative and well-developed (if harsh) and the plot follows logically given that world development. The writing itself is excellent and vivid and other positive adjectives. The protagonists and his associates are sympathetic while being horrid, which is a pretty neat trick that Stephen King could stand to learn.

Fortunately, for all of the violence and horrors, this is still a fantasy book rather than a horror one. So it isn’t apt to cause nightmares or anything. I think the worst thing about it is that it can probably serve as a mirror for a lot of people where we learn that the real monster is ourselves! But that’s sort of what literature is supposed to do. So that’s really just a job well done.

All in all, this is another excellent piece by Scalzi and a pretty good example of the sort of thing that’s been making him such a force in contemporary SF.

Microsoft® SQL Server® 2008 Internals
Microsoft® SQL Server® 2008 Internals by Kalen Delaney
My rating: 4 of 5 stars

During the course of my work day, I spend the bulk of my programming time working with SQL Server: writing queries to retrieve data from our expansive scheme, creating or updating records, or designing new table structures to support exciting features. Recently, I’ve added “making slow SQL go faster” to the list of things I expect to be able to do well.

Towards that end, I’m attempting to immerse myself in the technicalities of how SQL Server does what it does and how my choices as a developer can affect that. In addition to taking classes and reading books specifically about query tuning and optimization, I thought an internals book would provide some much-needed context about what really happens behind the scenes.

It’s still too soon to tell if that will pan out but if it doesn’t, it would be no fault of this book. This book is an excellent deep dive into how SQL Server manages all of that precious data we shove into it every day.

While being highly technical and detailed, it’s also approachable. The style is easy to read and it’s filled with diagrams and pictures that help a brain figure out what’s going on. I can now have intelligent conversations about how inserts into clustered indexes are managed (down to the page level) and how the query optimizer will choose between competing plans to handle a lot of joins. I know what’s going on when I type “select *” in ways that I never did before [Ed: I’d never type “select *”…].

That said, the most beneficial part of this book is how it describes the functions available in SQL Server for me to see how my own data is organized. It explains the various methods available for me to see how pages are allocated across indexes, what’s currently in my plan cache, what physical operations the database has been performing lately, and more. I’ve been keeping a file of useful queries to run and I expect I’ll be using this file for the next several years.

If this book has any faults, it’s largely that it skips some of the newer features that we use a lot. As an example, I could really use more information about XML parsing in general (and XML indexes in particular) and how the database feeds data to the CLR when running CLR code. Still, these are small complaints since the majority of my workload uses the bread and butter stuff that this book describes.

I think (and hope?) that reading this book will play a part in moving me from being an adequate or advanced SQL Server developer to an expert one.

Thursday, August 11th, 2011

<script type="text/javascript">
function addBlink() { 	
   var blinks = document.getElementsByTagName("blink");
   var timeoutLength = 300;

   var blink = function () {
      for (var i = 0; i < blinks.length; i++) { 
         var b = blinks[i]; = ( === "visible" ? "hidden" : "visible");

      setTimeout(blink, timeoutLength);

   if (blinks.length > 0)
      setTimeout(blink, timeoutLength);

window.onload = addBlink;

Offered without comment except to note that there’s no reason to expect this to work on non-modern browsers. I don’t have that kind of time.

Friday, August 5th, 2011

The Hound of the Baskervilles
The Hound of the Baskervilles by Arthur Conan Doyle
My rating: 4 of 5 stars

I’ve noted previously that Sherlock Holmes works better as a short story than as a novel. A novel is simply too long, so it requires Sherlock to stand around going “Huh?” for most of its length whereas a short story allows him to jump in and solve the case quickly. Since Sherlock’s skills are mostly superhuman, the novel format just doesn’t seem to be as true to the character.

In the first Holmesian novel, A Study In Scarlet, Doyle attempted to solve the problem by having the second entire second half of the book be an elaborate back story in the American West. This was problematic both because it was an abrupt shift in setting, style, and (frankly) quality and because the first half of the novel was still too long for Holmes to not have figured out the case.

This second novel-length work neatly cuts this Gordian Knot by simply removing Holmes from the scene of the action and being a story that largely revolves around the revered Dr. James Watson. Since Watson has always been the viewpoint character, this shift in style allows the mystery to build in a natural way. It also allows Watson to develop as a force of his own. I think he’s been given short shrift up until now, but Hound shows us that he’s been a hero all along.

The story itself was well-paced, entertaining, and interesting. The novel-length allowed Doyle to add a cast of neighbors and servants who wander in and out of the story with varying degrees of suspiciousness. There’s even a butler who may-or-may-not-have-did-it.

All in all, this is an excellent example of the canon and a worthy novel to be considered classic.