Category: Tech

YUMI

Had a spot of trouble with a hard drive at work today and decided to see what thumb drive Linux is like these days. I found a program called YUMI (Your Universal Multiboot Installer) at pendrivelinux.com and discovered that it's pretty great.

YUMI is a simple Windows executable. It's got a long list of Linuxes -- Ubuntus, Fedoras, server OS's like CentOS, small OS's like Damn Small Linux and Puppy, and non-Linuxes like FreeDOS, as well as special-purpose diagnostic software like Ultimate Boot CD and various AV vendors' recovery discs.

Click on one of the supported OS's, point YUMI at an ISO, and it'll install it on your thumb drive -- as many as will fit, with GRUB to select which one you want at boot time. Better still, if you don't have an ISO, it's got a one-click download for every single one of them.

And while it's got dozens of supported OS's built in, it'll do arbitrary bootable ISO's, too; I tried two and found that one (the latest FreeDOS installer) worked while the other (Hitachi Drive Fitness Test) did not.

As for Puppy, it's definitely seen some progress in the years since I last used it but my gripes remain much the same: instead of programs being labeled by name, they have generic descriptions (hypothetically a good idea for neophyte users who don't know what Seamonkey is, but in practice I think "Web" would probably be a better name than "Browse"), and the package management system is less than entirely intuitive. Still, for coming in around 100MB it's a damned impressive, and a whole lot easier on the eyes than the last time I tried it.

Anyway, YUMI's made it easy enough to set up that you can easily spend a couple hours (or more) screwing around with various USB bootkits. It's an impressive piece of software and one I'll definitely be keeping in my admin toolkit.

(There appears to be a Linux equivalent called Multisystem LiveUSB Tool. I haven't tried it out yet so I can't vouch for it, but if you're looking for, you know, a Linux tool for Linux, that might be something to check out.)

LeakedOut

So apparently LinkedIn didn't salt any of its users' passwords before hashing.

Man, if only they'd had some way of finding people who understood basic fucking network security and were looking for work.

Selling Out

It's interesting -- those last two posts have actually gotten a couple of people to tell me I should post more. A friend I hadn't talked to in a few months, somebody from the messageboard, and, to my pleasant surprise, a stranger. (Or possibly someone pulling a surprisingly elaborate hoax, which I suppose is still flattering in its own way.)

Partly because of the feedback, I'm going to try and write more here.

I've fucked around on the backend a bit; you've probably noticed posts have tags at the bottom now. I've gone through all the way back to when I first started using blogging software in '06, and tagged all of them. I'm half-tempted to go through the older ones, from when I entered everything by hand, perhaps for no other reason but to tally up how many posts each I've devoted to Mike Allred and Kurt Busiek, but that sounds suspiciously like a lot of work for very little payoff. The reason I switched to blogging software in the first place was because I found myself spending a really inordinate amount of time cutting-and-pasting from one page to another.

Speaking of which, I've also updated the KateStory page, fixed broken links, summarized Book XVIII, and added some new character entries, which is exactly the kind of irritating bookkeeping that drives me to go play Nintendo instead of updating the site. Wonder if it'd be worth it to set up a DB so I don't have to manage every character's list of appearances manually. Then again, we haven't done one of these in nearly two years.

And speaking of old crap that seemed like a good idea at the time, I've renamed the "My Personal Life" category, because that was always a pretty stupid name for "What book I am reading/What game I am playing" but which I kept for a dozen years due to a combination of inertia and mild amusement that I could refer to my categories with the shorthand "Life/Stream".

I've changed it to the more boring but more accurate "Status Updates". That still doesn't seem like a very good name, so if anybody's got a better idea I'm open to suggestions.


I ever tell you why this site is called corporate-sellout.com?

I was chatting with an old friend of mine. Girl I went to high school with; we were in drama together, and I went to my junior prom with her.

By this point we were in college. I was a freshman or a sophomore, thereabouts, and she would have been a year ahead of me.

We were still in touch but pretty testy with each other -- you know that age, where you're out on your own but still kinda stressed-out and pissed-off about everything.

Plus, I was still getting over a bad breakup. With her roommate.

Anyhow, we were talking about our majors. She'd picked creative writing and I pooh-poohed it a bit.

Not because I don't believe in writing, of course. She and I are both storytellers, at heart.

But for other reasons. I thought of college as a means to an end, a financial investment for a financial reward. And, well, I was lucky enough that I really enjoyed something that also was, unlike a creative writing, a lucrative degree. (That'd be CompSci, for those who haven't been keeping score.)

She responded, rather angrily, with "Well, it sounds like I'm studying to be an artist, and you're studying to be a corporate sellout."

It wasn't the worst thing she called me in that conversation (it was followed shortly by "asshole"), but it stuck with me.

Mostly because I make a terrible corporate sellout.

Up to that point in my life, I'd never even worked in private industry; all my work had either been for my family or for the government.

I've worked a few corporate jobs in the years since, but I'm still a bottom-rung IT temp. If I were going to sell out, it would have been for a lot more money than what I'm making.

Funny thing is, last I heard she was doing much the same work I am -- she's probably a bit higher up in the chain, actually, because a few years back she took an entry-level phone support job that I refused.

I can't say I regret refusing that job, because seriously, entry-level phone support sucks and I thank the all-powerful Atheismo every day that I no longer work in a phone bank, but I will say that the job I took instead because I thought it'd pay better and give me more room for advancement was...a miscalculation.

So it goes, I suppose. But I'm still a storyteller at heart.

I enjoy the hell out of writing. And I never really stopped doing it -- I just cut way back on doing it here.

I'm pretty damn prolific over on the forums, and I spend more time arguing with idiots in the ComicsAlliance comments section than I'd care to admit. I think I'm much better off trying to redirect at least some of that effort back this way.

I've probably got a pretty good backlog of standalone posts over at Brontoforumus (and maybe even Pyoko, if I feel like slogging through Wayback pages) that I could just copy-paste up here. I expect I'll do a bit of that, in addition to original posts.

Adventures in Home Audio

I'm not what you'd call an audiophile, but I know what I like.

I've got an HTPC I use as my primary media box. And for the past two and a half years, my surround sound speakers have been a set of Creative Inspire 5300's connected to it. They're perfectly good PC speakers (and were $80 when they were new), but as far as home theater, they're a bit lacking.

So, after months of research and scanning for deals, I got me a receiver and a new set of 5.1 speakers.

The receiver is the Onkyo HT-RC360, which Fry's had marked down from $550 to $300 for Presidents' Day. Now, three things:

  1. I have been keeping an eye on Dealzmodo, TechDealDigger, and TechBargains for months looking for a deal like this -- and none of them had this deal listed. This discovery was entirely the result of my deciding, on a whim, to check the Fry's site. Which is even more notable because
  2. I had been at Fry's, looking for a good deal on a receiver, the previous day, and not seen this. I know they had it in stock, because I picked it up in-store, but it hadn't been on display, nor had I seen it listed in the newspaper clippings upfront listing their weekend deals.
  3. Oh, and of course three days later the Sony equivalent got marked down to $215 on Amazon. But that's okay; this is the sort of thing you come to accept as inevitable in any kind of major hardware purchase, and anyway from the reviews the Onkyo sounds like the better device.

Talking of reviews, I couldn't find any professional ones of the RC360, which made me nervous. But I gathered from Cnet that it's roughly equivalent to the TX-NR609. I'd been looking at the 509, but its lack of OSD and HDMI upscaling gave me pause. Those features aren't make-or-break, but with the RC360 marked down to $300, it was only $75 more than the 509 -- plus it's got 7.1 support. For that price, I may as well buy something a little better and more future-proof.

I had also noted that most of the demo rooms at Fry's used NR509 mixers. While I don't always credit Fry's employees as the best judges of what makes a good product demo (the first thing you see when you walk in the front door is an expensive bigscreen plasma TV inexplicably playing a movie at an eye-searing 240Hz), I thought this was probably significant.

And while I was nervous about buying a speaker set I hadn't actually tested in the store, ultimately Cnet's review of the Monoprice 8247 won me over. The short version: you can get better speakers, but only if you pay four times as much. (An aside: I stopped reading news.com.com some time ago after their reporting became indistinguishable from the trolls in the comments section -- I was going to say "except with better spelling", but nevermind -- but their reviews section continues to be pretty great.)

Anyhow, the speakers came in and I wired them up. It's not pretty just yet -- for now the rear speakers are just sitting on end tables, with their cables blue-taped to the wall, but in the next few weeks I plan to get somebody over to run cable through the attic and mount them properly on the wall. (I'd run the cable myself, but asthma tends to limit one's desire for attic-related adventures.)

One minor gripe: the Monoprice page for the speakers recommends pin-type speaker plugs, but the wire-in-back type I ordered from them is too long; it won't fit in a speaker that's lying flat. It should work fine in one that's wall-mounted, and maybe the wire-in-side type will fit. I might try ordering a couple of those the next time I get something from them, though $2 speaker plugs aren't really worth ordering by themselves. So, bare wire for now -- not like I can hear the difference.

Once I got everything hooked up and configured, I fired up Back in the USSR to verify that the speakers were working, and then straight to the Bridge of Khazad-Dûm scene in Fellowship of the Ring. (This was the point at which my fiancée came out of the bedroom to complain that I was making the house shake. I like to think this was her way of saying "Great job on purchasing and setting up an awesome sound system, Honey!")

Image: The remote, with its many and oddly-labeled input buttons From there I hooked up the rest of my various devices. The Onkyo remote has the now-typical problem of a shitload of different inputs with sometimes arbitrary names -- "GAME" works fine for the component switch connected to my Wii and PS2 (another aside: I wish the thing had more component inputs so I wouldn't need a component switch at all -- but obviously analog is on its way out and I'm sure in a few years I'll have enough HDMI devices that I will be grateful for the emphasis on the new input over the old), but, absent anything resembling "HTPC", I have my HTPC connected under "BD/DVD". My seldom-used DVD/VCR combo is under "VCR/DVR", and my TV audio is connected to "TV/CD", which inexplicably is not the same button as "TV"; the "TV" button can't actually be assigned to any audio input. (I guess people connecting the audio output of their TV into an input on the receiver are probably a rarity; most people have cable boxes which they can connect to the receiver and then output to the TV. But I don't have cable TV, and we sometimes watch broadcast TV. Such people do exist!)

Also: this receiver is the only appliance I have ever bought that came with a GPL compliance notice in the box. This is one more piece of good news on future-proofing: my old TV is no longer supported, its firmware is no longer updated, and it has some annoying bugs (namely, every time it can't tune a channel in it drops it, meaning you effectively have to rerun the channel search every time you move the damn antenna -- again, developers just do not even consider people who watch over-the-air TV at this point). The Onkyo receiver not only supports more features and inputs than I need, its use of open-source software means it can continue to be updated even after its official end-of-life (unless, of course, there are some kind of TiVoization shenanigans at work).

Speaking of my 2005-vintage TV, it's probably the next major piece of equipment I'd like to replace, but it does have one feature I like: an "Automatic" zoom that will upsize the picture beyond the standard 4:3/16:9/"super zoom" presets and zoom the picture until there is no black border anywhere. This is especially useful for the PSP, which outputs games at a weird little 480x272 format that appears as a tiny little windowboxed picture even under most zoom presets. Unfortunately, the receiver's upscaling messes with the TV's "Automatic" zoom; it'll resize the PSP picture vertically, but that still leaves it pillarboxed and vertically stretched. That left me back at wiring the component output of the PSP directly to the TV and leaving the audio hooked into the receiver -- this largely defeats the purpose of upscaling since I'm back to switching TV inputs for different devices, but that is, of course, a minor inconvenience.

And that, incidentally, is the draw of upscaling for me -- I don't really expect the filters to increase my picture quality, but it does mean I don't have to switch from HDMI to Component 1 to Component 2 to whatever on my TV. (Actually, talking of quality, there were visible vertical lines on the PS2 picture -- but I couldn't see them from the couch, and I'm not sure if that's the fault of the receiver or the connection. I've had the PS2 and the cable for some time and I think the connection must be worn, as when I first turned the PS2 on I got audio but no picture; I wiggled the connector in the back and that's when I got a picture with faint lines on it.)

Now I've gotta figure out what to do with those Creative speakers. I'd like to hook them up to my desktop, but Apple is allergic to standards, and you can't actually get analog surround to work on a Mac without some kind of adapter.


Playing: Tactics Ogre: Let Us Cling Together. You know what else the receiver has? A shitload of presets for audio levels. It doesn't just have a preset for games, it has different presets for different genres -- RPG, Action, etc.

Reading: The Light Fantastic

Tempin' Ain't Easy

I try not to think about the fact that it's been seven years since I got my CS degree and I haven't put it to use professionally.

I entered the field at the wrong time and in the wrong place. It's rough all over, and the housing bubble hit Arizona disproportionately hard. I've spent the past few years working as a temp and building the odd website on the side.

The first temp gig lasted two years -- ironically, longer than any other job I've had. But I got laid off about a year ago.

There's this kind of paranoia you get. It could happen again any time. And it has absolutely nothing to do with how hard you work or how good a job you do. You could be out on your ass tomorrow, on the whim of some guy you've never met.

I've heard some of the "get a job" rhetoric lately and it's just baffling. A hell of a lot of people would like very much to get a job. I've been either unemployed or underemployed my whole adult life, and that's with a degree that, fifteen years ago, could have gotten me six figures.

Not that I intend this as a pity party. I've got work now, and it pays well enough to live comfortably while still squirreling away enough each week that I'll be okay for a few months if I find myself unemployed again. There are a lot of guys who have it a lot worse than I do.

And if you take anything away from this comedy of errors, let it be that: this is the story of a guy who's doing okay in this economy.

Job 1: Fortune 500 Company, Real Estate Business

Job: Imaging laptops, working in a warehouse, inventory duty
Distance from Home: 3.5 miles
Best Thing: Laid-back atmosphere most of the time
Worst Thing: Lung fungus
Length of Service: 2 years

This wasn't a bad gig, really. Not intellectually challenging, but I worked with some good people, I got some good exercise in, and most times things were pretty laid-back.

But it wasn't worth giving up my health for, and ultimately that's what I did.

I did a lot of work out in a dusty warehouse, and I managed to contract valley fever. For those of you not from around here, valley fever is a lung fungus, and it lives in dust. The Valley and valley fever are like the Internet and Hitler comparisons -- you stay there long enough, it's something you're eventually going to have to deal with.

So I contracted a lung fungus working there, and I've still got asthma. It's manageable now, but I'm not what I was. Before I took that job I was healthy.

The next-worst thing about the job, after the lung fungus, was the meddling from up the chain. People with little-to-no grasp of our actual day-to-day operations had very strong opinions of what those operations should be, and precisely which boxes we should check on which forms each and every single time we did them. Precisely what those opinions were tended to change from week-to-week, producing an ever-changing, increasingly complex system for dealing with very simple tasks.

And as this went on, the environment became less and less laid-back, and more and more stressful.

There was a real disconnect between the building I was in and management out on the west coast. Within my office I was regarded as an essential member of the team, and indeed my bosses not only recognized my value, they realized that I could probably be doing more for the company than just counting how many sticks of RAM were left in inventory, and fought hard to get me not only hired on but promoted.

It's no small comfort to me that every single person who actually worked with me was pulling for me. To the point that when Corporate decreed that all the temps would be let go, my boss's boss's boss got reassigned for telling his boss's boss's boss exactly how he felt about that.

It was nothing personal. And it was nothing to do with my performance. I was just caught up in a bloodbath. I was part of the first wave, but it kept going. Last I heard, they'd laid off another third of my department, every help desk tech in Arizona, nearly everyone in the front office, and most of the people up the chain to VP. And demoted my boss back down to tech.

But before all that, I got a layoff for Christmas. I lost my job two years, to the week, after I'd gotten it.

There's a fatalism that kicks in after awhile. A knowledge that no matter how hard you work and how much you're appreciated, there's some clown in a corner office somewhere who's never met you but has the power to decide whether you're drawing a paycheck next week.

But ultimately there's something liberating about that, too. After awhile you stop trying to impress the clowns in the corner offices who have never met you. You realize the only people worth giving two shits about are the ones you deal with every day -- and that trying to impress them isn't about whether you'll have a job next week, it's about doing a good job for its own sake and for the sake of your team.

Those guys had my back. And that means more to me than a paycheck ever did.

Unemployment

Unemployment sucks. But it could be worse.

It's a pretty damn smooth process in this day and age -- all online, no driving across town and waiting in line. You fill out an online form, they take a week or two to make sure your story checks out, and then they open up a bank account for you, send you a card, and put money in every week.

Once a week you'll have to resubmit your claim. You tell them you're still looking for work (and keep evidence on file in case they ask for it -- I kept rather a long Excel spreadsheet with a list of everybody I'd contacted) and declare any money you've earned.

The whole thing's demoralizing and more than a little Kafkaesque -- Ursula K Le Guin recently described it quite wonderfully in a short story called Ninety-Nine Weeks: A Fairy Tale, and it's barely an exaggeration. That spreadsheet I mentioned where I kept track of all the dozens jobs I applied for? Only one of them ever actually got me an offer, and it was out-of-state -- more on that below. By the time I did finally get work again, it wasn't from the job search, it was from the same temp agency I'd been working for since '08.

Job 2: Local Non-Profit, Medical Industry

Job: Imaging laptops
Distance from Home: 13 miles
Best Thing: A job!
Worst Thing: Poor pay, sporadic availability
Length of Service: 3 months, off and on

This one wasn't too bad either. Neat office, nice people, and a certain degree of autonomy. The cramped little room I worked in got pretty crowded and hot as time went on, and there was a whole lot of downtime as I waited for laptops to finish imaging, but hey, I got time to catch up on my reading.

I also learned some interesting things about security policy. I've never had to lock things down so tightly from the BIOS -- a unique strong boot password on every machine, USB boot disabled, Bluetooth disabled, and on and on.

The toughest thing was that this wasn't a 40-hour-a-week job. It was "We just got these laptops in; image them and when you're done we'll send you home and call you back in when we get more."

And, without getting into the specifics of my pay, here's where that got frustrating: often I didn't make significantly more money than if I'd just stayed at home and collected unemployment.

Unemployment in Arizona works like this: you get a weekly stipend of up to $240. I was eligible for that maximum amount.

Every week, you report how much you've earned. You can earn up to $30 before they start subtracting your earnings from your unemployment check.

So there's this sort of dead zone between $30 and $270 where you are making the same amount of money whether you work or not.

And at this job, I frequently worked a weird part-time schedule and fell into that zone. Once I got past that first $30, I wasn't actually making any money; I was just getting a paycheck from the temp agency instead of the state.

Obviously there are still reasons to work. For its own sake, first of all. And second, to stay eligible for my healthcare, which was set to expire after three months without work. (I got back into the market just in time, but not fast enough to keep someone from fucking up my paperwork and taking me off their books even though I was still paying in every week. I had to call three different departments to get it corrected and my last prescription covered.) But there's still a definite sense of frustration in knowing that you're effectively working for free.

More than one other tech actually told me I should slow down and deliberately take longer to do the work so that I wouldn't get sent home in the middle of the week to await the next shipment. What a position to be in -- effectively being punished for being efficient, and incentivized to slow down and waste time.

This, as you will see, was to become a recurring theme.

Job 3: Company You've Probably Heard Of If You Live in North America, Retail Business

Job: Phone support
Distance from Current Home: 30 miles
Distance from Apartment Where I Lived 4 Years Ago: Directly across the street
Best Thing: Coworkers seem like all right guys
Worst Thing: The single worst job I have ever had. Fuck these people.
Length of Service: About a month

On some level, this fucking fiasco was my own doing.

I'd been poking through listings on some job site or other (probably not CareerBuilder; I quit using it after I discovered it was the thing that kept locking up my browser and hanging my entire system) and I noticed an IT job being offered through my temp agency which my rep hadn't brought to my attention. So I E-Mailed him and asked about it. In hindsight, I should have assumed there was a good reason he hadn't approached me about it.

It was phone support. Not phone support like I'd done before, but in a phone bank -- I had a few feet of shelf that I wouldn't really refer to as a desk, partitioned off from the guys next to me by small dividers that I wouldn't really refer to as a cubicle. Every morning at 6 AM I pulled up whatever broken chair nobody was sitting in, put on a headset if it was still where I'd left it the day before, and started working my way through a list of branches to call to walk their managers through installing new kiosks that didn't work very well in buildings that, half the time, weren't cabled correctly. (Ever walk a retail manager through recabling a patch panel? I've done it six times before breakfast.) It was dimly lit and it was dehumanizing -- I'd compare it to an assembly line, but the assembly lines I've seen are a whole lot livelier and more fun.

(I will grant one thing to the "cog in a corporate machine" setup: this is a company with hundreds of stores, all organized exactly the same. Each store has the same patch panel with the same numbered ports that go to the same rooms and assign IP's based on the same scheme. There was this in-house .NET program we had that would let you plug in a store number, automatically populate the IP address for every port in the place, and give you a one-click ping for each one. That's the advantage of a company that treats its stores as unifom, cookie-cutter widgets. The disadvantage is that it treats people exactly the same way.)

I spent most of each day on hold listening to the same fucking 16 bars of piano music over and over again. Periodically interrupted by a recorded voice telling me I was on hold, of course -- and if I ever meet the son of a bitch who decided to stick voice recordings in the middle of hold music, I am going to gouge his eyes out with my thumbs. I know I'm on hold, asshole; that's why there is music playing. About the only thing that could trick me into thinking that I wasn't on hold would be if the music abruptly stopped and I heard a human voice instead.

There were a couple of guys there who I'd gone to high school with. One of them I recognized but hadn't really known very well; the other used to pick on me but claimed not to remember me (he blamed it on the drugs he'd been doing back then and I am inclined to believe him). Now, remember how earlier I expressed frustration that my career hasn't really gone anywhere? Well, if you want a symbol that will hammer that little insecurity home, suddenly finding yourself sitting next to a couple of guys from high school is a pretty good one. But probably not as good as being directly across the street from the apartment where you lived back when you worked a previous dead-end job. Man, that would have been a sweet commute in 2007!

So no, let's say that this job wasn't the best fit for me. But dammit, I got up every morning at 4:30, put on a smile, went in, did my job and did it well. I blew through every task they gave me and asked for more.

This, as it turned out, was a problem. But nobody ever actually bothered to tell me that.

One morning I walked in and found that my login wasn't working. I asked the guy who'd been training me; he hemmed and hawed and wandered off for awhile, then came back and told me to turn in my badge.

It bears repeating, at this point, that I had just driven 30 miles to show up to work at 6 AM.

My rep told me that they'd called his office the previous evening to tell him to call me and tell me not to come in to work in the morning -- after he'd already gone home for the day.

He added that I'd been sacked because they thought I didn't schmooze enough with the end users over the phone -- something that nobody had ever actually complained to me about. I wasn't rude, or even brusque; I was just, in my rep's words, "too focused on getting the job done". I'm used to support jobs emphasizing getting the task done quickly, because the user doesn't want to be on the phone and wants to get back to what she was doing. But apparently that's not how it worked at this company; they wanted me to slow down and shoot the breeze -- except nobody ever bothered to tell me that. Come on, guys, if you want me to talk about the weather, just say so -- I have quite a lot to say about the weather in Phoenix in June, even when half the state isn't on fire.

Anyhow, it's the only job I've ever been fired from. And nobody even bothered to tell me there was a problem, let alone that I'd been fired.

The guy who walked me to the door was apologetic and told me not to worry about it, that people get fired from that place all the time through no fault of their own; maybe just for looking at somebody the wrong way. And it occurred to me that I'd passed my boss early one morning in the hall and, when she asked how I was doing, cracked a grin and responded "Hanging in there" -- and she apparently took offense that I hadn't said something more enthusiastic.

On the whole, pretty demoralizing and upsetting, and far and away the worst professional experience I have ever had.

Of course, I use the term "professional" in its loosest possible sense.

Job Interviews

Through it all, of course, I was interviewing wherever I could.

There are lots of stories I could tell. The temp agency I spent half an hour trying to find. The interview where I referred to a former coworker as "A temp like me, but kind of a slacker" but the interviewer just caught the "like me, kind of a slacker" part and that pretty well torpedoed me. The interviewer who asked me about a comment I'd posted about Spore's DRM on the FTC website back in '09 and then followed up by asking my opinion about SB1070. But the best story is the hosting company I saw advertised on a billboard.

"Do you know Linux? We're hiring!" said the billboard, with a colorful mascot next to the words. I would see it on the freeway on my way to work. Or maybe it was on my way home from work. Maybe it was both; I think they had more than one billboard.

Well, hell yeah I know Linux. I pulled up the website and submitted a resume. Turned out it was a hosting company -- even better. I spent most of '07 running the backend of a local ISP singlehandedly; I know my way around Apache httpd and MS IIS pretty well.

So they called me back, and the most immediately odd thing was that they told me the job was in Austin. Why would a company in Austin advertise in Phoenix?

Well, of course the answer is that they couldn't find anybody in Austin willing to accept the shitty salary they want to pay for Linux administration, so they're advertising in depressed markets that are full of desperate, unemployed Linux admins. But as you might expect, they didn't come right out and say that.

No, they gave me some talk about how they're expanding into new markets, and how they'd pay for my relocation, and they didn't balk when I gave them a deliberately high figure for my expected salary. They made the whole process seem very exclusive, putting me through three different interviews -- a general one, a second one with a series of technical questions, and a third where they had me SSH into one of their servers and demonstrate that I know my way around bash.

And then they offered me an hourly rate that was maybe fifty cents better than what I was currently getting in the phone bank. And a relocation fee that might have covered a U-Haul rental, deposit, and first month's rent on an apartment.

I hear Austin is a neat place, but no thank you.

It was about this point that I decided to read some employee testimonials on the place, and it sounded suspiciously like the terrible job I was already working at.

The billboards are down now. I wonder if they ever found anybody desperate or gullible enough to take their offer.

Job 4: Contractor for a Contractor for a Contractor, Insurance Industry

Job: Imaging laptops
Distance from Home: 32 miles
Best Thing: Getting work immediately after the previous fiasco; autonomy and people who were happy to see me
Worst Thing: Night crew fired after their first day
Length of Service: 6 weeks

Actually, before this job my rep sprang into action and got me a half-day gig fixing a company's QuickBooks setup, a mere 5 days after the debacle at my previous job. But I'm not counting that as its own section. My rep's cool, though.

Anyhow, shortly after the half-day QB fixer-upper, he found me something else and, at last, I got to be part of a Windows 7 refresh -- the precise thing that my boss, the previous December, had assured me would ensure my job security for another year, the week before announcing that the Windows 7 rollout had been canceled and so had my employment.

Anyhow, this one was interesting. The idea was to provide a minimum of disruption for the employees, while upgrading most of the office to Win7 in a matter of weeks.

So we had a night crew. They came in, ran a script to back up the user's files, either reimaged the user's existing computer or grabbed a new, freshly-imaged one that I'd already put together, restored from backup, and left it to me to walk the user through initial configuration the next morning.

At least, that's how we eventually got it working. The first night, things failed rather spectacularly.

I got in the next morning to find the night crew still there, a small handful of computers actually in working condition, and the rest in various states of completion.

The way I heard the story went something like this: one tech on the crew had asked the guy in charge what the plan was -- how they were going to split up the workload, what the schedule was, etc. He had made some vague "Just get started" noises. She asked him a few more times; he responded similarly. Finally she just went to work; she was responsible for the handful of machines that had actually been finished, while the other techs hadn't really worked out a plan for how to get their work done.

So the company fired everyone else and put her in charge of the new team.

After that it went really smoothly most nights. There were a couple exceptions -- one weekend when the generator had to be turned off for maintenance and so they couldn't come in to get computers ready for Monday, and one night when the AC was out and it was too hot to work. But no more problems from the techs themselves; the second crew did a really great job and made my life much easier.

Job 5: Company You've Probably Heard Of If You Live in the Southwestern US, Real Estate Business

Job: Imaging laptops
Distance from Home: 22.5 miles
Best Thing: Autonomy
Worst Thing: Still a bit of a drive.
Length of Service: 4 months so far, out of a one-year contract.

And from there I moved on to my fifth job of the year, not including freelance Web design or that one-day gig fixing QuickBooks.

This one comes with a one-year contract, so hopefully that'll hold and I'll still be there through next August. But I'm not going to take that for granted; one of the many lessons I learned in the Dank Pit of Phone Support last summer is that a six-month contract can turn into a one-month contract with absolutely no warning. Course, I've been working this one long enough that I am confident in saying that this time I am working for decent human beings, but again, it's not the people I've actually met I'm worried about. And every time I hear the Windows 7 rollout's been delayed, I get a little nervous.


I guess it's worth asking, what motivates me to come to work every day and do a good job? Here's what I can come up with:

  • Need for money
  • Need for health insurance
  • Pride
  • Loyalty to my coworkers

It's instructive to note the things that aren't on the list. "Hope for promotion" and "fear of losing my job" are conspicuously absent -- yes, I do feel both of those things, but as I've mentioned several times, I have absolutely no sense that my employment or advancement is tied to my performance in any way. They're motivating factors just as much as the potential for finding a $100 bill on the ground or tripping and cracking my skull -- they're both things that have some potential for happening, and my job performance has about as much to do with the likelihood of either one.

Also missing: "company loyalty". And unlike those other two things, this isn't something I have in the slightest. I am, as I said, loyal to my coworkers, and I appreciate my rep at the temp agency, but that's not the same thing as being loyal to either the company I'm working for or the company that placed me there. If I get a better offer I'll take it -- and those last two bullet points are the only reasons I'll give two weeks' notice.

On the whole I'm not entirely sure this is a bad thing from my perspective -- hell, the ideal list would probably have two bullet points instead of four. Company loyalty, the stick of firing and the carrot of advancement -- I don't need those things to do a good job. But from the company's perspective, it's probably a bad thing.

And if I may be so bold, I think I'm probably representative of a good solid chunk of my generation. Educated, underemployed, unable to hold down a job for more than two years through no fault of my own -- what happens when that's your workforce? In the coming decades we're going to find out.

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!

Unison: File sync from Ubuntu to Windows 7

Hey, been awhile. Have been ignoring the blog (even my traditional New Year's Eve Post) and many of my other Internet habits in favor of various projects I've been hard at work on. I just pulled off a WordPress update; you're reading this so it looks like it went smoothly.

Anyhow. One of the aforementioned projects (and the thing you came here to read, if you found this page by Googling an error message -- and if you did, you may want to skip my meandering explanation and go straight for the numbered steps at the bottom of this post): I recently decided to set up a file sync system across the computers in my house. It's useful for syncing things like savegames, RSS feeds, and the public-domain ebooks I've been grabbing from Project Gutenberg and MobileRead and comics from Digital Comic Museum across multiple devices.

I'd done some command-line RSS before, and also set up backup systems with Toucan, but figured I'd try something different on this one. I gave Ubuntu One a shot and it seemed promising until I realized it isn't open-source and I can't set up my own server. Canonical is swiftly becoming the Apple of the Linux world -- good at taking open-source software and making it pretty and usable, but not so great at giving back to the open-source community.

Ultimately I settled on Unison, which proved to be a bit of a headache -- frankly if anybody has a better solution I'd be happy to hear it, but here's how I got it to work.

First of all, the Unison GUI requires GTK. Hardly a problem on the Linux side, but under Windows, extracting the binaries from gtk.org and setting the PATH variable didn't work, no matter what I did. Maybe it's a Windows 7 thing, or maybe it's a Unison thing, but either way, Unison threw up "This application has failed to start because libgtk-win32-2.0-0.dll was not found. Re-installing the application may fix this problem." every time I ran it. Sticking it directly in the GTK\bin directory worked but is an ugly solution; multiple sites suggested installing Pidgin, which comes with GTK, but produces the same problem as Unison doesn't find it in the path.

(Actually, let me back up a bit: I couldn't get Unison to work with 64-bit GTK at all. The only Unison binaries I could find were 32-bit; I opted to install a 32-bit version of GTK rather than stick Cygwin on my HTPC and compile Unison from source.)

Ultimately, I found a binary Windows installer for GTK (conveniently the first Google match for gtk windows binary installer); whatever my PATH problem was, this installer fixed it. The Unison GUI was up and running, from its own folder.

Next problem, though: SSH. Unison did not play nice with PuTTy.

Googling the problem, I found a page called Unison-ssh, which includes a wrapper named ssh.exe for download. If you've read this far you've probably already installed PuTTy, but in case you haven't, you'll only need it if you want to use public key authentication -- this ssh.exe will automatically install a copy of PuTTy's command-line SSH utility, plink.exe, if it can't find it. (Well, hypothetically. It tries to stick it in WINDIR and if you're not running it with admin privileges it'll fail.)

Now, I should add that this ssh.exe doesn't work properly under Windows 7; it'll prompt you for a username but only let you type one character and then automatically Enter it. Same problem with the password prompt. The comments thread in the page is filled with people who have the same problem. Maybe a clean compile would fix it, I don't know; again, I didn't want to go to the trouble of setting up compilers on my HTPC.

There's a solution a ways down the comments thread. Unison stores its data in the .unison directory, even under Windows. (That'd be \Users\name\.unison under Win7.) They're simple text files with the .prf extension. And you can add an "sshargs" line to give command-line arguments. If you're comfortable sticking your password in plain text, you can add the line "sshargs = -pw [pass]" and you're done. But if you're not, you can set it up with RSA keys. A later comment links a post on Palin's Technical Blog that runs down how to generate a keypair with puttygen -- the problem is, I couldn't get my Linux server to accept it; I kept getting a "Server refused our key" error.

I found the solution on Andre Molnar's blog: you need to generate the keypair on the Linux server, using ssh-keygen, add the public key to your authorized_keys file, then move the private key over to the Windows machine and use puttygen to import it and then save as a PuTTy .ppk file. From there, add "sshargs = -i [path to private key]" to the appropriate .prf file.

Almost done, but the Unison GUI still has path issues, even if you stick ssh.exe in the same directory as PuTTy and add that to your PATH. I got around it by sticking a shortcut on the desktop with the PuTTy directory as the working directory.

In summary:

  1. Install openssh-server on your Linux server and PuTTy on your Windows client.
  2. Install Unison and its dependencies on your Linux server. (It's offered in the Ubuntu repos; command-line is unison, GUI is unison-gtk.)
  3. Install Unison on the Windows client.
  4. If you want to use Unison's GUI, install GTK on Windows.
  5. Download the ssh.exe wrapper for PuTTy. Stick ssh.exe in the same directory as PuTTy and put that directory in your PATH.
  6. Generate an RSA keypair on your Linux server using ssh-keygen. By default it will put the keys in ~/.ssh/id_rsa and id_rsa.pub.
  7. Copy the contents of the public key (id_rsa.pub) to ~/.ssh/authorized_keys. Remember to set perms on ~/.ssh to 700 and authorized_keys to 600.
  8. Move the private key (id_rsa) to the Windows machine. That's move, not copy; delete it from the Linux side as you don't want to store the same private key in more than one place.
  9. Run puttygen.exe. Import your existing private key, then save the result as a new .ppk file. Delete the original key file. Again, only the owner should have read perms on this file.
  10. At a minimum, your \Users\name\.unison\foo.prf file should contain the following:

    root = [Windows path]
    root = ssh://[user]@[host]//[Linux path]
    sshargs = -i [path to private key]

  11. To get the Unison GUI to run ssh.exe properly, create a shortcut and set its working directory to the PuTTy directory.
  12. You can schedule regular syncs using Windows Task Scheduler; run the command-line Unison executable, with args "-batch [name of pref file]". Don't include path or extension, just the filename ("foo" in my example above).

So there you go: a cross-platform syncing solution. Good for backups, for keeping files consistent between your desktop and your laptop, or for anything else that requires keeping the same files on multiple machines.


Playing: Just finished playing a fan translation of Act Raiser. Maybe a bit more on that soon.

Reading: Blood of the Elves. As I await The Witcher 2.

Form and Function

A few weeks back, I rented Hellboy: Sword of Storms. It was a neat little movie, and adhered pretty well to the the comics' folklore vibe. The highlight was a sequence adapting Heads.

And it occurred to me, you know, the best Hellboy stories are 8-page adaptations of folk tales, in which Hellboy himself plays only a minor role. Similarly, wouldn't it be great to see some 10-minute Hellboy animated shorts?

It's a real pity that both 8-page comic stories and 10-minute animated shorts have fallen by the wayside. DC, at least, seems interested in bringing them back: they've been doing 8-page "secondary features" in some of their popular titles, and next week's animated Crisis on Two Earths will also include a 10-minute Spectre short. Which is the perfect length for a Spectre story.

And of course all this has me thinking, Why 22 pages? Why 22 minutes? Why 6-issue arcs? Stories should take all the time they need; no more and no less.

Which isn't to say that rigid parameters can't foster creativity. The BioWare Writing Contest I participated in a few years back had some very tight guidelines -- only so many characters, only one location allowed, and that location has to be a pretty tiny square. But in a way, that stimulated creativity. Sometimes, you need parameters.

Douglas Adams is a favorite example. His best Hitchhiker's Guide work was written for radio, with a rigid three-act structure and length requirement for each episode, with the requisite pacing those things entail. Those episodes were adapted as the first two books of the Trilogy. The third, Life, the Universe and Everything, was adapted from an unused Doctor Who pitch, so it was conceived around a predefined structure as well. The last two books, where Adams took a more freestyle approach, tended to flail a bit; they were adapted by Dirk Maggs for radio a few years back and, for my money, worked much better with his judicious editing.

(The awesomeness of The Long Dark Tea-Time of the Soul does not fit my narrative as, to the best of my knowledge, it wasn't adapted from a radio or TV format. The first Dirk book was, though.)

There are plenty of writers who could benefit from tighter restrictions. Will Eisner put as much plot in a 7-page Spirit story as Brian Michael Bendis does in a 132-page Avengers arc. Sometimes I like longer, decompressed stories that spend more time on the scenery and the atmosphere. But there should still be a place for those weird little Hellboy stories.

I recently read Fables: 1001 Nights of Snowfall. Its pacing and form were noticeably different from the typical Fables books, because of its format: it was written as a graphic novel, rather than simply collecting 6 issues of a serial comic.

(A tangent on nomenclature: I absolutely despise the term graphic novel as it is commonly used, ie as a synonym for "comic book" used by people who think they're too cool for Spider-Man. However, it is a useful term when used in its original sense, ie a comic written in long form instead of being serialized in stapled, 22-page, monthly increments.)

Of course, 1001 Nights isn't a graphic novel so much as a graphic short story collection -- far from being a longform Fables story that takes its time, it's a series of stories which are shorter and tighter than a typical issue of Fables. So actually, it's more along the lines of those 8-page Hellboy stories I've been yammering about.

More in the "paced like a novel" vein would be DC's upcoming Earth One books. While it is obvious that these stories need to be published, as nobody has retold Superman's origin story in over three weeks, it's going to be interesting seeing them told with a little more breathing room, without the overwhelming, breakneck pace of Superman: Secret Origin.

I kid, but you know, the nice thing about constantly retelling Superman's origin is that now the Siegel heirs get a cut.

At any rate, once the rehashes are done, it would be quite nice to see DC tell some new stories with these characters in this format -- stories as long or as short as they need to be, at whatever pace suits the piece, without having to speed toward a cliffhanger every 22 pages.

V for Vendetta is actually a decent example -- yes, it was serialized, but its chapters don't fit into a consistent, forced length or pace. And while some of the chapters were climactic action sequences of V stabbing people a lot, others had him simply soliloquizing about anarchy.

(And funnily enough, the guy writing Earth One: Superman is J Michael Straczynski, the same guy whose The Brave and the Bold is currently the best 22-page superhero book that actually tells 22-page stories -- but whose run on Thor was decompressed, organic, and even meandering. Which is not a criticism, as I loved his Thor; it's just a statement that the man can write very well in different formats.)

If the world is a just and beautiful place, Dr. Horrible's Sing-Along Blog is a template for the future of television. It manages the rather neat trick of adhering to a rigid structure that also just happens to be noticeably different from the traditional structure of a TV show: three 13-minute acts, each itself featuring a beginning, a middle, an end, and four songs. It's similar to, but distinct from, the standard three-act structure and 44-minute length of an American TV show.

Even The Daily Show -- God, not a week goes by anymore but one of the interviews goes over. Which is swell, but the way this is handled online is completely boneheaded: if you go to Full Episodes on thedailyshow.com, or view an episode on Hulu, you get the broadcast episode, which shows the truncated interview, followed by an admonition to check out the website, followed by Moment of Zen and credits. I can see this as an unfortunate requirement for broadcast, but guys, Internet videos can be more than 22 minutes. Why in the hell do I have to click through to a different page on the site (or, if I'm watching from Hulu, a different site entirely) to watch the rest of the interview? It's viewer-unfriendly, especially if you use your PC as a media center hooked up to your TV. Cut the full interview into the damn episode. Add an extra commercial in the middle if you have to. (It would be swell if you didn't show the exact same commercial at every single break, but that's a separate presumably-silly-and-useless "rant".)

At least they've wised up a little and started showing just the first part of the interview in the broadcast episode and then showing the rest in the "Full Interview" link on the website. It used to be they'd show a chopped-up version of the interview in the broadcast episode, meaning that instead of the Full Interview link picking up where the show left off, it had five minutes' worth of the same content spread out across it.

You know, it seems like the youngest of the major media is also the one with the least rigid requirements for length. Video games can be anything from a three-second WarioWare microgame to a persistent world that players sink years into. People may grouse a bit that Portal or Arkham Asylum is too short, but it doesn't prevent them from being highly-regarded, bestselling titles.

Which is, of course, not to say that longer games don't have to function under tight restrictions. They're often very high-budget affairs with a hell of a lot of people involved (as Dragon Age tries to forcibly remind you with its absurdly slow credits crawl) -- programmers, writers, artists, and so on. The Mass Effect games have voiced player dialogue and let the player choose Shepard's sex, which means every single one of those lines has to be recorded twice. (And frankly that doesn't seem like enough variety -- I have a Samuel L Jackson lookalike who says "aboot".)

And those restrictions are probably why every dialogue choice in ME is broken up into a predictable paragon/neutral/renegade choice. That kind of very-unsubtle delineation is exactly the sort of thing western RPG developers have been trying to get out of (as in both The Witcher and Dragon Age), but in the context of ME it works quite well -- I've even tried my hand at writing in a three-choices, no-hubs dialogue style and it works very organically. (For the ludicrous amount of dialogue in Dragon Age, there were places I could see the seams showing -- spots where I'd have three dialogue options and, as soon as the NPC spoke, knew that all three led to that exact same response. But that's probably a lot harder to notice if you've never written a dialogue tree yourself, and it's certainly an artform in and of itself, giving a response that works equally well for three different questions. I can only think of one occasion in the dozens of hours of Dragon Age where a writer screwed up and had a question hub that began with an NPC answering a specific question in a way that didn't make any sense if the dialogue looped back.)

And of course it's the medium that allows this kind of longform storytelling. Game length is no longer restricted by the arcade environment. Which is, of course, not to say that short-play games don't get made anymore -- Street Fighter 4 is a high-budget, "hardcore gamer" example, but Nintendo's entire business is built around games a casual player can pick up and play for ten minutes at a time. Ditto every Flash game on the Web, and most games on the iPhone.

And, indeed, Internet delivery is going to liberate other media from their restrictions. Eventually, we're bound to see shows like The Daily Show just run more than 22 minutes if they have to, and, God willing, we'll see more offbeat stuff like Dr. Horrible. The Web's given us comics as diverse as Achewood, Dr. McNinja, Templar, Arizona, and FreakAngels, and cartoons from Adventure Time to Homestar Runner to Charlie the Unicorn to Gotham Girls to the complete version of Turtles Forever. It's also allowed MST3K to continue in the form of the downloadable RiffTrax and the direct-order Cinematic Titanic.

Variety is the spice of life. I love comics -- and yeah, that includes mainstream superhero comics. But I'm sick of all of them having the exact same structure. Fortunately, I think we're on the edge of an age of experimentation.

Or another damn market crash. It is an odd-numbered decade now, after all.

A Random Thought

A thought: What are we going to call terabytes for short?

Megabytes are megs and gigabytes are gigs, but ters sounds stupid and awkward. So is teras (which only saves one syllable) going to become the norm, or are we going to go the K route and simply say T?

These are the kinds of things I think about.

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.