OdeToCode IC Logo

Notes From First Longhorn Experience

Wednesday, March 3, 2004

I finally put some time into Longhorn this weekend. At times I was a little bit frustrated (detail below), but overall the experience was exciting. Working with just what I had installed on the Longhorn Virtual PC, I decided to do a little Visual SourceSafe automation to display the file changes between two labels. Here is a screenshot:

If anyone is interested in the code I’ll be happy to post it up for download, but I would like to improve the app some (details below). At this point I wanted to play with some of the basic Avalon controls, including the GridPanel, and of course I had to try out a gradient fill.

(Update: Here is the code, just remember, no warranties express or implied, etc. etc.. Feedback and constructive criticism more than welcomed...)

Along the way I kept some notes on what I liked, what I didn’t like, and what I need to find out more about. I’m sure some of the problems I experienced are just alpha software glitches that will be fixed soon. These notes are not particularly focused on any specific area, but more general to the overall experience.

Good Stuff

GUI design with XAML is going to be fun. Using XAML will bring some of the best parts of web design to WinForms while leaving behind all the restrictions. The idea of having a Style element to make sweeping changes to the appearance of a form is particularly powerful.

The refactoring features in Whidbey are worth the price of admission alone. The Extract Method and Rename commands are going to save untold hours of error prone work.

I find the task based documentation (How Do I?) in the SDK extremely useful, particularly when first delving into a new area.

I like the way the Internet Explorer menu and toolbar can occupy the same horizontal area. I’ve always set my IE toolbar icons to “small icons” to conserve space, but this is even better.

The Not Quite As Good

When doing a search in the Longhorn SDK (local copy), the “Location” for the search results always returns “Longhorn SDK”. When doing a search in the Longhorn SDK online, I can at least take a guess where I am going to end up by peeking at the URL. For instance, when looking for control documentation, the URL will tell me if I am going to end up in the MSAvalon.Windows.Controls area or the System.Web.UI.WebControls area.

The title bars are so tall they seem to waste space. At first look the contrast to previous versions is pleasing, but when I get down to work I’d like to have more space for real content.

After 20 hours or so of uptime, Internet Explorer (and dexplorer.exe) become so unresponsive as to require a reboot. Is this just me?

I’m starting to wonder what impact Avalon will have on the makeup of software development teams. These days, you can bang out a UI that competes with Microsoft Office applications (in terms of look and feel) as a solo developer. Taking a look at the Longhorn concept videos reminds me of the gaming industry. If you look at the postmortems for today’s best selling games – the skills required go far beyond bit twiddling. The teams usually have half as many graphic designers and artists as there are developers. Plus sound FX people, camera people, voice-over people, and an occasional composer.

Post build steps do not appear to function as yet in Whidbey.

It appears the automagic copying of app.config and COM interop assemblies does not function as yet in Whidbey. I also had some difficulties successfully referencing an interop assembly until I TLBIMP’ed it myself and added a reference by hand.

Requires Research

The app currently does all the work on the UI thread. I didn’t see an Invoke method on the Control class to marshal back to the UI thread, so I abandoned my plan to use a background thread for the VSS automation calls. I did notice the UIContext parameter on the control constructor, which is new, so I’ll need to dig around some more.

Databinding with the GridPanel control? The app currently builds the GridPanel from scratch in the C# code. The next step is to read more about databinding in Longhorn – I’m looking for something similar to today’s DataGrid in Avalon with sorting built in.

Is there an Avalon status bar control?

I’ve heard there is another version of Whidbey coming along soon to play with, but I’m also wondering when there will be another rev of Longhorn to experiment with. Overall - a fun experience with the new technology.