Thursday, November 29, 2007

XSD.EXE, oh how you vex me

I ran into an interesting issue with xsd.exe today. I was generating some classes based on a schema, but when I went to use the classes, I became confused. For some reason when generating a section that simply contains an array of another complex type, it ends up creating a double array of the inner class, rather than a normal array of the parent type which would contain a single array of the child class. This had me pretty confused for awhile but luckily I was able to find a solution online, which saved me from hand-bombing the fix.

Interestingly, while I'm currently using xsd.exe to gen the classes, I'm actually more a fan of the Skeleton Crew tools from BoneSoft. If you ever need to generate schema's from XML, or classes from schema's, or both, give it a try.

Tuesday, November 13, 2007

Back in the Whale's Vagina

I've been sent back to San Diego for some more time on-site with our favorite U.S. of American client, but if you're hoping for more embarrassing traveling tales you will be sorely disappointed by this post. On the other hand, I think we can all agree that the title alone would make this a solid 3.5 even if I just pasted the "Lorem Ipsum" placeholder text in for content. Lets hope I can do better than that, but I'm not making any promises.

This time around I'm here a little longer, and I've had a little more time to get off the hotel-office trolley tracks and enjoy the place. I got here early Sunday and took the opportunity to see the San Diego Super Chargers take on Peyton Manning and the Baltimore Colts of Indianapolis. This was my first NFL game, and although it cost me a pretty penny to buy my ticket from stubhub.com, and although I'm pretty sure that I broke a state law in doing so, it was worth it*.

I've never been to a sporting event by myself before. In fact, I've never even so much as attended a movie by myself, so it felt a little weird. But the awesome, drunken fans around me made me feel welcome, and I enjoyed myself in spite of the awkwardness. There was a true Super Fan right behind me and he screamed and hollered the entire game, even during TV timeouts and the space between quarters. I left my seat to wander the stadium at half-time, so he may have been quiet during that period, but I'm skeptical. He had our whole section in stitches the entire game, but I think my favorite part was when he got so excited he started stomping up and down in a puddle of his own spilled beer, at which point his extraordinarily patient significant other finally had to pull out the "please settle down honey, you're spraying beer everywhere" line. This caused him to "squeegee" the beer away from his literal stomping grounds with his shoes in case he got too excited later on.

The game itself had everything. The Chargers returned the opening kick-off for a touchdown. They returned a punt for a touchdown. They intercepted the golden boy every time he threw the ball in the first half. And yet they still almost found a way to snatch defeat from the jaws of victory. Thankfully Adam Vinatieri is in the early stages of his heel turn (in which he will slowly destroy the Colts from within before revealing that he is still a Patriot at heart) so he missed the game-winning field goal and sent everyone home happy.

The other thing that a little more time to wander around outside has allowed me to do is notice the giant Crate and Barrel store across the street from my hotel. What a wondrous land of well-priced linens and stately knick-knacks.

Just kidding, what I've actually begun to appreciate is the beauty that is San Diego and its weather. This place is simply amazing. I'm not sure I'd want to live here (for a bunch of reasons that I won't get into), but I simply cannot argue that perpetual summer doesn't have some serious appeal.

It certainly doesn't hurt that the cold spectre of winter is looming menacingly back in Winnipeg. In fact, if I get sent here in February there is a 37% chance that I will get caught making out with a palm tree. As with the sketchy ducat purchase noted above, however, this is a risk I'm willing to take.

*If the police read this and I get arrested before I'm back in Canada it was in no way worth it.

Tuesday, November 6, 2007

On Babies And Shelvesets

One of my co-workers is expecting his first baby any day now, and yet at the same time we've saddled him with some rather large changes that spread across all areas of our code base. The fall back, in case he cannot complete the changes to a suitable state for check-in by the time the baby arrives, has been for him to "shelve early and often". Basically, if he walks away from the computer we want him to shelve his code into TFS. This way, if he doesn't come back to the computer for a few days because a stork knocked on his door, I can just un-shelve his changes and finish up the leftover bits.

This seemed like a great plan; many backs were slapped, high-fives initiated (and returned!) and egos inflated. We are genius! So I don't know about the other guys, but I've been sleeping like a newborn baby knowing that all our bases were covered. I think you know where this is going. Except it's not. But it almost did.

Basically, papa-to-be was curious why some tests were failing and asked if I could unshelve his latest change and give it a look-see. When I went to do so, I got the following lovely error:

SupportTestData.xls is locked for check-out by INSERTCOWORKERHERE in workspace COWORKERSWORKSPACE.

Umm, that's not good. You see, xls is binary, so you can't share a check-out. And I can't download a shelveset unless I can check out every file. This is apparently a 'feature' of TFS, because hey, shelving isn't made for sharing, that's just a nice side-benefit, so don't expect it to always work the way you hoped it would.

Thankfully we discovered this pre-stork. Now we have the knowledge that he can simply undo his pending changes following his shelves, ensuring that there are no locks if he never comes back.