December 2006 Archives

The Big Giveaway

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

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

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

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

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?

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

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

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

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.

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.)]

Time to Party

Last night was the Go Daddy Christmas party at the Desert Ridge Marriott and it was quite a shindig. I was feeling lucky because a) MINI of North Scottsdale replaced my convertible's top when I came in for new brake pads (that didn't need changing), b) I just about wrapped up the new feature I was working on, and c) my wife had bought a new dress for the party and she looked like a million bucks (that's trite, how about I couldn't take my eyes off her).

Sadly, my luck didn't translate to the prize distribution. Sandi thinks that I used up my luck with the new top, but I think I'm just a perennial dinner party raffle loser. That's my lot, I suppose. Speaking of lot, Go Daddy gave away the most prizes ever. 20 people won $10,000 (taxes paid by Go Daddy, no less), 60 won $500, 10 (or more) won $5,000, a bunch won $2,500 and $1,000. With the 42" plasmas, laptops, video iPods, LCDs, and spa weekends, I wouldn't be surpised if Bob and company transferred wealth of $400,000 or so that night. My only winning was a bellyful of filet mignon, which was quite mignon and delicious.

I am committing that I will have a plan of who I'm sitting with prior to the evening for next year's party. I tried to arrange to sit with my team, then with some devs I knew, and I ended up sitting with a bunch of lawyers. Not as bad as in years past, but less than desirable. Next year, I will organize my co-workers so that we meet at a spot and go to an empty table together. (And before some gets all snarky, I checked and no one could find anyone in the crowd. Or at least that's what they told me.)

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

The Wonder of a Child

I was relating an anecdote to a co-worker yesterday about how it was so incredible to watch a child grow and develop. (Side note: it really is.) I told him that it was neat to see them make connections and I even invoked the shopworn sentiment about seeing things as through the eyes of a child. I don't exactly know what came over me but the thought percolated in my grey matter overnight apparently and some concluding introspection in the shower this morning led me to an insight.

I think the reason why we find children's cognitive development so fascinating is that it reminds us that we were once at that stage. I know for a fact that I thought that when I was talking to my co-worker, but if you think about it that really only gets you so far in explaining the feeling you get when children make new observations and discoveries. Plus, it doesn't explain why the feeling is renewed with each new conceptual growth and identification.

The shower moment came when I realized that I was simultaneously thinking, "Look how far I've come!" It's a reminder of our own cognitive achievement and the feelings that result are pride and satisfaction. I also think that it's an automatized response on a subconscious level because I was not aware of it even after some preliminary introspection. I believe it might be at work even with adults that don't have children since there's nothing inherent in the evaluation about child-possessing.

If you could, take a moment and do your own introspecting. Am I right about this or does your investigation differ? I'd love to get some outside opinions on this.

The Idea that Never Was

Damn! There goes my one patentable idea I've had since working at Go Daddy. I wasn't going to have any noise and basically make it look like a static image. But the idea is now decimated by prior art.

My implementation was going to be better because my plan was to fragment the CAPTCHA text randomly. Each piece would then be a separate frame in the animated GIF with a minimal delay between frames. To the human eye, it would look like a fixed image and would be incredibly easy to recognize. To the automated CAPTCHA bot, the interpolation required would make defeat not worthwhile. As bots became more sophisticated, tweaks could be done to add randomness to the slicing or noise elements.

I realize, of course, that I could still make this and release it as open-source but my motivation's been sapped. Lazy Web, enjoy.

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

Go Daddy Go

"Go Daddy to add center in Tempe": we're expanding ever larger. I can't believe we'll be at 1,900 employees in 2007. When I started, we were just a tiny outfit of 600.

[UPDATE: Looks like a nice complex that we'll be renting.]

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

Avoid a Ticket

Attention, fellow Scottsdale-portion-of-the-Loop-101 commuters: you must subscribe to this Google News alert. That is all.

Breaking APIs Considered Harmful

If you've got any responsibility for an API, please please please do not break your API. OOP has a lot of neat things like overloads, encapsulation, and, hell, class name changes to make it easy for you to not completely screw over those downwind (metaphorically speaking) of you.

A Parable

Once upon a time there was a tree near a forest. This little tree, we'll call him Ernest because we don't want to make any decisions about proper pronouns for awhile, saw all the other trees in the forest and wanted to be as tall and mighty as they were. Ernest watched them grow bigger each year as successive rains gave them the nourishment they needed.

He was taken care of, to be sure. His owner put him in the windowsill so he could get sunlight and spritzed him with water periodically. Ernest would grow a bit and start to feel like he was on his way to majesty, but then his owner would prune him back and he would feel deflated at his lack of progress. He began to feel like he was a shadow of his fellow trees and that he was powerless to change that. Ernest was utterly dependent on his owner to provide the conditions necessary for his growth.

Ernest's owner, on the other hand, was pleased with his static look and carefully-trimmed growth. He had paid a lot of money for this particular plant and considered Bonsai his hobby. He liked to look at Ernest as a version in miniature of the towering pines outside. He didn't want those trees; he liked having his own that he had made with his own two hands.

About this Archive

This page is an archive of entries from December 2006 listed from newest to oldest.

November 2006 is the previous archive.

January 2007 is the next archive.

Find recent content on the main index or look in the archives to find all content.

Feedback to