DND ‘n’ D&D

[Editor's note: be sure to read the above title aloud for full effect.]

Lately in my spare time I’ve been tinkering with writing a graphical mail app (or a “MUA” in Unix terminology) as a way to get some practice with Python and, ideally, end up with a lightweight mail app with a decent user interface. (I’ve been using Mutt for years now, but it doesn’t quite fit my needs these days.)

The thing I’ve been wrestling with it lately is getting drag-and-drop (or “DND” in GTK+ parlance) from the message list to the folder list to work the way I want it to. The tree view control in GTK+ has some nice DND support built in, but it insists on letting the user drop messages between two items in the folder list, which doesn’t make sense for this program. I’ve had to resort to some lower-level manipulation of the DND events, but things still aren’t quite working right.

Even more puzzling, it’s somehow possible for messages to disappear entirely from all folders, even the “show all messages” one. Which shouldn’t even be physically possible with my design, so there’s definitely something screwy somewhere. I’m not sure if it’s tied in to my DND bugs or if it’s something else.

I can say that using GTK+ in Python is much easier than in C, largely due to the different type systems used by the two languages. Rest assured, once of these days I’m planning on writing a multi-part series on typing in programming languages which will probably interest one-third of my readership and alienate the other two-thirds. Should be fun!

In other things-that-sound-a-lot-like-DND news, I seem to have unwittingly picked up playing Dungeons & Dragons (or “D&D” as the kids call it). There’s a surprisingly large intersection between the set of people in or closely affiliated with the Ship of Fools and people who play D&D, which is how I first got roped into introduced to the game.

Fortunately, I’ve been able to hold my own in the campaigns I’ve been in despite being far less experienced than everyone else. The sorcerer I’m playing in Kevin’s long-running campaign in particular has been instrumental in winning most of the battles so far, despite not being able to make a Listen check to save his life. Using spells in non-conventional ways is particularly fun, such as using Rope Trick as a campsite instead of a way to hide, and using Fireball when fighting a large fire monster successfully.

I’ve even gotten to the point where I’m not asking everybody questions about the rules every five minutes. Borrowing non-roommate Adam’s PHB this week while creating a character for his upcoming one-off campaign is helping quite a bit too; now at least there’s an underlying framework to everything instead of just seeing a bunch of arbitrary rules.

Yes, I do own my own set of polyhedral dice. No, I am not as bad as these guys.

(And if you’re wondering just how you use Fireball against a fire monster, it works like this. Wander out onto an ice sheet above a sea. Cast Fireball straight up in the air as a signal flare to draw the monster’s attention. When it comes to the shoreline, cast Fireball directly at it to goad it into running out onto the ice sheet. Then hope like hell your companion can slow it down enough so it lingers over one spot long enough to melt through the ice and plunge into the water, extinguishing it. For extra credit, use Rope Trick to produce a rope to use to rescue said companion should he also fall through the newly melted hole.)