Expert Texture Home Contact me About Subscribe Digipede Connect on LinkedIn rwandering on Twitter rwandering on FriendFeed

rwandering.net

The blogged wandering of Robert W. Anderson

An SP1 by any other name would . . .

Mary Jo Foley writes there’s no Windows Server 2008 SP1 in the works.

Why?  Because the first RTM of Server 2008 is called Windows Server 2008 SP1.  This is due to Server 2008 and Vista sharing the same core code and components.

Hmm.

This makes only marginal sense, and then only if Microsoft commits to keeping the service packs synchronized across the Windows 6 product family.  I think this will be less confusing to customers.  We’ll see if this synchronization happens. 

Regardless of Microsoft’s plans, the SP1 designation on Server 2008 is misleading.  Most of the server components of Windows 6 will remain without a service pack until SP2.

Customers who like to wait for initial service packs still will — unless they are duped into thinking they’ve already got it.

[tags]Microsoft, Server 2008, Vista, Windows, SP1[/tags]

Tags: , , , ,

Dan’s Worst .NET Bug

Last Thurday, Dan posted Worst .NET Bug I’ve Ever Seen.  This post was the result of a Digipede customer support incident resulting from this .NET behavior.  We had some trouble tracking it down.  The unexpected exceptions were bad enough — and the deceptive exception message text made it worse. 

He posted code to reproduce the problem on a single thread (a tight loop of open, write, close).  The actual code in question included no looping, but multiple threads following a fairly common pattern (i.e., open temp file, write, close, delete, rename).  The code was properly synchronized, but it still threw exceptions.  To keep this simple, I’ll stick with Dan’s simple version:

while (true) { 
   using (Stream sw = File.Open(strFileName, FileMode.Create)) { 
         using (BinaryWriter bw = new BinaryWriter(sw)) { 
            BinaryFormatter bf = new BinaryFormatter(); 
            bf.Serialize(bw.BaseStream, this); 
         } 
   } 
}

Loop this code on one or more threads and you may eventually get a System.IO.IOException.  I say may because I can’t reproduce it, but Dan can and so can one of our customers. 

Given many caveats (e.g., the paths are valid, the proper permissions exist, the file is not opened elsewhere, etc.), this code should never throw an exception.  The unmanaged resources should be released when the Stream.Dispose method is called.  The file should be closed.  The types of exceptions that our customer (and Dan) got all follow from the fact that sometimes the file isn’t closed.  Add a Thread.Sleep(1000) after the using block and the problem goes away.

So, is this a .NET bug or a Windows bug, or just expected behavior?

The first thing I did was take Dan’s simple loop and write it using the Windows Platform SDK (i.e., using the Windows API, not .NET).  I left out the delete/rename part of the pattern to make it like Dan’s tight loop.  The code looks like this:

while (true) { 
    HANDLE hFile = CreateFile(fileName, GENERIC_READ | GENERIC_WRITE, 
        0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);   

    if (hFile == INVALID_HANDLE_VALUE) { 
        printf("Could not open file (error %d)\n", GetLastError()); 
        break;; 
    }   

    byte buffer[1024]; 
    DWORD writtenBytes; 
    if (!WriteFile(hFile, buffer, sizeof(buffer), &writtenBytes, NULL)) { 
        printf("Could not write file (error %d)\n", GetLastError()); 
        break; 
    }   

    if (!CloseHandle(hFile)) { 
        printf("Could not close file (error %d)\n", GetLastError()); 
        break; 
    } 
}

This code works fine on Dan’s machine (i.e., never exits).  

Next steps

So, yes, this appears to be a problem in .NET.  My next steps are to . . .

  1. Check the .NET versions / are they somehow different between our machines?
  2. See if this is a known bug.  Connect.microsoft.com, here I come.
  3. Question my assumptions.  

To this last point, does .NET (or Windows) not guarantee that a file is closed when the last handle is released?  If this is somehow true . . . how much code have you written that assumes that it does?  Me, a lot.  OK, not a huge amount, but enough that I’m really surprised this hasn’t come up before.

I’ll follow up on this post when I get to the bottom of it.  I also have some complaints about the content of some of the exceptions.  In the meantime, any reader want to try to reproduce this?

[tags].NET, .NET3.5, .NET2.0, CLR, BCL, Bug, Microsoft, Connect[/tags]

Tags: , , , , , , ,

The S+S Kool-Aid

Had a good talk on the Gang today.  Mostly we talked about Microsoft / Yahoo, if Microsoft can beat Google at openness.  A small part of the discussion was whether or not Microsoft can credibly move into an open Services space with their S+S strategy. 

Perception is that the Software in the S+S strategy is the Windows desktop & Office.  Of course, there is truth in that, but I maintain that Microsoft is also driving to enable their developer ecosystem to build rich S+S applications outside of the Windows desktop and Office.

But maybe Gianpaolo Carraro, Director of SaaS Architecture at Microsoft, disagrees with me.  In his post, S+S- Real or have I drunk too much Kool-Aid- -), he shows a feature of Office that can open and save Office Live files.  He asks if this example shows that S+S is real or if he has “drunk too much (of the Microsoft) Kool-Aid”.

Short answer, yes.

I seem to have stepped into the middle of an argument between Gianpaolo and Phil Waineright of ZDNet.  What are they arguing about?  Not that software is required on the front-end — I think we can all just get past that one.  Not that deployment isn’t an issue.  It seems they are arguing about whether Office + the Cloud is better than free on-demand office productivity “in the cloud”.  Fair enough, but I think the root of the issue is the term “S+S”.

Gianpaolo, is essentially saying,

Look at this nifty integration between Windows desktop & Office + Office Live.  This proves S+S is real.

Real?  Maybe.  But it that is S+S, then it just isn’t a useful term.

If it is about more than that, then let’s stop talking about little integration features between Office and Office Live.  Instead, let’s see some good examples of what it means outside of the Windows desktop, outside of Office / Office Live, even outside of Microsoft.

And this is what S+S being real and, more importantly, being relevant is going to come down to.  Regardless of how much Kool-Aid you consume.

[tags]Microsoft, SaaS, S+S, Gang[/tags]

Tags: , , ,

Vista SP1 available after all. Kind of.

According to Mary Jo Foley, Some won’t have to wait until March for Vista SP1.  Cool.  I’m installing it now.

[tags]Microsoft, Windows, Vista, SP1[/tags]

Tags: , , ,

All Together Now — don’t call it ‘D’

Of course there is APL (A Programming Language), B (boiled down from BCPL), C et al., and T (a dialect of Scheme which is a dialect of Lisp).

And, while there are several languages called ‘D’, Microsoft seems to be building a new one.  At least it has the code name ‘D’.  This is apparently not the same as the “D Programming Language”, but appears to be a declarative language relying heavily on XML (or XAML).

Please Microsoft, if you are going to stick with the letter ‘D’, disambiguate it.  Call it

  • D#; or
  • Visual-D; or
  • D.NET; or
  • DEE; or
  • MSD; or
  • something else.  I hope this last one is the leading contender.

But whatever you do, make it searchable.  The only thing making it easy to find useful information about .NET on the Web is that most .NET bloggers use C#.  C# is searchable.  .NET is not.  Nor, by the way, was COM (and I hope you aren’t getting any ideas about using the word ORG or MIL for new technology names).

So, Microsoft and .NET community, please join in me in the refrain:

A, B, C, T, please don’t call your language D,

E, F, G, H, I, J, disambiguate.

All Together Now.

Apologies for the extra syllable.

[tags]Microsoft, .NET, D, D.NET, XAML[/tags]

Tags: , , , ,

A few things I don’t like about VS2008

Last week I posted on some things I like about VS2008.  Here are some things that I don’t particularly like, or at least things that I wish had been updated.  Consider these feature requests for VS.NEXT (or TFS power toys) or a service pack.

  • First of all, a bug.  It has a habit of closing itself.  I’m usually in the middle of a build when this happens.  It just goes “poof”.  Sometimes more than once a day.  Sometimes it does not repeat for days.

The rest of these are really just suggestions.  The Visual Studio Team will probably just roll their eyes and say “yeah, we know” or “why didn’t you suggest this before?”  Yeah.  Better late than never?

  • While targeting older versions of .NET 2.0 is great, I wish there was read-only support for VS2005 projects without conversion.   The driver for down-level support must have been to remove barriers-to-sale for existing VS2005 customers, but read-only support would have been better.  Why?
    • So teams with a lot of projects can “convert as they go” and not need to do a wholesale conversion of everything.
    • To make it easier to maintain older versions of their product without having to keep VS2005 around.
  • The source control diff tool needs to be updated.  My major annoyances?
    • It doesn’t use the same keyboard shortcuts as Visual Studio (or Office for that matter).  Alt-F3 for Find?
    • It can’t be minimized.  It can be resized, but why not minimized?
    • I would love to be able to diff with horizontal panes.  Since the code is so often wider than the pane, I have to scroll around.  This slows down changeset code audits.
  • While I love the Excel view of TFS work items, we still cannot edit the entire item from Excel.  I really hoped this would have been added. 
  • And on the subject of TFS, there should be a quick find feature built into the IDE.  Writing a query to do a find is too many steps.  We shouldn’t have to rely on outside tools for this (e.g., TFS Quick Search which hasn’t been updated yet).

Will there be more?  Certainly.  I haven’t spent much time with the new features of the IDE.  But I’m sure there will be a lot more that I like too — I’m very happy to be using the new IDE.

[tags].NET, Microsoft, TFS, VS2008[/tags]

Tags: , , ,

Digipede Network for Microsoft MVPs

deatlemsmvp Today, we announced a program to provide free licenses of the award-winning Digipede Network to Microsoft MVPs.  For more details and to request your license, go here.

Thanks to MVP Marco Shaw for the idea. 

[tags]Digipede, MVP, Microsoft[/tags]

Tags: , ,

A few things I like about VS2008

Leaving out all .NET enhancements, here are a few things I like about VS2008:

  • Down-level .NET support.  This makes the upgrade much easier for those of us who still support older versions of Windows that don’t support the new versions of .NET.  I wish they had gone a step further — I’ll write that up in a companion post.
  • Doesn’t require elevation.  I recently started using UAC again (i.e., I turned it back on) and found it annoying that I couldn’t drop files into VS2005 (since it runs elevated and Explorer does not).  It is important that VS2008 works unelevated, because UAC is important.  If you make it too hard for devs to use UAC, they’ll turn it off.  And as I know from personal experience, they won’t be as motivated to support it. 
  • Supports application manifest files as a project property (instead of through custom post-build steps).  We just implemented this manually for the “Certified for Server 2008 Logo” and I was very happy to eliminate that in favor of direct tool support.
  • It seems to start about 100 times faster than VS2005. I’m not kidding.
  • The Source Control “Annotate” feature — glad it got rolled into the release.  I like the fact that it is available directly from the history menu, making it much easier to find when some line of code was introduced.

Just a few things.  I’m sure I’ll find more soon.

[tags]microsoft, vs2008, .NET, TFS[/tags]

Tags: , , ,

SSE to FeedSync; Spec released

Many of us our still waiting to see the positive impact from Ray Ozzie in his role at Microsoft.  Word is that is still coming, but last year we did get something: Microsoft’s Simple Sharing Extensions (SSE).  I wrote about it back then.  Well, SSE has been renamed FeedSync and a spec has been released.  Also, the Microsoft Synchronization framework supports it.

Cool extensions to RSS/Atom, though I wish they hadn’t chosen the “FeedSync” name.  That sounds like a product, not a specification.  I preferred SSE, and would have thought RSS-SE (RSS Sync Extensions) or to be more agnostic, FSE (Feed synchronization extensions) to be even better.

Jon Udell has more details here and links to Channel 9 videos, etc. 

So, who is going to support it?  For blogging applications, I’d like to see . . .

  • FeedBurner (Google)  support the history and tombstone feature right away.  Also, the ability to aggregate feeds with full synchronization would also be cool.
  • How about WordPress?   Support FeedSync directly?

Presumably Microsoft will be using this too in some new Live services.  Other applications?

[tags]Microsoft, SSE, RSS, Atom, FeedSync, FeedBurner, WordPress, Ozzie[/tags]

Tags: , , , , , , ,

A Microsoft pawn? Me?

John has an excellent post wrapping up his trip to SC ‘07 — the bashers’ ball. He is tired of all the Microsoft bashing:

It is amazing to me the level of religious fervor that Microsoft still inspires. The bashers out there can be perfectly calm and reasonable about a wide range of topics – but say the word “Microsoft,” and they turn bright red and irrational. I have watched this phenomenon for years, and still find it inexplicable. Microsoft is a company. That company makes software. Some of their software is very, very good. Some of it is remarkably bad. I don’t understand why some people find it so hard to remain objective (or even civil) when discussing their products and market presence.

Statement of fact.  Nothing new exactly, but then he goes on how this relates to our company (emphasis mine) . . .

Many Microsoft bashers think that all of us at Digipede are mouthpieces for the Evil Empire, and that we are just pawns of the Microsoft machine. On the other hand, while we have plenty of fans within Microsoft, there are also some Microsoft employees who think we are difficult annoying troublemakers . . .

Pawns of Microsoft? Please. But maybe we are misunderstood. The other day I found myself convincing Steve Gillmor that I’m not a Microsoft fanboy (I don’t think I succeeded). But John says it well,

In fact, none of us at Digipede love or hate Microsoft – we work with Microsoft. We do so for real-world business reasons that help us change the world for the better while building a great company. We work with other companies too, but Microsoft occupies a special place in the technology landscape, and we work very, very hard to understand how to work with them to our mutual benefit. There are some great people there doing great things, and the bashers only hurt themselves by blinding themselves to these very real contributions.

Yeah, I don’t love or hate Microsoft; however, I do really like Microsoft .NET.  Does that make me a pawn of Microsoft?  .NET isn’t my religion.  I’m not a zealot about it.  It doesn’t mean that I think everyone should be using .NET / Windows nor does it require that I go around bashing Apple / Sun / IBM / Google / Linux / Java / PHP / Rails / whatever. 

I don’t think Microsoft bashing is a requirement for entry to the HPC and Apple fan clubs either, is it?

As long as I can remember, I have detested the religion of the OS (or programming language, or platform, etc.). Passion for technology is great — it’s a requirement for success in this field.  But I’m tired of people using their passion to bash, bash, bash. 

Maybe I just don’t get it, but if you’re a basher, please just move along.  And if you still think I’m a Microsoft pawn, well, I’m not going to convince you, now am I?

Note to Robert Scoble: you had the temerity to criticize Apple and the zealots came out in force — even called you a Microsoft shill. Welcome back to our club, Robert — though I’m not sure you ever really left.

[tags]Digipede, Microsoft, HPC, Apple, Gillmor, Scoble, .NET, SC07[/tags]

Tags: , , , , , , ,

« Previous entries · Next entries »