Archive for December, 2006

The Big Giveaway

December 29, 2006

As I mentioned previously, Bob Parsons gave away a bunch of money at this year’s Christmas party. I wasn’t really sure how much was distributed because I just wasn’t keeping track, assuming (incorrectly) that there’d be a list of winners in email the next day. A press release that was sent out today indicates that the total figure was approximately $300,000 in cash. So I was a little high in my estimation.

The other bombshell in the press release was that they’re expecting the annual revenue to increase 80% over 2005’s results to a total of $241 million. I don’t know what Quick Blog’s share of that was (not that I could share it if I did) but I’m sure it was a big chunk.

Incidentally, that revenue figure is phenomenal. When I started, they were quoting $100 million as the annual revenue. We’re making money hand over fist!

[UPDATE (1/1/2007): Still no press release on the official site, but here’s an article about it.]

[The views expressed on this website/weblog are mine alone and do not necessarily reflect the views of Go Daddy Software, Inc.]

I Wish It Were Fake

December 28, 2006

If there is one thing I cannot stand at work it is wrestling with my tools. I’ve got two Web projects in Visual Studio 2003. I hate Web projects, hate ’em—there is no reason that I’ve found that you cannot do a Web application using just a standard project and it makes life so much easier since Web projects are the devil.

Anyhow, I have to make this mission-critical change to one of the Web projects and neither one will load automatically. Fine, I’ve danced this dance before about a month ago when suddenly Visual Studio refused to allow those Web projects into the solution. You just have to remove them and re-add them each time you open Visual Studio or change solutions. Man, after writing that, I can see how messed up my work life is—constantly rerouting around lost settings, malfunctioning applications, and halfassery in order to get things done.

So I did that and one of the Web projects loaded. Well, it loaded on the second attempt to add it. Again, not an unusual thing as I also discovered that the first Web project added generally needs to be done again since the Web server takes too long and times out. At least, that’s my presumption because it works the second time. (Insert existential scream here.) The second one, however, refuses to load, giving me a timeout every single time I try it.

Usually, I can just f’ing Google the error message and have a handful of things to try. Unfortunately, this seems to be a problem unique to me since I couldn’t find a single instance of my particular error message. The help, unusually helpful on this topic, didn’t even list my failure as one of the options in its lengthy catalog of possible messages and vague steps to resolve them.

I tried the usual panoply of magic actions that sometimes yield results: restart VS, restart Windows, go directly to the project instead of using the braindead Web project loader, create a new solution, and try again the next day hoping that last night’s hell was just a bad dream. Nothing worked. Went to the IIS logs to see what sort of things Visual Studio was trying to do to load the sucker: lots of unfamiliar actions (“PROPFIND”, never heard of it—oh it’s a WebDAV thing, interesting) and lots of 403s.

Ahh, the 403. Permissions. I know something about that. The permissions for both Web projects appeared to be the same, but let’s just give those muthas full control. The panacea of frustrated users (and bane of administrators). Nothing. Machine.config: give the app SYSTEM access instead of ASPNET. NOTHING. NOOOOOOOOOOOOOOOOOOOOOOOOOTTTTTTTTTHHHHHHHING!

So three hours completely wasted while a mission-critical fix waits. I ended up editing the file in Notepad; now I just have to figure out how to csc a Web application. I hate wrestling with my tools.

[UPDATE: Great news! I got the Web project loaded … but the source control bindings were lost. The words “Pyrrhic victory” spring to mind. Visual Studio and source control binding problems are a separate level of hell unto themselves. Bleh.]

[UPDATE 2: In a dramatic turn of events, it bound. I hit the “Bind” button in the Change Source Control dialog and it came back in a few seconds. I was dumbfounded. It’s never worked that well without manual diddling about in the VSS-VS project files. Finally.]

From the Top

December 26, 2006

One of the best things about working at Go Daddy is that our CEO doesn’t do this kind of pussy-footing. I know I’d rather have someone at the top that occasionally puts his foot in his mouth than one that speaks in boring platitudes. And I’m sure that that personality has brought more customers into the Go Daddy fold than it has driven away.

[The views expressed on this website/weblog are mine alone and do not necessarily reflect the views of Go Daddy Software, Inc.]

Remembering Jimmy

December 23, 2006

I got a Christmas card from my high school friend Steve Franson yesterday and it contained a bombshell that left Sandi and I speechless: my high school friend James Sorensen had died of liver failure.

Jimmy, as he’ll always be known to me, was an amazing guy. The only time I saw him after high school was for my wedding, which immediately followed my freshman year in college. But the years in high school were filled with fond memories of him. He was easily the funniest guy in a group where humor was the conveyor of status. He was always up for anything, no matter how crazy. He was smart, but he always had to work for everything he achieved.

It was Jimmy who introduced me to the wonders of using background porn movie music to punctuate jokes. It was Jimmy who gave me the phrase, “Just rub some dirt in it.” It was Jimmy who called my wedding “the buffet” and inquired as to the minimum amount he’d have to spend on a gift to attend. He had a beautiful sense of life.

At some point in high school, we got close because we both had an interest in Nazi Germany. I still have that fascination thanks to him and his encyclopedic knowledge of that subject. I can remember evenings spent in his room poring over books of German armaments and his collection of Naziana. We used to play racquetball together as well and he inevitably beat the socks off of me. I can remember at some point that we stopped hanging out together but I can’t remember why. It’s strange how an event like this brings back long-forgotten memories and disjointed snippets of reflection.

I know secondhand that his last few years have been filled with sadness and despair. I can only imagine the suffering he must have endured. I wish I could have been there for him; I wish I could have known Jimmy the adult. Now, sadly, I never can.

Can’t Pull the Rug Out From Under Yourself

December 21, 2006

I found another big gotcha in .NET today. When iterating over a Hashtable, you might want to change something within that Hashtable, like say change or clear out a value. Ain’t gonna happen, buddy. Nice big runtime exception: Collection was modified; enumeration operation may not execute.

I got it the first time and I slapped my forehead—figuratively, of course, as I’m not in the habit of self-flagellation. So I did what I always do. *sigh* I got clever. I thought that I could obviate the problem by enumerating through the Hashtable.Keys collection and make my changes that-a-way.

Again, no dice. I’m not entirely sure how changing the value of a Hashtable key while looping over a collection of keys is affecting the underlying Hashtable. But I think it has something to do with the CLR iterating over the Keys collection by reference rather than by value.

The answer, after some Googling, is to split the operation into two phases: storing the keys to be changed in another collection and then looping over that second store to actually modify the values or do what-have-you. It’s decidedly not as elegant as say creating an isolating enumeration class, but I’ve got work to do.

Does Type Implement an Interface?

December 20, 2006

I’ve wasted far too much time on this issue, so I’ll make an entry for future frustrated Google searchers. You’re welcome.

If you need to see if a particular Type object implements a particular interface, it’s clear that the method IsAssignableFrom is the proper choice. But the damn thing wouldn’t work. is certainly what I was looking for. Then I found Scott Hanselman’s entry on the subject and it became obvious that I was reversing the members.

Assembly library = Assembly.LoadFrom(pathToLibrary);
Type[] allTypes = library.GetTypes();
foreach (Type type in allTypes)
{
if (typeof(IInterfaceToImplement).IsAssignableFrom(type))
{
doYourThing(type);
}
}

Previously, I was doing if (type.IsAssignableFrom(typeof(IInterfaceToImplement)) and it just wasn’t doing it’s thing.

Limerick Challenge

December 20, 2006

My boss’s boss issued a call for limericks around the theme of software engineers or engineering. Naturally, I was intrigued. Here are my entries thus far:

There once was a dev named Bud Tharpe
Who could crank out code like a harp
His language of choice was VB
But his friends mocked him you see
Because he just couldn’t quite see sharp.

A wizened lead named O’Malley
Was checking the bug count, the tally
Evergrowing, it was
Scratching chin fuzz
He wondered if it was time for a rally.

A developer was hit by a bus
It caused an immediate fuss.
Did he check in?
His release was when?
All his base truly belong to us.

Are they any good? Well, they follow the form of a limerick and a couple of them have punch lines. Hey, it might get me a free lunch so they’re good to me.

Good Press

December 19, 2006

This article about Bob Parsons in Business 2.0 is fascinating. From mention of his Jeep Rubicon that he calls Mad Max—I can’t believe I haven’t seen it in the parking lot, got to look for it now—to the statement from 1&1’s CEO that he’s afraid of Bob—that explains their advertisements—to the elephant he bagged on his safari, this is the kind of press you just can’t buy. It’s certainly better than some of the other news out there.

[The views expressed on this website/weblog are mine alone and do not necessarily reflect the views of Go Daddy Software, Inc.]

What’s Going On

December 18, 2006

Did you see how often I’ve been posting lately? That’s unprecedented on this blog for the last couple years! I’m going to try to keep it up; I think I was just languishing because I kept wanting to write long essays and reviews. I’ll move back to the quick little entry with the occasional substantial one interspersed.

Amazon Isn’t Always the Paragon of Usability

December 17, 2006

I bought a gift for my friend from Amazon. I think I ended up using the “Pay by Bank Account” option because they said that there was a $1,000 raffle for doing so. Hey, if you’ve got to pay no matter what, might as well choose the method that might pay you back (as long as there’s no catch).

Today I got an email from Amazon saying that the payment wasn’t authorized and that I’d better get on it if I wanted to get it to him or her by Christmas. The reason? “The reason your payment was not authorized was due to the phone number you
entered not conforming to established guidelines.” What phone number it was is not given and I distinctly remember selecting my billing address from the list of known addresses—and there were three or four of the same one.

So if this is a common enough issue that they’ve got an email prepared, then it must be easy to remedy it, right? I mean we’re talking the payment stage, where money changes hands. I would think that any barrier to transferring your money to Amazon would be limited or eliminated entirely.

You would be wrong. Here’s the instructions for correcting this oversight:

Follow these steps to submit your new or updated payment information for
this order:

1. Go to our home page (www.amazon.com) then click “Your Account” on the
top right menu.

2. Choose the option “Change payment method” (found under “View by Order”
in the “Where’s My Stuff” box).

3. After you sign in, you will see all your current open orders. You can
click the “View or change order” button beside any order and make changes.

4. Click “Change” button in the “Payment Information” box beside “Payment
Method.” At this point, you may review your current payment method, choose
a different payment method, or enter a new one.

Not only were some of the options not labeled the same as the email suggested, but even getting to the point the end with didn’t make the resolution obvious. I just chose one of the other billing addresses and hoped for the best. If I get another email, I’m just going to pay by credit card.

[UPDATE (12/18/2006): I got another email about the billing failure, so that didn’t work. This morning I changed to a credit card and now the package won’t arrive until after Christmas. Stupid, stupid Amazon! (Though I certainly could have ordered it earlier, there were assurances all over the site that I didn’t have to.)]