Archive for the ‘Microsoft’ Category

The incomprehensible failure of disco

Thursday, February 22nd, 2007

Disco failed

Suddenly my MSBuild fails because somebody deleted Reference.cs and there’s only a Reference.map in the Web References\LT folder.

So I try changing the reference’s URL Behavior from Dynamic to Static (just to make any change, to see if Visual Studio regenerates Reference.cs). That yields the error dialog pictured here.

Pop quiz, hotshot: what is the difference between OK and Cancel in this dialog?

None, apparently. I click OK and the property does change to Static. When I repeat the experiment, this time clicking Cancel, the property also changes to Static. Don’t know what else might be happening behind this error dialog …

… and that’s exactly the point. Where, pray tell, should I go to troubleshoot this error?

Well, silly, I’m a tech guy. I should figure it out for myself, rather than expect my tools to make it easy to find. Which brings me to my next question …

… how much did we pay for this IDE again?

Setting your sights low

Saturday, February 10th, 2007

I reported the Winforms Designer issue as a bug on Microsoft Connect. They swiftly marked it resolved “by design.”

What’s by design, exactly? Here are the actual and expected results from my bug report:

Actual Results

A dialog box saying “Specified cast is not valid” with an OK button, displayed three times, and then information lost about control instances within the form.

Expected Results

A clear, specific indication of the invalid typecast problem encountered while saving the form. And minimal information loss when the form is saved anyway.

So it is “by design” that instead of a clear, specific indication of the problem, we get a dialog box with only the exception message, and not even a mention that this message is coming from our own code? Just a quick and cheap MessageBox.Show(ex.Message) and their work is done?

Here is Microsoft’s exact response:

I’m afraid this is largely a byproduct of the way in which the windows forms designer works. It is setting the properties on a live object. If this object throws an exception, the designer has the choice of either letting the object throw (which would crash Visual Studio) or catching the exception. When it catches the exception, it displays the Message from the exception. The message you’re describing is the typical one for invalid cast. Hooking up a debugger will find what line the exception happens on, which would make it easy to see what the exact issue is (not just type information, but values, state, etc.)

UIFX Team

This misses the point completely.

I know full well that the designer works on live objects, and that bugs in controls therefore must cause problems. My complaint is about how those problems are handled, not that they come up. What’s “by design” is that they come up, sure. How they are handled is not “by design” (we should hope!) — it is a real usability issue that remains to be resolved. But Microsoft just shrugs it off, “you can attach a debugger to help find it.”

My point is that the exception they catch contains valuable information about the problem (the stack trace), and they do not give it to us.

Should we be grateful that at least we get a line number on compiler errors, without having to attach a debugger?

This product desperately needs competition.

Quoth Winforms Designer: Error HRESULT E_FAIL from a call to a COM component

Thursday, February 8th, 2007
Call to a COM component

Eerie. This designer thing seems to know when I’m under schedule pressure and pull out all its tricks.

Now I get “Error HRESULT E_FAIL has been returned from a call to a COM component.”

Never seen this before, don’t know what it means, don’t know what caused it, and don’t know how to find out.

Yes, my changes were lost.
No, I couldn’t repeat it by making (what I believe to be) the same changes again.
Yes, I’m happy about being able to make the changes after all.
No, I’m not happy about having no idea when this will happen again, or whether it might happen at runtime.

Quoth Windows Forms Designer: Specified Cast Is Not Valid

Thursday, February 8th, 2007

Let’s say you have a UserControl with a property like this:

public double DoubleValue
{
    get { return (double)NestedControl.EditValue; }
    set { Control.EditValue = value; }
}

where NestedControl.EditValue is of type object. Yeah, that’s careless handling of a possible typecast. But c’est la vie, sometimes that’s what you have, and you don’t know it, and that control is used in somebody else’s form that you’ve never seen before, and you are editing that form with the Windows Forms designer.

Specified cast is not valid

The designer will work merrily until you close it and say “yes, save for me please.” At this point it will present you with a dialog box saying simply “Specified cast is not valid” and inviting you to misrepresent your feelings by clicking “OK.”

When you do, it will give you the same dialog box again. You will click “OK” again, even less truthfully. And you will get that dialog box once again.

After the third time, tender mercies: the designer lets you off the hook and closes, saving your form. Phew, you think, maybe that wasn’t so bad. That’s until you discover that the designer has thrown out all the information associated with the problematic control instance, its name, text, tooltip text, sizing information, everything.

When you set out to find the cause of the problem, what do you have to go on? “Specified cast is not valid.” And which control instances got messed up. There may be dozens of them, with dozens of properties each. Happy hunting.

The lesson: when I write a tool for developers, and do it under a schedule crunch, and write a catch-all handler to display unanticipated errors … I pledge to include whatever specific contextual information I can. At least the exception stack trace. Surely that’s the least I could do.

Impressions of that splash screen spec

Wednesday, February 7th, 2007

Microsoft has posted a splash screen spec for the Orcas version of Visual Studio, asking for our impressions.

And here I was determined to start taking a more positive tack in my tech blog. Dear me.

My impressions are as follows:

The triviality

They wrote a nine-page specification complete with “Microsoft Corporation Technical Documentation License Agreement (Standard)” and stamp of approval from Microsoft Law And Corporate Affairs and table of contents and overview and context and definitions and appeal-to-stereotype Elvis arguments …

… for a drop-shadow and rounded corners and no other changes?

And thought it would be a good idea to post it publicly?

The specious claims

“[the splash screen] is no less critical than any other part of the Visual Studio User Experience.”

They lost me right there on the front page. Let me rephrase this statement while retaining the precise meaning:

“There is no part of the Visual Studio User Experience that is more critical than the splash screen.”

Gee, I could have sworn there were a couple.

We don’t even interact with this thing. It’s not a User Experience, it’s a Viewer Experience. And that’s if we even bother to View it, instead of fetching a cup of coffee while Visual Studio loads, or starting it with /nosplash.

How could it possibly be as critical as any other part of the User Experience?

This is the kind of text that comes out when you are thinking “what would sound impressive here?” instead of “what’s the plain and useful truth here?”

“The Splash Screen typifies some of the worst aspects of the Visual Studio User Experience.”

No no no. The worst aspects of said User Experience are, unsurprisingly, things we Use. Such as:

It’s OK to exaggerate the importance of your work in order to motivate yourself. But don’t go overboard.

The singularly clueless marketing stereotype banter

When Elvis first heard about Visual Studio Orcas being released, he wasn’t convinced that it was worth upgrading to, especially since he felt as though he had just purchased a copy of Visual Studio 2005.

So, like any frugal developer, Elvis went and downloaded a trial copy of Orcas to test drive.

Elvis could see that Visual Studio Orcas was new and different from the moment he started the application. The changes in the Splash Screen suggested to him immediately that this release was, indeed, different.

Well, wasn’t that a nice story.

Really, this Mort-and-Elvis stuff has to go. It pains me to see dinky little stories of these contrived stereotypes masquerading as product marketing wisdom.

The inattention

Chapter 6, “Feature Decisions / Q&A” is not just blank; it consists entirely of the placeholder text from the document template: “Include a quick description [...] describe decisions and rationale here [...] We will do so and so”

This is the document equivalent of:

/// <summary>
/// Insert summary description here
/// </summary>
public class Class1
{
    /// <summary>
    /// Construct a new Class1 instance.
    /// </summary>
    public Class1()
    {
        // Add initialization code here
    }
}

Do we post this kind of code for public review? For private review? Do we even check it in?

The implied background

One can’t help wondering whether this spec gives a glimpse of some contorted in-house dynamic, where people have to participate in a ritual Product Marketing dance by writing a Mort or Elvis “scenario” for every feature spec, and inflating the importance of their work with baseless hyperbole.

It sounds like the FeatureSpec.dot document template contained the placeholder text “Insert scenario involving Mort and Elvis here,” as a hoop for each feature spec writer to jump through.

It may not really be that way, but we’re talking impressions here.

Summary

Why did nobody’s nonsense detector go wild and prevent this embarrassment from publication? The splash screen improvements themselves are nice and understated, and should have been put in place without a word.

The sheer excitement of it all

Wednesday, January 31st, 2007
The wow starts now

Did the wow then stop right away?

[Via Seth Godin]

Borat beats Björk

Sunday, December 17th, 2006

Okay, maybe Microsoft gets more business in Kazakhstan than in Iceland. Maybe.

But I still think Borat has something to do with this: the Microsoft EMEA Visual Studio reseller list has a special map cutout for Kazakhstan, while in the main map Iceland is not linked to anything.

There is a Microsoft Iceland; don’t they feel slighted by this?

An observation on the presentation of criticism

Friday, December 15th, 2006

Why so grumpy?

Regardless of the content of criticism, its presentation is inversely proportional in harshness to the perceived humanness of its target.

When you criticize what you perceive to be an opaque corporate wall, it is easy to get unnecessarily harsh and negative and ranty.

When you criticize what you perceive to be humans and their work, you may have exactly the same things to say, but you present them in a manner that is more balanced, more respectful/-able, and probably more useful.

(Well, many of us do.)

Probably for this reason, Microsoft gets more flak per unit of suckiness than other software companies.

Nobody is ever suckiness-free. Minimizing flak means both:

  • minimizing suckiness
  • and minimizing FPUOS (flak per unit of suckiness) — by decorporatizing your image as hard as you can

(Yeah, decorporatize is a word now. 127 results on Google say so.)

I suspect blogs.msdn.com was the best move Microsoft ever made to improve their image among developers.

Of course, releasing a stable, usable SCM would be an even better move. I hope TFS SP1 turns out to be that move.

To complete the installation, you must reboot your computer.

Friday, December 15th, 2006

You can choose to reboot now or later. Note that your computer may not function correctly until the reboot.

As far as I know, I did not agree to install any operating system updates.

If there weren’t any, why is a reboot necessary?

If there were, why wasn’t I told in advance?

Still on that dagnabbed installation

Friday, December 15th, 2006

My ongoing multi-hour installation stopped (without notification) to ask me, once again:

Do you want to install Microsoft Visual Studio 2005 Team Explorer – ENU Service Pack 1 (KB926601) on Microsoft Visual Studio 2005 Team Explorer – ENU?

“Gee, hey, I’m feeling wild, I think I’ll just skip this part of my 432MB installation, and see what breaks!”

Suggestion for future lengthy installations: either ask right at the beginning, or don’t ask at all.