Thursday, July 31, 2008

IE 8 Seeking Beta Testers

But becoming a beta tester apparently requires writing an essay.

According to Allison Burnett's (Program Manager) latest post on the IE8 blog,

Currently the only way to directly file a bug with the IE Team is to be a part of the IE8 Technical Beta program on Microsoft Connect. Beta 2 is right around the corner and we are expanding our reach!  If you wish to be a part of making IE better by contributing great bug reports then please email us at IESO@microsoft.com and tell us a little about yourself including why you’d be a great beta tester.

An essay? You mean I have to sell myself as a worthy tester before I can submit a bug?

Judging by the comments she's getting, I'm not the only one that sees this as a mite odd...

Maybe more people would participate if:

a.) You allow users to download/view attachments so they can test bugs.

b.) You gave them feedback to indicate which bugs are being fixed, and when they are fixed.

c.) The current beta didn't have such a horrible auto-scrolling issue.

d.) MSFT made some sort of declaration that IE Feedback would actually be around after the IE8 RTM.  The fact that this was shut down after IE7 went RTM  ***LOST*** most of your loyal contributors.

...and...

I am not writing an essay on why I'd be a great tester.  You want/need more testers upload a current complied working build and the bug report tool in one place.  Let the web both see and use it.  Most of us have had terrible experiences so far with Beta 1 so perhaps it's time to release a Beta 2.

... and also...

Why, on earth, when other browser developers provide open and easy to use bug systems, would Microsoft limit itself in this way?

I have a bug in Webkit, five minutes can help me determine if someone had already reported the bug; no more than another five to submit the bug, with test case.

Mozilla created software to make it easy to search on, and submit bugs. Why, I bet even you all could use it.

Opera has a handy, dandy bug form that makes bug submission a snap.

And here is the IE team "If you email us and ask us really nice we may, just may, mind you, deign to let you actually tell us about that bug, which if left in the released product will haunt us until the end of time. If you don't ask nice, you can stuff your bug."

...and...

Dear Allison Burnett,

I've been a software engineer for 10 years and I'm taken back by why we need to provide reasons as to why we want to be great beta testers for a product that's on the decline in the web browser market. I expect this from a would be employer. I'm all for a better IE but this is not the best effort in gaining interest that Microsoft so dearly needs. You need to do more than just offer invitation to other beta programs.

...and so on. I think one commenter had Microsoft's thought process pegged on this one. That if you allow everyone to post bugs, and some of them don't get fixed, it might make them look bad.

And I'll just leave you with that.

Monday, July 28, 2008

LINQ Over Interwoven

Here at the large, International law firm in which I'm employed, we use Interwoven as our document management system (DMS) of choice. We've found it advantageous to expose a slice here and a slice there of Interwoven functionality via web service API's, which has become all the more easier using C# 3.0's new language improvements.

Allow me to demonstrate:

Extension Methods

If we want to use LINQ to enumerate over Interwoven's COM-based collections we need a way to easily convert them into an IEnumerable (or IQueryable). Extension method provide us with an elegant way of extending the Interwoven API so that it appears to give us IEnumerable access to its collections.

Here's a sample extension method for converting an IManage.IManFolders collection into an IEnumerable.

public static IEnumerable<IManage.IManFolder> ToIEnumerable(this IManage.IManFolders folders)
{
List<IManage.IManFolder> list = new List<IManFolder>(folders.Count);

foreach (IManFolder folder in folders)
{
list.Add(folder);
}

list.TrimExcess();

return list.AsEnumerable();
}


To really get a sense of how this makes our lives much easier as developers, let's just dive right into...


LINQ over XML


If you haven't played with LINQ over XML yet, allow me to demonstrate a smidgen of its power. This next block of code will recursively build a nested (and correctly indented) block of XML containing an Interwoven folder and all of it's child folders (using the extension method we created above).



public XElement GetFolderAsXElement(IManFolder folder)
{
return new XElement("IManFolder",
new XAttribute("Name", folder.Name),
new XAttribute("NrtId", folder.ObjectID),
new XAttribute("ObjectType", folder.ObjectType),
new XAttribute("FolderType", folder.ObjectType),
from IManFolder subFolder in folder.SubFolders.ToIEnumerable()
select GetFolderAsXElement(subFolder)
);
}


The beauty of the new .Net 3.5 XML classes (XElement, XDoc, XAttribute, et al), is in its readability. Anyone can take one look at that code and instantly understand the structure of the XML that's being created. And if you're paying close attention, you'll note that all the work being done in that function was succinctly described in only one statement!


I've heard many developers express concern over their coworkers and comrades going all rogue with these new features, particularly extension methods. But here, I think is an example where the new language features actually improve our code, and enable us to do what otherwise would have taken much longer.