Tag: Nostalgia

Final Fantasy 7 and Iconic Images

I closed Part One of my Final Fantasy 7 retrospective by saying that the Phoenix Rejuvenation Project, a mod designed to replace all the super-deformed field character models in the game with more detailed and realistically-proportioned ones, was the product of a lot of hard work by a lot of talented people...but just a bad idea on principle. The reason I believe this comes down to one essential point:

Final Fantasy 7 is ridiculous.

Now, the game has a huge fanbase, most of which was captivated by its epic story, cinematic atmosphere, and shocking moments. And I think that, given those elements, people tend to forget exactly how damn silly it is.

Here's an example. You're following Sephiroth -- the man who left a trail of blood and bodies ending in a dead President, a man who burned the heroes' village to the ground -- and his trail leads to...an amusement park. After you get your fortune told by a talking stuffed cat, and optionally ride the roller coaster and play an arcade game about the mating habits of Moogles, you find another trail of blood and bodies, these cut down by machine-gun fire. It's briefly implied that your colleague Barrett is the killer, but it turns out it's actually his best friend Dyne. Dyne's gone off the deep end and just wants to burn everything down; when he hears his daughter is still alive and Barrett's adopted her, he threatens to kill her and Barrett has to kill him first.

And then you go race a Chocobo.

Seriously. That is not an exaggeration. At all. The delay between Barrett having to gun down his best friend in order to protect his daughter and Cloud becoming a jockey in a race between giant pastel-colored birds is approximately thirty seconds.

The tone of FF7 shifts so often and so wildly that if you think too hard about it your brain will get whiplash. Do I even need to get into Wall Market and Don Corneo's Mansion? Do I ever want to see a realistically-proportioned Don Corneo thrusting his hips at me? (Actually, I looked for one from the Rejuvenation Project to inflict upon you, my audience, and couldn't find one. Maybe they don't want to see it any more than we do.)

And I can't stress this enough: one of your party members is a talking stuffed cat.

Final Fantasy games, at least since the 16-bit era, are a delicate balancing act of the serious and the silly, and 7 is probably the one that shows that contrast most clearly. And key to its balancing act is its use of exaggerated, iconic character models.

In the essential Understanding Comics, Scott McCloud explores the power of simple, iconic images:

Image: Understanding Comics
Image: Understanding Comics

It doesn't just apply to comics, of course; it works for any form of cartooning. Similarly, a few years back some dumbass critic wrote a review of Monster House where he loudly proclaimed that it was the most important animated film of all time, and summarily dismissed the entire history of animation on the grounds that, prior to performance capture, cartoons couldn't truly convey emotion. I'm convinced he was just trolling, but Amid Amidi at Cartoon Brew tore him a new one across multiple blog posts, including one with this side-by-side comparison:

Image: Monster House vs. Bugs Bunny

One's got a dead-eyed Uncanny Valley face, and the other one is Bugs goddamn Bunny. Bugs is an enduring icon who is recognized the world over and has remained popular for over 70 years, whereas Monster House...well, did you even remember what Monster House was when I mentioned it?

The point is, in cartooning, you take essential elements and exaggerate them. FF7's chibis do that: little bodies, big heads, and exaggerated movements in a story that is itself bigger-than-life. The Phoenix Rejuvenation Project injects more realistically-proportioned figures into those same exaggerated movements and bigger-than-life story, and the result is a pretty clear clash:

Image: Comparison of Barrett waving his arms, original vs. Rejuvenation
Image: Comparison of Barrett shaking his fist, original vs. Rejuvenation

FF7's field models lack even the basic facial emotions of FF6; each character has only one unchanging facial expression, and emotions are conveyed through exaggerated movement. In the Phoenix Rejuvenation Project, that doesn't change -- and it's a lot easier to accept a static facial expression when it's just a couple of lines and dots than when it's more fully formed, easier to accept ridiculous arm-waving from a squat little Playmobil man than one who's more reasonably proportioned.

And even if they could somehow take all that out, give the characters emote animations that fit their new models, you'd still have the Honeybee Inn, Sephiroth tossing people around like ragdolls in Nibelheim, Yuffie leaping across the screen, and, oh yeah, a talking stuffed cat. There are large swaths of the game that simply cannot be made to fit this art style.

I'm not opposed to overhauling FF7's field graphics by any means -- but Team Avalanche has the right idea: keep them chibi, just make them smoother and more detailed chibis.

Of course, even that approach is fraught with peril; FF9 tried it and we got a leading lady who doesn't look like a detailed chibi so much as, well, a dwarf.

Image: Final Fantasy 9's Princess Garnet


Next time: An attempt at a thorough critical analysis of Final Fantasy 7, what it did right and what it did wrong. Combat! Love triangles! Japanese nuclear anxiety! Recurring themes, both literary and musical! Keep goin'? Off course!

And in the meantime, don't forget to join the discussion currently raging at Brontoforumus!

Final Fantasy 7 PC Mods

I'm not altogether sure when I first stumbled across the Final Fantasy 7 modding community. It's not surprising that it exists -- it is, after all, a popular game with a huge fan following -- but it is perhaps surprising that there are some really high-quality improvements to the game out there. High enough that I got the itch to replay the game for the first time in about a decade.

I'll talk about the experience of replaying it at 28 later. (tl;dr: it's not as good as 15-year-old Thad thought, but it's better than 18-year-old Thad thought.) For now, I'll stick with the technical.

Now, there are advantages to simply emulating the PlayStation version -- the ability to save anywhere is a biggie, and emulator-level texture smoothing is nice too. But I decided to go with the PC version because, again, it's the mods that drew me in. The major hub of mod development is the qhimm forums. And here are a few I've been using, ranked in order of importance.

The Essential

First, you'll need to get the game. Try eBay.

Then, you'll need to patch it to version 1.02.

And there's one mod that is absolutely necessary to get Final Fantasy 7 PC to run at all on a post-Win98 computer: Aali's Custom Graphics Driver. At the time of this writing it's at version 0.7.10b, but it's under active development. Make sure you jump to the end of the thread and grab the latest version; the link in the first post is version 0.1a from March 2009.

Setting it up is a simple process and described in the post that links it. You need to run both ff7config.exe and ff7.exe with full Administrator privileges, and I found that the graphics looked washed-out until I set compress_textures = no in the ff7_opengl.cfg file. It's probably a good idea to go through the troubleshooting thread if you have any other issues with it.

The Pretty Great

FMV Updates -- the PC versions of the FMV cutscenes look, inexplicably, even worse than the PlayStation versions. Modder DLPB has taken the PS1 versions and given them frame-by-frame upscaling and cleanup. The end result is, as he put it, a polished turd -- it's still kind of a mess but it's a damn sight better than what you get out of the box. Keep in mind that, after installing, you'll need to edit the videopath setting in your Windows registry.

Avalanche's Graphical Overhaul: Gorgeous but not quite finished.Team Avalanche's Graphical Overhaul (the thread links the GUI Update as well, but I'll get to that a little lower down). Many of the models in FF7 -- such as the characters, monsters, and treasure chests -- are untextured polygons. That means they upscale without loss of quality, and actually hold up pretty well even though they're not as smooth as what we're used to in this day and age. The polygons with 2D textures on top of them, on the other hand -- like, say, the world map -- look quite a lot the worse for wear upscaled to a modern resolution. The Avalanche World Map Patch adds hi-res textures, in both 720p-and-down and 1080p-and-up flavors, and it looks goddamn gorgeous. It's currently an 0.9, which means it's not quite there yet -- now and again you'll see a low-res stripe on a hi-res mountain, as in the image to your right -- but it's close, and it's well worth installing in its mostly-complete state. (YMMV on which components you want to install -- I don't use the alternate avatars or the replacement Barrett model.)

FF7Music: Okay, so the FF7 soundtrack sounds not-very-good coming out of Windows's default MIDI sequencer. It's bundled with its own Yamaha sequencer, but it's incompatible with modern versions of Windows. It's possible -- and perhaps more elegant -- to tweak your soundfont with Timidity, but FF7Music gives you the flexibility to set whatever tracks you want. The installer I linked includes the PS1 version of the music, and also a resequenced version by a guy going by the handle finalfantim -- it's not a remix as it's the exact same MIDI tracks, but he's resequenced them using high-quality instruments and, while it's a matter of taste, I find that they sound better in nearly all cases. (Except the guitar on his version of the Cosmo Canyon theme; I don't care for that and use the PS1 version.) Of course, there's also the option of customizing it with music of your choice -- I've always hated the FF7 version of the Victory Fanfare, so I've swapped it out for a nice Minibosses version instead. And if you want to edit music files so they loop properly, there's a tutorial for that, too.

(The biggest drawback for me? While the thread says FF7Music works in Wine, I've found it doesn't work very well on my system -- it'll play a track or two, the opening, maybe the overworld theme when I load my game, but it stops after a few track changes. So if I want to enjoy the benefits of FF7Music, I have to reboot to Windows proper. YMMV, though; if you want to try using it under Wine, maybe you'll have better luck than I did.)

(I should add, though, that in my experience every single other mod I list here works great under Wine.)

Haven't Decided What I Think of These Yet

Team Avalanche's GUI Overhaul -- I linked this same thread up above to praise the Graphical Overhaul, but the GUI update is a separate mod. And as the header implies, I'm not sure if I like it or not. It's added a font that looks more like the one in the PS1 version of the game, but I'm not sure it looks as good as the default Windows font; there are some spacing issues I don't care for. And it actually supercedes some of the additions in the Graphical Overhaul -- for example, the GO includes a rather nice set of color item icons by a guy named romeo14, but the custom GUI will ignore them in favor of its own grayscale versions. And while it works fine on one of the two computers I installed it on, it somehow managed to hose my installation on the other, leaving it so that the game crashes as soon as I load a menu -- and it must have overwritten a setting somewhere, because it happens even if I disable the mod.

Project Blackfan -- Okay, so we've covered overworld graphics. This is a huge attempt to replace all the field graphics. Modder yarLson is extracting every single background image and running it through a Photoshop filter. The result -- well, the biggest problem is that they're all PNGs because that's the only format Aali's driver supports; highest-quality JPEGs would have looked just as good and taken up a fraction of the space. As for how they look, that's a matter of personal perspective; all graphics filters inevitably come down to whether you prefer your upscaled lo-res images to be pixellated or blurry. These are blurry. For my money, they work absolutely wonderfully on natural environments that look like photographs (like the rocky areas in the North Crater) but aren't as good on the technological sets (like the Highwind). It's worth checking out to see what you think; since the files sit in the mods\[modpath]\field directory, they're trivial to remove if you don't like them.

Millenia's custom weapons for Cloud -- from what I've seen these look great; however, the new swords appear to have finally shattered my Cloud's fragile psyche and convinced him to join Cobra.

Image: Cloud's messed-up jaw

Keep an Eye on These

Retranslation -- this could go either way. It's sure to be more competent than the game's official translation, but it's too early to tell whether it will be any fun. Fan translations of Final Fantasy 4 and 5 back in the 1990's were fun and vastly superior to Square's initial attempts at English scripts for those games, but the fan translation of 6 met a more lukewarm reception; I'm part of the group that thinks it sucks all the charm out of Woolsey's (admittedly compromised) version. Now, this 7 fan translation could end up like 4 and 5, or it could end up like 6 -- and given that the focus seems to be on debating whether the Turks should be named Reno and Elena or Leno and Yrena, I'm sadly inclined to fear the latter. But hey, at least they know how to spell mithril.

Menu overhaul -- this is actually included in the Retranslation mod, so don't install both. (Actually, at the time of this writing neither one of them has a demo available to install at all, but...you know, keep it in mind once they're updated.) At any rate, it changes the menu font and alignment, apparently to something more closely resembling Final Fantasy 9's version. It was initially designed to accommodate the longer names of items, spells, and summons in the retranslation, but I foresee it improving aesthetics and possibly even gameplay for the existing version of the game as well.

FL's Battle Scene/World Map Enhancement -- I've covered projects to improve the world map and the field maps; this one is for the battle scenes. (And also the 2D bits of the world map, like the skyline with Meteor, though I couldn't get that bit to work -- maybe it's incompatible with Team Avalanche's world map version?) It's still early days, but it's looking good.

Project Bombing Mission -- Team Avalanche's project to replace all graphics -- battle and field, background and character -- in the opening section of the game.

Q-Gears -- an attempt to rewrite the FF7 engine from scratch. It's the equivalent of Exult, the open-source engine for Ultima 7; it would use the FF7 resource files but would provide its own executable. If this project is finished, it has potentially huge ramifications; it would mean multiplatform support for FF7 and, potentially, other PS1-era Square games like 8, 9, and Xenogears. It could make all of them easier to mod, as well as open up opportunities for people to develop their own games based on the engine.

Haven't Tried

Kranmer's Trainer -- I griped earlier about FF7 PC's lack of save-anywhere functionality. Well, nobody's grafted save states onto the thing, but this trainer purports to do the next best thing: enables the "Save" and "PHS" options any time you open the menu. I say "purports" because AVG flags the binary as a Trojan and refuses to run it, so I haven't actually tried it; I believe it's a false positive but fair warning, use it at your own risk.

AnyCD -- purportedly this removes the need to change discs/mounted disc images. It's not a nodisc crack, as you'll still need at least one game disc (or image) to play, but if it works that's two disc images you don't need to store on your hard drive. Three if you include the installation CD.

Zerox's Tifa model -- I haven't tried any replacement character models because it would be distracting to have a detailed character standing in-between two PS1-vintage ones; maybe I'll replay the game when there are high-detail models for every character. But this one looks good from the screenshots!

Not Actually a Mod

Can't really think of a better place to put this. While FF7 PC has joystick support, I couldn't get it to recognize my Rumblepad 2. I rigged up keyboard emulation using Logitech's Gaming Software. I mapped the buttons to the appropriate keys to match the PS1 button config, and additionally set up the left stick for movement and the right stick for camera rotation. (I also set it up so pushing in the left stick works as a second Run button, but it doesn't work very well.) You can import my settings or, if you don't have a Logitech controller or just don't like my settings for some reason, try rolling your own using finalfantasy7pc.com's game controls page as reference. (If you are using Logitech's Gaming Software, remember to check the inexplicably-named "FPS Style Movement" box or diagonals won't work on the D-pad. Because FPS, apparently, is the only genre where you hit two directional buttons to make a diagonal.)

Not My Cuppa

APZ Cloud -- this one's been pulled from the qhimm forums since the designer swiped the textures from somewhere else; he's working on a new version now. The existing APZ Cloud is a popular mod but I don't really like the look of it -- but YMMV. I preferred his Kingdom Hearts model, but he never released it for download; the qhimm forums have a strict policy against ripping models from other games.

Phoenix Rejuvenation Project -- an incredibly ambitious project to replace every single "chibi" field character with a more detailed, more realistically-proportioned version. I have a great deal of respect for the talent and work that's gone into the project, but I think it's a bad idea from the get-go; I'm all for more detailed models but the field models should stay chibi. In fact, I intend to devote my entire next post to the subject. Be here.


If you would rather be somewhere else, do feel free to discuss this post and general FF7age over at Brontoforumus.

Also, I finally fixed the horribly outdated worstforumsever.com link at the top of the sidebar. Just in time for my background check!

List of Thundercats Episodes

First, a note on ordering, which is much more complicated with Thundercats than Silverhawks.

Regardless of what you may have seen on IMDb and various other sites, Thundercats ran four seasons, not two. Since the extent of the research the guys at Warner did for the Thundercats DVD release appears to have been "look it up on IMDb", the DVD's themselves give the wrong number of seasons.

(The best proof I've found for the four-season claim -- other than my own not-inconsiderable memory -- is on purrsiathunder.org. Purrsia has collected some original scripts, which are dated.)

(Also, if all goes well, you may be reading this at some point in the future when IMDb is no longer wrong. I'm trying to fix it but it's taken some time to convince the editors.)

(Update 2014-10-09: Per the excellent Hear the Roar! by David Crichton, there were two production seasons which were split into four broadcast seasons. The second production season was made up of 60 episodes and split into 3 broadcast seasons of 20 episodes, each added to syndication a year apart. Thanks to Mr. Crichton's book, I have finally convinced IMDb to fix its stupid madeup airdates.)

But it's still not that simple, because the original broadcast order of Thundercats was itself wrong, with first-season episodes airing out of story order -- notably, the Lion-O's Anointment arc aired with a bunch of episodes in-between instead of all five episodes running in a row. So there's an alternate order for those, too. Purrsia calls it the Modern Order. It's apocryphal, but I'm using it here because it makes a damn sight more sense than the broadcast order.

So, to wit, I've given three different versions of the numbering: MO for Modern Order, BO for Broadcast Order, and DVD for DVD order (which is the same as broadcast order but numbered differently).

Thundercats-Ho! aired as a TV movie and then was split up into 5 episodes. Note that numbering it as 1x66-70 is not strictly accurate, as it falls between season 1 and 2, but I'm using that numbering for sorting purposes.

So, to it.

Update 2014-10-09: Also per Hear the Roar, it may interest you to note that Julian P. Gardner is an alias used by Jules Bass. (Probably less interesting, but still notable: Bill Ratter is an alias used by a writer named Deborah Goodwin, who to my knowledge does not have any credits beyond Thundercats and Silverhawks.)

MO BO DVD Title Writer
1x01 1x01 1x01 Exodus Leonard Starr
1x02 1x02 1x02 The Unholy Alliance Leonard Starr
1x03 1x03 1x03 Berbils Leonard Starr
1x04 1x04 1x04 The Slaves of Castle Plun-Darr Leonard Starr
1x05 1x07 1x07 Trouble With Time Ron Goulart & Julian P. Gardner
1x06 1x05 1x05 Pumm-Ra Julian P. Gardner
1x07 1x06 1x06 The Terror of Hammerhand Ron Goulart & Julian P. Gardner
1x08 1x08 1x08 The Tower of Traps Leonard Starr
1x09 1x09 1x09 The Garden of Delights Barney Cohen & Julian P. Gardner
1x10 1x10 1x10 Mandora — The Evil Chaser William Overgard
1x11 1x11 1x11 The Ghost Warrior Leonard Starr
1x12 1x12 1x12 The Doomgaze Stephen Perry
1x13 1x13 1x13 Lord of the Snows Bob Haney
1x14 1x14 1x14 The Spaceship Beneath the Sands Leonard Starr
1x15 1x15 1x15 The Time Capsule Peter Lawrence
1x16 1x16 1x16 The Fireballs of Plun-Darr William Overgard
1x17 1x17 1x17 All That Glitters Bob Haney
1x18 1x18 1x18 Spitting Image Howard Post
1x19 1x37 1x37 Lion-O's Anointment First Day — The Trial of Strength Leonard Starr
1x20 1x42 1x42 Lion-O's Anointment Second Day — The Trial of Speed Leonard Starr
1x21 1x46 1x46 Lion-O's Anointment Third Day — The Trial of Cunning Leonard Starr
1x22 1x50 1x50 Lion-O's Anointment Fourth Day — The Trial of Mind Power Leonard Starr
1x23 1x61 1x61 Lion-O's Anointment Final Day — The Trial of Evil Leonard Starr
1x24 1x19 1x19 Mongor Peter Lawrence
1x25 1x20 1x20 Return to Thundera Bob Haney
1x26 1x25 1x25 Snarf Takes Up the Challenge Peter Lawrence
1x27 1x31 1x31 Mandora and the Pirates William Overgard
1x28 1x23 1x23 The Crystal Queen Leonard Starr
1x29 1x24 1x24 Safari Joe Stephen Perry
1x30 1x32 1x32 Return of the Driller Howard Post
1x31 1x45 1x45 Turmagar the Tuska C. H. Trengove
1x32 1x26 1x26 Sixth Sense Peter Lawrence
1x33 1x21 1x21 Dr. Dometone William Overgard
1x34 1x22 1x22 The Astral Prison Peter Lawrence
1x35 1x34 1x34 Queen of 8 Legs Stephen Perry
1x36 1x33 1x33 Dimension Doom Bob Haney
1x37 1x43 1x43 The Rock Giant Peter Lawrence
1x38 1x27 1x27 The Thunder-Cutter William Overgard
1x39 1x48 1x48 Mechanical Plague Peter Lawrence
1x40 1x38 1x38 The Demolisher Bob Haney & Peter Lawrence
1x41 1x29 1x29 Feliner, Part 1 Stephen Perry
1x42 1x30 1x30 Feliner, Part 2 Stephen Perry
1x43 1x51 1x51 Excalibur Peter Lawrence
1x44 1x52 1x52 Secret of the Ice King Bob Haney
1x45 1x35 1x35 Sword in a Hole William Overgard
1x46 1x28 1x28 The Wolfrat C. H. Trengove
1x47 1x53 1x53 Good and Ugly Peter Lawrence
1x48 1x55 1x55 Divide and Conquer Lee Schneider
1x49 1x41 1x41 The Micrits Bruce Smith
1x50 1x59 1x59 The Superpower Potion C. H. Trengove
1x51 1x36 1x36 The Evil Harp of Charr-Nin Douglas Bernstein & Denis Markell
1x52 1x40 1x40 Tight Squeeze Stephen Perry
1x53 1x39 1x39 Monkian's Bargain Lee Schneider
1x54 1x57 1x57 Out of Sight C. H. Trengove
1x55 1x44 1x44 Jackalman's Rebellion Bruce Smith
1x56 1x58 1x58 The Mountain Danny Peary
1x57 1x60 1x60 Eye of the Beholder Kenneth E. Vose
1x58 1x47 1x47 The Mumm-Ra Berbil Jeri Craden
1x59 1x62 1x62 The Trouble with Thunderkittens Kimberly B. Morris
1x60 1x63 1x63 Mumm-Rana Bob Haney
1x61 1x49 1x49 Trapped Stephen Perry
1x62 1x54 1x54 The Transfer Lawrence Dukore & Lee Schneider
1x63 1x64 1x64 The Shifter Matthew Malach
1x64 1x56 1x56 Dream Master Heather M. Winters & Annabelle Gurwitch
1x65 1x65 1x65 Fond Memories Lee Schneider
1x66 1x66 2x01 Thundercats-Ho! Part 1 Leonard Starr
1x67 1x67 2x02 Thundercats-Ho! Part 2 Leonard Starr
1x68 1x68 2x03 Thundercats-Ho! Part 3 Leonard Starr
1x69 1x69 2x04 Thundercats-Ho! Part 4 Leonard Starr
1x70 1x70 2x05 Thundercats-Ho! Part 5 Leonard Starr
2x01 2x01 2x06 Mumm-Ra Lives! Part 1 Leonard Starr
2x02 2x02 2x07 Mumm-Ra Lives! Part 2 Leonard Starr
2x03 2x03 2x08 Mumm-Ra Lives! Part 3 Leonard Starr
2x04 2x04 2x09 Mumm-Ra Lives! Part 4 Leonard Starr
2x05 2x05 2x10 Mumm-Ra Lives! Part 5 Leonard Starr
2x06 2x06 2x11 Catfight Chris Trengove
2x07 2x07 2x12 Psych Out Sandy Fries
2x08 2x08 2x13 The Mask of Gorgon Romeo Muller
2x09 2x09 2x14 The Mad Bubbler Kimberly Morris
2x10 2x10 2x15 Together We Stand Herb Engelhardt
2x11 2x11 2x16 Ravage Island George Hampton & Mike Moore
2x12 2x12 2x17 Time Switch Sandy Fries
2x13 2x13 2x18 The Sound Stones J. Larry Carroll
2x14 2x14 2x19 Day of the Eclipse Kimberly Morris
2x15 2x15 2x20 Sideswipe William Overgard
2x16 2x16 2x21 Mumm-Rana's Belt James Rose
2x17 2x17 2x22 Hachiman's Honor J. Larry Carroll
2x18 2x18 2x23 Runaways Bill Ratter
2x19 2x19 2x24 Hair of the Dog Chris Trengove
2x20 2x20 2x25 Vultureman's Revenge Herb Engelhardt
3x01 3x01 2x26 Thundercubs, Part 1 Peter Lawrence
3x02 3x02 2x27 Thundercubs, Part 2 Peter Lawrence
3x03 3x03 2x28 Thundercubs, Part 3 Peter Lawrence
3x04 3x04 2x29 Thundercubs, Part 4 Peter Lawrence
3x05 3x05 2x30 Thundercubs, Part 5 Peter Lawrence
3x06 3x06 2x31 Totem of Dera J. Larry Carroll
3x07 3x07 2x32 Chain of Loyalty Bill Ratter & Peter Lawrence
3x08 3x08 2x33 Crystal Canyon Sandy Fries
3x09 3x09 2x34 The Telepathy Beam Kimberly Morris
3x10 3x10 2x35 Exile Isle William Overgard
3x11 3x11 2x36 The Key to Thundera Matthew Malach
3x12 3x12 2x37 Return of the Thundercubs J. Larry Carroll
3x13 3x13 2x38 The Formula Kimberly Morris
3x14 3x14 2x39 Locket of Lies Bill Ratter
3x15 3x15 2x40 Bracelet of Power Bill Ratter
3x16 3x16 2x41 The Wild Workout Becky Hartman
3x17 3x17 2x42 The Thunderscope George Hampton & Mike Moore
3x18 3x18 2x43 The Jade Dragon William Overgard
3x19 3x19 2x44 The Circus Train William Overgard
3x20 3x20 2x45 The Last Day J. Larry Carroll
4x01 4x01 2x46 Return to Thundera! Part 1 Peter Lawrence
4x02 4x02 2x47 Return to Thundera! Part 2 Peter Lawrence
4x03 4x03 2x48 Return to Thundera! Part 3 Peter Lawrence
4x04 4x04 2x49 Return to Thundera! Part 4 Peter Lawrence
4x05 4x05 2x50 Return to Thundera! Part 5 Peter Lawrence
4x06 4x06 2x51 Leah J. Larry Carroll & David Carren
4x07 4x07 2x52 Frogman Kimberly Morris
4x08 4x08 2x53 The Heritage Bill Ratter & Peter Lawrence
4x09 4x09 2x54 Screwloose William Overgard
4x10 4x10 2x55 Malcar George Hampton & Mike Moore
4x11 4x11 2x56 Helpless Laughter Matthew Malach
4x12 4x12 2x57 Cracker's Revenge William Overgard
4x13 4x13 2x58 The Mossland Monster Chris Trengove
4x14 4x14 2x59 Ma-Mutt's Confusion Beth Bornstein
4x15 4x15 2x60 Shadowmaster Dennis J. Woodyard
4x16 4x16 2x61 Swan Song William Overgard
4x17 4x17 2x62 Touch of Amortus Bill Ratter
4x18 4x18 2x63 The Zaxx Factor Matthew Malach
4x19 4x19 2x64 Well of Doubt Dennis J. Woodyard
4x20 4x20 2x65 The Book of Omens William Overgard

This post originally used Stuart Langridge's sorttable but was updated 2014-10-09 to use jQuery, tablesorter, and parser-ignore-articles, and then on 2015-09-25 to use Mottie's tablesorter fork; icons courtesy of Font Awesome.

List of Silverhawks Episodes

# Title Writer
01 The Origin Story Peter Lawrence
02 Journey To Limbo Peter Lawrence
03 The Planet Eater William Overgard
04 Save The Sun Peter Lawrence
05 Stop Time Stopper Lee Schneider
06 Darkbird Steve Perry
07 The Backroom William Overgard
08 The Threat Of Drift Bruce Smith
09 Sky Shadow Kimberly Morris
10 Magnetic Atraction Chris Trengove
11 Gold Shield Bruce Smith
12 Zero The Memory Thief Jeri Craden
13 The Milk Run Lee Schneider
14 The Hardware Trap, Part 1 Peter Lawrence
15 The Hardware Trap, Part 2 Lee Schneider
16 Race Against Time Chris Trengove
17 Operation Big Freeze Jeri Craden
18 The Ghost Ship Chris Trengove
19 The Great Galaxy Race William Overgard
20 Fantascreen Steve Perry
21 Hotwing Hits Limbo Peter Lawrence
22 The Bounty Hunter J.V.P. Mundy
23 Zeek's Fumble Peter Lawrence
24 The Fighting Hawks Kimberly Morris
25 The Renegade Hero Leonard Starr
26 One On One William Overgard
27 No More Mr. Nice Guy Chris Trengove
28 Music Of The Spheres Lee Schneider
29 Limbo Gold Rush Steve Perry
30 Countdown To Zero Chris Trengove
31 Amber Amplifier Bill Ratter
32 The Saviour Stone Bob Haney
33 Smiley Bruce Shlain
34 Gotbucks Bob Haney
35 Melodia's Siren Song Lawrence Dukore
36 Tally-Hawk Returns Stephanie Swafford
37 Undercover Danny Peary
38 Eye Of Infinity Kenneth Vose
39 A Piece Of The Action Bruce Smith
40 Flashback Kimberly Morris
41 Super Birds Bruce Shlain
42 The Blue Door Cy Young
43 The Star Of Bedlama Kimberly Morris
44 The Illusionist Jeri Craden
45 The Bounty Hunter Returns Steve Perry
46 The Chase Bruce Smith
47 Switch Beth Bornstein & J.V.P. Mundy
48 Junkyard Dog Bob Haney
49 Window In Time J.V.P. Mundy
50 Gangwar, Part 1 William Overgard
51 Gangwar, Part 2 William Overgard
52 Sneak Attack, Part 1 Cy Young
53 Sneak Attack, Part 2 Cy Young
54 Moon-Star Peter Larson & Alice Knox
55 Diamond Stick-Pin Peter Lawrence
56 Burnout Bill Ratter
57 Battle Cruiser Lee Schneider
58 Small World Kimberly Morris
59 Match-Up Bruce Smith
60 Stargazer's Refit William Overgard
61 The Invisible Destroyer Dow Flint Kowalczyk
62 The Harder They Fall Chris Trengove
63 Uncle Rattler Beth Bornstein
64 Zeek's Power Matthew Malach
65 Airshow Peter Lawrence

Updated 2010-06-27 to make the table sortable, courtesy of Stuart Langridge's sorttable.

Updated 2014-10-09; switched to jQuery, tablesorter, and parser-ignore-articles; icons courtesy of Font Awesome.

Updated 2015-09-25: switched to Mottie's tablesorter fork.

Steve Perry

I was 26 before I heard Steve Perry's name, but I was probably 2 the first time I saw his work.

Perry was a writer for Thundercats, a cartoon that's always been dear to my heart. He made the news on comics sites last year, when Steve Bissette revealed Perry was dying of cancer and didn't have a dime to his name.

With help from the Hero Initiative, Perry pulled through, but this past Friday, news came out that he's missing and possibly murdered. Details are incomplete and grisly, and I feel like repeating them here would be exploitative; I'll just give a link to Bissette's blog instead.

But one thing that jumped out at me from that post:

I would welcome a complete listing of Steve's writing credits for [Thundercats and Silverhawks]; please note that the imdb listing for 'Steve Perry' is incorrect, conflating his TV writing credits with another animation writer named Steve Perry (http://www.imdb.com/name/nm0675310/), who is possibly the science-fiction novelist Steve Perry. My friend Steve Perry only scripted for story editor Peter Lawrence on the two Rankin/Bass series noted here.

On top of everything else that's horrible about this story, it's not right that Perry's work is not known. And so I've gone through and compiled a list of the writers for each Thundercats episode myself -- I'll publish it in full shortly, but in the meantime, here's a list of Perry's episodes.

  • The Doomgaze
  • Safari Joe
  • Queen of 8 Legs
  • Feliner (2-parter)
  • Tight Squeeze
  • Trapped

(There may be a few more; I'll have to break out my VHS collection to check, as Warner decided some of the episodes on the DVD's didn't need title cards. Or background music. Or to be listed in the correct order. And that the last three years of the show were all the same season.)

Thundercats meant a lot to me. Perry and others filled my youth with fantasy and science fiction and magic and good and evil, with dreams of heroism and nightmares of Mumm-Ra watching me in his cauldron. The news about Perry serves as a jarring reminder of how nasty the real world is, and how unlike those fantasy worlds, where good always triumphs, evil fears its own reflection (at least until season 2), and despite an abundance of weapons, nobody ever really gets hurt.

Gail Simone has suggested honoring Perry by donating to the Hero Initiative, the organization responsible for giving Perry hope this past year. His plight is a tragically common one; there are a whole lot of people in the comics industry who don't see royalties from their work and who can't support themselves later in life.

Thank you, Steve Perry. Justice, truth, honor, and loyalty.

Pointless Nostalgia on an Aribtrary Date

Yeah, okay, so it's been awhile. It's been a busy year. Looks like I missed this site's tenth anniversary by a few weeks, but it was December 9, apparently.

2009. 2009, 2009, 2009. You know, the last two years were straight-up law-of-averages affairs, though in different ways. '08 was pretty mediocre all around; no real highs and no real lows. '09...well, if '08 was a flatline, '09 was a sine wave. It was like the "That's good! That's bad." bit on Simpsons. Alternating highs and lows. The best part of '09 was meeting a very nice girl and finding myself, for the first time in my adult life, in an actual relationship. The worst was losing my uncle. And there were peaks and troughs aplenty in-between.

In other nostalgia-y not-quite-news, I've gone and started another damn KateStory -- I didn't miss that anniversary. The sucker's 15 years old now. I can't believe it's already been 5 years since the 10th anniversary.

I reread all 17 previous installments in preparation. In reverse order. And you know, I learned some things.

  • Brent was right about pretty much everything. Books I-III should probably all be considered one book, VI shouldn't be in there at all, comedy is more important than strict adherence to whether or not I have replaced my watch battery, and Final Fantasy VII is not nearly as good as I thought it was when I was 15. (Chrono Trigger, on the other hand...)
  • Speaking of which, IX isn't nearly as horrifying on a reread as it was a year ago when I had to go through and excise all (well, most of) the adolescent bickering. It's actually better than X. X just fucking drags.
  • Going through the old books looking for "best lines" to reuse in the first chapter of XVIII, most of them were written by Brent. I had a pretty good number of runners-up, but there really weren't any with my name on them where I went, "Yes. That is the best line in this book." Though I threw a couple of mine in anyway for the sake of balance. (Of course, I also focused on lines that would work with the phrase "It was [year], and" prepended to them.)
  • I kinda miss the old days when chapters would cut off in mid-sentence. I should try doing more of those.
  • I've named every single book except KateStory Gaiden, which was McDohl's title. Some of them are well-named (I know Brent's a fan of "Midnight Falls. And can't get up.") and some aren't (I think the reason Book III is "Searching for a Plot" instead of "The Search for Plot" is that the latter was the title of Mad's Star Trek III parody).

I'm seeing end-of-the-decade lists pop up everywhere, but have no great urge to put up any of my own. I can't fucking believe I've got my 10-year high school reunion coming up. Feels like I don't have much to show for it, but on the other hand, I've got a pretty good life, all things considered.

Which isn't to say it can't get better. Here's hoping 2010 continues the past year's trend of wonderful things while ending its trend of terrible ones.

Happy New Year.


Reading: Jeez, haven't read a prose book in months; spending entirely too much money on comics. I just finished Fables vol 7 and Usagi Yojimbo vol 1.
Playing: New Super Mario Bros. and Dragon Age: Origins.

Auld acquaintance

You know, having my New Year's Eve traditions rudely and abruptly yanked out from under me has itself become something of a New Year's Eve tradition -- and, the childish drama inherent in such a change in plans notwithstanding, I think I'm all right with that.

The wonderful paradox about New Year's, and a significant portion of why it is my favorite holiday, is the balance of the old and the new, of tradition and change. (Also, beer.) I'm a guy who puts a lot of stock in his past, but who could sure use some forward momentum in his life about now.

Traditions are wonderful things, and seeing old friends is a joy -- but shaking up a routine is something special in and of itself. I'll never forget New Year's Eve 2000/2001 -- nothing special, perhaps; I just stayed home and watched Batman (the 1989 one) and Army of Darkness with my little brother. It wasn't the night I had expected or planned for, but it was a very pleasant capper to a very hard week. (It was also the first night I checked out #finalfight, starting another tradition -- every year I'd show up there early on New Year's morn, even years after I quit my regular attendance of the channel. That's another tradition I'm breaking this year -- with some pride, actually; it's important to know when to let traditions go.)

I've had a comfortable New Year's Eve routine for, if my count is correct, the past five years (and that image at the top of the main page is from the 2006 party). It didn't hold this year, but that opened the door for something new. I saw Lewis Black perform (second time; he always puts on a good show), and, running late to meet my friends at Four Peaks (as it turns out, they left at 11:30 -- honestly, who leaves a New Year's Eve party half an hour before midnight?), my dad and I happened to be on the new light rail train passing over Tempe Town Lake when midnight hit. We saw fireworks over the lake. Then we walked around the downtown area until the 12:45 fireworks show, which was pretty spectacular -- I don't understand how there were people simply walking away, with their backs to it, paying no attention.

Anyhow. In the spirit of the holiday, in the spirit of the balance of the past and the future, I have some thoughts on where I am and where I'd like to be -- nothing quite so simple as resolutions, but a few ideas.

I have a steady job now -- but I'd like a better one.

I have a lot of good friends -- but I could stand to make more. And, I hate to say it, but the truth is maybe some of my auld acquaintances should be forgot.

I love my hometown -- but I'm overdue for a change of scenery.

I'm an honest person, to a fault. I speak my mind and don't play games. But I could stand to keep my mouth shut more often than I do, and learn when to cut my losses rather than go down swinging.

And, as jaded a person as I am, I can never foresee a time in my life where I turn my back on a fireworks show.

I have no idea where I'll be come this time next year; I don't think I can count on seeing Lewis Black and then being on the light rail over the lake at precisely midnight. But that's a liberating thought -- who knows what the future will bring? Maybe I'll start a new tradition, or maybe it'll be another satisfying one-off.

Think about your traditions -- and think about new ones you can start.


Reading: Me of Little Faith, by Lewis Black; Our Dumb World (yes, still; it is a very long book best read in one- or two-page chunks)

Playing: Chrono Trigger DS, Final Fantasy IV DS, Super Smash Bros. Brawl

What "Hacker" Means to Me

Recently, I made some comments on the unfortunate change in popular usage of the word "hacker", from a positive term for a skilled programmer, to a negative term for a skilled programmer, to a negative term for someone who can figure out Sarah Palin's zip code.

I like to think of myself as a hacker in the original, positive sense, and I have a story about what that means.

Ten years ago, I upgraded my OS to Windows 98. Unfortunately, during the upgrade my hard drive, which had been compressed using DriveSpace, one of the worst pieces of software ever, was corrupted.

Now, I'll grant I'm a pack rat, but there wasn't much of sentimental value on there. There was, however, the most recent installment of KateStory, Book IX. It turned out Steve had a backup, but it was incomplete.

That gnawed at me for years. I kept the hard drive and never wiped it, and every now and again I'd hook it up and see if I could find a way to recover the data. I could never get it to mount. My instinct was that I shouldn't be working with the physical drive anyway, that I should copy the data from it to an image so I could make additional copies and freely mess with them without worrying about losing the original data. But none of the disk-imaging tools I could find would image a disk that wouldn't mount.

By the summer of 2004, I was familiar enough with Linux to know that dd was the tool I wanted, that it would make a bit-for-bit copy of the data on a device regardless of whether it could make any sense of it. I copied the drive to a file and went to take a look at what I could do with it.

File recovery software pulled up some images and some old E-Mails, but not the ones I wanted. In fact, searching the raw hex, I found the text "Subject: Re: KateStory IX: Third Anni" followed by gibberish; the data literally went from plain text to incomprehensible compressed bytes in the middle of the subject line I was looking for. I abandoned the project for a few months.

As the fall rolled around and the KateStory's tenth anniversary approached, I got to thinking about it again. I looked up information on how to recover DriveSpace volumes, and happened upon Dean Trower's DriveSpace 3 Disaster Recovery Kit. Since it required DriveSpace to run, and since DriveSpace won't run on modern versions of Windows, I set up VMWare on my computer and installed Windows 98 on it. My memory of what I tried then is fuzzy; I'm not sure what I did wrong but I still didn't recover the data.

It seems like I tried a couple more things over the years that followed. I think there was a period where I thought maybe the compression I couldn't get past wasn't DriveSpace's but Netscape's. (In retrospect, I believe Netscape Mail's "compress folders" option didn't actually compress text, it just deleted the text of E-Mails that had been deleted from the mailbox but not removed from the mail files.) I definitely remember at least one occasion where I dumped the entire 545MB hard drive image into a Thunderbird folder -- now, whether or not I qualify as a hacker, I think we can all agree that qualifies as a hack. When it didn't work under Thunderbird, I found old copies of Netscape 3 and 4 and tried it there; that didn't work either.

About a month ago, with KateStory XVII beginning, the anniversary approaching once more, and my going back through Books XIII-XVI to put them on this site, I got the urge to take another crack at IX. I did what I'd done before: set up VMWare, set up Windows 98, and got a copy of the Disaster Recovery Kit.

Without getting into too much detail, a DriveSpace "compressed drive" is actually a single file stored on a physical hard drive, then mounted as a virtual drive. As I said, I couldn't mount the drive. The docs for Trower's program mentioned creating an empty DriveSpace volume and looking at its file header; I got the idea from there to look at the header bytes on a fresh file and see where I could find them in my disk image. I found them -- the beginning of the compressed file -- and deleted everything prior to them on the image. (It bears noting that at this point I had numerous backups of the image and wasn't hacking up my only copy.)

Following the advice in Trower's Readme, I started with the simplest solution: copy the compressed file to a host drive and see if Windows mounts it. He cautioned that it might not work and Windows's attempt to "fix" the corrupted data could hose it; he was right. I was thrilled to see the filenames in the root directory show up, but I couldn't access the data in any of them.

On to step two: I tried using Trower's decmprss program. I tried it several times and discovered that it kept outputting empty files; they were the same size as my image but made up entirely of zeroes.

There was a line in the Readme: "DCMPRESS ought to work under Windows, but nevertheless I recommend running it in MS-DOS mode." All right. I did a Shut Down/Restart in MS-DOS Mode, but Windows 98 and VMWare weren't quite playing nice; any time I did that DOS would run for a minute or two and then freeze up and require a simulated hard reset.

So I went back to Windows, and checked to see why decmprss was outputting empty files. I started by trying it on a new compressed image that I knew didn't contain any corrupt data. I got the same result, proving that it wasn't just a problem reading my corrupt image.

Trower's toolkit included the source code, so I jumped into it to see if I could find out what was wrong. For the first time in years I found myself coding in Pascal -- coincidentally the same language Dr. Wily teaches at Prescott High School in KateStory IX. I didn't do anything particularly clever, just added some traces to see where the problem was occurring. I confirmed that the problem lay not in the Pascal portion of the code, but in the x86 assembler.

All right, I thought, my guess is that Windows 98 doesn't like the direct system calls that the assembler portion of the code is making. So that takes us back to trying to run it under DOS -- and if that doesn't work, the only thing left to try is to learn x86 assembler and pore through the DriveSpace API.

Booting to DOS from Win98 shutdown still didn't work, but it turned out that picking it from the boot menu worked just fine -- once I went into OSX's keyboard settings and disabled F8 for pulling up Spaces so I could use it in VMWare.

That worked, and generated a file that contained KateStory chapters that, I could confirm, were not in the copy I had.

That would be where the rest of Trower's toolkit came in -- reassembling files that had been partially compressed -- but I was confident that KateStory IX had been entirely compressed. So now it was time for my Thunderbird hack.

So I copied the entire, 1GB+ uncompressed image into Thunderbird's mail folders. Success -- Thunderbird correctly parsed out all the files that were E-Mails. I sorted them out, exported the ones that had "KateStory IX" in the sub line, and copied them out of the Win98 VM into my "real" system. From there I went through them all, cut out the stuff that was redundant or off-topic (which was most of it), and lo: today, this fourteenth anniversary of the original KateStory and eleventh anniversary of this installment, I have KateStory IX in its entirety.

So, back to my initial point: what does "hacker" mean to me? Well, eleven years ago my friends and I wrote a goofy story. Ten years ago, I lost it. And over the intervening years, I used my skill and my determination to get it back. (A friend once told me that when I want something I go after it like a pit bull, I don't let go. Comparisons to pit bulls may be the only thing Sarah Palin and I have in common.) I'm not some scary terrorist stealing your credit card or breaking into the Pentagon, I'm a guy who used his skill to recover a lost piece of his childhood.

Of course, I'm sure there are those who will say this doesn't make me a hacker. And maybe they're right. In the final analysis, all I did was use the dd command, set up a virtual machine, install Windows 98, do some very cursory hex editing, boot to DOS, use someone else's recovery tools, and copy a giant file into Thunderbird's mail folders. When all's said and done, I only wrote a few lines of code, and all they wound up doing was confirming what the Readme had already told me. So maybe that's not enough to qualify me as a hacker.

But you know what? If that's not enough to qualify as hacking, then plugging Sarah Palin's zip code into a password hint field sure as shit isn't.

The Old Stomping Grounds

October was a busy damn month. Five couples I know -- five! -- got married. I attended three of the weddings.

The first -- technically at the tail-end of September -- involved a road trip to San Diego with Brad, Ian, and Ben to attend Jon and Gina's wedding.

Now, let me start by saying that San Diego is one of my favorite places on Earth.

And let me add that Jon and Gina are my favorite couple. Those kids are gonna do all right.

And let me finish by saying that we arrived at 3AM, picked up Jon, and took him back to our hotel room for 40's and Mario Kart. I don't drink 40's, but I'm not about to refuse the request of a groom 31 hours before his wedding.

I remember very little of the remainder of that morning, but I do remember that Jon and I totally owned at Mario Kart. Just like old times.

Then I hopped a plane back to Arizona to marry my cousin.

...As in performed the ceremony. But yes, I opened with that joke.

You know, it's been a long time since we really hung out and chatted, but the last time I saw her she was really into the whole church scene -- I didn't really expect her to invite a secular humanist to perform her wedding. But it went off pretty well -- and yeah, I quoted scripture (you know, that "love is patient" bit's pretty all right, actually), but I kept my humanist street cred by throwing some Bucky Fuller in there too ("love is metaphysical gravity," baby -- bam!).

It was also very much an Irish wedding. In that people got hammered and were told to leave by security.

The third was...rather abrupt and unexpected, but not entirely unprecedented. I did not attend because I had about a week and a half's notice, and it was the day before...

The fourth, in Sedona -- another of the most beautiful damn places in the world -- where they made us dress up in goddamn medieval attire, but also there was homebrewed beer and mead so I definitely think it was a net gain. Plus I reused my costume for Halloween, which was good because I'd been Brodie from 2001 through 2005 and I really needed something new.

Also there was a misunderstanding with my hotel reservation, because hotels.com tried to tell me that Munds Park was 15 miles away from Sedona. I can't prove anything, but I'm pretty damn sure MapQuest was to blame.

Switching gears, last weekend I went on back up to Flagstaff to see the old Rocky cast perform, and I swear that a visit to Flagstaff is just good for the soul. I stepped out of my car and at the very first breath of fresh air my life felt monumentally better.

I got me a room at the Super 8, crossed the street, and then walked the length of campus from north to south. Let's get one thing straight -- NAU is trying, hard, to be ASU Jr. There's construction everywhere you turn, the roads are FUBAR, and there's no parking anywhere. Oh, and of course the front page of the school paper is talking about another goddamn tuition hike.

The campus has changed a bit, but, contrary to what I was given to understand by Ian, the field back behind Gillenwater -- which I have waxed philosophical about on prior occasion -- is still there. He must've been talking about a different field that got paved over.

The modified engineering building is much prettier than the old one. And the new business building that used to be the anthro building is pretty damn cool.

I went to Burritos Fiesta, and ran into a friend I'd been meaning to see. The last time I saw her was sort of a downer, so repairing that breach was important to me. That worked out really well, and that alone was worth the trip.

The next day I grabbed a bite of lunch with an old classmate, and then watched The Muppet Show on DVD and went to dinner at the Beaver Street Brewery. Then I hit the old theatre on Beaver and Cherry for the midnight showing of The Rocky Horror Picture Show. I went downstairs to greet the cast and determined that the most nonchalant position to be discovered in was on the couch in the green room, obscured by a clothing rack and with my face half-covered by my hood (medieval attire, remember). I was told I resembled a Sith Lord.

They worked me into the preshow, where I did something that they would later tell me they found a little shocking. And let me tell you, getting your old Rocky Horror cast to say, "Man, I can't believe you did that!" is one of life's richest rewards.

And then I went out to a makeshift cast party afterward, with two old friends and two new ones, drank Corona, and watched Shock Treatment. As always, Tami and I enjoyed it and nobody else did.

At 7:30 my eyes were crusting over and I could barely keep them open. I decided I could hold out no longer and went back to my motel room, grabbed a two-hour nap, showered, checked out, and went to breakfast at Martann's, which, as always on a Sunday morning, was completely packed and had only one waitress on duty. If I hadn't been craving one of their enchiladas with the fried egg on top since I'd started the trip, I wouldn't have gone, let alone stayed the hour and a half or so it took me to get and eat my food. On the plus side, as I took one of my two trips back to the car to feed the meter, I ran into two women I knew from high school. We BS'ed a bit and they told me they'd just attended a wedding of some old friends of ours. (I'm guessing about half of you have been wondering this whole time what the hell happened to the fifth wedding, and the other half are now going, Oh right! There was a fifth wedding!) They were but the first of a cavalcade of familiar faces I ran into on my way out of town.

I managed to ingest enough coffee and tea to get me home, but by the end of the trip I was just about hitting the ol' caffeine crash. I grabbed me another two-hour nap and then kicked back awhile (Ben came over to visit) and finally went back to bed.

But I tell you, it was a beautiful damn weekend and it left me in really high spirits. So high that I spent the next day blocking IP's on our mailserver, whose SMTP port was getting hammered so hard by spam attempts as to result in a goddamn DoS, and still went home feeling good.

Flagstaff's got that kind of effect on me I guess. I should probably go back soon.

But in the meantime, it's good to be back in the valley so's I can vote for Harry Mitchell. Go Harry!