21 September, 2009

New Computer 2009

Well, despite my being poor and unemployed, I decided it was finally time to upgrade Moria, my old Dell XPS from almost 6 years ago. It's been a good machine, and it marked my first and only departure from the world of building-your-own-frankenbox that I've enjoyed ever since I gave up on my Amiga and entered the PeeCee market.

First, what I'm upgrading FROM:

In February of 2004, my Dell XPS (Gen 2) came with:
  • 3.0 GHz Intel Pentium 4 (with hyper-threading)
  • 1G (2x512M) 400MHz DDR2 memory
  • ATI Radeon 9800 PRO
  • 120G SATA hard disk
  • 8x DVD burner
  • 12x DVD drive
  • 3.5" Floppy
  • Windows XP Professional

That beast, which was almost top-of-the-line at the time, cost me $2500, but worked right out of the box and (with the exception of graphics cards), hasn't caused me much trouble over the last 5 and a half years.

Of course, I've had to replace parts that failed, and upgraded a few things. It now has 3G of RAM, a Radeon x1950 (It had an Nvidia 6800, but that died), a new 500G SATA2 drive, and a new 16x dual layer DVD burner.

Since I'm poor, I couldn't afford the level of performance I wanted from a pre-built this time, and after begging and borrowing and cashing in on holiday/birthday money and a few other things, I came up with a budget of $1000 to spend on a new machine. Part of my justification for it is the idea that I might be able to write iPhone apps, if I had a new CPU (OSX won't run on my old P4). I also justified it by realizing that I spend even MORE time sitting in front of it now than I did when I was properly employed. If I'm going to debters prison, I may as well enjoy my freedom as much as I can first, eh?

So, here's the new beastie:
Not a bleeding edge system, but it should be respectable for a few years. The whole thing clocks in around $1200. Probably closer to $1300 by the time you add in shipping and some extra fans I got to fill in the empty fan slots in the case. Slightly over budget, but then you'll notice I added a UPS, which my old system didn't come with.

Those of you actually reading this far may have noticed I have four (4) hard drives listed. That's not a typo! I originally intended to get 3 drives and set them up in a RAID 5 array, but after doing some research, I decided a RAID 10 setup of slightly smaller drives would be better. I was right!

After doing some MORE research, I discovered the best setup I could hope for. The 4 drives are configured as 2 logical disks by the onboard RAID controller. The first 160G of each drive is sliced off as a RAID 10 array, yielding very good performance and full safety in case a single drive fails. This first container yields 320G of space, and should prove more than adequate for the operating system, normal applicatons, and "My Documents".

The remaineder of the drives is configured as a RAID 0 container, which yields a whopping 1.8T of space, striped over 4 disks which also yields some fairly impressive transfer rates. Yes, if a disk fails, that whole stripe is toast, but the majority of stuff on it will end up being games or media, which is easily replaced by redownloading it, or which can be re-ripped from the original media source (or restored from backup if it WAS downloaded).

The CPU overclocks quite nicely to 3.2GHz on the stock cooler, and that's where I plan to run it. If it starts feeling slow next year when GTA5 or EQ3 or whatever comes out, I can always buy a good aftermarket cooler and clock it to 3.5GHz, or even (assuming I'm employed or otherwise making money) buy a new CPU.

I will probably buy another 4G of RAM when I get the chance. I expect 4G to be enough for now, but I know by next year I'll want to have more. If I start programming in .NET, I might want it sooner. :)

Also, for the first time *EVER*, I plan to pay real money for a Microsoft OS.

...

I want that to sink in, since people who know me will be checking to see if I'm really me at this point. Windows 7 will be the first OS I buy from Redmond, and that's because it's the first one I've felt confident about. Having run the RC version for a few months, it feels fast and stable, much like XP after 3 service packs, and it seems to make sense. Things are laid out more logically than XP, and much more sensibly than Vista. DX11 will be required in a few years, and there are already several games that look meh under DX9, but quite amazing under DX10.

I'll try to provide some pictures in the not too distant future. It's been sitting on my test bench for a week, and now it's time to clean off my desk and tweak the wiring a bit, so I can get it hooked up and ready for action. I shall be installing Windows 7 RC, 64-bit on it, and just enough to get my gaming/browsing going, since I'll be needing to redo it again in a month or so when the full version becomes available... unless someone wants to buy me a technet subscription?

05 September, 2009

WAR!!!!!

I have no idea who, if anyone, ever reads this. However, if you're here, there's a good chance you are a gamer, and a pretty good chance you play one ore more of the MMO's I play. Either that, or you're stalking me. 8O

So, if you play MMO's, you know that there are some which are pure carebear, some that dabble in PvP in safe, consensual, nothing lost, and some that encourage you to rape and pillage, knowing full well that when you loot their dead and bloated corpse, you aren't just gaining stuff... you're depriving THEM of stuff!

EVE-Online is one of those games.

Oh, it has a carebear section, and it's cleverly disguised so that many players live out their entire virtual careers without ever risking ship or implant against the evil gankstas of the galaxy. But, as the devs like to remind the carebears, there is no 100% safe place in EVE.

My corp was reminded of this last week. I've played a couple of games with The Old Timers Guild, and they're a good bunch of people. They have a solid presence in EVE, with two corps. OTG, which is the PvP wing, carving out a bit of 0.0 space for themselves and making friends and allies (and enemies!) out there. OTGi is the carebear industrial side of our presence. The majority of folks here are miners, mission runners, people who don't care for PvP, but would rather accumulate wealth.

Last week, we got war decc'd. I've been told this happens about once a year, and generally when it does everyone turtles up until the aggressor gets bored and lets the dec drop. It costs ISK to keep a war going, so unless there's a reason, most people won't do it. Those who want to PvP will often switch to our PvP chapter, those who don't will either sit it out, or drop to an NPC corp until it's over.

In this case though, it looks like our aggressors declared war, not out of boredom, or to see if we'd fight back, but because they had a beef with the OTG chapter in another MMO that we both played, Age of Conan.

Personally, I don't mind that much. I will be dropping my corp badge if the war continues another week, and will probably join the PvP branch just to get my feet wet. I'd considered it anyways, but now's as good a time as any.

It does beg the question though... is this harassment? Should players who bring a grudge based on their treatment in another game be allowed to carry that into a new game? Should it be something you can petition?

*I* don't think so. I think this is part of what makes the game fun. But, what do *you* think?

12 August, 2009

My undead video card!

Hey, I'm back!

Yeah, so what eh? Well, about 6 weeks ago my video card died. It wasn't a fantastic video card, but it got the job done for the most part. Like 90% of the video card failures, this was due to the cheap-ass stock fan that came with it. I bitched and moaned about it, pulled out my old reliable crap card (no fan!), and played EVE-Online since it was the only game I could get more than 10fps on without having the pixels be so large that they scared the cats.

Now, before you guys start thinking I'm an ATI fan, let me say I've owned far more Nvidia cards, and ALWAYS been happier with them. Unfortunately, my old 6800XT died (fan failure) and in that case it also nuked some of the chips as well... the x1950 was on sale for dirt-cheap at the time.

Well, I have been shopping for a new computer on my super-limited budget for a few months now, and have actually picked up a case, power supply, shiny new video card, and a bunch of fans. I'm hoping to get the motherboard/cpu/memory this week, and if my credit card will handle it, and some hard drives next month. A thanks goes out to Mr. Rand, who gave me his old motherboard/cpu/memory... unfortunately, I couldn't get it to work... even with the new video card (which better work! I have no PCI-express machine to test it in), but if it had worked I'd be up and running with it now.

In the meantime, I found this gem! Yes, it's a BIG fan, and it was a pain to get that sucker installed... You have to first install heat sinks on each RAM chip and let them sit for a day so the heat-transfer tape cures. THEN slap some arctic silver on the monster heat sink/fan thing, assemble it with a whole cadre of nipples, screws, springs, washers, and slowly tighten the four post screws so you don't crack the chip. But... it seems to have worked! I have no way to measure the actual temperature because ATI sucks and didn't include a thermal sensor on my card, but running FurMark for 10 minutes didn't show any artifacts and the air coming out of the back was nice and warm.

Thus, I can now play other games again. It's still an older card, so until I can afford to finish my new machine, it's still gonna be a bit choppy in Dalaran, and no Crysis for me... but EVE looks stunning with everything turned up, and all my other games work again.

If anyone DOES have a spare PCI-express (version 1!) card they were going to throw away, I would continue trying to get Rand's old motherboard working... the fans spin up and I get no post codes so it MIGHT be trying to boot... just no video so I can't tell.

In any case... time to go blow things up. :)

06 August, 2009

MUD world design, Part 3

So, it was a long dinner...

Yeah, still trying to get back to writing every day, even if most of it's crap. Any good writer will tell you that's the key.. write a LOT of crap, because every once in a while, some of it sticks and isn't too smelly.

So, we left off with the idea of wanting to build a gigantic MUD world, having a map drawn out of the Big Picture, and maybe having a few slaves...errr.. builders to help make things come to life. The problem is, when Joe comes up with a brilliant story idea for an ice cave, and we HAVE a perfect spot for an ice cave up in the mountains, nobody has yet written the chunk of the world between the mountains and the newbie village. So, either Joe has to shelve the idea for a while, or bang out a bunch of rooms to get to the area he really wants to work on. As you might guess, those "filler" rooms won't be very stellar quality, and there might be a whole lot of them!

That sucks.

How can we get around this? There are a couple of ways, and it really depends on how much control you want to have over your world vs. how much work you want to do. The easiest way (from the builder/admin's point of view, not from the coder's!) is to use something like Perlin Noise. The advantage of this kind of system over fractals is that it can be evaluated at a point without having to build the entire structure in memory. So, you come up with an algorithm that models terrain based on a noise-generated height map + another generated map for foliage + another map for climate + another map for types of mobs maybe, stir well, and voila! You have a self-generated world of infinite size!

Of course, if you want to go that route, you will also want to make a graphical viewer that you can use to generate maps with various seed values until you find one you like, and then zoom in and scroll around to find the perfect place to center your world. Once that's done, you hook up your game's room code so that if no hand-coded room exists for the coordinate in question, it generates one based on those map values. Since such a room is temporary, it won't take any space and will go away after nobody's been there for a while. But, since the noise functions aren't random, it will be regenerated exactly as before next time you go to those coordinates.

If you aren't willing to surrender that much control, there is also the tried-and-true method of drawing maps in a paint program and having your code read them in. The downside is that you DO have to store the image in memory so it can be referenced without disk I/O. You also have to chunk your world up into square segments.... AND if you do allow multiple maps, the edges have to line up. If you choose the idea above of using multiple maps for terrain/climate/etc, you may have some work getting all the overlapping to mesh cleanly (photoshop to the rescue?).

Whichever method you choose, the end result is the same. You now have to have coordinates for your outdoor rooms such that your mechanism for moving knows what to expect when you type "north". That's not to say you have to have coordinates for every room... you could omit them for hand-edited things... but you may wish to be careful how you link between custom sectons and generated ones.

Many MUDs use a kludgy version called an "overland" map, which works a bit like the old Ultima IV game. You walk around the "overland" and then "enter" places of interest. Thus, movement on the overland is always by coordinates, and movement in the zones is always NOT. I prefer a more seamless approach, where the exit can either point to a room (vnum, path, depends on your type of MUD), or a coordinate (which might map to an already existing room, or which might cause a new room to be generated). That makes the distinction between hand-edited rooms and "filler" less obvious. In fact, if you use coordinates everywhere AND you write a reasonably good description generator, you can just skip over the small handfuls of rooms you used to have to write into your areas as filler spaces (IE: the 4 grasslands on either side of a road, etc).

I could write more here, but this has been a draft long enough.. let it be live!

02 August, 2009

MUD world design, Part 2

So, last time I droned on about how worlds work, and how they evolve from a plan (or a lack thereof). I promised to show you how to make a big huge world and still be able to grow bits of it that aren't right next to each other, but first... we need to get a few things straight.

Most MUDs use the concept of a room, as I mentioned before. But what IS a room? What functions does it serve in the game? Do we *have* to use rooms?

We don't need rooms, but they make life simpler in a lot of ways. Most of those ways are good, but a few are lazy. The firs thing rooms do is provide containment. Put simply, players only see what is in the room they are in, they only see people (and NPC's) enter and leave that same room. Combat is limited to the participants in the room. Speech is typically also limited to the room boundaries.

From a coder's point of view, this means a whole lot of checks that we'd have to perform for every action the player or NPC attempts can be simplified down to "am I in the same room as my target?" That's a LOT easier than handling range, line of sight, cover, and all the other things a coordinate based game has to deal with.

It also makes life easier on the builder. When designing an area, the builder doesn't have to measure and count, they just write the descriptions appropriately for the number of rooms they want the player to traverse from point to point. Want the journey from the city gate to the goblin cave to be 20 moves? Easy! Build your road out 18 rooms from the gate, describing the countryside in chunks large enough to fit the distance... put the enterance to your cave there. Now build out a few rooms from the road for people that wander. Done.

Of course, explorer types like me will laugh, since your world has edges you didn't account for. You'd need to put forests that are too thick to get through, or mountains too steep to climb, or swamps... you get the idea. The "edge" rooms have to make you believe you can't go that way, so you won't try... else it breaks the immersion.

Still, you'll notice I never said how far (in distance) the cave actually were from the city. That's because it doesn't matter. Rooms can be any size, and most games treat them as no size at all. Gamers talk about distances in terms of how many rooms away things are, and even games that drain endurance as you walk, treat all rooms as the same size.

If that sounds kindof cheesy to you, you're in my camp. I like maps! I like things to make sense unless there's a good reason for them NOT to. I like to be able to head out across country and find my own way, rather than following roads and directions. To do this, one either has to be in a coordinate system, or a room system that is fully fleshed out so it works like a coordinate system.

That is the show stopper. If you want to keep rooms, AND you want a fully fleshed out world, most people sigh, roll up their sleeves, and build on a grid. The grid will have thousands of "filler" rooms, whose description is mostly cut-and-pasted, and which have nothing of interest other than random wandering monsters.

You are standing on a grassy plain. Tall grass waves gently in the breeze, and stretches out as far as you can see in every direction. You think there is a smudge of a mountain range far to the north, and a forest lies below you, miles to the west.
Yeah. You can cut and paste that into about 200 rooms, then change the description of the forest and fill in another 50-100 on the west side. Yawn. Your players will "thank" you for your effort by flipping to brief mode and typing "/repeat 100 w".

But what's the alternative? You don't want the sheep-rail guided system. You don't want the complexity of a full coordinate system (and the major rewrites to the entire combat and communication system it involves). What else can we do?

More to come... after dinner. :)

New Look

Well, I decided to update my template, and even though I lost a bit of my custom HTML hackery, this looks cleaner and is simpler to change and maintain. Yay for lazy consumers!

30 July, 2009

MUD world design

I was thinking about game world design, in particular how MUDs have done things over the years, and thought I'd share. :)

MUDs have all kinds of worlds, and some of them are extremely detailed and cohesive, others are comical mishmashes of themes, and still others seem disjointed. So, in my quest to build a new game world for myself, I figured I'd take a moment to ponder how and why things happen the way they do.

Most MUDs are room based, and I'll stick to that as a design paradigm, because it's simple. Text based MUDs can be done with coordinates only, but one has to develop ways to "hang" descriptions over swaths of terrain, and then have LOS rules and such... too much to deal with for this discussion. Further, most MUDs don't have any real concept of distance. In a traditional MUD, rooms are connected to each other via exits in the cardinal directions, and the only sense of scale you have is what the description offers your imagination.

So, how does one go about building a world? I think tradition gives us two common paths... Top Down, or Bottom Up. I would suggest that more MUDs use Bottom Up design, as it requires less planning and structure.

You've wandered out of Old Midgaard, down the road and entered... Smurf Village??? WTF??? You've just met Bottom Up design! In this kind of system, the game admins generally come up with an idea for a starting village of sorts, so they build it, and then they build a few things around it, and they open the game up to players and encourage people to become builders as quickly as possible. Those builders will come up with random ideas for "cool" zones, and then the admins will decide where to link them in, building a room or three as an enterance, and adding a few signs or other hints so people can find the new content. The world grows out from a central point, and quite often there isn't much cohesive design.

That said, some games DO enforce theme, and DO try to place zones logically, so the ice tundra isn't 3 rooms away from the desert. But, as years go by, people get lazy and soon things just don't quite mesh up anymore. Since there is generally no hand-drawn map of the world, it's also difficult to visualize where 100+ zones actually fit in relation to each other.

The other side of the coin is the Top Down method. In this case, the admins think up an idea for a whole world, and sketch it out on paper until they get a level of detail that they're happy with. Usually, you also write out some back-story and history to populate the world with various nations and creatures. At this point, you select a starting area and start building.

Since the world is already designed, builders are encourages to select types of creatures/civilizations to work on, or areas on the map that interest them. It's generally best if they choose adjacent zones to ones that already exist, otherwise some form of portal or other transit must be provided until the connecting zones are fleshed out.

Adding random new ideas to these worlds is often tricky, since it requires the admins find a place on the map it can fit AND have it make some sense with respect to the surrounding populations. That can often be solved by having the game developed on one continent and adding totally new things to "discovered" islands, or in the "uncharted regions".

Next time, I'll show how you can have your cake and eat it too... that is, you can have a giant world map, develop parts of it that are not adjacent, and still let people wander back and forth without hokey magic spells or riding "Da Bus".

29 July, 2009

Poor Kitty

Well, I promised to post about my cat last time. Unfortunately, the good news is followed by bad news, so I'll just take a deep breath and tell the whole tale of Titch.

Titch came to us about 9 years ago, as a stray who was living out in the country near a friend and being beaten up by other cats around the area. Our friend was afraid that he'd get really seriously hurt or killed, and asked if we'd take him in as an outdoor cat in our neighborhood. We're suckers, so we agreed, and for the summer and fall, he lived outdoors and was happy to come up and get attention whenever anyone went outside, always came up for food, and slept on the porch, under the bushes, or wherever else he felt safe.

During that winter, we took pity on him and started letting him indoors, and while he always spent as much time outside as in, he took to sleeping indoors, and taking shelter whenever the weather was bad. Over the years, he became as much a part of the family as our other cats. He defended us from the fearsome "invader cats" that roamed the neighborhood, and I'm sure he even got in a fight or two with the fat old raccoons around here.

Of course, he had some health issues. He was a male black-and-white cat, prone to urinary tract infections (cha-ching for the vet), and he also occasionally had seizures. They lasted a couple of minutes, were obviously painful, but afterwards he seemed to be dazed for a few minutes, and then he'd recover and go eat, and sleep. These happened a few times a year, or after a trauma like being stepped on (sorry, Titch!), or getting into the neighbor's lawn after they put down weed and feed. The vet didn't find anything that seemed likely to be the cause, and since they were infrequent, we didn't worry too much.

So, while he did rack up some vet bills with his UT infections and special foods, he lived a pretty happy life up until this June. Sometime in late May, early June, we noticed a few bumps on him that seemed peculiar. They didn't seem to bother him, but keeping an eye on them they started to grow and more of them showed up. He still didn't seem bothered by them, other than scratching a bit, but they got pretty large and cracked open. Normally, we'd have taken him to the vet, but with money being tight, we figured it might be some pox or something that would run its course over a few weeks.

In the last week of June, he stopped eating and started getting congested and stuffed up. We tried to keep him inside and gave him some decongestants and forced him to eat and drink for a few more days, but he eventually got nauseous and we had to let him be. I should point out that he never seemed to not WANT to eat, he just would get to the bowl and then (apparently) feel naseuous and wander off. At this point, a friend of ours told us about a country vet they knew that was reasonably priced and we decided to take him out there the next day. This was July 2nd.

For the last few days, we'd been letting him go out on the back porch since it seemed to help his congestion a little, and he seemd to enjoy sleeping back there in the fresh air and sunlight. On the morning of the 3rd, we let him out as usual, with the intent of bring him back in when Kim got him from work to take him out to the vet. Wandering outside, we discovered that he'd left. A good hour's calling and looking in all his usual spots didn't turn him up, and after another hour, we'd missed the office hours and had to give up for the day.

We searched for him, called him, and did everything we could to no avail for the rest of the week. After another week went by with no sign, we assumed he'd gone off to die as cats often do when they're sick enough. We gradually stopped looking for him and hoped that he hadn't sufferd too much more.

On Tuesday, July 21st, I woke up at 1am and wandered out to get a drink and go back to bed. I looked out the side door, intending to close it, and saw this shadow slink up from under the bench and stand in front of the door. It took me a few seconds to realize that Titch had come back! After 18 days, our poor sick cat returned to us, weak and frail, but alive and happy to be home again.

I was at a loss for words, and overjoyed that such a miracle could happen. We took him to that vet the next day, had a few tests run, got some vitamins shot into him, and started feeding him raw meat to help him recover. Each day, he looked a little better, and even though he still had his bumps, he started getting a little strength back and looking more like a cat again, instead of a sack of bones with fur.

This is the point at which I wanted to tell you all this last week, but was just too tired to put it all down. I wish I could stop the story here, but there's more.

For 4 days, our happy little cat showed improvement and seemed content to eat, sleep, and get attention from whomever wandered by. He tried going down the stairs, and I had to rescue him since he wasn't strong enough to make it back up. He even played a little bit.

On Friday night, he started sniffling, and on Saturday he had gotten the same kind of head congestion that had eventually made him stop eating before. Since he only weighed 4 pounds (as opposed to his healty weight of 12 pounds), we knew he couldn't go very long without eating now. On Monday, we carted him off to the vet again, he got some more vitamins and a strong antiobiotic, with the hopes that we could kill whatever was causing his problems, rather than trying to treat the symptoms forever. The vet also said that his system was so weakened, that trying to give him multiple drugs would probably be too much for him.

That night, he seemed a bit better but still wouldn't eat. On Tuesday, he was snuffling a bit, but still not as bad as before. He at a very tiny bit of tuna, and drank some water, and I took that to be a good sign. This morning, he seemed about the same... not interested in food or water, wanting to be left alone for the most part.

Around 1pm, he had a seizure while I was checking on him. Having seen this before over the years, I wasn't overly worried, but knew it would drain him since he was already weak. So, I held him down to keep him from hurting himself (as I did whenever I was nearby when he had one). The first thing I noticed was that his urine was slightly pink. Not good, but still not really worrisome yet. That meant he probably had another UT infection, but since he'd just gone on antibiotics, there wasn't much ELSE we could do... I hoped it was just an existing infection that would be cleared up by the antibiotics.

A few minutes after his seizure, he did something he'd never done before. He had another one.

This continued for a good two hours, some seizures being severe, others seeming fairly mild. Sometimes only a few minutes of rest, other times having 15 minutes or more. After 3pm, I called the vet, and their office hours for today were between 6pm and 7:30pm. I also noticed, at this point, that he was trying to stand up but his back legs weren't responding.

Poking his foot pads confirmed my fear, his back half was numb and unresponsive, muscles only reacting to involuntary seizures. At that point, Ian and I made the hard decision to drive him up the vet at 6pm and have him euthanized.

Perhaps in an ironic twist of fate, perhaps because the God who usually likes to toy with us and watch us suffer was satisfied, after 4pm he didn't have any further seizures. When we bundled him up and took him out to the car, he cried a bit, but after we started driving, he sat quietly in Ian's lap and really seemed to enjoy the ride.

The sun was out, it was 73 degrees and NOT humid, the windows were open so we had a nice breeze, and he would look out the front window at the world going by, look over at me, look up at Ian, and seemed to be happy and content. I'm really grateful for that.

Once we pulled into the parking lot and stopped, he cried a little as we got out of the car, and wanted a bit of reassurance. The vet (a very nice older guy) made sure we knew the options, but didn't try to talk us out of it. He suggested it was probably a brain tumor that had finally gotten large enough to become fatal. Once we agreed to do it, he injected Titch with a sedative which made him throw up a tiny bit, but otherwise didnt' bother him. He slipped a tournaquet around his leg, and as we said goodbye he injected him with something. A few seconds later he released the tournaquet and Titch died within 2 seconds.... the time it took to rush from his leg to his heart.

It seemed quite painless.

I'm crying a bit more as I type this and remember it all. But I think it's for the best. He had a nice ride with people he loved and then got to sleep. We should all be so lucky in the end.

Goodbye old friend!

21 July, 2009

Yawn, how long have I been asleep?

Heh, two years since I last posted on this thing eh? Yeah, figures.

So, what news? Well, I quit Menard's a while ago for health reasons.... old people like me shouldn't be lifting the kinds of crap they had us lifting with no protection, no safety harnesses, and no help. After hurting myself a few too many times and having my doctor (whom I don't visit very often because I lack health insurance) tell me I probably have a "pre-hernia", which will turn into a full blown one someday... sooner if I don't change jobs... well, enough is enough.

So, does that mean I have a real job now? Alas, not yet. It seems the economy imploded, along with the auto industry, the banking industry, the housing market, and pretty much everything except the oil companies. Michigan has an over 15% official unemployment rate, which means the real numbers are closer to 30%! Fortunately, my house is paid off, and I'm not too far behind on taxes or other bills... for now.

I'm giving serious thought to moving out to San Diego, CA. I need to get a job before I can actually do this, but I'd kindof like to not spend another winter here. I like Michigan, but I hate the weather for 9 months of the year. If SOE doesn't want to hire me, I need to find someone else who can train me to be a good corporate drone.

Later, I'll post some good news about my cat. :)