Delegate methods on the Heap class

I shamelessly copied the delegate methods on my heap class from those on List. Delegate methods provide a step on the way towards enabling a separation in the collections programming model between structure and algorithm. You might express this as “what shape is a heap?” and “what operations can I perform across any data structure?”Its…


Generic collections: Decisions around type support for your generic parameters

Originally in my heap class, null was a special value. The type of the heap was always object and so this made sense. Either the contained item was a reference type and null was a natural value to store for no item, or it was a boxed value type (which performed poorly but worked fine)….


Crazy for OOPSLA

Apologies that I’ve not been much for blogging lately. We’ve had our heads buried in our deliverables for the last weeks. My team has a big milestone coming up and we also hope to have some interesting stuff to show at OOPSLA in Vancouver at the end of the month which has been keeping me…


Tracepoints Rock

Visual Studio 2005 has added a feature called Tracepoints and currently it’s easily my favourite of the new stuff. When you need it, it saves a huge amount of time. When you want to add tracing functionality that’s very specific to the problem you’re trying to debug to some piece of code then it’s a…


Comparing ICollection and ICollection<T>

When examining the ICollection<T> interface prior to implementing on my Heap class, I was quite surprised, as it had changed rather more than I’d expected from the original ICollection interface. Here they are for comparison:    [System.Runtime.InteropServices.ComVisibleAttribute(false)]   [System.CLSCompliantAttribute(false)]   public interface ICollection<T> : System.Collections.Generic.IEnumerable<T>   {      void Add(T item);      void Clear();      bool Contains(T item);      void CopyTo(T[] array, int arrayIndex);      int Count { get; }      bool IsReadOnly {…


Comments now moderated

Comments on my blog are now moderated, so don’t be surprised if you submit one and it doesn’t appear immediately.  I’ll attempt to approve them as snappily as possible.


Heap Sample: Comparing the new collection classes with the old

The first step in updating the Heap class to Heap<T> was to take a look at the new collections provided in Visual Studio 2005 Beta 1 to get an idea what the generic interfaces for collections look like.  (The original Heap project was to implement a different collection type in a way as similar to…


More modeling blogs

Several colleagues from my team are also running modeling-related blogs: Keith Short ( – on modeling, Visual Studio Team System 2005 and software factories Stuart Kent ( – on approaches to model driven architectures Alan Cameron Wills ( – on domain specific languages Ramesh Rajagopal ( – on the Class Designer in Visual Studio Team…


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…