George V. Reilly

Review: The Mercy of the Night

Title: The Mercy of the Night
Author: David Corbett
Rating: ★ ★ ★ ★
Publisher: Thomas & Mercer
Copyright: 2015
Pages: 431
Keywords: thriller
Reading period: 5 March–2 April, 2016

Jacqi Garza was abducted when she was eight. She got away but her life has gone far off course in decade since. Now she’s the prime witness to a murder. Phelan Tierney, a former lawyer, has taken her under his wing, but she’s not easy to help.

This is dark and disturbing, if ultimately hopeful. It’s a portrait of a town in distress and of some of its citizens. Some are still trying to make a difference, while others are too lost in their own pain and continue.

New 520 Floating Bridge

I moved to Seattle in 1992 and spent the next 13 years commuting to the Eastside, largely across the SR-520 Floating Bridge. Ten of those years were at Microsoft; the rest, elsewhere in Redmond and Bothell. It was im­me­di­ate­ly obvious that 520 needed more capacity. Only now, 24 years later, are we getting that extra capacity: a new bridge that will replace the old, worn-out bridge.

The old bridge has only two lanes in either direction and there’s no shoulder. If anything happens, like a flat tire or a stalled car, one lane im­me­di­ate­ly grinds to a halt. The second lane promptly jams up as everyone merges into it. The oncoming continue.


Ad­ver­tis­ing would make you think that acne is a problem only for teenagers. Not true. It’s never entirely gone away for me. I often find spots on my nose. Less often, on my chin or forehead. I’ve even had a few spots inside my ears.

For some reason, I woke up with three spots this morning: on the side of my nose; under my jawline, hidden by my beard; and on the back of my neck, near the hairline. Go figure.

Migrating to a New Mac

I got a new MacBook Pro on Monday: a 13" Retina with 16GB RAM and 500GB SSD, which doubles both the RAM and the disk capacity of its late-2013 pre­de­ces­sor. 8GB wasn’t really enough for software de­vel­op­ment. By the time you run Chrome and PyCharm and Docker, you don’t have much RAM left. And I was constantly having to run Grand Per­spec­tive to clean up disk space.

For the first time, I used the Migration Assistant and a Thun­der­bolt cable to transfer settings from the old laptop to the new. I was pleasantly surprised at how well it worked. In one hour, the new machine had all the files and just about all continue.

Review: Trap Line

Title: Trap Line
Author: Carl Hiaasen & Bill Montalbano
Rating: ★ ★ ★ ★
Publisher: Open Road Media
Copyright: 1982
Pages: 224
Keywords: crime
Reading period: 10–17 March, 2016

The drug smugglers who bring their mer­chan­dise in through the Florida Keys need some local expertise and decide that Breeze Albury is their man. Although he has no desire to be involved, they force him to take part. When they need a convenient fall guy and set him up, he turns on The Machine and on the corrupt local cops. Revenge is sweet.

Although it’s set in Florida, this early Hiaasen novel lacks the humor of his more famous books. Still, Breeze is an engaging character and the continue.

Review: Run Jane Run

Title: Run Jane Run
Author: Maureen Tan
Rating: ★ ★ ★ ★
Publisher: Warner
Copyright: 1999
Pages: 292
Keywords: thriller
Reading period: 13 March, 2016

Sequel to A.K.A. Jane.

Jane Nichols’ parents were murdered in front of her on a Greek hillside when she was six. An MI5 operation triggers some dormant memories and she starts to suspect who was re­spon­si­ble. An attempt on her life confirms that she’s not imagining it. She returns to her life in Savannah to lay a trap.

Another en­ter­tain­ing entry in the Jane series. The last, presumably, since it’s nearly 20 years old.

Preparing Bloomsday Scripts

Bloomsday is less than three months away and the Wild Geese Players need to start rehearsing soon. I made a start on the script at the end of January, but didn’t pick it up again until today.

Three years ago, we completed Ulysses, having started in 1998. Two years ago, we started over, reading chapters 1 and 4 in­ter­leaved. In Chapter 1 (Telemachus), Stephen Dedalus arises in the Martello Tower at Sandymount and feuds with Buck Mulligan. Chapter 4 (Calypso) takes place at the same time as Chapter 1, wherein Leopold Bloom breaks his fast.

Last year, we in­ter­twined chapters 2 and 5. Chapter 2 (Nestor) takes place at the school where Stephen teaches; he continue.

Caucus 2016

The Washington state Democratic Caucus was held today. The final totals aren’t in yet but Bernie Sanders beat Hillary Clinton by a nearly 3:1 margin around the state. Our own precinct, SEA 11-1945, had Sanders 41, Clinton 26, Undecided 2. That translates to 4 Sanders delegates and 2 Clinton delegates in the next level of caucusing.

Emma and I both voted for Sanders. We believe that Sanders represents much-needed change in the party and in the nation. Clinton is un­doubt­ed­ly one of the most qualified candidates ever, with an ex­tra­or­di­nary résumé and a high degree of competence. She’s also too tied to the status quo for my liking.

However, unlike some Sanders partisans, we’ll readily continue.


Despite being a bona fide per­for­mance expert—I spent a couple of years as the Per­for­mance Lead for Microsoft’s IIS web server product about 15 years ago—I still forget to measure rather than assume.

I wrote some code today that imported nearly 300,000 nodes into a graph from a 500MB XML file. The code was not par­tic­u­lar­ly fast and I assumed that it was the XML parser. I had been using the built-in streaming parser, cEle­ment­Tree iterparse. I assumed that using the lmxl iterparse would make the code faster. It didn’t.

Then I had the bright idea of tem­porar­i­ly disabling the per-node processing, which left only the XML parsing. Instead of handling 200 continue.

Raising IOError for 'file not found'

I wanted to raise Python’s IOError for a file-not-found condition, but it wasn’t obvious what the parameters to the exception should be.

from errno import ENOENT

if not os.path.isfile(source_file):
    raise IOError(ENOENT, 'Not a file', source_file)
with open(source_file) as fp:

IOError can be in­stan­ti­at­ed with 1, 2, or 3 arguments:

IOError(errno, strerror, filename)
These arguments are available on the errno, strerror, and filename attributes of the exception object, re­spec­tive­ly, in both Python 2 and 3. The args attribute contains the verbatim con­struc­tor arguments as a tuple.
IOError(errno, strerror)
These are available on the errno and strerror attributes of the exception, re­spec­tive­ly, in both Python 2 and 3, while the filename continue.
Previous » « Next