Posts for February 2008

2008-02-07: lintian 1.23.43

I've been delinquent in making journal entries. Time to catch up a little bit.

I uploaded lintian 1.23.43 on Tuesday, exactly a month after the previous release. That seems like a fairly good pace for major releases. Well, actually it seems like a killer pace if I keep doing as much in each release as I have in the last few, but it's nice to make a lot of progress.

This release included 37 bug fixes as well as a pile of other stuff that didn't make it into an official bug report, based on various discussions. I'm happy to be getting this out still some distance before the release freeze so that people have time to fix problems, although earlier is always better. I get the impression that a lot more people have started using lintian in the past few months, or at least a lot more people have been reporting issues. It probably helps that ftp-master has been very open about using it.

Anyway, this was a major release with a lot of changed code, although still no fundamental restructuring (which means the code keeps getting uglier). I still want to find time to do a fundamental restructuring, but that's not looking likely before March right now.

2008-02-07: lintian 1.23.44

the follow-up to the previous large release. There were several annoying bugs that would have bothered anyone with a compiled Perl module or referencing D-Bus in their package description, so a quick release seemed in order. I found time to do that tonight, along with fixing a handful of other bugs so that it wasn't just a regression fix and I made a little bit of progress on the bug backlog.

There are a lot of wishlist bugs filed against lintian. It continues to be rather intimidating, particularly since most of the ones left are fairly hard.

2008-02-09: wallet 0.7

I released this on Friday, having finished the work on Thursday. The primary change is an overhaul of how autocreation is handled. Having get and store auto-create new objects on the server was causing a lot of confusion, particularly in combination with default ACLs. I instead split autocreate out as a separate API call and put the logic in the client. Now there's a clear distinction between the administrative interface and the autocreation interface.

Also in this release are a variety of bug fixes in srvtab handling that showed up in our internal testing. The srvtab handling is still very specific to Stanford, but it's getting better.

You can get the latest release from the wallet distribution page.

Unfortunately, this release has a significant bug that I ran into right after I released it. The client uses a different API call to check for object existence than the server expects since I changed my mind halfway through the implementation. This underscores the lack of end-to-end testing, instead of just unit testing, so I'm going to do a new release shortly with a better test suite.

2008-02-09: lintian 1.23.45

Another quick bug fix release, mostly to fix an issue noticed by Joerg (ftp-master). I also fixed another old bug while I was at it to get lintian down to exactly 100 open bugs again.

2008-02-18: wallet 0.8

This was actually released last week, but I've been hellishly busy and haven't had a chance to write journal entries.

0.7 had a dumb bug where the client used a different API call than the server expected to determine whether an object already existed. I fixed that, and then added a comprehensive test suite to be sure that I don't introduce another bug of that sort. That required a simple easy-to-test backend, so I implemented file storage in the wallet as well.

There are various other, more minor fixes and improvements as well.

You can get the latest version from the wallet distirbution page.

2008-02-20: Tigana

Review: Tigana, by Guy Gavriel Kay

Publisher: Roc
Copyright: 1990
ISBN: 0-451-45115-5
Pages: 673

In a historically divided and fractious peninsula shaped vaguely like a human hand (and inspired by Renaissance Italy), two foreign conquerers from overseas have staked claims and split the peninsula down the middle. Both wield magic beyond the resources of the local inhabitants. Both have been systematically wiping out the local wizards and solidifying their rule. Both are eyeing the other, looking for a chance to complete the conquest, while the native inhabitants live under taxes, foreign control, and at times crushing dictatorial rule. But the worst crime of the invaders is unknown even to many of the natives of the Palm, a horrific act of magic that forms the spark of a rebellion from several unexpected directions.

Coming after the more traditional (and heavily Tolkien-inspired) Fionavar Tapestry, Tigana is the first time Kay turned his hand to historically-inspired fantasy. The style seen in later books such as A Song for Arbonne and The Lions of Al-Rassan has its beginnings here. Tigana is grounded in an analogy of place and historical period, but the specific events of the book are more fictional (particularly compared to The Sarantine Mosaic).

Tigana has two main threads. One follows Devin, a travelling musician with a natural gift of memory who, acting on instinct, ends up witnessing a plot against one of the foreign conquerers and is drawn into a secret rebellion. Devin's thread offers most of the action and fighting, the grand shape of politics on the Palm, and a tour of its territories. The second thread follows Dianora, a woman taken by King Brandin of Ygrath as part of his harem. Dianora's story is as internal as Devin's is external. Devin is an observer and fighter, hungry for understanding, and eventually a companion to the most effective rebel leader. Dianora is nearly alone in her struggle with conflicting emotions and a betraying heart in the center of power of her conquerer, a man she hates and loves simultaneously. The two stories start entirely separate, connected only by larger political events, but then begin to play off each other until they reach a linked climax.

This is a re-read, but more than a decade after my previous reading. I remembered Tigana as one of the weakest of Kay's works. Re-reading it, that judgement is both true and not. It is, in some respects, one of his most affecting, but it also has some troubling flaws and an ending that is somewhat unsatisfying.

One of the problems throughout Tigana is that the pacing is sometimes slow and the interweaving of the two threads of story isn't as tight as one might like until the very end of the book. For example, it takes 50 pages or so for the story to really get started, during which time Devin is somewhat uninteresting. The next hundred pages are simply brilliant, some of the most tense and compelling writing of the whole book (particularly if you avoid the back cover, which gives away an early dramatic revelation that's much better read cold). That leads into Dianora's story, which despite the apparent lack of action apart from flashbacks is the heart and soul of the novel. Halfway through, Tigana had me eagerly turning every page. But when the action shifts from Dianora back to Devin, the tension drops considerably. It's hard to shift back to the protracted and largely hidden struggle on the rest of the Palm, the story starts to drag, and the pages until we get back to Dianora and until the plans of Devin's band come together feel endless. The drama of Tigana essentially forms a U, with an excellent start, a slow and long middle, and then a breathtaking conclusion.

That conclusion, though, is not without its own problems.

The next paragraph contains some thematic and tone spoilers for the ending of the book. I enjoyed Tigana more braced with that knowledge, but you may still want to skip the next paragraph if you've not yet read the book and mind spoilers of tone.

Tigana is, at its heart, a tragedy. It's a revenge tragedy in the long-standing literary tradition going back to Shakespeare's tragedies and before, where the heroes must pursue their revenge to be true to themselves, but where the villains themselves are pursuing revenge of their own and the price for revenge will be high. With the exception of Alberico (who is because of it one of the weakest characters of the book), there are no simple villains in Tigana, only brilliant and damaged men and women who are trying to follow their hearts. The tragedy is clearest with Dianora, which is why she is truly the center of the book. Everything that occupation does to the occupants of the Palm, all of the complex emotions of the occupied, come together in her. But her tragedy is mixed with another story following a more conventional fantasy line of hidden rightful rulership and rebellion against evil conquerers, and while there are resonances between them, the emotional tenor of the latter doesn't quite fit. It felt like Kay couldn't quite let the tragedy be a tragedy, couldn't let the reader take the full brunt of the heart-breaking conclusion, and tries to balance it with a hope that, in comparison, ends up banal. The conclusion is brilliant; the epilogue is, to be frank, horrible. There's nothing specifically wrong with it, nothing out of character with anything that happens, but the emotional tone is such a letdown, so inconsistent with the awesome ending, that it leaves a very odd taste in the mouth.

Spoilers over.

The strongest part of Tigana for me is how well it tells the anguish and heartbreak of being torn between impossible choices, how deeply it drives the knife of revenge and justice into the heart and shows their terrible effects without ever diminishing the sense of moral need. It shows the damage from occupation, resistance, and terrorism to all sides and in all ways as well, I think, as any piece of fiction I've read. It's not exactly balanced: Brandin's actions are left largely unexplained rationally and Alberico, as mentioned, is a stock villain with no redeeming qualities. But it tries, and Dianora's divided heart captured my emotions in a way that few books do.

It is a Guy Gavriel Kay novel, with the narrative style typical of all of his books, and to some that may be a turn-off. Kay never leaves the reader in doubt of what his characters are thinking and has a tendency towards dramatic emotional burdens, anguish, and mythic overtones. None of his characters whine, but the level of emotional intensity is sometimes a touch purple. Tigana also sprawls a bit, which given Kay's emotional descriptions means that you do get too much of some emotional conflict. I loved Dianora's portions of this book, but I'll still admit that Kay could have cut some of her musings and emotional turmoil without losing much.

Kay writes a very classic style of high fantasy, which means the narrator uses foreshadowing, clearly shows the reader which events are momentuous, and casts all of the characters as somewhat larger than life. This is often exactly what I want to read. It is, among other things, wonderfully easy reading compared to books built on narrative puzzles and misdirection. With Kay, I don't have to puzzle out what's going on; I can relax into the story and let him tell it to me with the confidence that he'll point out the bits that are important and remind me of why. But this narrative style does turn some people off and it's used heavily and unapologetically here.

After re-reading and further consideration, I think my remembered judgement of Tigana is a bit harsh, but it is also flawed. I think Kay has gotten better at writing this sort of story and his later works are sometimes stronger. But there are moments in Tigana (Devin's introduction to what's really going on, Dianora's dive, and the story's conclusion) that are brilliant and easily withstand repeated reading. If you like Kay, read Tigana. If you haven't read Kay, I'm not sure that I'd start here, but neither would I avoid it.

Rating: 8 out of 10

Permanent review page

Last modified and spun 2017-12-16