Archive for September, 2007

Microsoft Search

Saturday, September 29th, 2007

Occasionally, someone will brag about their progress in such a way that not only do you realize they’re actually far behind, but that they have absolutely no idea how far behind they are or how much lies ahead.

In software engineering, there’s a certain type of programmer fitting this mold that everyone runs into sooner or later. They’re not very communicative, but whenever asked about the status of their part of the project, they response positively, reporting things are going well. No big issues.

They usually have some experience, meaning nobody really has to watch over their shoulder. Besides, everyone else is busy getting their part done.

There is a very distinct moment at which you realize one is on your project. A moment where your heart fills with an icy chill, and mind can’t help but lock in on the words “OH FUCK.”

It’s days before QA — or even before launch — when everyone needs to have everything done. Not “mostly done.” Not “almost done.” Really done. Done done.

As in the users can use it now.

As the group assembles for the status check, maybe others in the room to report a bug or two they are putting the last touches on. Or a taking care of last minute cosmetic issue. When it comes our friend, he proudly proclaims his status — so gleeful you can almost see the “Mission Accomplished” banner behind him — “Great!”, he says, “I got it to compile this morning! It’s done!”

OH FUCK.

Typically, this moment is filled with silence. Maybe after a brief pause, someone will clarify that this, in fact, the first time it compiled. Usually, the response, a grinning acknowledgment with an “Ain’t it great!?” feel, confirms the worst.

The rest of the team continues to reflect in silence. Not because they don’t want to burst his bubble, but because they are realizing how utterly fucked they are. How the launched is delayed. And their personal lives are about to go out the window, as it will now fall to them to find all the guaranteed problems with the untested code & spend late nights & weekends getting it ready enough to launch.

It’s not quite the same, but that sort of thing was going through my mind when I read how Microsoft had announced improvements for their search engine.

To quote from the article:

Nadella said the updates will be phased in by the end the month. Among them, he said, are improvements to the way Live Search interprets what users are looking for, even if they misspell a word, type in two separate words instead of a compound word or use a variation, like “driving” instead of “drive.”

Live Search also will better detect what Nadella calls “stop words” — keywords or phrases that aren’t considered unless there’s a specific combination or context — like the name “Will Smith” in the U.S.

“It’s a huge improvement,” Nadella said. “We believe we can now compete with Google.”

WTF?!?

They didn’t have these things before?!

Understanding “driving” vs. “drive”? That’s a pretty basic problem called stemming. How basic? Put it this way, there’s been open source code out there to this before there was a Microsoft Search. Fuck, even the Wikipedia page has existed since 2007. All they had to do was go there. I know Microsoft is big about “eating their own dogfood”, but damn, use Google just this once to find it.

Now et’s assume for a second, they’ve had stemming and it’s a problem that’s actually harder — something like knowing “car” and “automobile” are the same thing. Now, granted that’s harder, but here’s the thing — when I transfered down to Yahoo Search Marketing, some 4-5 years ago, they already had this technology. The process was called canonicalization, and by the time I got there, it was an old, well-established piece of technology. So well-established that despite being fairly technical, everyone in the company — business, product, support, etc. — knew it was, at least at a high level, its purpose and so on.

Likewise their updated stop words. Yahoo’s long had a process called “Units”, which look for things like “Denzel Washington” and know it’s not the same as the Northwest state or the national capital. You can see a related patent application from Yahoo here. Although, if you work for Microsoft (or Google), it’s probably best you didn’t.

So really what was the crux of Microsoft’s announcement? Two things:


  1. They have absolutely no idea how far behind they are.
  2. They’ve launched technology that will catch them up to where the other big players were 5-6 years ago.

And now they think they’re on par with Google?

Seriously, it’s like they got a Revolutionary War era powder-gun off Ebay and declared “We believe we can now compete with the U.S. military.”

To the Post-Season!

Friday, September 28th, 2007

Cubs clinch NL Central title

Forget Freedom Fries…

Monday, September 17th, 2007

… they’re FRENCH fries, bitch.

Iran anger over French war warning

Sign me up as America’s newest francophile.

Things I Don’t Understand

Sunday, September 16th, 2007

For a long while things weren’t going well in Iraq, and seemingly getting worse. We would take over an area, stabilize it, but shortly after moving to the next area, find it fall back into disarray.

We had a troop “surge.” Things got better. The number of Iraqi civilian deaths falls each month by 45%. It’s fallen 70% in Baghdad. Sunni’s are starting to turn against al-Qaeda in Iraq. — apparently cutting the heads & hands off children for smoking didn’t go over well. Car bombing & suicide attacks are down. And so on.

Things are slowly getting better.

So what do you next?

Naturally, go back to the plan that didn’t work & demand reduced troop levels.

*sigh*

Two Things I Learned Today

Monday, September 3rd, 2007

If you’re attempting to override a Perl builtin for a unit test in the following manner:

use Test::More qw|no_plan|;
use_ok( 'MyPackage::Bill' );

{
  package MyPackage::Bill;

  use subs 'mkdir';
  package main;

  *MyPackage::Bill::mkdir = sub {
     ## ...whatever you want mkdir todo...
  };

  ## ... unit tests here ...
}

You can’t place the use_ok in a BEGIN block (as is the pattern in the Test::More documentation).

Well, not 100% true. It could be in a BEGIN block, but it would have to be after the subs pragma. Meaning, it’ll work if the BEGIN block is at the end of the file. However, I find that counterintuitive, so I’m filling it away in my brain as just don’t do it.

Thinking about it, I imagine it’s likely because the pragma is only going to affect code loaded after it. The BEGIN block pushes the use from runtime to compile time, meaning it’s too late to override the builtin by the time subs kicks in.

Note this only took about two hours to figure out.

Second, if you’re on old-skool emacs users, so old your .emacs pre-dates add-hook, go through and expunge your .emacs of any setq‘s of mode hooks. I finally realized the reason my add-hook to cperl-mode wasn’t working because later in the file I was explicitly setting the hook (and throwing out my earlier changes).

On the upshot, I once again have dabbrev-expand bound to the tab key.

Damn you, Microsoft!

Sunday, September 2nd, 2007

I finally picked up a new game for my 360 (Bioshock), only to find the red ring of death had returned.

Knowing Microsoft had extended the warranty of the 360 for this very problem, I gave their support number a call. Surprisingly (and despite the warning of “heavier than usual call volume”), I was quickly connected to a human being and off the phone in 5-6 minutes. Of course, I have to wait a week to get the shipping box & another 3-4 weeks to get it back.

Alas, in the meantime I’m screwed, for, unlike Jimmy, I do not have any towels from Google.