Monday, May 11, 2009 
The Steep Approach to Garbadale
Title: The Steep Approach to Garbadale
Author: Iain Banks
Rating: 4 stars out of 5
Publisher: Abacus
Copyright: 2007
Pages: 390
Keywords: fiction
Reading period: 10–11 May, 2009

Alban McGill has a strained relationship with his extended family, the Wopulds, maker of Empire, one of the world's bestselling games for more than a century. They are being drawn together at their remote Scottish estate, Garbadale, to decide whether to sell the company to a large American company. His cousin Sophie will be there, the one he's loved from afar for twenty years, since their affair was forcibly broken up.

Banks weaves together multiple strands of Alban's life, the torrid adolescent love affair, his mother's early death, the renunciation of his career as a globetrotting family executive, the odd relationship with his current girlfriend, and the strain of the big reunion. Alban is a likeable if confused protagonist.

Enjoyable.

posted on Monday, May 11, 2009 7:20:31 AM (Pacific Daylight Time, UTC-07:00) 
#    Comments [0]
Sunday, May 10, 2009 
The Revolution Business
Title: The Revolution Business
Author: Charles Stross
Rating: 4 stars out of 5
Publisher: Tor
Copyright: 2009
Pages: 320
Keywords: fantasy
Reading period: 6–9 May, 2009

Book #5 in the Merchant Princes series, sequel to The Merchants' War.

The U.S. Government have become really pissed off with the world-walking Clan, and send a small nuke into the Gruinmarkt. It misses the clan but takes care of the new king who was waging war on them. Miriam is pregnant with a royal child and manages to parlay that into being crowned queen-widow. The conservative faction in the Clan view the nuke as a deadly insult and want revenge.

This is another heady mixture of feudal intrigue, U.S. spycraft, politics and economics. Stross is very good at taking ideas and extrapolating them in interesting ways. Most of the Clan were only slightly more forward-thinking than the rest of their feudal world. Miriam's arrival and the discovery of new worlds they can walk to has overturned many long-held assumptions about their unique way of life. Matters are coming to a boil and will be resolved in the sixth book of the series.

posted on Monday, May 11, 2009 6:44:31 AM (Pacific Daylight Time, UTC-07:00) 
#    Comments [0]
Saturday, May 09, 2009 
Floating Bridge in the Van Dusen Gardens, Vancouver

We came up to Vancouver, BC for the weekend. This morning, we visited the Van Dusen Botanical Garden for the first time. In a relatively small area, they've put together many specialized gardens: rhododendrons, a maze, heathers, redwoods, roses, gingkos, and more. In Seattle terms, it has elements of the Arboretum and the Rhododendron Garden. Well worth a visit, especially on a beautiful May morning.

This afternoon, we drove down to Ladner to visit my great-uncle Dick and his wife Margaret. They moved into a retirement home in March. Dick has visibly failed since we last saw him in September. Margaret remains remarkably spry and fit, but is nearly blind.

Tonight we are off to a party, the proximate excuse for our trip.

posted on Sunday, May 10, 2009 1:55:13 AM (Pacific Daylight Time, UTC-07:00) 
#    Comments [0]
Friday, May 08, 2009 
Wyatt's Hurricane
Title: Wyatt's Hurricane
Author: Desmond Bagley
Rating: 4.5 stars out of 5
Publisher: Fontana
Copyright: 1966
Pages: 254
Keywords: thriller
Reading period: 5–8 May, 2009

Wyatt is a meteorologist working with the U.S. Navy on the small Caribbean island of San Fernandez. He's convinced that Hurricane Mabel will change course and hit San Fernandez. Trouble is, he can't convince the local dictator, Serrurier, to evacuate the low-lying capital because the rebels have risen.

This is a fine early modern thriller by Bagley. Aside from the improbability of an insurrection and a major hurricane happening simultaneously, it's quite believable. The tension mounts as the weather worsens, people act in character, and no one has improbable talents. Wyatt is naive and idealistic and finds himself shocked by the realpolitik of the rebel leader, Favel.

Recommended.

posted on Friday, May 08, 2009 7:14:20 AM (Pacific Daylight Time, UTC-07:00) 
#    Comments [0]
Thursday, May 07, 2009 
Windows 7 x64 running in Mac VirtualBox 2.2.2

I ported Vim to Win64 but I don't have a convenient Win64 system to test it on.

I decided to install the Win64 build of the Windows 7 RC on VirtualBox, which has supported 64-bit guest operating systems since version 2.0.

It worked without problems on my MacBook Pro. I used VirtualBox's Virtual Media Manager to mount the Windows 7 ISO and installed from that. See also the handy guide. (Why does Windows 7 offer a choice of upgrading from a previous version of Windows on a virgin disk?) After completing the installation of the operating system, I installed the Guest Additions for mouse pointer integration and other goodies.

As always with VirtualBox VMs on my MacBook, I had to fix the Network settings to work over WiFi. When the VM is turned off, go to Settings, choose the Network tab. Change “Attached to” from “NAT” to “Bridged Adapter” and “Name” from “en0: Ethernet” to “en1: AirPort”. Tip: to get a right-click without a mouse, place two fingers on the trackpad and click the trackpad button, or Shift+F10.

I tried installing the Win64 build of Win 7 on my Win32 Vista desktop box at work. The host system bluescreened within seconds of starting the installer! I filed ticket 3963.

I had inadvertently installed the Win32 build first on my work system. That worked fine. It also seemed to have snappy disk I/O. When I unzipped the Win64 Vim binaries (not having realized yet that I had the Win32 Win 7), it was slower than unzipping in the host operating system, but not unreasonably so. On my MacBook, the details pane from the Win 7 zip extractor said that it was running at a mere 260KB per second, which is pitiful. It certainly wasn't that slow when installing the OS onto the virtual disk.

posted on Thursday, May 07, 2009 7:01:14 AM (Pacific Daylight Time, UTC-07:00) 
#    Comments [0]
Wednesday, May 06, 2009 
Dominoes Falling

A month ago, Vermont and Iowa passed gay marriage laws. Today, Maine and New Hampshire did the same. The Maine Governor has already signed it into law. The NH legislature passed a law, but it's possible their governor will veto it.

It's as if there were a pro-gay marriage backlash after the anti-gay marriage Proposition 8 passed in California last year. Courts and legislatures are realizing the fundamental unfairness of denying the benefits of marriage to all committed couples. The sky didn't fall when Massachusetts legalized gay marriage five years ago.

There's no immediate prospect of a gay marriage law being enacted in Washington State. Last month, the state legislature passed a law extending all of the state-given benefits of being married to registered domestic partners. There was some talk amongst the Religious Right of a ballot initiative to repeal this DP benefits law, but there seems to be little appetite for it. 40–45% of Washington state voters favor gay marriage, while another 20–25% favor domestic partnerships.

In other news, today is the ninth anniversary of my wedding to Emma. Our marriage doesn't feel at all threatened by events in New England.

posted on Thursday, May 07, 2009 6:35:37 AM (Pacific Daylight Time, UTC-07:00) 
#    Comments [0]
Tuesday, May 05, 2009 
Nightingale's Lament
Title: Nightingale's Lament
Author: Simon R. Green
Rating: 3.5 stars out of 5
Publisher: Ace
Copyright: 2004
Pages: 216
Keywords: fantasy, noir, humor
Reading period: 4–5 May, 2009

Sequel to Agents of Light and Darkness.

A mysterious chanteuse's songs are to die for at an exclusive club in the Nightside: her fans are committing suicide. John Taylor investigates.

Entertaining, though the writing style is clumsy.

posted on Wednesday, May 06, 2009 5:58:22 AM (Pacific Daylight Time, UTC-07:00) 
#    Comments [0]
Monday, May 04, 2009 
The Merchants' War
Title: The Merchants' War
Author: Charles Stross
Rating: 4 stars out of 5
Publisher: Tor
Copyright: 2007
Pages: 374
Keywords: fantasy
Reading period: 2–4 May, 2009

Book #4 in the Merchant Princes series, sequel to The Clan Corporate.

The Clan share a mutation that allows them to walk between worlds, including theirs and ours. It's made them fabulously wealthy in their feudal world, though much despised by the old nobility. The crown prince has just seized the throne and is on a witch-hunt. In our world, the US government considers them narco-terrorists and is hunting them too. Miriam, the main protagonist, is trapped in a recently discovered third world, a Victorian police state. And a fourth world is found in this book, bereft of people.

The Clan are besieged from all sides and are desperately fighting back. They're smart, well-armed, and well-prepared, but their numbers are low.

Another very entertaining book from Charlie Stross, best read in sequence.

posted on Tuesday, May 05, 2009 5:04:20 AM (Pacific Daylight Time, UTC-07:00) 
#    Comments [0]
Sunday, May 03, 2009 
Max

I blogged before that I had used Exact Audio Copy to rip most of my CD collection to the lossless FLAC format. I haven't ripped any more CDs since then, as the old Windows laptop that I was using had severe problems.

We went to the Columbia City Beatwalk on Friday night. I liked the Correo Aereo duo so much that I bought their CD.

It was time to figure out how to rip a CD to FLAC on the Mac. I found some hints that it was possible to run Exact Audio Copy in a virtual machine or under Wine, but neither choice appealed to me.

One guide recommended xACT over Max on the grounds that xACT will tell you exactly where an error occurs on a CD, should one occur, while Max only gives a percent encoded successfully. What you do if an error occurs was not described.

I tried xACT first. It's a thin wrapper around various command-line utilities. The guide details a clunky process to rip a CD to FLAC.

Then I tried Max and I was greatly impressed. The UI is polished for an open-source app. It rips to WAV, then encodes to multiple formats if you want. It can also transcode over 20 audio formats. Max is multithreaded: it can be encoding a WAV from one track to FLAC and MP3 simultaneously, while ripping the next track from the CD. Exact Audio Copy rips a track to WAV, then encodes to FLAC, without overlapping. Net result is that Max rips a CD about four times faster than EAC. A lot has to do with the hardware. My five-year-old Windows laptop was not high-end even when brand new. My two-year-old Core 2 Duo MacBook Pro was top of the line.

I no longer have to run a Python script to convert all the FLACs to MP3s. Max puts both sets of files in the same folder, so I had to write a small script to split them into two separate trees. Otherwise, I'm very happy with Max.

posted on Monday, May 04, 2009 6:46:03 AM (Pacific Daylight Time, UTC-07:00) 
#    Comments [0]
Saturday, May 02, 2009 
The Big Sleep
Title: The Big Sleep
Author: Raymond Chandler
Rating: 4.5 stars out of 5
Publisher: Vintage
Copyright: 1939
Pages: 234
Keywords: crime
Reading period: 2 May, 2009

General Sternwood is old, rich, and crippled, with two wanton daughters. Philip Marlowe is brought in to deal with a blackmailer. Within hours, he is tripping over dead bodies, live dames, tough guys, and skeletons in closets.

Chandler's famously convoluted story holds up well seventy years later. His style and his stories are much imitated, but retain their freshness. Marlowe lives by his own code of honor, which keeps him going in his dirty, no-good world. He cracks wise and rarely carries a gun while he does what needs doing.

Recommended.

posted on Sunday, May 03, 2009 6:45:59 AM (Pacific Daylight Time, UTC-07:00) 
#    Comments [0]
Friday, May 01, 2009 
The Grounds
Title: The Grounds
Author: Cormac Millar
Rating: 4 stars out of 5
Publisher: Penguin
Copyright: 2006
Pages: 367
Keywords: crime
Reading period: 26–30 April, 2009

Séamus Joyce, a former senior civil servant, returns to Dublin from self-imposed exile in Germany. He has been engaged as a consultant by Finer Small Campuses to evaluate his alma mater, King's College Dublin, a third-rate, third-level institution.

Millar, himself an Irish academic, satirizes both Irish higher-level education and the brave new world wrought by the Celtic Tiger economy. It's a different world from the depressed, inward-looking Dublin that Joyce moved to as a student. The plot moves efficiently and some of the characters are, well, characters. Not Joyce though: he's insecure and introverted, still recovering from the events that led to the breakup of his marriage and losing his old position.

Amusingly, King's College Dublin was invented by Millar's mother, the novelist Eilís Dillon in her 1956 novel, Death in the Quadrangle.

posted on Friday, May 01, 2009 7:31:44 AM (Pacific Daylight Time, UTC-07:00) 
#    Comments [0]
Thursday, April 30, 2009 
http://4.bp.blogspot.com/_coFoAhVunLs/RyTM3WKQROI/AAAAAAAAALM/za9o4PekL3M/s400/ulysses+redux.jpg

I just sent out the following press release.

The Wild Geese Players of Seattle will perform a staged reading of Circe, chapter 15 of James Joyce’s Ulysses, on Saturday, June 13th, 2009, 1:30-4pm at the University Bookstore, 4326 University Way NE, Seattle, WA 98105. Donations towards costs of posters and props are welcome.

It is late on the night of June 16th, 1904, and Leopold Bloom has followed Stephen Dedalus into Dublin's red-light district. Bloom has a paternal concern for Stephen's welfare and knows that Stephen is now very drunk. In the Circe chapter of Homer's Odyssey, the witch-goddess Circe transforms Odysseus' crew into swine. In Joyce's version, Bloom will have hallucinatory encounters with the denizens of Nighttown and confront some of his deepest fantasies and fears, before emerging victorious. This chapter is extraordinarily long. We will perform the first half this year and read the second half in 2010.

The Wild Geese have been staging readings of Ulysses and other Irish literature in Seattle since 1998. We are a diverse group of people with an interest in Irish literature, and most of us are either Irish-born or have Irish connections. More generally, Wild Geese refers to the Irish diaspora, after the original Wild Geese, exiled Irish soldiers and their descendants who served in European armies in the 16th–18th centuries.

May 1st, 2009.

Edit: May 5th, 2009: Updated time: 1:00–3:30pm.

posted on Thursday, April 30, 2009 7:16:58 AM (Pacific Daylight Time, UTC-07:00) 
#    Comments [0]
Wednesday, April 29, 2009 
Celebrating Emma's 50th at the Georgian restaurant in the Fairmont

Emma turned 50 today. She was a mere (late) thirty-something when I met her.

We had dinner at The Georgian in the classic Fairmont Olympic hotel. Until a few years ago, it was the Four Seasons. The Georgian is in an old-fashioned dining room with soaring ceilings that mutes the conversation. The waiters were attentive and made us feel welcome.

The food is not outrageously expensive—we both chose to have the prix fixe dinner at $49. I had the wine for an additional $20. The presentation was superb and we both enjoyed the food. An asparagus salad, followed by chicken wrapped in apple-smoked bacon, and the black-and-white soufflé. Scallops were an alternative to the chicken, but didn't appeal to either of us.

Happy Birthday, my love.

One week from today, our ninth wedding anniversary.

posted on Thursday, April 30, 2009 6:15:14 AM (Pacific Daylight Time, UTC-07:00) 
#    Comments [1]
Tuesday, April 28, 2009 
Refinancing

I mentioned last month that we were refinancing our house. We signed the escrow papers today. Aside from the snafu over which Eastside Starbucks to meet in, it went without a hitch.

The new mortgage kicks in on June 1st.

posted on Wednesday, April 29, 2009 5:28:35 AM (Pacific Daylight Time, UTC-07:00) 
#    Comments [0]
Monday, April 27, 2009 
Mobile Device Browser File

In the late 90s when I worked on the classic Active Server Pages dev team, I tried to convince one of the Program Managers that we should make regular updates to browscap.ini, the file that described browser capabilities. He wanted no part of it.

I was pleasantly surprised to learn via Hanselminutes that Microsoft has stepped up to its responsibilities and is now shipping the Mobile Device Browser File on CodePlex. Over 400 mobile devices are defined, with 67 distinct capabilities.

The Hanselminutes podcast is an interesting discussion of the Mobile Web and designing a different experience for mobile browsers. There's more to it than the small screen. You want to think about the scenarios in which the site is likely to be used. The user is probably traveling: give directions. Make phone numbers dialable by using the tel: scheme. Think about server round trips.

posted on Tuesday, April 28, 2009 6:29:51 AM (Pacific Daylight Time, UTC-07:00) 
#    Comments [0]
Sunday, April 26, 2009 
The Star Fraction
Title: The Star Fraction
Author: Ken MacLeod
Rating: 4 stars out of 5
Publisher: Tor
Copyright: 1995
Pages: 320
Keywords: speculative fiction
Reading period: 19–26 April, 2009

A few decades hence, Britain has devolved into balkanized ministates. A Trotskyite, space-loving mercenary inadvertently awakens an AI and sparks the revolution. The plot is unsummarizable, but it's entertaining and complex, mixing action, political theory, cyberpunk, and romance.

posted on Sunday, April 26, 2009 8:19:14 PM (Pacific Daylight Time, UTC-07:00) 
#    Comments [0]
Saturday, April 25, 2009 
Ubuntu Netbook Remix

I spent much of today playing around with the brand-new Jaunty/9.04 release of the Ubuntu Netbook Remix on my Eee 1000H netbook. Previously I had run the Hardy/8.04 version of Ubuntu Eee on this system. I had never bothered to update to Intrepid/8.10, but now that UNR is fully supported by Canonical, I thought it was time to try it out.

I downloaded the UNR image last night onto my Mac, and transferred the image to a 1GB USB stick this morning. (The Mac instructions required a little tweaking.)

I spent some time running the Live Image first, before clean installing. Everything worked seamlessly except the microphone. WiFi worked, the webcam worked, sound playback worked, the touchpad was configured in a sane way. All of these were problems for me when I first installed Ubuntu Eee. That they worked now was not too surprising, since the Asus Eee 1000 is a Tier 1 supported system, but it's nice to get the confirmation.

One of the first things to strike me about the Live Image was how nice the fonts looked. I'm sensitive to typography and the default font hinting settings on previous versions of Ubuntu have always looked like crap: spindly and awkward. I found it hard to take seriously an operating system that looked so unprofessional. The Jaunty font hinting yields thicker letters, which look a lot more like the Mac's shape-preserving font rendering, though not as good. The main exception, oddly enough, is the font used in the netbook-launcher, which looks jagged.

I went ahead and installed Jaunty. The installer offered me an option to install Jaunty side-by-side with the existing operating systems, Ubuntu Eee 8.04 and Windows XP. I wanted to overwrite the existing Ubuntu partition and I had to jump through several hoops to make that happen. The partition editor is pretty and an improvement over GParted. The timezone picker is also very slick, with a clickable world map.

Partitioning aside, the installation was quick and painless. JPierre has a useful guide to some issues that he ran into.

I've spent most of the afternoon and evening installing various applications that I care about. Sleep and hibernate just work now. Sleep worked before but there were always some obnoxious errors when going to sleep.

As a hardcore Vim user, I use keyboard shortcuts a lot. Alt+Tab (or Apple+Tab) is my primary method for switching between applications on Windows, Linux, and Mac. I had never found a keyboard shortcut for switching back to the netbook-launcher: I'd always have to click the Ubuntu logo in the top-left corner of the desktop. Buried in the Keyboard Shortcuts Preferences, I finally found Ctrl+Alt+Tab, which shows a popup, and Ctrl+Alt+Escape, which switches immediately.

Other random notes:

  • I had to rediscover ntfs-config to automount my NTFS drives.
  • Useful apps like Skype can be installed from the Medibuntu repository.
  • It's necessary to run dropbox start -i before Dropbox will download the real daemon and actually start running.

I have a Linux machine at work that runs Kubuntu. I kicked off the upgrade from Intrepid to Jaunty yesterday before I left. I'll find out on Monday how well that worked.

posted on Saturday, April 25, 2009 8:05:16 AM (Pacific Daylight Time, UTC-07:00) 
#    Comments [2]
Friday, April 24, 2009 
Sprints

Scrum and Agile revolve around sprints. At my previous employer, I spent two years working in one-week sprints. At my current job, I've spent another two years working in four-week sprints.

Each has their own rhythm. We ran the one-week sprint from Wednesday to the following Tuesday. Wednesday morning, we'd demo the previous week's work and we'd plan, drawing up a series of task cards, measured in hours. With a one-week horizon, you couldn't go very far off track. You can't get a huge amount done in a week either. You need to have a bigger picture in mind that transcends several weeks. We released every couple of months.

On the first Monday of the four-week sprint, we review the sprint backlog and break down the features into finer grained tasks. In the fourth week, we look at the product backlog and prioritize the features to go on to the next sprint's backlog. Features are measured as Small (1 week), Medium (2 weeks), or Large (4 weeks). On the fourth Friday, we have demos. We also estimate our velocity for the next sprint, based on how much we delivered in the current sprint. This determines how much we sign up for at the beginning of the next sprint.

With the four-week sprint, you build up momentum and you have enough time to deliver significant functionality. The planning is harder though.

I prefer the rhythm of a four-week sprint, but I could go back to the shorter one.

Today is the last day of a four-week sprint. We got a lot done, though it came down to the wire yesterday.

posted on Saturday, April 25, 2009 6:55:03 AM (Pacific Daylight Time, UTC-07:00) 
#    Comments [0]
Thursday, April 23, 2009 
InstantShot!

Many of the screenshots that show up on my blog were captured with ImageWell, a little Mac app with resizing, uploading, and rudimentary image editing functionality. It used to be freeware. Now it costs $20 after the trial period runs out.

InstantShot! is a menu bar app that does a good job of taking screenshots, but that's all it does.

ChocoFlop, which I've only just discovered, seems like the best of the free image editors for the Mac. The rest are pretty bad. Nothing as good as Paint.NET on Windows.

GIMP on OS X has finally become more or less usable, but that's heavyweight.

posted on Thursday, April 23, 2009 7:47:07 AM (Pacific Daylight Time, UTC-07:00) 
#    Comments [0]
Wednesday, April 22, 2009 
string formatting

Python has long had a string interpolation operator, %.

Python 2.6 and 3.0 introduced a new, richer set of string formatting operations. See PEP 3101 for the rationale.

One trick that I liked with the old way of formatting was to put the locals() dictionary or self.__dict__ on the right-hand side

>>> def stuff(a, b):
...  c = a+b; d = a-b
...  return "%(a)s, %(b)s, %(c)s, %(d)s" % locals()
...
>>> stuff(3, 17)
'3, 17, 20, -14'

It took me a few minutes to figure out how to do the equivalent with string.format: use the ** syntax to unpack the dict into kwargs.

>>> class Person(object):
...  def __init__(self, name, age):
...   self.name = name
...   self.age = age
...  def old(self):
...   return "name=%(name)s, age=%(age)d" % self.__dict__
...  def new(self):
...   return "name={name}, age={age}".format(**self.__dict__)
...  def dict(self):
...   return "name={0[name]}, age={0[age]}".format(self.__dict__)
...
>>> gb = Person('George Burns', 100)
>>> gb.old()
'name=George Burns, age=100'
>>> gb.new()
'name=George Burns, age=100'
>>> gb.dict()
'name=George Burns, age=100'

The getitem variant ({0[name]}) might be slightly more efficient, since the dict does not need to be flattened, but I doubt it makes a perceptible difference in practice.

posted on Thursday, April 23, 2009 6:27:20 AM (Pacific Daylight Time, UTC-07:00) 
#    Comments [0]