Monday, December 17, 2007

Christmas Reflections

We just brought home our Christmas '07 tree, which is so awesomely huge that, not only did it mark up the ceiling, but it also caused us to run out of lights! So I don't have any completed decorating shots yet, but I decided it might be fun to post the before and after shots of Christmas '05, when Molly, our goofy sheepdog (and at that time about 9 months old), decided to play with the tree one day while we were out.

Here is a look at our proud (yet admittedly small) tree from '05 in all it's glory:

And here is what it looked like after Molly had her way with it (I hurriedly stood it up before I thought to take a picture):

Finally, while there is no visual evidence of the culprit from that day, here is a picture from this afternoon. Do not be fooled by the innocent expression, this dog is 100% rascal...

Monday, December 10, 2007

How Christmas Is Supposed To Work

My buddy D'Arcy is apparently new to the real Christmas tree thing. I'm a little shocked, as I always believed he came from somewhere up north, a place where I assumed fake trees would be properly mocked for the craptastic little plastic devils that they are. For anyone out there curious about my take on artificial Christmas trees, here it is:
Fake trees are for housewives and little girls. Men slowly kill something beautiful by removing it from nature, erecting it in their dwelling, and carefully dressing it up before spending 2-3 weeks watching it slowly whither and die. When finally it has succumbed, men haul the carcass into the back yard and hack it to pieces in preparation for it's final resting place: the fire pit. Forget the Baby Jesus, this is what Christmas is all about. -- Dave Harris

But alas, it appears that D'Arcy has never had the joy of a real tree before! It seems he is learning quickly, but I fear he is not properly appreciating the traditions and joy that come with a real Christmas. Yes, I leave 'tree' off that sentence for a reason: Christmas without a real tree is not a real Christmas. This is not open for debate.

Anyways, this is how a real Christmas works, and it should be celebrated and loved for all its glorious tribulations:
  1. Buy a perfectly imperfect Christmas tree. Or better yet, chop one down out of the woods in the middle of the night (it helps to scout out the tree you want during the day when it is light out, that way you can avoid needing a flashlight when it comes time for the Big Dirty).
  2. Drag the tree into your house and stand it up in the base. If you do this right, you should have snow, needles, and branches all over your house.
  3. If you picked your tree properly, it will be at least 2-3 feet too tall. You will need to cut the bottom off, but you want to make sure that you don't cut too much. The proper final height should leave the tree-topper bent over sideways up against the ceiling. Do the cutting in place on the living room floor, which should closely resemble the tree's original home by the time you are done.
  4. While you get all sappy holding the tree up straight, have your wife or another family member fight their way through the needles and screw it into place. This entire process should result in at least one good yelling fit by the involved parties.
  5. Circle the tree like a wolf circles it's prey. You are looking to find the 'good' side, the side that has the least number of gaping holes and broken limbs. Once you've found it, face that side towards the viewing area.
  6. Your tree, if properly selected, is now gorgeously engrossing a good portion of the room it is in, pressing out against the ceiling and walls on 2-3 sides. If you've wedged it in good you might be set, but just in case, it isn't a bad idea to tie it to a couple hooks or fixtures. These ropes add ambiance and 'festive spirit' to your decor.
  7. Time for the lights! Now, if you're doing this right, you should have a couple boxes of tangled up lights, preferably containing strands from as many different eras as possible. Don't take time planning anything out or testing the lights though; just start grabbing strands of lights out at random and spiraling them down the tree, from top to bottom.
  8. If you are lucky, you will have a few bubble lights on your tree. These can be hard to find, so don't be ashamed if you don't have any yet, but be sure to acquire them whenever you can, and hold on to them dearly! You can go years, if not decades, without seeing bubble lights in stores. It is imperative that you treat the ones you have like Smeagol treats his precioussssss.
  9. And now is the time on Sprockets when we dance!
  10. After the dancing, get out your boxes of decorations. These decorations should be a mishmash of things you made when you were 6 and that were handed down to you from your dead grandparents. Nothing should 'match'. I repeat: NOTHING. SHOULD. MATCH. 'Designer' Christmas trees make the Baby Jesus cry.
  11. Once the tree is littered with ornaments, some people think they are done! Those people are dumb. For now it is time for the coup de grace: tinsel! And not garland or whatever, but real tinsel. Old tinsel is even better, it used to be heavier and hung nicer than the stuff they make now. So just like bubble lights, horde your good tinsel. Do NOT throw it out with the tree! Not only is that bad for the environment, but you need that good stuff!
  12. Tinsel is extremely important; it can mean the difference between looking at a rotting bark-carcass strung up in your living room, or viewing a modern-day, pine-scented Van Gogh. So when it comes to applying the tinsel, technique is very important. You can't just take hunks of it and slap it all over the tree in 15 minutes and say you're done. A properly tinseled tree is done one strand at a time, hung across one individual needle. Each little 'finger' on each branch should have at least 2-3 pieces of tinsel. To avoid frustration, it's best to start at the top and work down. Also work from the inside of the branch outwards. For a good 10 foot tree this process should take a few hours, so it is acceptable to span the work across a couple of days.
There you have it, the 12 building blocks which are the foundation of a fantastic Christmas! The tree at the Harris household will be going up next weekend, so I will post a picture of it sometime next week in all of it's imperfect, half-dead, tinsel-laden glory.

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, 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.

Thursday, September 20, 2007

Nerds Can Make Anything Dirty

An innocent question about web cam's quickly turned into a hilarious discussion about broadcasting "Dev Porn". From Dependency Injection to Inversion of Control, from the Command Pattern to the Observer Pattern, from Unit Tests to Agile Practices, we pretty much mined the depths of indecency while speaking only in development terms.

Good times.

Thursday, September 13, 2007


This is ostensibly a code-related blog, but there are other nerdly things that I'm totally geeked about right now. Don't worry, I'll get back to boring subjects like Exchange Requests soon enough, but this week I'm focusing on video games.

Armageddon Empires
Armageddon Empires is a PC game that plays more like a board game combined with a card game. Bill Harris has given it a lot of love, and I have to echo his opinions, this is a really fun game. To top it all off the creator even writes a very interesting blog about game development and other things, check it out.

NHL '08
I've only played the demo on the Xbox 360, but what a game! The demo only allows for you to play 1 period, and you must always use the same teams (Anaheim and Ottawa), yet my brother and I played it for about 3 hours straight the other night. We then followed that up with another night of playing with some more of my friends. From what I can tell, this is the best sports game ever. Seriously, check out this review. Now I just need to petition EA to bring it to the Wii, or petition the wife to bring the 360 to me.

Guitar Hero
I finally got a chance to play one of these games over the summer, and while I had an inkling it would be fun, I didn't realize just how much I would enjoy it. Guitar Hero II is perhaps the best game I've ever played. Yes, as psyched as I am about NHL '08, I'm even more psyched about Guitar Hero III. And no petition's necessary on this one, it hits the Wii at the end of October like all good games should.

Tuesday, September 4, 2007

Exchange Requests

I was reading a few of the responses to Jeremy Miller's attempt to answer hard questions about Agile development, and came across this post from Arnon Rotem-Gal-Oz. I really like the idea (and terminology) of "exchange requests", it seems like a reasonable tactic to manage a project, as well as something that you could actually sell a client on up front.

Monday, September 3, 2007

DVD Power Burner Burned Me Alright

Friday was "Beta Day" for me and my co-workers, as we were to ship out the Beta release of our current project. Things actually went pretty well as we wrote up documentation and ran through some final tests. No lions had lept from the undergrowth to block our way, and we were actually cracking jokes and having a good time as we approached the finish line.

The final act is always to burn a few DVD's containing a VPC sandbox for the users to play in and ship them out. Zipping and Ripping the DVD's always takes some time, and as usual we were fast approaching the 4:30 drop-off deadline for our local courier. In an effort to speed things up 3 of us decided to each burn 1 copy of the DVD (rather than have 1 guy burn 3 copies, which is how it usually goes down). This seemed great and we all grabbed the files from the network share and loaded our nicely labeled Beta disks into our drives.

This is when the Mogwai officially became Gremlins, at least for me. I don't do a lot of CD or DVD burning, and so I discovered that I had not bothered to install any DVD burning software the last time I "refreshed" Windows XP. Still, I thought, XP has some basic burning capabilities; I should be good. Wrong. For some reason, XP didn't think I had a burner (likely missing drivers or whatnot).

Anyways, I was not to be dissuaded. I quickly hit and searched. I came across "DVD Power Burner", which the editors had given 5 stars. I quickly began the download, although I noticed that the user rating was 1.5 stars. I decided to check the comments, and on the first page of comments all I saw were the same "1 star" responses with what looked like the same comment: "DVD Power Burner". I was in a rush, so I wrote it off as some disgruntled spammer and carried on.

But wait! Look at this page and check it out for yourself. Obviously, I'm an idiot. I have no idea how I missed the giant blue text of each review, but I did. And boy (or girl), did I pay for it.

Sure enough, as each of the posters warned (especially topper2), this is not a 5-star product. Upon installing, I was told I needed to reboot. I did so, and then went to run the program. It was at this point that a dialog came up saying something to the effect of (paraphrasing) "A program has modified user32.dll, Windows has moved it for your safety". The app then crashed.

This struck me as not being good, but I figured "hey, Windows figured this out, its moved stuff for my safety, I'm probably ok. Let's just uninstall this thing and get something else". Well, after uninstalling I was asked to reboot again, and that was the last time I ever saw my desktop alive.

Yep, my system was borked. And how! I could not boot Windows; no safe mode, no "last known good configuration", nothing. Clearly I was not going to be much help in burning the Beta DVD's at this point, so I sought some opinions on how to at least recover my files and went home.

Recovery option 1: Use BartPE
Umm, I'm not even sure what this thing is (the guys at work gave it to me), but apparently it is some kind of utility for recovering systems that seems to be built in some way on the XP kernel. I loaded it, and it looked like something a Warez team had released. Anyways, I went through every single menu and option, and nothing presented me with any sort of view into my data. Goodbye Bart.

Recovery option 2: Do a "system repair" from an XP boot disk
This did not work. After waiting for 10 minutes while Windows loaded 8 trillion files, I was presented with the repair option. I selected it, only to be told that, as Windows understood it, my computer had no hard drive. I yelled "yes I do!" but it wouldn't listen. On to option 3.

Recovery option 3: Reinstall windows
Again, no dice. I was told that I could reinstall the OS without wiping my data files (although I'd lose all my installed programs, etc). This sounded ok, at this point all I wanted to do was recover the stuff off my "Data" partition and start fresh anyways. However, again after 10 minutes of waiting, Windows told me I had no hard drive. More yelling by me, and again Windows held firm. Uppity little OS. Anyways, on to option 4.

Recovery option 4: Run a Linux Live CD, mount the data partition, use Samba to share it out, and then copy the data from my home computer (another XP machine).
Thankfully I have an Ubuntu Live CD kicking around, since I have Ubuntu installed on one of my home machines (much to my wife's chagrin). I think I'll save the gory details of this for another post, but after a couple hours I finally had my data copying onto my home XP computer. Thank you Linux!!

Thus the great System Recovery Saga of 2007 was over. Sort of. I had my files, but I was still in need of a working OS on my laptop. The XP install still didn't think I had a hard drive, so it was not an option. Apple still won't let heathens like me install Tiger or Liger or whatever its called on a non-Mac system, so it was out. And as thankful as I am to Linux for recovering my files, I'm a long way away from being savvy enough with it to use it as my main work OS. This left me with one place to go: Vista.

As I began the Vista install and progressed far enough to be sure that, yes, it knew I had a hard drive, a small part of me died inside. I've spent the last 6 months hating on Vista, and I think for good reason. It is bloated and buggy, and in my estimation it is basically the new "Windows ME". But it has won (by default) a second chance on my system, and a small part of me hopes that things work out better between us this time around.

Just don't tell Jeremy I said that.

Thursday, August 16, 2007


Here's a list of things I've learned about traveling to San Diego this week:

  1. Don't piss off the US Custom's agent. It really isn't hard to do either; in fact I'm somewhat convinced he sort of likes being pissed off. Anyways, despite angering this most temperamental of beasts, I was able to weasel my way into a work visa and onto my plane just in time (after being thrown back into Canada once, mind you).

  2. Sometimes it pays to take a cab. My hotel is only a 20 minute walk or so from the office I was working in, so to me it made sense to just walk to and from work. Well, that makes sense when it isn't 8000 degrees Fahrenheit outside.

    I wore a suit to work on Wednesday, and I must say that as I left the hotel I looked damn good. I pretty much was guaranteed to make all the women at the office swoon when I got there.... except that by the time I walked through the front door my shirt was literally soaked right through. I'm not exaggerating (I wish I were), it looked like someone had poured a bucket of water on me and slapped a suit jacket over top. Thankfully the suit jacket hid my shame, but it was at least an hour before I dried off.

    I took a cab this morning and consider it $15 well spent.

  3. Speaking of the heat, pack some shorts. Who the hell goes to California and forgets to pack shorts? The answer, of course, is me.

  4. Speaking of forgetting things, apparently in San Diego when you ask for a toothbrush, they bring you chocolate mints. Very odd.

  5. Don't expect the place you're staying to be like the place you're from. This is probably a given for most people, but nothing is ever a given for me. I come from a land where 7-11's, Subways, and McDonald's are plentiful and spring forth from the streets like dandelions on my brother-in-laws front lawn. Food is always in sight, no matter where you are.

    Apparently in La Jolla, San Diego, the only buildings that developers have the plans to build are hotels and "office parks"; you know, the cute little groupings of fancy office buildings with names like "Eastgate Technology Centre" and "Regent's Delight".

    Seriously, I went over 24 hours without food upon arrival because, as far as I can tell, it doesn't exist. I've been surviving on Hostess Cup cakes and instant noodles from the vending machines in the lunch room at the office. I can't wait for the scurvy to kick in so I can see what it looks like to have my joints bleed from the inside.
I might have some more to add to this by the time I get home, lets hope one of them is not "Don't get lost in an area controlled by the 92 Hoover Crips".

Tuesday, July 31, 2007

Transparent Intellisense = Happy Baboon

Just finished reading this post by Scott Guthrie and was extremely excited to see the new Transparent Intellisense feature in VS 2008. I am constantly vexed when I have to escape out of Intellisense, and this solution looks great.

As for the rest of the post, the VB Intellisense Filtering and C# Using Statement Optimizing are already in place in Resharper, so nothing mind-blowing there. And again I'm reminded how annoying it is that the two languages are diverging further and further from each other. Why can't both languages have those features? How hard would it be to port the Intellisense Filtering to C# and the Using Statement Optimizing into Import Optimizing for VB? Why does VB get cool LINQ Intellisense that C# doesn't get? Little interface things like this seem like such obvious candidates for cross-language compatibility.

Friday, July 27, 2007

Fun with Type Inference

Recently a co-worker of mine turned me on to the glories of Resharper. Using Resharper to optimize my code I learned that when calling a generic method, it is often not necessary to specify the type, as the compiler will work it out for you. Aside from a little less typing, I hadn't really figured out how this could be useful. Until this week.

I was writing some basic data layer code, adding parameters to a SqlCommand object. A couple of the annoying .NET/SQL Server 'gotchas' reared their heads at me yet again:

1) You can't stick a null value in as a parameter value, it has to be transformed to DBNull.Value; and
2) You can't stick a date of DateTime.MinValue into a DateTime field.

I wanted a generic function that I could simply wrap all of my parameters into, so that I didn't have to specifically remember "oh this is a date field, call this function" or "oh this variable might contain a null, call this function".

Unfortunately the DateTime comparison can't be used in a generic function, so I needed at least 2 functions, but thanks to overloading and type inference I can still use the same call everywhere. Here are my two functions:

Normally when you call a generic method, you specify the type in the call, such as:

If this were always the case, my calls would differ everywhere, and especially when using DateTime's because the DateTime overload is not generic.

But thanks to Type Inference, I can now write code like the following, without having to care what type of variable I'm dealing with:

Monday, July 23, 2007

Fun with Anonymous Methods

A few years back when .NET 1.0 came out, I was presented with a choice: C# or VB? At the time, both languages shared all the same features; if you could do it in C#, you could do it in VB. Another cool thing with the advent of .NET was the fact that a VB assembly could reference a C# assembly (and vice-versa). So, having an extensive background in VB, I decided to stick with what I knew.

Fast-forward a few years. The languages have taken different paths, and with each new .NET release C# got 1 or 2 cool language features that VB didn't have. I kept sticking with my roots, however, and blindly forged ahead as a "VB guy".

This spring, however, I was thrown into the C# world and forced to swim. And you know what? I freakin' love it! I don't plan on ever going back; VB is old and busted, C# is the new hotness.

With all of that said, I've had some learning to do, and some catch-up to play. One of the features of C# that VB did not pick up was the use of anonymous methods. Even after learning about them, I still wasn't sure if I was keen on using them. There were pluses and minuses, and I couldn't decide which out-weighed the other, so I mostly shoved them into the back of my mind and forged ahead in other areas.

All this changed last week. I finally found a slam-dunk place to use anonymous methods: unit tests. By writing the method implementation in-line right into the unit test it can be more immediately clear what the test is doing. Here is a sample:

Don't worry too much about what the test is actually doing, but notice the highlighted part, which is attaching an anonymous method as an event handler. What I like about this is that it makes reading the unit test very clear. You don't have to jump to another function to see what exactly it is doing. I mean, even if you name it well, there is a chance it is not implemented correctly. Putting the implementation right into the test allows someone to easily verify the functionality without jumping around in the code.

Wednesday, July 18, 2007


I don't want to turn this blog into a place where I just dump links to smarter people's blogs, but I haven't posted in awhile and I also don't want this thing to die the death that my first post so accurately predicts. At least not yet.

So here I am, transforming myself into a Link-Whore. I suppose there are worse things, like Assistant Link-Whore. Apparently I'm stealing jokes now too; this will not end well.

Anywho, I came across a blog post today which kind of blew my mind. This is probably basic stuff for a lot of people, but if I can reach even one other guy like me then its worth being called a n00b or something.

The post describes the Big Three higher-order functions: Filter, Map, and Reduce. I've often written the types of methods that these functions clean up, and I've even had the foresight to understand that I was doing the same things over again, and that there had to be a better way. But until today, I've never come across it. Likely I wasn't looking hard enough, which is my bad, but better late than never, as they say.

Wednesday, June 27, 2007

Habits of Speech

Ever noticed that some people, when speaking, tend to use the same phrases or words over and over? It's like, they just keep repeating it, to the point where it becomes quite distracting while you listen.

It's like, do these people even know they are doing it? It's like, should I maybe mention it in case they just don't know? And I start to wonder, it's like, do I do something like that? It's like, are people staring at me while I talk, wishing I would stop saying whatever it is that I have formed a habit of saying?

I don't know the answer, but I do know that, it's like, quite distracting to be watching a webinar hosted by someone who is afflicted with this behavior. It's like, great webinar, fantastic topic, but it's like, I can't stay focused. It's like, I'm sorry.

Friday, June 22, 2007

Exception Handling in a State Machine Workflow

I was working with a Windows Workflow Foundation State Machine workflow this morning and came across an EventDrivenActivity that included a CallExternalMethodActivity. The CallExternalMethodActivity activity allows for the workflow to call a method on an external service running within your workflow runtime.

In this case, the method being called was utilizing a Try/Catch block that simply threw away all exceptions. I implemented some quick logging in the Catch section but also realized that the workflow should probably move to a different state if an exception were to actually occur. So I threw the exception up and started looking at the Workflow Designer and the VS2005 Toolbox to see how to go about catching it.

Interestingly, the solution is easy, but not all that obvious. There is a FaultHandlerActivity, which I quickly spotted and tried to drag onto the workflow. It wouldn't let me stick it anywhere, so I inspected the properties of the different activities already on the workflow for anything that seemed like it might relate to exceptions. Looks like I'd need some help on this one.

So as usual I called my Dad. He's sort of a 51 year-old Casanova, he said "Son, come on over"...

Oops sorry, slipped into Fresh Prince mode for a sec.

Anyways, I did some MSDN reading and some Googling, and discovered that if you enter the detailed view for an EventDrivenActivity (by double-clicking on it in the main workflow view), and right-click the overall EventDrivenActivity object, you get some options I did not know existed:

By selecting the Fault Handler View you are then taken to a different view of the activity where you can drag FaultHandlerActivities and specify which Exceptions to handle and what order they should cascade (similar to how a TryCatch works). You can then drop other activities into each FaultHandlerActivity to perform the actions you want.

In the picture below, I chose to terminate the workflow instance and track the error message to the tracking store.

Thursday, June 21, 2007


Did you know baboons are really ugly? Seriously, Google Image Search those things, not a pretty sight.

Code Hound would have been so much cooler. Jeremy came up with it in like 3 seconds.


URL's are shrinking, man, and I don't wanna swim

In creating a blog, one of the first things you need is a URL. I think I tried about 40 URL's, some basic, and some 'witty'. Each time I received "Sorry, this blog address is not available". Ugh.

I started to check out what people were doing with those URL's, and discovered that a vast majority are either completely empty, or haven't been updated in 5+ years. Just a bunch of used-up URL's, wasting away while the internet marches tirelessly onward, churning out new and even dumber URL's than the ones that came before.

So with this knowledge, I'd like to apologize in advance to whoever is looking for in the year 2013. I'm no better than every other sheep before me. Baa.