Wednesday, December 20, 2006
Merry Christmas from Chicago
A couple of days ago I got a note in the mail from the City of Chicago Department of Revenue. It turns out that on our quick trip back into the city to return the defective 360 to Microcenter I turned right on a red light where I wasn't supposed to.
Frangelica and I were both in the car and neither one of us saw the sign. Naturally, the sign is quite visible int the grainy photo that came with the ticket.
In theory I could contest the ticket via mail, but I think that's unlikely to succeed. They list 6 valid reasons to contest the ticket and "I didn't see the sign even though both my passenger and I looked" is not listed among them.
So, Happy Holidays Chicago.
Maybe they'll use the $90 to help repay the legal fees.
Tuesday, December 12, 2006
Monday, December 11, 2006
Programming board game

*I don't snowboard. The closest thing I get to snowboarding is SSX.
Monday, November 27, 2006
Striding boldly forward into current generation gaming technology
Of course, the first console I brought home had a bad hard drive, so I had to exchange it. Did I mention that microcenter is about an hour and a half away?
The new console works just fine. I played Kameo for a few hours yesterday. It's fun, but I'm not sure it's my kind of game. I'll give it a little while more and then probably move on to Full Auto.
Thursday, November 09, 2006
The Dorm Room
My buddy D-Rod went and made a movie based on a play he wrote in college. It premiers this Sunday. Check it out!
www.dormroommovie.com
And then there were 7
The old group didn't work out. Folks were too busy. It made me sad, but it happens. I was semi-intentionally dragging my feet in finding new players, hoping maybe the old group would come together after all.
That's when Frangelica mentioned that she'd made a few friends in one of her classes. They seemed cool, and were interested in gaming.
So now, just like that, I have 7 players (including Frangelica).
We're rolling up characters this weekend. I'm looking forward to gaming again.
Wednesday, November 01, 2006
Sunday, October 22, 2006
Vehicular Fortitude: The Next Generation
This was a bad weekend for the car. Four new tires and a tuneup.
There went $850. Ouch.
Props
That last post was brought to you with Windows Live Writer and a nifty Source Code Formatter.
Now I just need to figure out how to make my chosen template look decent with the main text window wider, so the source code doesn't look bad.
String descritions from enums in C#
My AE Item Maker has a SingleUseItem class, which uses an enum for each different kind of single use item.
public enum SUTypeAmong other things I use the enum to generate names for items. In C++, I would probably write a function to convert the enum to the string I wanted, but this isn't c++, and I wanted to try something different.
{
INVALID,
POTION,
OIL,
DETONATION,
OTHER,
}
My first thought was to use the nift ToString() method. This got me literal strings for values, like "INVALID", "POTION", etc. It was close, but not really what I wanted. So I turned to my favorite search engine for help.
The results were mixed. It seems you can't actually override the ToString() method on an enum. But I did find the next best thing.
First, I add a Description attribute to the enum (you need System.ComponentModel for this)
public enum SUType
{
[Description("Unknown type")]
INVALID,
[Description("Potion")]
POTION,
[Description("Oil")]
OIL,
[Description("Detonation")]
DETONATION,
[Description("Single Use Item")]
OTHER,
}
Next I added this public static method in a helper class:
public class ItemHelper
{
/// <summary>
/// Returns the DescriptionAttirbute for an
/// enum.
/// </summary>
/// <param name="nType">Any enum</param>
/// <returns>DescriptionAttribute for that
/// enum, if it exists</returns>
public static string GetTypeDescription(Enum nType)
{
Type oSystype = nType.GetType();
string strName = System.Enum.GetName(oSystype, nType);
FieldInfo oFieldInfo = oSystype.GetField(strName);
object[] rgObjs =
oFieldInfo.GetCustomAttributes(
typeof(DescriptionAttribute), false);
foreach (object obj in rgObjs)
{
DescriptionAttribute oDesc = obj as
DescriptionAttribute;
if (oDesc != null)
{
return oDesc.Description;
}
}
return "Unknown";
}
}
You use it like this:
string strType = ItemHelper.GetTypeDescription(m_nType);
This isn't perfect. For one, if you have multiple description attributes you aren't guaranteed to find a particular one first. It also doesn't handle localization at all. But this works for what I need right now.
Thursday, October 19, 2006
Source Control update
- Save the file. That brings up a few options, include "Save As." Click that.
- In the file list, find the file you want and right click it.
- From the right click menu, select Perforce, then "check out."
- Finally, cancel and save again. You've checked out the file.
It ain't pretty, and it's not as nice as source control integration, but it does work.
ItemMaker updates
So far I have tests for 4 different item types, but 3 of those need some refactoring. My current goal is to finish one kind of item and get that working in a UI. I've decided that the first Item type I want to tackle are single use items.
At a minimum in order to get an app together that does single use items, I need:
- Tested and debugged basic single use types --DONE
- Tested and debugged basic spells --DONE
- Code to load spells from disk
- Code to save single use items
- Code to load single use items
- A UI that doesn't suck
Extra stuff that would be cool:
- The ability to print items you've made in nice stat blocks
- The ability to sort spells by level, basic type (damage, buff, etc), descriptor, level, and alphabetically
- The ability to specify multiple sorts
- Some automated way to add new spells
- Images
And of course, other item types.
Ultimately, I'd like my item maker to be better than the existing one.
Right now I have code that loads the spells from an XML file, but it's pretty brittle. If an entry in the spell data is missing or not in the right order it croaks.
I really have to watch myself. I'm trying, unsuccessfully, to keep things simple. YAGNI. So far I've made a SpellWriter, which writes out spell data in the appropriate XML format. I don't need it. I wrote it to play with more of the .NET XML classes. Oh well, maybe I'll be able to use it for something else later on.
At 6 you can learn Python
HAARG!
The whole thing is pretty entertaining.
Sunday, October 15, 2006
Thursday, October 12, 2006
Sunday, October 08, 2006
Source Control and Visual C# Express
I'm still using C#, but right now I'm considering using this app to learn .NET 3.0 / WinFX / Avalon.
I'm using Visual C# Express, which is pretty nice, but I have one big complaint.
The worst part by far is that, like all of the Express downloads, VC# Express doesn't do plugins. This means that it can't do source control integration, which is a big pain. I'm working around this right now by checking out everything when I want to work, and using Perforce's "Revert Unchanged" feature to clear out the files I didn't edit when I want to check everything in. This works for the ItemMaker, but that's only because it's trivially small now.
ItemMaker now consists of about 10 core classes, plus 6 test classes. I haven't started on the UI yet. So far, that's 16 class files plus associated project files that I check out, revert, and check in every time I make changes. And doing TDD, I make a lot of small changes.
Any software developer needs source control. Joel Spolsky covers why (briefly) in the Joel Test. Eric Sink also has a post about it. If nothing else, source control is a great undo feature. Those changes you made aren't working? Can't remember what you changed? Check source control. Is it still unclear? Revert and start over. Without source control, you don't know where you've been, you don't know exactly what changed, and you certainly can't recover easily from a bad mistake.
I won't even work on small stuff without source control. For the record, I use Perforce at home because the single user license is free. If you are braver than me, or need a multi-user source control system, check out subversion.
I'm really happy that Microsoft released free versions of its compilers, but not being able to use integrated source control is almost a deal breaker. For C# IDEs, my only other (free) choice is Mono. I'm not yet annoyed enough to make the switch.
Switching to blogger beta
Where the wild pies roam
Around 9 p.m. I was eating tasty Mac & Cheese and Chicken. Around 3 a.m. I was sad. I blame Salmonella.
The pies, however, were excellent.
Wednesday, October 04, 2006
LOST season 3
I haven't seen the whole second season yet, so I have no idea what's going on.
Two things come to mind.
First, wow. Lost is just cool. As usual, I can't wait for the next episode.
Second, I really dislike TV as it is now. Sitting and watching Lost I was thinking about how I need to either get a TiVo, go old school with a VCR, or just watch the series on DVD.
When we moved back to the Midwest we got TV again. I miss not having it. TV sucks away time. It's so easy to sit and stare at the pretty lights and moving pictures, and wake up 3 months later with very little else having been accomplished.
Watching series on DVD or (I imagine) on TiVo is different. You get to see what you're interested in and you don't have to watch the commercials. To me, DVD's are not quite as bad as TV, because you get to watch them on your own terms.
Anyway, I'm off to play with C# some more. No more TV tonight!
Monday, September 25, 2006
Back where it's sane
You can thank my buddy Ktorrek for giving me the kick in the pants I needed to start blogging again. He had to go and link to my blog.
A lot has happened over the last 4 months.
We landed in Illinois safely. Thanks to Frangelica's father our stuff arrived here before we did. One of my mother's coworkers supplied a variably sized hoard of helpers to unload the truck. Unlike some of my previous moves, everything arrived safely. Or so we thought at the time.
Highlights, in no particular order:
- Frangelica earned her Driver's license, and for the first time ever can legally drive a car by herself
- She is taking a couple of classes at a local community college
- Approximately 1 week after Frangelica got her driver's license someone broke into our new car and stole her purse. Almost everything has been replaced, but it was both time consuming and expensive. I estimate a total cost of nearly $500, just so the thief could get $8 and a useless cell phone. That doesn't include time off work.
- I thought I had cancelled my cell phone, but I had only put it on hold. So I got to pay Sprint for 2 months for a phone I don't have
- We have a cheaper pay as we go plan. The one from sprint was too expensive for what we needed.
- I ended up piecing together a new computer, because my old one was on it's last legs. The final straw was when half of the ram went south. My good friend Ktorrek put it together for me and I'm downloading crazy big data files as I type, including a copy of Visual C# Express, the Windows XNA Beta, The latest DirectX sdk, and the beta of the .NET 3.0 platform (formerly Avalon).
- Frangelica's computer is mostly dead. Ktorrek is attempting some horrific experiment designed to revive it. It will end up as a Frankenstinian combination of my old computer and Frangelica's old computer.
- I have returned to the east coast once to touch base. As always, my return flight was delayed. I had to spend a night with a friend before I could actually come home. Otherwise the trip went well.
- Working from home is awesome.
- My mother was caught in a flash flood a few weeks ago. She's fine but her car died. She bought a newer version of my car.
- The same rains that destroyed my mother's car flooded our storage locker. Fortunately there was minimal damage, but I need to get our furniture cleaned.
- As I expected, since I left work the push for Unit Testing has gone completely. But I still get to test drive what I do, so it's not a total loss.
- I bought Monte Cook's Ptolus. I couldn't help myself. I'm trying to get a group together but it's not going well.
- This website will probably change soon. I think I'm going to go with 1and1 and get an actual domain name. Frangelica might get her own domain name too. Who knows? I'll keep you all posted (hi mom!).
And that in a nutshell is the last four months.
Thursday, June 01, 2006
Pitching TDD
I was expecting to spend 10 or 15 minutes talking about unit tests, TDD, UnitTest++, and how I have already applied unit tests and TDD to some of the code I'm working on. I wrote up a short guide to keep myself on track. I abandoned my guide about 30 seconds in to the presentation, and ended up talking and fielding questions for about 45 minutes.
It was a pretty easy sell. All the questions were along the line of "How do you do X?" and "What about Y?" The hard sell will be to management. The whole thing will be complicated by my move back to Illinois. I'll be working remotely, whch means I won't be around to try and help TDD take hold. Still, I had to try.
I'm very excited to see how this works out.
Tuesday, May 23, 2006
Buying a car
The time was right. My old car was dying the death of a thousand minor repairs. We also figured out that if we bought a car right now we could avoid paying some extra Illinois taxes, at least if we interpreted the tax site correctly.
We got a flyer for a big sale. It was from some company that sells cars that I think are repossessed. Anyway, the flyer promised big BIG savings! So Frangelica and I went to check it out.
Keep in mind that I have only ever bought one car --my Saturn. There wass no negotiation, just a price sheet.
Frangelica and I headed out to the car dealership after I got off work. We both skipped dinner and just had a cookie --we thought we'd just be test driving, and we wanted to have plenty of time before the dealership closed at 9.
We were only interested in Saturn Vues. We test drove three before we settled on the one we eventually bought.
The negotiation process was... Interesting. And I'm not very good at it.
We were seated at a table. Our salesman would ferry different offers back and forth between us and the financial guy. We finally settled on a price, and then waited for an hour while the paperwork printed.
At the time I was sure that their "printer" had to have been the finest printer 1923 had to offer, given how long the process took. Later we realized that it was probably just a delaying tactic. We were both starving. Frangelica was getting sick. All we wanted to do was leave (with the new car). So when the papers arrived and almost all the numbers were different, we signed without complaint. The monthly payment was the same, which, a different salesman explained, was the important part. We were told that everything had to be accounted for in different ways, which was why the numbers didn't match the ones we had on paper from earlier that evening.
They actually invoked Enron. Since the Enron scandal, they said, they had to be very careful about how everything was written up.
Ultimately we signed and left with the new car.
We do love the car though, and ultimately that's what's important.
We also learned a few things.
- Never buy a car from a guy in a cheap suit
- Never buy a car from a guy that carries a plastic button around. When you pressed the button it said, "That was easy!"
- Never buy a car when you haven't eaten in recent memory. We didn't get out of there until after 10 (or was it 11?) --and there were no restaurants open afterwards. We dined on a fine meal from Checkers on the way home.
I'm not sorry we bought the car. We really do love it.
However, in the future I intend to only buy from places that don't negotiate --at this point basically Saturn or CarMax.
Monday, May 08, 2006
Sunday, May 07, 2006
Don't be a hater
Normally I'd ignore something like this as spam, but a friend of mine sent it. It was an article by Michelle Malkin, about a bunch of high school kids in California where, as a protest, they hung the American flag upside down underneath the California flag. According to this site, they were protesting a proposed federal law that would criminalize illegal immigration.
As far as I can tell, the part of the article that I find most offensive was added later, as I can't find it on Ms. Malkin's site.
The offending section goes:
Pass this along to every American citizen in your address books and to every representative in the state and federal government. If you choose to remain uninvolved do not be amazed when you no longer have a nation to call your own nor anything you have worked for left since it will be "redistributed" to the activists while you are so peacefully staying out of the "fray". Check history, it is full of nations/empires that disappeared when its citizens no longer held their core beliefs and values. One person CAN make a difference. One plus one plus one plus one plus one plus one.........
It is essentially accusing anyone who is "...So peacefully staying out of the 'fray'..." Of contributing to what I guess is supposed to be the ultimate downfall of the US. It is attempting to play on people's fears of illegal immigrants.
There are so many things wrong with the above statement I find it difficult to even start tearing it apart.
As I recall, the United States was founded on immigrants. The statute of liberty has the following poem engraved on it:
Give me your tired, your poor,
Your huddled masses yearning to breathe free,
The wretched refuse of your teeming shore.
Send these, the homeless, tempest-tossed, to me:
I lift my lamp beside the golden door.
One of the wonderful freedoms we have in this country is the freedom of speech. These students were protesting a proposed federal law they felt was wrong. Regardless of whether or not you agree with them, they have the right to protest, just like Ms. Malkin has the right to disagree with them.
Freedom seems to be one of the "core beliefs and values" that the anonymous author wants to ignore, at least for illegal immigrants. Most of us are descended from immigrants (legal or otherwise).
I'm no expert on illegal immigration. However, it seems to me that people do difficult things when they feel the benefit outweighs the cost. Illegal immigrants come here to the US because conditions are so terrible where they are from that living in a van down by the river with 37 other illegal immigrants and working 100 hours a week at 4 different jobs is still better than staying where they were.
That's the "problem." Walls won't stop illegal immigrants. Making illegal immigrants really "illegal" won't stop it either.
I'm inclined to say that anyone who wants to become and American should be given the chance.
Ultimately yes, the forwarded email offends me. It offends me because some anonymous twit is trying to use fear to make me hate a group of human beings that are different from me. It offends me that people buy into this crap. It offends me that while we here in America are fairly well off people around the world starve and don't have proper medical care. It offends me that human beings treat each other so poorly.
Folks, we're all human beings. We're all on this rock together. I know it's cliche, but can't we all just get along? If the student who is hanging the American flag upside-down offends you, fine --say something. Write your congressman, write your local paper, form your own protest, do something --be heard. But don't preach hatred.
Tuesday, May 02, 2006
That's the news...
Frangelica and I, after a lot of discussion, have decided to move back to the midwest, where people are sane. Or at least crazy in a way we like better.
I hope to be able to talk publicly in broad generalities about a new job soon. For now, I know I'll be staying in the game business.
We're leaving the third week in June.
Frangelica has a better rundown of why we're going, and where we're staying here.
I hope to post other details soon, including the story of how we purchased a new (used) car. Until then...
WATCH THE SKIES!
Monday, February 27, 2006
Yet more crickets
I've been busier with other things. I'm learning C# and test driven development. I'm doing yet more reading. I've played (and beaten) more XBox games in the past two months than I have in the two years that I've owned the XBox itself.
Right now I'm supposed to be working on an Arcana Evolved game. I'd like to have something set to go by the time Frangelica is done with her Spring Break, which is about 3 weeks from now. By that time I need to have the basics for the campaign done, and I'd like to have the AE Item Maker done too.
Of course, the pile of XBox games still taunt me. There are several yet to play.
For now, I leave you with...
INVADER ZIM!
Thursday, February 16, 2006
Monday, February 13, 2006
Software Development Approaches
As you might imagine I have been known to proselytize different methodologies. Recently I've settled on Agile methods. The values just make sense.
Some of my friends and coworkers will note that this is an almost about-face for me, but that's a story for another time.
What I really wanted to do was introduce this article:
Characterizing People as Non-Linear, First-Order Components in Software Development
It very nicely sums up what has been rattling around in my head for quite a while. The most important part of a software development process is the people involved. The process itself is secondary.
Tuesday, January 24, 2006
Saturday, January 21, 2006
Adventures in Test Driven Development
I just finished reading Test Driven Development By Example by Kent Beck.
It looks pretty cool. In the book Test Driven Development: A Practical Guide, author Dave Astels swears that TDD will make programming fun again. I find that particularly appealing, because it's been quite a while since I thought programming was fun. Don't get me wrong, I do like my job. I like programming. It gives me a deep sense of satisfaction when I finish a feature or fix a bug. I just haven't had fun writing code since I played around on my Dad's TI-99/4A.
Anyway, I finished reading Kent's book and was keen to start using TDD, so I did something I haven't done in years.
I started writing code at home.
That's a tough thing for me to admit. Almost every programmer I know writes code at home for fun. I never did. I got enough coding done at work. At home I was all about doing other things, like hanging out with friends and family or working on other hobbies.
I have also been reading about C#. I picked it because I wanted to learn more about Microsoft's .NET platform and learn something that might help at work.
So, I started a project at home with the latest version of Microsoft's Visual C#.
For the curious, I'm using Visual C# 2005 Express for my IDE, Perforce for source control, and NUnit for the unit testing framework. I'm developing a magic item creation tool for Arcana Evolved. I don't intend to release it, at least not with any data. The data belongs to Monte Cook, and I believe one already exists. Regardless, it should be a good learning exercise for me.
Goals
There are several things I'd like to get out of this project.
- Learn more about TDD
- Learn about XML (no, unlike seemingly most other programmers on the planet I haven't yet worked with XML at all)
- Learn the C# language
- Learn how to write windows apps in C#, using windows forms
- Figure out if C# could be used to write games
- Evaluate C# and the .NET platform for use at work
- End up with a good utility for myself should I ever finally get around to running an Arcana Evolved game again
- Figure out if writing code can really be fun again
The Story So Far
So far I'm done with Spell Completion Items, Single Use Items, Charged Items, and Constant Items. Magical Arms and Armor is a beast of a different color, and so is going to take more work. I have written 91 unit tests for about 8 classes, though one class has no tests of its own.
Things I've learned so far:
- Test Driven Development doesn't necessarily mean you start with a blank slate. It's good to think a bit about what you're implementing before you do it. TDD already forces you to do that by making you write tests first. You only write code in response to failing tests.
- Writing a to-do list on paper really helps. It keeps me focused on the test I'm working on and lets me not worry about juggling everything I need to do in my head.
- Starting out is hard. I have to remind myself to test first. See the red bar. Make the test work. Then refactor. My natural impulse is to work on several problems at once, to make changes that I "know" I'll need later. Usually I end up with too much stuff. I really have to fight the impulse to go right to the debugger.
- Fake data works great for tests. I don't have to pour through the AE book looking for a spell with a particular modifier when I can just make one up.
- Writing code is indeed fun again. For me, this is the most important part.
What's Next
I still have several things to do.
- I have to tackle Magical Arms and Armor, which work differently than all of the other items.
- I have to add a UI
- I have to get real data into the system
I think I'm going to start on the UI next. I'm going to use Charles Petzold's book Programming Microsoft Windows Forms, as well as Pro .NET 2.0 Graphics Programming. Between those two books I hope to be able to figure out the basics of windows forms. I'm told that .NET makes windows programming significantly easier. I sure hope so, because writing code with MFC is painful.
I haven't yet looked into learning XML, though I should do that soon. I can only use test data for so long.
Anyway, I've joined the TDD mailing list and found it very useful. I haven't posted there yet but I'm sure I will.
I've also been bitten by the TDD bug, but that will have to wait for another post. For now, things are going very well. Programming is fun again, and like I said above, that is the most important part.
Saturday, January 14, 2006
Back in, um, pain
One Saturday morning I woke up and could hardly move. Getting out bed was painful. I hobbled like an old man over to the bathroom. In the time since the previous night the bathtub wall had somehow grown to nearly thirty feet tall. Or at least, that's what it felt like.
After a hot shower I was better. Not great, but better.
I sort of have a history of back trouble. My father's back has gone out a few times. It went out once when he was playing with us kids at the school playground. He went to pick my sister up and he went down. I believe the paramedics came for that one. I remember he managed to get up on his hands and knees, and then couldn't go anywhere from there. Another time, his back went out when he bent over to pick up his toothbrush.
So anyway, my dad has had back trouble. So does my mother. Me, when I have trouble it's almost always with one shoulder.
This time, however, it was my lower back. Anyone who has had back problems will tell you how painful it is, how tense you get. You spend a lot of time wondering when your back will give out next. All of a sudden, the ground seems really far away. Getting in and out of the car becomes and adventure. You hobble from place to place. People wonder if you're just a young 80, or if you really are 30.
The only things that tends to make backs get better is time and rest. Well, that and moving correctly. Lift with your legs. Don't bend at the waist without bending at the knees. Get out of bed by turning on your stomach and inching backwards onto the floor. Be really careful of where and how you sit down, because if you choose poorly you won't get back up again without help.
Anyway, that Saturday I took it easy. By Sunday things were better. Not 100%, but better. Monday passed without incident.
Tuesday, Frangelica wanted to go to the mall to get makeup for the upcoming party. We went to Sephora.
Frangelica approached an employee to ask about some mythological powder or ungent or some such alchemical concoction. The employee smiled.
Before I knew what was happening, Frangelica was swarmed. At one point, there were three employees working on her. Over the course of our visit, all five store employees helped her with something.
In the meantime, I stood up and tried not to look too out of place. Which was hard, because I was the only male non-employee in the store. And my back was killing me. That's the other thing about back problems. Walking is more or less ok. Standing is bad. I stood for what felt like hours. I would have gone outside to sit on a bench, but I knew Frangelica needed me to pay for what was looking like about one million dollars worth of makeup.
Eventually I couldn't stand it any more. I told Frangelica I was going to hobble out to a bench. The employee chirped, "We're almost done."
Foolishly, I believed her. Looking back on it, they were only halfway through.
I must say that when Frangelica emerged from the flurry of activity, she was stunning. By which I mean, even more stunning than usual.
After some small discussion we decided that the various ungents, creams, powders, tonics, and whatnot would be Frangelica's Christmas present.
By the end my back felt a little better, but only because it had gone numb.
The next day I could hardly move. Getting out of bed was a Herculean effort. Scaling the sheer walls of the bathtub was too. A hot shower didn't help.
So, off I went to the doctor. Naturally, my doctor was on vacation, though I did like the doctor I saw. He hooked me up with industrial strength Ibuprofen and some groovy muscle relaxants, told me about a couple of exercises I should do and then sent me home.
The next day I went back to work, fuzzy from the muscle relaxants.
Normally, you shouldn't take the muscle relaxants and drive. It's a bad idea. But this is Virginia (the "welcome" sign to the state says, "Welcome to Virginia. 2 drink minimum"). Being numb improved the driving experience. Sure the idiots were still there. Sure I nearly died. I just cared less.
Anyway, about a week went by and my back wasn't getting much better. Sure it was a little better, but it wasn't the amazing improvement I was expecting. I was running out of muscle relaxants. So, back to the doctor I went. Naturally, both my doctor and the doctor I had seen previously were unavailable.
The doctor I got was a small Chinese woman. "If you're not better by mid-January, come back and see us."
Right. Clearly, I forgot to mention that with back problems, everything is slow, including the healing.
Now that it is mid January, I am feeling a lot better. My back is still a little tender, but I'm almost back to normal.
New Year, New Plague
Then we came home and got TEH PLAGUE. Again.
Clearly this whole family visit thing just doesn't work in my favor. The Grandma and the Spinster visit over Thanksgiving, and we get TEH PLAGUE. Frangelica and I get better. Then my back decides to give me... trouble. And I get a more mild version of TEH PLAGUE again, just before we drive back to Chicago, which made the drive that much more fun.
Then, just a few short days after we get back from Chi-town, Frangelica and I both get sick. Again.
I'm ready for a new, more healthy year now.
So, what's happened in the last month? I think that calls for a few new entries.