December 31, 2004

Ex Libris Reviews

The January issue of Ex Libris Reviews is now on-line for your reading pleasure. Craig Clarke's back, so there's new content even if you've been following the blog for the last month.

Posted by Will Duquette at 09:47 AM | Comments(0)

December 30, 2004

The Ramble Chronicles: Efficient Matrices

This post concerns serious low-level software geekery; if you're interested in how Ramble develops as a game, but not in the underlying software, you can safely skip it.

I'm implementing Ramble in Tcl/Tk for several reasons. It's my favorite language; I can accomplish things in moments in Tcl that would take me hours in C. It's got a cross-platform GUI toolkit; I'm developing Ramble on an Apple Macintosh, but it should run just fine on a Windows PC or a Linux box--and that means that if I can switch to a different platform (as I did a couple of years ago, when I bought the Mac PowerBook on which I'm typing at the moment) without throwing away my personal programming projects.

On the other hand, Tcl is slow compared to C, and certain aspects of a game like Ramble--generating random levels, for example--are computationally intensive. That means that I can't ignore efficiency when designing my internal algorithms and data structures.

The most basic data structure in a tile-based game is the matrix of tiles. Almost every algorithm in the game operates on that matrix somehow, so it needs to be efficient. Now Tcl, like other scripting languages (Perl, Awk, etc.) doesn't have matrices as such; what it has are hash tables, sometimes called associative arrays. Each index in an associative array is a string used as a hash key. It's easy to represent a rectangular matrix using an associative array; here's an example that creates a 4*4 multiplication table:

for {set i 1} {$i <= 4} {incr i} {
    for {set j 1} {$j <= 4} {incr j} {
        set matrix($i,$j) [expr {$i*$j}]

puts "3*4 = $matrix(3,4)"

The important thing to note is that although it looks like I'm accessing a two-dimensional matrix, I'm not. It's really a one-dimensional array with keys that look like "1,1", "1,2", and so on. This had certain advantages, and it's the usual Tcl solution. But it's not as fast as it could be.

The other important Tcl data structure is the list. In some languages with a built-in list type, lists are implemented as linked lists; in Tcl, however, the list is in fact a fast one-dimensional vector--it's roughly equivalent to a one-dimensional C array, except that it's automatically extensible. As a result, accessing a list element is much faster than accessing an associate array element. And because a list element can be anything, including another list, it's possible to implement a matrix as a list of lists--or, really, a vector of vectors. Which, as it happens, is more or less how it's done in C. For example:

set matrix {matrix {row 0 0 0 0}
                   {row 0 0 0 0}
                   {row 0 0 0 0}
                   {row 0 0 0 0}}

for {set i 1} {$i <= 4} {incr i} {
    for {set j 1} {$j <= 4} {incr j} {
        lset matrix $i $j [expr {$i*$j}]

puts "3*4 = [lindex $matrix 3 4]"

Here we see that the variable matrix contains a list consisting of the word "matrix" and four rows, each of which is a list containing the word "row" and four numeric values. If you know Tcl, you might be wondering why I didn't represent the matrix without the extra words, e.g.,

set matrix {{0 0 0 0}
            {0 0 0 0}
            {0 0 0 0}
            {0 0 0 0}}

Tcl lists are indexed starting at 0; but mathematically, matrix rows and columns are numbered 1 to M and 1 to N respectively. I've gone back and forth on this several times (as a C programmer, zero-based arrays are deeply engrained in my psyche), but on the whole, I've decided that starting at 1 is better, at least for my uses. The words "matrix" and "row" occupy the zero slot, which means that [lindex $matrix 1 1] gets the correct item.

In addition, it makes arrays easier to read when printed out, without requiring any special formatting.

I'll admit that the lset/lindex syntax is a bit clunky compared with normal array notation; but in my benchmarks it's at least an order of magnitude faster than the associative array implementation. The tricky bit is creating matrices to begin with. It's easy enough to type them in, as I did above, when the matrix is small, but it's much less pleasant when the matrix is large. What we need is a helper function. Here's the one I use:

proc ::matrix::new {m n args} {
    array set opts {
        -init {}
        -type matrix
    array set opts $args

    set mat $opts(-type)
    set val $opts(-init)

    for {set i 1} {$i <= $m} {incr i} {
        set row {row}
        for {set j 1} {$j <= $n} {incr j} {
            lappend row $val
        lappend mat $row

    return $mat

set matrix [matrix::new 32 32 -init 0]

The routine ::matrix::new creates a new matrix of arbitrary size. By default, each element of the matrix is just the empty string; in the example, I use the -init option to specify the initial value. If I'm creating a matrix of a particular type, i.e., to hold a particular kind of data, I can use the -type option; this specifies a string to replace the word "matrix" in the top-level list.

Here are some additional matrix utilities: mrows returns the number of rows in the matrix, and mcols returns the number of columns:

proc ::matrix::mrows {matrix} {
    expr {[llength $matrix] - 1}

proc ::matrix::mcols {matrix} {
    expr {[llength [lindex $matrix 1]] - 1}

I don't have any special commands for setting and getting the elements in a matrix; lindex and lset do the job perfectly well. Anything I'd define would just be slower.

And speaking of slower, I hate the Tcl syntax for looping over the elements of an array. It's ugly, and cumbersome to type. Tcl's an outstanding language, though, and one its many graces is that you can define your own syntax when you need to. I spent a fair amount of time at this, trying to come up with something more concise, and there were a number of solutions I liked quite a bit. Here I define a simpler version of for that just loops from one integer to another:

fori i 1 4 {
    fori j 1 4 {
        # Do something with $i, $j

Here I try a combined loop: I specify the limits for i and j both, and it does both loops:

forij i 1 4 j 1 4 {
    # Do something with $i, $j

Here I use a function that returns a list of integers, and iterate over the list. I wrote the function so that it caches the list, and doesn't need to create a new one each time:

foreach i [range 1 4] {
    foreach j [range 1 4] {
        # Do something with $i, $j

However, all of these solutions had one major thing in common--they were all a lot slower than the normal Tcl syntax I use above. I think something like fori would be a nice addition to Tcl...but it would have to be implemented as a C extension.

Posted by Will Duquette at 04:39 PM | Comments(2)

The Ramble Chronicles: Background

As I indicated yesterday, I've been working on a simple computer game for my son David. As I progress, two things happen: the game gets more interesting, and the infrastructure I'm using to produce it gets cleaner and more powerful. I thought it might be interesting to some if I were to talk about the design of the game and also of the underlying software. Consequently, I'll be making a series of posts over the next few days, weeks, and months about the issues involved.

Ramble is what's called a tile-based game: the game world is made up of a rectangular grid of square tiles, each of which represents a bit of terrain, or whatever is sitting on top of it. As the player, you have a top down view on this tiled world.

In the earliest games of this type, the so-called Rogue-like games, the tiles were simply ASCII characters: "#" might be a wall, "." for a floor, and so on. Descendants of Rogue are still being played and developed; my favorite is called Angband, which has many variants. Here's a reasonably representative screen shot from a variant called Zangband:

The "@" represents the player. The apostrophes are open doors, the "+" characters are closed doors. The player's stats are displayed on the right. The brown "}" near the "@" represents some kind of missile weapon (a sling, in this case). If there were any monsters in sight, they'd be represented as colored letters. A "k" is a kobold of some kind, an "o" is an orc of some kind, a "d" is a dragon, and a "D" is an ancient dragon (better run...).

The Rogue-like games have a number of things in common:

The interface may be simple and character-based, but the underlying game model is anything but. Angband has hundreds if not thousands of distinct types of monster, each with its own specific behavior. Angband's combat system has been continuously refined, elaborated, redefined, tweaked, prodded, and complexified by generations of computer geeks since the early 1980's (though it was called "Moria" back then). There are generally many kinds of things to interact with, and many ways to interact with them.

The game world is randomly generated. Most computer role-playing games (RPGs) these days features complex hand-designed worlds. This makes them cool to play--once or twice. After that, you pretty much know what to expect. For computer game companies, that's not a problem; they'd just as soon you bought the next game anyway. But where computer game companies write games so other people can play them, computer geeks write games so they themselves can play them. And that's a lot more fun if the game world is different every time.

Combat takes place "in the world". The monsters walk around the same map you do. If you run away, they can follow. If you frighten them, they can run away. If they are asleep, you might be able to sneak past them.
By contrast, many other tile-based RPGs take you to a special combat screen when you encounter a monster or monsters (Nintendo's Pokemon series, for example). You don't see the monsters coming; instead, you're walking along, minding your own business, when *bam* you're in combat.

Gameplay is turn-based, rather than real-time.
Generally speaking, you move, then the monsters move, and so on. You can take as long between moves as you like, secure that the monsters aren't sneaking up on as you stand there.

You only know what you've seen. You can generally see the whole world (or, at least, the current level) all at once--but only those parts you've explored--and line of sight is very important. In many other games you can see everything that's within a certain distance, even if your character's view is blocked by a wall, but you can't look at things that are far away even if you've been there before.

I like the Rogue-like games; Angband and its variants are clearly the most important influence on Ramble.

There's another strain of tile-based game that I think of as the Ultima family. Ultima was one of the first graphical RPGs; it goes back to the Apple II days, though it also ran on the IBM PC. Ultima had a simpler game model, but it used iconic bitmaps as tiles instead of characters, and the world was carefully designed by hand.

There are things about the Ultima philosophy that I like. It's prettier than Angband and friends, and it's more than just a dungeon crawl--there are non-player characters to interact with, and quests to go on, and puzzles to solve. I'd like to use some of these ideas in Ramble as well.

Here's a list of my game design goals for Ramble:

  • Graphical tiles
  • Turn-based
  • Combat takes place "in the world", not on a combat screen.
  • A mixture of hand-designed and randomly-generated levels.
  • Hand-designed quests and non-player characters.
  • You'll note that this doesn't address all of the issues

You'll note that this doesn't address all of the issues listed above (e.g., visibility); that's because I haven't made my mind up yet.

I also have some personal goals:

  • Use Tcl/Tk as the development language (because it's convenient and easy).
  • Develop an infrastructure library general enough for use in a variety of tile-based games.
  • Write a game I'd like to play myself.
  • Have lots of fun.
  • Impress and entertain my kids.

More later.

Posted by Will Duquette at 02:10 PM | Comments(0)

December 29, 2004

Five Day's Wonder

It's been five days since I last posted. I hadn't really intended to take such a long break, but somehow blogging just hasn't been a priority over the last few days, and I haven't had much to talk about. In fact, I still don't have much to talk about.

Christmas was a joy and a delight, of course. We started with our church's Christmas pageant on the 23rd (both boys remembered their lines and delivered them appropriately). Christmas eve was a quiet, peaceful day; usually we have Jane's mom over for dinner, but as she's on a cruise to Antarctica we had nothing special to do and could take it easy. Christmas morning my dad came over to help the kids open their presents, and in the afternoon we went to the park (new scooters). Sunday we went to church, and then over to my dad's in the late afternoon for the family Christmas. Since then we've mostly been lolling about, reading and playing video games. Plus, I've done some work on a few projects.

The big deal for this Christmas season is that David and James didn't catch chicken pox from the boy across the street. This is a big deal for two reasons. The first is, Dave came down with a bad case of hives after the Christmas pageant, and for a couple of days we weren't sure that hives were his only problem. Red spots have an uncanny way of looking like red spots. The second is, I've never had chicken pox so far as I can recall. I do not wish to contract it. But God is good, and the dreaded pox hasn't come under my roof.

Projects...I've finished proofing the PDF for Through Darkest Zymurgia; it's just about time to get my CafePress store on-line (so I'll know what the URL is, so that I can put it on the "lawyer's page" of the book). My brother's come up with some good designs for the cover, though nothing's finished yet. So it will be at least a couple of weeks before the printed book sees the light of day.

In addition, I'm working on the beginnings of a computer game for the boys to play, mostly because it's a fun little project. It's intended to be your basic dungeon crawl; if you've played or heard of Ultima, Final Fantasy, Angband, Rogue, Nethack, or Wizardry you'll have a vague idea of what I'm after. What I've been working on so far, mostly, is creating and displaying nice mazes. Here's a partial screen shot:

Posted by Will Duquette at 07:15 PM | Comments(2)

December 24, 2004

Rudolph: The True Story

There's been a lot of web traffic about Rudolph the Red-Nosed Reindeer of late, and I'm here to tell you that it's all wide of the mark. You've all heard the story of the poor little reindeer who got teased for his unusual physical characteristics and who finally got happy after he was able to show how useful he could be. You probably felt sorry for him. You shouldn't have. Rudolph is a proud reindeer, and he doesn't need your pity.

It's true enough that Rudolph was on the outs with the other reindeer, but it had nothing to do with Rudolph's nose; the young fellow's just naturally a bit of a loner. On top of that, he was frequently disgusted by the behavior of the other reindeer. What am I saying? Well, it's like this.

Santa's all about fairness, right? Every year, he travels (at great expense and personal hazard) all over the world, and distributes toys to children in strict accordance with their naughtiness or niceness. He doesn't play favorites. So just how is it that Rudolph wasn't allowed to help pull the sleigh until that foggy Christmas eve? Rudolph's a decent reindeer; you'd think that Santa's innate fairness would require a strict rotation of eligible reindeer, so that over time everyone would get to help out on the big day. Not so. I'm sorry to have to tell you this, but our Santa has a blind spot, and that blind spot is his reindeer. He loves his reindeer, and he loves to call them by name. And so every year, when Christmas Eve rolls around, he naturally picks the reindeer whose names he knows best.

And the reindeer know it, see. They take advantage of it. "Good morning, Mr. Claus, sir. Can I get you a cup of coffee?" "How about another donut, Mr. C?" "You want I should polish the sleigh again, boss?" "Gee, boss, have you lost weight? Your red suit's getting a little baggy. Here, let me take it in an inch or so." It's a disgusting sight, watching a whole herd of reindeer dancing attendance on Santa in the hopes of getting noticed. Like I said, Rudolph's a proud reindeer, and he wants no part of it.

Rudolph might have a red nose, he tells me; but at least it isn't brown.

Posted by Will Duquette at 08:58 AM | Comments(0)

December 23, 2004

The Elements of Animation

If you're familiar with Tom Lehrer's song of the Elements, and even if you're not, you'll most certainly enjoy this animation which makes the full drama of the song manifestly visible. Or something. (Via Dustbury.)

Posted by Will Duquette at 04:22 PM | Comments(1)

December 21, 2004

The Magic Engineer, by L.E. Modesitt, Jr.

This is the third Recluce novel in series order; it takes place a couple
of hundred years after The Towers of Sunset and (I think)
something longer than that before The Magic of Recluce.

When the book begins, Recluce is a reasonably prosperous nation;
order-masters are good with plants, and consequently Recluce has become a
major exporter of spices. It is still fundamentally rural, and the
population is concentrated at the north end of the island, just as it was
in Creslin's day.

Enter Dorrin. Dorrin's a nerd. Instead of learning to send his mind out
on the winds like his storm-wizard father, he wants to build steam
engines. And steam boats. And all manner of other dangerous objects.
Such things are forbidden on Recluce; because they depend on the
containment of fire, which is naturally chaotic, steam engines are
thought to be works of chaos. Dorrin's sure this is mistaken; but you'd
have to build them out of ordered materials. In short, they need to be
built by an order-master.

Recluce hasn't survived for 200 reasonably peaceful years by ignoring
possible sources of chaos, and it's clear that Dorrin's going to have to
take a hike. Fortunately, his family is reasonably well-off, so they can
afford to send him to the Institute for training. The Institute was
founded by members of the cadre of Westwind guards who came to Recluce at
the time of the founding; most citizens call it the Institute of Useless
Knowledge and Unnecessary Violence, but it's a useful place to study if
you're about to be kicked out: Candar and Hamor are violent places, and
weapons training can be extremely useful.

The training segment is at once the most interesting and least satisfying
part of the book. Least
satisfying, because Modesitt cribbed a little too much of it from
The Magic of Recluce. There's one scene on the ship from
Recluce to Candar that's almost identical, for example. I suspect Modesitt was
trying to be clever, because although the words and actions are similar
the people are markedly different; but it doesn't come off right. Most
interesting, because here we see the seeds of the dangergeld of Lerris'
day. The folks who exile Dorrin really don't want to do it; they just
want him to give up his engines. They tell him, though not in so many
words, that he can come back when he's done that. They have no idea what
they are about to unleash; it's an interesting contrast to Lerris' story,
in which his needs and the needs of the country are equally balanced, and
his dangergeld is designed to serve both.

Anyway, Dorrin goes off to the country of Spidlar in Candar, and begins
building things. Relationships; business; engines; his reputation; he's
a quiet man, a focussed man, an unselfconscious man, and everything he
does is constructive. He can't help it; he's an order-master of the
highest degree, and the first person to really work out the details of the
order/chaos balance.

Of course, it wouldn't be a novel without some
conflict, and it so happens that Spidlar is next on the list to be
conquered by the White Wizards of Fairhaven. Dorrin rises to the
occasion; and amazingly, unlike Creslin and numerous other Modesitt
heroes, he doesn't do it solely by thinking of bigger and better ways to
kill lots of people.

I've never like The Magic Engineer as well as some of the
other books in the series; but it has its own flavor and atmosphere, and
it's better than I remembered.

Posted by Will Duquette at 08:47 PM | Comments(0)

December 19, 2004

Preparing for Christmas

New Year's Day is more-or-less a known quantity here in Southern California. Without looking at the Weather Channel or checking the newspaper forecast, you can pretty well assume that it's going to be a gorgeous sunny day with a bright blue sky. The temperature is likely in the 40s or 50s, but it's going to be a sunny day. It might rain steadily for days beforehand, but on the first of the year in Pasadena it's going to be a sunny day. In all the years that they've been holding the Rose Parade, you can count on one hand the number of times it has been rained. I once spent the night with two other people in a Chevy Chevette because it was pouring down rain and we couldn't sleep on the sidewalk along the parade route as we'd intended. It was a four-door Chevette, granted, but it still took some doing. By eight o'clock, when the parade started, the rain was over, the clouds were gone, and the sun was shining to beat the band.

Christmas Day is considerably more variable. It's often cold and gloomy (by Southern Californian standards) but it's just as like warm and clear, and some years it's been in the 80s. I can recall one year, shortly after my parents first got central air and heating installed, when my mom turned the thermostat down low so that she could light a Christmas fire in the fireplace; it would have been far too warm otherwise.

I'm not yet prepared to guess what Christmas will be like this year, as our weather has been changing from cold to warm and back again every few days, but if I had to make a choice I'd guess that it will be warm. We've been having frequent Santa Ana winds recently, warm dry winds that are shaking the last leaves from all the trees that drop them, and once the Santa Anas set in they often hang around for awhile. Why they are called Santa Anas I'm not sure, as they come from the north and the city of Santa Ana is an hour's drive southeast of here. I've seen a number of theories; the most popular is that "Santa Ana" is a local corruption of "santana," which means a hot dry wind. The trouble with that theory is that you'd expect the corruption to go the other way--it's far more likely for "Santa Ana" to be shortened to "santana" than the other way around. More to the point, Southern Californians have been calling them Santa Ana winds for generations; the only people I've ever heard refer to them as "santana" winds are those who once called them "Santa Ana" winds like the rest of us, and then decided that that wasn't right. The late lamented Jack Smith, an L.A. Times columnist from the days when the Times really was a Los Angeles newspaper investigated the topic in detail and concluded that "santana" was purely bogus, and that the winds had their name (if I recall correctly) because they blew from Santa Ana Canyon.

I have no idea where Santa Ana Canyon might be, or why anyone would choose to name a wind after it, but there you go.

Anyway, it's been a warm lovely weekend, and we've finally begun our Christmas preparations. I don't mean shopping for gifts; we started that ages ago, though mostly on-line. But after Thanksgiving comes the season of Advent, a penitential season similar to Lent, and I don't like to get out the tree or the decorations or the Christmas music until Lent is pretty much over. Today was the fourth and last Sunday of Advent, so first thing yesterday morning we got the tree out of the back shed (yes, it's artificial) and set it up in the living room. We had a bit of a milestone this year--the tree was decorated almost entirely (with more enthusiasm than skill) by our three older kids. Jane held the baby (who has taken to screaming like a banshee if Jane puts her down) and handed out ornaments, and I played Christmas carols on my recorder, and a good time was had by all.

Then this afternoon, after church, we got out the Christmas Train--an LGB train with an oval track, a locomotive, a flat car, a freight car with low sides, and a caboose. You'll notice we got it out the day after the tree got decorated; last year we set it up before the tree got decorated, and on January 1st, while we were watching the Rose Parade on TV, my eldest son asked, "Mom, can we decorate the tree today?" Jane was just beginning her third trimester as Christmas approached, and neither of us were sleeping well in consequence, and what with the kids napping at various times and overall fatigue, we somehow never found a time to get the whole family together to decorate the tree. And after the kids were in bed, we were either too tired or occupied with other needful things. So we're doing better this year--let's hope it continues.

Update: I've just done a Google on "santana wind" and found a whole bunch of people who claim that they are named that because the Mexican inhabitants of Southern California call these hot dry winds the "devil winds", "santana" being the Spanish word for Satan. Except that it isn't; that would be "satana". Quite a few of these folks talk about how when they first came to Southern California in the '50's or when they were growing up in the '70's everyone knew they were the "santana" winds, but then the network newscasters, idiots that they are, screwed it up by calling them the "Santa Ana" winds. The trouble with that argument is that my father, who was born here in Southern California in 1926, grew up calling them the Santa Ana winds. On another site I see this:

The origin and even the original spelling of the terms for these winds are unclear, and during the past century both Santa Ana and Santana winds have been used. The term "Santana winds'' is said to have originated in Spanish California when the hot dry winds were called "devil winds.'' Other sources credit the persistence and ferocity of these winds through the Santa Ana Canyon in Orange County as the reason for their being called Santa Anas. A third reasoning has an Associated Press correspondent mistakenly identifying Santana winds as Santa Ana winds in a 1901 dispatch.

Whatever the origin, native Angelenos have been calling them Santa Ana winds for at least a century; that's good enough for me. 

Posted by Will Duquette at 09:38 PM | Comments(3)

The Magic of Recluce, by L.E. Modesitt, Jr.

This is the first in Modesitt's long running Recluce series, and to my mind it's still the best. All of the others at best serve to either elaborate themes or fill in details sketched in here.

The story takes place when the island nation of Recluce is at the height of its power, and has most fully become itself. The country is peaceful, productive, and stable; the master of Recluce have not only learned what works to keep it so, but why it works. Where earlier generations of leaders were simply doing their best, the current generation has it more or less down to a science.

Now, Recluce as a society is based on order, in both the common sense of orderliness and in the magical sense, order being the force that opposes chaos. Chaos is rigidly excluded. Discontented folk breed chaos, so it follows naturally that those who do not fit in cannot be suffered to remain.

Enter our hero, Lerris. Lerris is a youth of good family, he's been given the best education available on Recluce, and he's bored. B-O-R-E-D, bored. Nothing ever changes in the small town in which he has spent his entirely life, and he's so incredibly bored he can hardly stand it. Boredom is a form a discontent, so after a couple of years of apprenticeship to his uncle, a master woodworker, he's informed that he has two choices: exile or the dangergeld.

The dangergeld is an interesting institution, and one that we see in several stages of development in the later books in the series (as I've noted in other reviews, the series order isn't chronological, and tends to go backwards as often as it goes forwards). It's a form of limited exile--after several months of intense survival training, dangergelders are sent overseas to one of the planet's several continents. Once away from Recluce they may do as they like...but each dangergelder is given a specific task to do. If they carry it out successfully, and they still wish to do so, then they are allowed to return to Recluce. Invariably, the task is one which will require them to deal with the root cause of their discontent--and possibly one or two other matters.

In Lerris' case, he's commanded to travel by ship to the continent of Candar. Once in Candar, he's to travel past the Easthorns to the Westhorns (two ranges of mountains). He's to travel alone, i.e., apart from the other dangergelders, and he's not to return until he knows he's ready, whatever that means. Lerris leaves Recluce convinced that it's meant to be a one-way trip.

Now, it develops that Lerris isn't your average rebellious teenager. At least one of his parents is a powerful order-master (that is, a wizard). Though he doesn't know it, he has the potential to become a powerful wizard himself, with the capacity to turn towards either order or chaos. Should he choose the latter he'll destroy himself in a short time, as he hasn't the temperament for chaos, but it will be exceedingly messy. As for order, he needs to learn to value it in a more chaotic setting. And thanks to the balance of order and chaos, Candar, the closest continent to Recluce, is an extremely chaotic place. In short, Lerris is liable to make mistakes, his mistakes are liable to be spectacular, and so the masters of Recluce are sending him where he can make them without harm to his countrymen.

But there's more to it than that. The havoc a budding order-master can leave in his wake is a potent force if it can be channeled properly. Recluce has been sending young lads like Lerris out into the world for centuries, and the masters of Recluce have a shrewd notion of Lerris' full potential. He's not just a journeyman wizard, seeking to find himself; he's a guided missile, and a tool of Recluce's foreign policy. Just imagine how angry he'll be when he finally figures it all out....

I really do enjoy this book. There's more than a hint of wish-fulfillment in it, I'm sure; I'm not super-powerful myself, but it's fun to imagine. On top of that, parts of the book have the whole boot camp dynamic working for them; I always like that. And then there's the emphasis on values, and on doing the right thing whether or not it's expedient (the proper use of power is a major theme in all of Modesitt's books). Finally, though, it's an interesting tale well-told, and the hero not only grows up, he also gets the girl--who, actually, is quite a heroine in her own right. Her story is just as interesting as Lerris' and would have made a fine novel, except there'd have been considerably less magic in it.

If you like epic fantasy, and you haven't read this book, you really should, even if you never go on to read the rest of the series.

Posted by Will Duquette at 08:46 PM | Comments(0)

Comment Spam Update

A few weeks ago I began to require TypeKey authentication from readers before they could leave comments here. The effect has been both good and bad. On the one hand, I'm no longer having to delete several hundred bogus (and occasionally obscene) comments every single day; instead, none are getting through. This is a big win. On the other hand, I'm getting many fewer real comments than I used to, which although unsurprising is a pity.

I'd been hoping that the problem would subside after a while, and that I could open up the comments section to everyone again; instead, some hosting services are receiving so many attempts to post comment spam that it's slowing down their servers and causing serious problems. I got a notice from my own web hosting service a couple of days ago, asking all MovableType users to please disable comments or switch to full authentication ASAP--or they'd pull the plug on the site. And I can't blame them.

So authentication won't be going away any time soon, and it's likely to become common on other blogs as well. It's easy to use; if you'd like to comment, just click on the Sign-On link and create an identity for yourself at Thereafter you can use that username and password on any MovableType blog.

Posted by Will Duquette at 08:14 AM | Comments(1)

December 17, 2004

The General Danced at Dawn, by George MacDonald Fraser

Fraser, best known for his books featuring Victorian soldier, lady's man, coward, and toady Harry Flashman, spent the Second World War as a British foot soldier in Burma, an experience he describes delightfully in his book Quartered Safe Out Here. At the end of the war he applied for officer training, and much to his surprise spent the years after the war as a lieutenant in a highland regiment, first in North Africa and later on in Great Britain.

Fraser later turned his post war experiences into three volumes of short stories, all told in the first person by one Lieutenant Dand MacNeill, of which this is the first. And they are an unbridled joy, delight, and wonderment--the sort of book I put off re-reading so that I'll savor it all the more later on. Also, the sort of book you end up reading half of aloud to whoever might be in earshot.

The present volume begins with MacNeill's examination for officer training, and continues with his introduction to life as an officer in a highland regiment. In it, there is much to be said about bagpipes, soccer (only, of course, they don't call it soccer), scotch whisky--

A digression. The senior officers in some regiments are (or were) a hard-drinking lot, and many lieutenants in such regiments felt they had to do the same to be accepted. In MacNiell's regiment, as in most highland regiments (so says Fraser), the subalterns drank either beer or orange juice--in highland regiments, the senior officers had no desire to see their fine single-malt scotch swilled by lieutenants with no appreciation for what they were drinking.

--scotch whisky, highland dancing, and personal cleanliness, or, rather, the lack of it displayed by Private MacAuslan, the dirtiest soldier in the world.

I should note that the Dand MacNeill stories completely lack the worldly, cynical edge of Fraser's Flashman books; if you've tried those and disliked them, don't let that put you off from enjoying these. If you can find them; I wanted to get a copy of this book as a Christmas present this year, until I found that it's a available used at Amazon starting at $58. Time to check the used bookstores!

Posted by Will Duquette at 09:37 PM | Comments(0)

December 16, 2004

One Singular Sensation

I've got to hand it to Jaquandor; this is one of those ideas that's obvious in retrospect, the kind that makes you jealous because once it's been done, well, it's been done. I won't spoil it, but if you're a Lord of the Rings fan you should check it out.

Posted by Will Duquette at 04:44 PM | Comments(0)

December 15, 2004

The Stars Asunder,
A Working of Stars,
by Debra Doyle and James D. MacDonald

These are the sixth and seventh books in the authors' Mageworlds series, which I've been re-reading and reviewing over the last few months.

When The Stars Asunder was published in 1999, Jane and I were excited; I'd read the previous books aloud to her to our mutual enjoyment, and this one looked to be a doozy. Set in the far distant past, long before the first Mage War, it promised to tell us of the first contact between the Mage Worlds and the rest of the civilized galaxy, and also to tell the story of Beka Rosselin-Metadi's enigmatic helper, the "Professor". We snapped it up the moment it came out, in hardcover no less, and I started reading it to Jane on the way home.

And, alas, we were greatly disappointed. I never finished reading it aloud; instead, we each finished it separately. And unlike the others in the series, it sat on the shelf, unread, until just recently when I picked it up prior to reading its successor, A Working of Stars. (It's some measure of my disappointment that the latter book was published in 2002, and I only just got around to it.)

Anyway, I approached The Stars Asunder with considerable curiousity. Was it as bad as I remembered? Had I read it fairly the first time? And I suppose the most honest answer is that it's better, and just as bad.

First, it's a different sort of book than the others in the series; it's slower paced, and there are fewer action sequences. Jane and I had the wrong expectations going into it, and so it's not entirely surprising that it didn't work for us. And, I was surprised to note that some of the amazingly stupid and awful scenes that I remember being so annoyed by aren't actually in the book at all. Apparently I dreamed them.

On the other hand, there are bad bits as well. There's a whole espionage and intrigue subplot that simply doesn't work: it's confusing, it slows down the main story, and although motivations of the characters involved seemed clear enough at the beginning I found them entirely mystifying by the end. The ending is abrupt and unsatisfying, and leaves lots of loose-ends floating about--and there's no indication that a sequel might be forthcoming. And then there's the centerpiece of the book, the first contact between a Mage ship and a freighter from the Civilized Worlds, which I still can't bring myself to believe in. Though, to be fair the scene's not quite as absurd as I thought it the first time I read it.

A Working of Stars is much more satisfying. It follows perhaps ten years after the finish of The Stars Asunder, and ties up a fair number of that book's loose ends (though by no means all of them), and it's got a lot more of that Space Opera Goodness we were looking for. My major complaint about it is that it seems to contradict things were were told in the second book of the series, Starpilot's Grave, though possibly there are reasons for that.

There's clearly room for yet another book in this part of the series, and I rather wish Doyle and MacDonald would get on with it.

Posted by Will Duquette at 08:07 PM | Comments(0)

The Red Suit and the Black Boot

Big Arm Woman's husband takes a second look at The Polar Express (the book, not the movie) and finds much worthy of comment. Though perhaps bedtime wasn't the appropriate occasion....

Posted by Will Duquette at 07:26 PM | Comments(0)

December 14, 2004

Rudolph in the Sky with Diamonds

I know I've been linking to Ian a lot recently, but he's done it again.

He's right about The High Crusade, too. But that's another post.

Posted by Will Duquette at 07:23 PM | Comments(0)

My Debut

So around 11:15 this morning I gathered up my recorder bag and music stand, snagged a Santa Claus hat from the decorations in our hallway, and wandered off to the conference room in which our section secretaries and admins were busily getting everything ready for the section party. I set up in a corner and played for about half-an-hour, working through my sheaf of Christmas carols) about twice in that time, as the room slowly filled up.

I didn't do too badly, I guess; I'd been practicing all of the songs at least twice a day since last Thursday, and though I made more mistakes than I'm happy with, my tone and phrasing were pretty good. I'd have had an easier time if I'd played soprano recorder, but I chose to play tenor instead; it's a nicer solo instrument, with a deep rich tone. It's also quieter than a soprano, which means that it was hard to hear me play once the room filled up, but on the other hand the mistakes were quieter too.

I made sure I practiced by leaving my music stand in our kitchen, along with my tenor, that it was often convenient (while waiting for dinner, and so forth) to pick up the recorder and play a couple of songs. I really need to make a habit of doing that in general; it's pleasant.

Anyway, I didn't disgrace myself in public, and that's always nice.

Posted by Will Duquette at 02:58 PM | Comments(0)

December 12, 2004

Simply Stunning

In 1906, the city of San Francisco was devastated by an earthquake, followed by a fire that burned for four days. A photographer named George R. Lawrence had developed a means of taking aerial photographs using kites, producing 130-degree panoramas; the prints were 47 inches wide, made from negatives of the same size. (!) On hearing of the disaster in California, he took his crew to San Francisco.

If you've read about the San Francisco earthquake and fire, and think you understand the scope of the disaster, I suspect you're mistaken. Be sure to read the whole thing, or you'll miss the shot of the port of San Francisco at the very bottom.

(Via Slashdot.)

Posted by Will Duquette at 09:00 AM | Comments(1)

December 11, 2004

New Meme Sighted; Thousands Panic

Yet another posting meme has hit the blogosphere, and Jaquandor's not only on top of it, he's extended it. The originator of the meme posted a list of ten authors who grace his shelves. What you're supposed to do is post your own copy of the list, replacing any authors whose books you don't have with authors whose books you do have. I suppose the idea is to see how far it drifts. Anyway, here's Jaq's list with my replacements in bold:

William Shakespeare
Stephen King
Lois McMaster Bujold
Terry Pratchett
Guy Gavriel Kay
J.R.R. Tolkien
George R. R. Martin
Steven Brust
Sarah Caudwell

Patrick O'Brian
George MacDonald Fraser

Astute readers will note that this list has eleven authors--but then, so did Jaq's.

Jaq then suggests that one could do the same thing with CDs, and posts a list of ten artists. I'll bite on that as well.

Steeleye Span
Jethro Tull
Pink Floyd
J.S. Bach
John Williams
The Chieftains
Silly Wizard
Van Morrison
Ray Stevens
Benny Goodman

I'll note that Jaq's list included Johnny Cash and Ralph Vaughan Williams, both of whom really ought to be in my CD collection, but aren't.

Take it away, Eric the Orchestra Leader!

Posted by Will Duquette at 07:47 PM | Comments(0)

I'm Less Sanguine

Ian very properly draws your attention to this trailer, but I'm rather less sanguine than he is about the eventual outcome. After all, Depp's character is supposed to be an oldish sort of bloke; that's why he's arranged this elaborate scheme to begin with. Depp certainly gets the puckish spirit right, but not the age.

And then, well... I knew Gene Wilder, and you, Mr. Depp, are no Gene Wilder.

Not, alas, that the film which features Mr. Wilder is an unflawed gem; far from it. I'm hopeful, given some portions of the new trailer, that Mr. Depp's endeavour will hew a little more closely to the original book, which has my boys enrapt at the moment.

Posted by Will Duquette at 08:47 AM | Comments(0)

December 10, 2004

A Christmas Ode

To, and all of the late unlamented Dot Coms that didn't make it.

(To the tune of Jingle Bells)

Dashing to and fro
Like chickens with no head
Through the store they go
Faces full of dread.
Check-out lines are short.
Inventory's tall.
Everyone just shops on-line,
No one comes round here at all!

Oh, Business stinks, business stinks,
No one's leaving home!
Everything they want's on-line,
They have no need to ro-oam!
Business stinks, business stinks,
No one's at the store!
If they need another gift,
They point-and-click some more!

Posted by Will Duquette at 06:34 PM | Comments(0)

December 08, 2004

Joyful Noise

As I was walking by the section office at work the other day, I heard a voice from within: "Uh-oh". I glanced inside and saw a circle of administrators and secretaries, and they were all looking at me.

This is not a good sign, when all of the section administrative and secretarial staff say "Uh-oh" when they see you walk by.

It turns out that they were planning the section "Holiday Party". And they wanted to know if my friend Dave and I would be willing to play some Christmas music on our recorders at the party. Nice idea. Really nice idea. Except that I've never played my recorder in public, and although Dave has he only does it when he's got a nice big group to hide in. I pitched it to him, and he said absolutely not. They hit me up again, and I said, "Dave won't, but OK, I guess I can." So tonight I'm going to be going through my songbooks and deciding what pieces I want to play--nothing too fancy--and hoping that on Friday, our usual recorder day, I'll be able to persuade Dave to join me.

I'll say, "Dave, are you really going to leave me hanging out to dry? One recorder by itself is a pitiful thing; can't you at least bring your tenor and play it in unison?"

The party is next Tuesday, at lunchtime. We'll see how it goes.

Posted by Will Duquette at 07:48 PM | Comments(0)

December 07, 2004

The Towers of Sunset, by L.E. Modesitt, Jr.

This is the second book in Modesitt's long-running Recluce series; I picked it up the other night when I was tired and felt like reading something pleasant and familiar.

Young Creslin has a problem. He's a young man of position, the son of the Commander of the Fortress of Westwind, a fortress established near the peaks of the Westhorns which controls all trade through the mountains. As such, he's the eldest son of a head of state. Unfortunately for Creslin, Westwind is one of the countries of the Legend, which are ruled and run by women. His sister will inherit the command of Westwind; and he himself will be married into the family of some other eastern ruler for the usual diplomatic reasons.

Creslin doesn't much fancy being a pawn, and one can hardly blame him; there are many who dislike Westwind, and Westwind's control of trade, and anywhere outside of Westwind itself there are those who will attempt to use him to get at his mother, the Commander of Westwind--and chief among them are the white wizards of Fairhaven, who are busily conquering the eastern half of the continent.

But there's more to Creslin than meets the eye. Trained by the armsmaster of Westwind, he's a demon swordsman--and though he doesn't know it yet, he's a budding order-master with a knack for controlling the weather. His enemies don't know it yet, but they'll find out.

One of the peculiar aspects of the Recluce series is that it's written backwards. In the first book, The Magic of Recluce, we meet a young lad named Lerris, born when Recluce is at its height. In this book we travel back some centuries to the founding of Recluce, a nation born out of the ashes of Westwind and out of Creslin's determination to control his own destiny. Subsequent books fill in the middle of the story; and then Modesitt goes back even further, and the process repeats.

I don't intend to re-read the whole series at this point, but I might very well re-read one or two of the other books.

Posted by Will Duquette at 06:18 PM | Comments(0)

December 05, 2004


Some while ago, my son was given a mysterious artifact as a present. It was supposed to be--the giver believed it to be--one of those play tents that start out as a flat circular object but unfold and pop up into a surprisingly large structure. It is rumored that wizards walk among us, disguised as normal folk, wizards who number among their arcane skills the ability to restore these things to their original flat and circular form. I am not among them.

But I digress.

When unfolded, the mysterious artifact turned out to be a mysterious artifact. It does not pop up at all, but instead is flat, and about five feet across. In shape it is roughly square, with rounded corners. It appears to be made of nylon, though the top surface sports three areas covered with some softer material. Two of the areas are small ovals, less than a foot in diameter, placed next to each other on one side; the third covers most of the remainder of the top surface.

The artifact has a zipper, which goes around most of the edge.

My only conjecture, given that the thing was procured at some kind of outfitters, is that it's a lightweight mattress for camping. When you make camp you unfold the artifact, unzip one side, and fill it full of leaves, pine needles, dry grass, and what have you, until you have a nice, soft, springy mattress. Apparently it is large enough for two people to share. This is a conjecture only, and I have my doubts about it.

A little after bedtime this evening, I went up to the boys' room to find out why they were talking instead of sleeping. I found the two of them sitting on the artifact, while the elder read a Dr. Suess book to the younger. When I came in they both popped back into bed, which for the elder was a sort of nest on top of the artifact; he likes to sleep on the floor, for reasons unknown to me.

As I was leaving, I noticed that the artifact looked positively inflated, which was odd as I didn't recall it being inflatable. Possibly it had mutated spontaneously, so I asked the question.

"David, is that thing inflated?"

"No, Dad. It's full of stuffed animals."

"You're sleeping on stuffed animals."

"It's really comfortable."

Dad shakes his head, and goes downstairs.

Posted by Will Duquette at 08:14 PM | Comments(0)

Pied Piper, by Nevil Shute

Two men sit in the library of a darkened London club. It's night-time; the air raid warnings sounded some time ago, and everyone else is in the basement shelter. The two men, one old, one young, sit in comfortable chairs and sip Marsala; and slowly, during the course of the night, the old man tells of his recent ordeal in France.

It was early in the war; the course of hostilities were not yet clear, and there was still hope of a diplomatic solution. The old man, a devoted fly fisherman, went to the Jura in France for a restful fishing vacation. He avoided the news the best he could, but one of the other guests was the wife of an English official at the League of Nations in Geneva; there is great concern that Hitler will invade Switzerland. She must return to her husband, but she prevails upon the old man to take her two young children back to England with him.

The old man sets off on the train to Paris with the boy and girl...just as Hitler invades France. They were to be in England the next day. It's going to take a little longer than that.

What follows is a gripping and reasonably harrowing story; the suspense is mitigated only by our knowledge that the old man will survive to tell his story. The detail, not surprisingly, is spot on.

Ian Hamet gave me this book two summers ago, when I happened to be in Ann Arbor on the occasion of my 40th birthday; and if he asks nicely (and sends me his mailing address in China) I might conceivably send him the new Lois McMaster Bujold when it comes out.

Posted by Will Duquette at 07:56 PM | Comments(0)

December 04, 2004

The Skeleton in the Grass, by Robert Barnard

Unlike most mystery writers, Barnard seems never to repeat himself; each book has a new setting and new characters. This particular effort is remarkable less for the mystery and more for the time period--rural England in the interval between the Wars. The main characters, the Hallams, are a well-to-do family dedicated to Peace and the League of Nations. And though this was written in 1987, I found that a number of passages resonated with the events of the last several years. Here, one of the younger Hallams has just heard of the outbreak of the Spanish Civil War, and is on fire to go enlist in the fight against Franco. His father Dennis responds thus:

"Will, dear old thing," said Dennis earnestly, "I know how one reacts at first to things like this: one wants to fight back. It's an almost irresistable urge. But one has to resist it! Fighting back never settled anything."

"Fighting back settled the Spanish Armada," said Will, obviously clutching at the first historical example that came into his head. "What good have all your motions and resolutions done for Abyssinia? Did they stop Herr Hitler from marching into the Rhineland? They're just impotence with a loud voice."

"That's a very fine phrase, Will," said Dennis quietly. "But is that really all your mother's and my work means to you?"

Will looked momentarily shamefaced, and Helen said quickly:

"No, Dennis, you shouldn't put it like that. This is not a personal thing. The point is that if the governments of the world put their hearts into economic sanctions they really will work. And they'll work without the terrible senseless slaughter we went through in the war."

"If, if, if," said Will impatiently. "But of course they won't put their heart into sanctions. Half of them will be hoping Franco wins. Just watch Cousin Mostyn tomorrow. He'll be positively purring at the prospect. And he's in the government."

Substitute Iraq, Saddam, and the U.N. for Spain, Franco, and the League of Nations, and you've got a conversation that could have happened just months ago...and probably.

I have my doubts about economic sanctions; from what I can tell, economic sanctions are simply a way to hold the common folk of a country hostage for the good behavior of their leaders--and if their leaders truly cared about the common folk we probably wouldn't be thinking about sanctions. But clearly they won't work if some of the nations levying the sanctions are cheating. And from what I hear about the Oil-for-Food program and the actions of the French and the Russians in the years during which sanctions were in place on Iraq, it seems pretty clear that young Will Hallam is right on the money.

Other than that bit of political observation, though, the book was rather ho-hum.

Posted by Will Duquette at 09:41 PM | Comments(0)

Colin McKenzie, Pioneer Photographer

Ian Hamet has one of his usual smashing writeups of the documentary film Forgotten Silver, which tells the story of the New Zealand photographer Colin McKenzie, a man whose invention and genius was equalled, so far as I can tell, only by his bad luck and personal fecklessness. Had things gone better for him he'd be a household name today, like Thomas Edison; instead, he's virtually unknown. Food for thought, really.

Posted by Will Duquette at 08:47 AM | Comments(0)

December 03, 2004

Erle Stanley Gardner

The Forager has a post about Erle Stanley Gardner and the real Perry Mason. If you like classic murder mysteries, click thou thither.

Posted by Will Duquette at 10:13 PM | Comments(0)

Going Postal Discussion Group

Woo-hoo! Starting January 10th, Barnes& is going to be hosting an on-line book discussion group on Terry Pratchett's book Going Postal--and Terry Pratchett himself is going to be participating. This could be some serious fun. († Brandywine Books)

Posted by Will Duquette at 05:47 PM | Comments(0)

December 01, 2004

Smugglers' Song

Each section of Kipling's Puck of Pook's Hill begins and ends with a poem; I rather enjoyed one called "Smuggler's Song," which, as it's in the public domain, I shall now proceed to relate:

If you wake at Midnight, and hear a horse's feet,
Don't go drawing back the blind, or looking in the street,
Them that asks no questions isn't told a lie.
Watch the wall, my darling, while the Gentlemen go by!

Five and twenty ponies
Trotting through the dark -
Brandy for the Parson.
'Baccy for the Clerk;
Laces for a lady, letters for a spy,
And watch the wall, my darling, while the Gentlemen go by!

Running round the woodlump, if you chance to find
Little barrels, roped and tarred, all full of brandy-wine,
Don't you shout to come and look, nor use 'em for your play.
Put the brushwood back again -- and they'll be gone next day!

Five and twenty ponies...........

If you see the stable door setting open wide;
If you see a tired horse lying down inside;
If your mother mends a coat cut about and tore;
If the lining's wet and warm - don't you ask no more!

Five and twenty ponies...........

If you meet King George's men, dressed in blue and red,
You be careful what you say, and mindful what is said.
If they call you "pretty maid", and chuck you 'neath the chin,
Don't you tell where no one is, nor yet where no one's been!

Five and twenty ponies...........

If you do as you've been told, 'likely there's a chance,
You'll be given a dainty doll, all the way from France,
With a cap of pretty lace, and a velvet hood -
A present from the Gentlemen, along o' being good!

Five and twenty ponies...........

Them that asks no questions isn't told a lie -
Watch the wall, my darling, while the Gentlemen go by!

Posted by Will Duquette at 08:35 PM | Comments(2)

Puck of Pook's Hill, by Rudyard Kipling

In this delightful book, Puck (yes, that Puck) introduces a couple of English children to people from the past history of their neighborhood. They meet a Norman knight who came over with William the Conqueror and hear how he received a Saxon barony as his fief--and how he managed to cow and then win the hearts of his Saxon subjects. They meet a Roman soldier who was born near their home and later went on to command the Roman forces on Hadrian's Wall. They meet a Renaissance stonecutter who built the neighborhood church. And through it all they begin to get a sense for the sweep of English history.

There's a problematic segment at the very end, when Puck introduces them to a Spanish Jew named Kadmiel, the son of a banker. Kadmiel tells them how men, bankers and messengers of other bankers, would come to his home when he was a child, and discuss with his father where they should lend their money to best serve their people--in short, to which rulers should they give money, and from which should they withhold it. So immediately we've got the notion of the Jews as behind-the-scenes string pullers, one of your basic anti-Semitic stereotypes.

What troubles me is, I'm not sure that Kipling's depiction isn't a fair one. It's certainly true that at the stated time (the reign of King John of England and Magna Carta) most of the bankers in Europe would have been Jews. Christians were not allowed to lend money at interest, and Jews were allowed to do little else. Kadmiel's father is clearly supposed to be one of the pre-eminent bankers in Europe. And I rather suspect that the more powerful Jewish bankers tried to use whatever influence they had to benefit themselves and their fellow Jews--and quite possibly they thought they had more influence than they really did. And if Kadmiel himself is a rather sour, bitter old stick, who's to say he hasn't earned the right to be?

Certainly Kipling isn't trying to whitewash anti-Semitism--the children remember from their own schooling that when Jewish bankers refused to loan money to King John, he'd have their teeth pulled out. And, by Kipling's story, Kadmiel is rather a hero--he claims to be responsible for ensuring that King John could borrow no more money, and having no money was forced to submit to the barons and sign Magna Carta at Runnymede.

Now, the tale of how Kadmiel does this involves a horde of gold brought to England by the Norman knight after an African adventure, and it's unlikely in the extreme. It's a good tale, but it never would have happened that way. So, even if the portrayal of Kadmiel and his father is a fair one, was Kipling being anti-Semitic by bringing Kadmiel into the book in this context? I think not, after due reflection...but your mileage may vary.

Posted by Will Duquette at 08:25 PM | Comments(0)