Monday, November 15, 2004

Notes from VS Connections

I am writing this blog entry, after the fact. I wish that I could have blogged "live", like so many other bloggers, but there just wasn't enough time. These are not all the events that I attended, just the ones that I took notes during.

Day One

The Keynote

The speaker was the product manager for Visual Studio. I wasn't particularly shocked by anything that was said in the keynote. The main point of the keynote seemed to be that they were opening up Developer Studio to more than just the coder role, so that other team members ( project manager, architect, tester ) could find a home there as well.

One neat feature: Visual Studio may now import .VSI files, which contain application templates. Various third parties will be supplying templates for common problems. This is integrated into a search facility, which you may execute from the "New Project" dialog.

Introducing Indigo

Nothing new here since any of the previous Indigo demos that I have seen. I did get a kick out of Indigo's composability, as this has been something for which I have aimed in recent designs. In my case, I am coding in C++ and add new functionality using the Strategy pattern. In Indigo, you can weave in new functionality with .NET attributes.

Windows Forms

90 minutes of dragging controls on to forms. Okay...I get it!

Web Services

It seems like everything is just an attribute that you slap onto a class. I often have a hard time believing that it is simple as adding [webservice] or whatever to a class.

Day Two

.NET


The presenter gave a more general talk about the biz value of moving to .NET CLR.

Generating Windows Forms Interfaces

Some interesting stuff, regarding code generation, databases, and user interfaces, but I think that the fundamental premise, using code generation to automate the building of CRUD forms is flawed. Dialogs should represent business actions.

The presenter did throw out an interesting aside: generating unit tests from method comments. I thought this was pretty cool. I'd love to be able to do this:

/*
multiply
x y retval
10 20 200
-10 20 -200
*/

int multiply( int x, int y ) {}

And automatically build unit tests from the comments.

Whitehorse

Whitehorse is a RAD tool for designing distributed systems. I was impressed with its potential and I very curious to see how far Microsoft can take it.

Day Three

Permission Based Security

.NET allows you to define required permission as attributes. Principal information is stored on a per thread basis. The presentation did not cover authentication, which I would have been a much thornier topic. I would really have liked to have seen the whole thing presented from end to end, as I think that Code Access Security is an incredibly important feature in .NET.

C# Generics

Way cool. A lot like C++ templates, except that you can define constraints on template parameters, which are expressed as required interfaces.

One of my favorite things about C# is that, like Java, it elevates interfaces into first class citizens. I have always found this to be serious deficiency in C++.