On Bobby Cox

Today is Day 1 A.B. (After Bobby)  I can’t help tearing up a little when I watch the video of his last post-game press conference.  He was a class act and I can’t imagine baseball, especially Braves baseball, without him. 

I know what you’re thinking… “Datachix, what does this have to do with data?”  Well, Dear Reader, let me tell you.  We could all learn a thing or two from the legendary Skipper.  Actually, there are five. 

1) Loyalty is NOT overrated.  I don’t know that I’ve ever heard Bobby say a harsh word about his players, even after a loss.  He might point out mistakes they’d made, or reasons why they lost, but he immediately followed it up with a comment about how they’d get them next time, and how his boys played hard.  I don’t know about you, but I wouldn’t have been able to resist bashing Brooks Conrad after 3 errors cost us Game 3 in the NLDS.  What did Bobby say about whether he’d bench him?  “I’ll have to sleep on it.”  That’s classy.  How many times have I railed against a fellow developer who broke a build?  How many times have I complained loudly about how a project was going?  More times than I’d care to admit.  And, managers all over IT could use his playbook to improve their management style.  In a perfect world, Bobby would become the development manager on my next project.  Tell me you wouldn’t work harder for him than anyone. 

2) Stand up for your team.  He’s been ejected over 150 times (161 I believe, if you count the post-season).  If Bobby saw an injustice being carried out by the umpires, he was going to get out there and in someone’s face.  Now, I don’t suggest that we all get ourselves carted out of the building by security next time something unfair happens, but there is something to be said for a manager who’s willing to step in and take the heat for his guys.  Many times, he would step in and get himself ejected to save one of his players.  Next time you see a co-worker getting treated unfairly, ask yourself:  What Would Bobby Do? 

3) Find your passion and live it.  Bobby Cox started playing baseball professionally over 50 years ago.  Can you even imagine spending 50 years of your life doing anything?  If you truly love what you do, then good for you.  If not, then find it.  If nothing else, find something you love about your career and focus on that.  Bobby was a mediocre baseball player.  He only really played two seasons professionally.  How lucky are we that he decided to stick with the game that he loved and find a way to be a part of it instead of going off to sell insurance somewhere? 

4) Be a mentor.  Ask anyone who’s played for Bobby.  He’ll tell you that Bobby was a mentor, a teacher.  Jason Heyward will be a better player because he got just one season with Bobby.  There’s a reason that the Braves clubhouse is considered one of the most professional and welcoming in Major League Baseball.  Bobby set the bar, and then taught his guys how to reach it.  HOw many less experienced people do you work with every day?  Do you shrug and roll your eyes when they struggle, or do you step in and patiently teach them how to improve.  Again, What Would Bobby Do? 

5) Talk softly, but don’t be a softie.  Okay, so Bobby’s temper was legendary (note the 161 ejections).  But for the most part, he’d sit there on the dugout bench or lean against the railing, quietly watching the game unfold.  He didn’t rant.  He didn’t rave.  He made decisions, sometimes tough ones, with respect and thoughtfulness.  I see so many of us (myself included), so eager to prove our worth and expertise bluster and proclaim our ideas for the world to hear.  How about we take a page from Bobby’s book and just let the record speak for us?  How about we make tough decisions with less drama?  How about we sit back and watch the game unfold for a while before we jump to conclusions?  That’s Bobby’s way. 

Anyone who knows me personally knows that I love my Braves.  When I adopted Atlanta as my second hometown, I was lucky to have a great baseball team to go along with it.  Bobby Cox was a big part of that.  In an age of juiced players, and scandals, and waning interest in the sport, Bobby represented an old school approach to a game that I’d grown up with.  So, if you ever see me sitting back, quietly watching the game unfold, resisting the urge to jump in with opinions and half-formed ideas, you’ll know I’m getting my Bobby on.

The Case of the Mysterious Failing Packages

Or, that time I pimp-slapped some GUIDs…

Let me set the stage for you. We’re less than a week out from a major production push. We move the SSIS (2008) packages over to the integration testing server to make sure everything is good to go. On each data load, something fails. Never in the same package, never in the same task, never from the same source data. We think it’s the server. We move the packages again. More failures.

I’m losing sleep, breaking out in a weird rash that may or may not be related to my panic, and my boss is at my cube every hour asking how things are going in his, “I’m trying to be supportive, but fix the damned thing already”, voice. I’m rethinking my Don’t Drink During Work policy. This is not good. I just can’t find anything wrong. I can run the packages independently and they’re all happy green boxes. I can run the whole load from the beginning and it’ll get past the point of the prior failure only to crap its pants further down the line. Now, full disclosure: I sort of suck at SSIS. It’s fairly new for me, and while I’m learning, I still have a long way to go. Let’s just say that my self-confidence was not at an, “I’m Okay, You’re Okay”, sort of level.

After the latest failure and an inappropriate-for-the-workplace, profanity-laden outburst from me where I may or may not have referred to SSIS as “the stinking offspring of a poxy two-dollar…”, oh, never mind… I hear a question from the next cube over. “Have you reset the GUIDs?” What? GUIDs? Uh, no. I stand up, plant myself in my co-worker Tom’s cube, and ask for an explanation. He explains that if packages are copied, sometimes the GUIDs can be the same in two packages. Then, if they end up running in parallel, it can screw up memory management and SSIS freaks out. And as we all know, when SSIS ain’t happy, ain’t nobody happy. We use a stock template for all of our packages that is copied and then saved off as the new package. And, since our dimension loads are pretty standard, if we need to add a new dimension, sometimes it’s easier to copy one load package and modify it rather than building one from scratch. Yes, I’ve definitely done some package copying in my short tenure as an SSIS developer.

Jeff wanders over, listens to my plight and confirms that I should definitely try resetting the GUIDs. These two guys, who have since been inducted into my Personal Heroes Hall of Fame, explain that with BIDS Helper (totally free download), I can reset the GUIDs on a package and hit every object within that package. A quick rundown of the feature and why it is useful is here. Luckily, I had already installed it for a couple of other features it offered, so I got to work. Can’t hurt, right? Our ETL process is fairly complex, and we have a lot of data moving around. Dimension loads, fact loads, auditing, staging, the works. It took about an hour between me and another co-worker, Tim, to step through all the packages, check them out of TFS (Team Foundation Server), reset the GUIDs, and check them back in. It was easy. Just right-click on the package, look down to the bottom of the menu, click Reset GUIDs, confirm, and you’re done.

We move the packages with their new and improved GUIDs back over to the integration testing server, and viola!, data’s flying around like Your Mama insults at a middle school. No failures. Let me reiterate: With no other changes, the sporadic failures stopped when we reset all the GUIDs.

Now, I can’t say with 100% certainty that resetting the GUIDs definitely fixed the problem. All I know is that we did it, and the failures stopped. That’s one hell of a coincidence if it wasn’t the issue. This is right up there with the legendary, “Try rebooting the server”, and his lesser known cousin, “Restart the service”. It is something to try when all else fails.

What did I learn? A few things:
1) SSIS does not have a personal vendetta against me. There was no ghost in the machine.
2) BIDS Helper is my friend. Just install it. You’ll love what it gives you.
3) If I copy a package, I make it part of my routine to reset the GUIDs.
4) When in doubt, curse loudly until someone comes up with an idea (just kidding). Seriously, this is a great example of why we should get up from our desks and enlist the ideas and knowledge of those around us. Turns out that I work with some pretty smart guys.

Why not a Manhattan Project for Data?


So, driving in to work the other day, I hear a discussion of the Christmas Day attempted terrorist bombing on NPR.  The guy being interviewed begins to describe the problems with data integration at the federal government level.  He talks about TWENTY-EIGHT different networks that had to be accessed in order to comprehensively review security information not so long ago.  Things are better now, but as a former federal employee, I can assure you that it probably isn’t better by much. 

Here’s my point:  Back during WWII, the government brought together the greatest scientific minds of the time to work on the Manhattan Project.  The end result was the atomic bomb.  Now, imagine if they did the same thing for their data today?  I say, bring together the rock stars of our industry, throw those 28 networks/databases on the whiteboard, and let them have at it.  That project would do more for our national security than just about any other investment we could make. 

And the coolest thing?  Maybe they give it a code name that is pure awesome.  Maybe someday, they make a movie about it.  Imagine Brad Pitt, in his role as Itzik Ben-Gan, debating architecture with Diane Lane, in her Oscar-worthy portrayal of Kimberly Tripp… tell me you wouldn’t pay $8 to see that.  And okay, fine.  Maybe I have this weird fantasy of being called in to some nondescript government office in the middle of the night and being asked to join this yet-to-be named project.  And maybe I hope that I’ll get some cool CIA code name.  And maybe, just maybe, I’m hoping for Jennifer Connelly to play me.