Modeling User Experiences, APIs and Tools

Hi, I'm Gareth Jones and I'm a developer in the architect team within the Visual Studio Team System group.  I'm currently working on tooling and APIs for modeling.  Previously within Microsoft, I've worked in a bunch of different roles, from building bespoke enterprise applications to dev consulting for ISVs and being the dev lead for https://www.bcentral.co.uk.  In life before Microsoft I was a developer for an ISV in the intelligence analysis market and before that for a consultancy in the defence and simulation business.  My dev interests have long been in the area of developing user experiences (certainly long before they were called user experiences) and especially in UI tools and frameworks.  So tooling and APIs for modeling (and especially its user experience) are the subjects I intend to discuss.  However to start off I want to talk about something entirely different (just to be contrary).

 

I recently got around to posting a sample I wrote a while back to GotDotNet.  It's an implementation of a Heap class as a .Net collection.  You can find it on here. I make fairly limited claims about how great a Heap implementation it is (although it broadly seems to work - please feel free to send me bug reports).  It was written to show the work necessary to take a generic collection algorithm and package it up as a .Net collection with a feature set as rich as the built-in collection classes.

 

Whilst exploring the detail of some of the new language features of C# I thought it might be nice to update my sample for Visual Studio 2005.  You can find the new version of the sample here on GotDotNet (You'll need Visual Studio 2005 Beta1 available via MSDN Subscriber downloads to build it)

 

I mostly wanted to illustrate the application of generics and iterators to the collection.  I started out with the unconsidered expectation that a couple of interface changes and a simple search and replace from 'object' to generic type parameter 'T' would be enough for me to hit the upload button and feel pleased with myself.  Of course, nothing is ever quite that simple.

 

Have a look at the code and, next time, I'll post about some of the things that surprised me and what the interesting decision points were.

 

This posting is provided "AS IS" with no warranties, and confers no rights.