Dispose Pattern and “Set large fields to null”

I was involved in a short side discussion about “should” fields be set to null in the Dispose method(s).  I’m not sure what the impetus of the question was; but, if you read through the dispose pattern MSDN documentation (in most versions I believe) there’s a comment // Set large fields to null. in the implementation of the virtual Dispose method within the if(!disposed) block and after the if(disposing) block.  But, that’s the only reference to setting fields to null during dispose.  There’s nothing else that I’ve been able to find in MSDN with regard to setting fields to null. … Continue reading Dispose Pattern and “Set large fields to null”

The Flawed Eventually-upgrade Software Model

I think Windows XP was the first real release of Windows–it had finally gotten to a usability and stability point that people could accept.  The Microsoft support model changed shortly after Windows XP was released to basically support any piece of software for as long as ten years (if you paid extra for support roughly 2 years after a successive version was released). To paraphrase a famous law: software becomes obsolete every 18 months.  That was true for a long time; but hardware and software isn’t improving at that rate any more.   Software has basically caught up with existing hardware … Continue reading The Flawed Eventually-upgrade Software Model

The Rat-hole of Object-oriented Mapping

Mark Seemann recently had a great post that, as most of his posts seem to do, challenges the average reader to re-think their reality a bit.  The post is titled “Is Layering Worth the Mapping”.  In the post Mark essentially details some of the grief and friction that developers face when they need to decouple two or more concepts by way of an abstraction. Mark takes the example of layering.  Layering is a one way coupling between two “layers” where the “higher-level” layer takes a dependency on abstractions in a “lower-level” layer.  Part of his example is a UI layer … Continue reading The Rat-hole of Object-oriented Mapping

Taking Customer Support Into Social Era

We’ve entered the Social Era with the advent and popularity of technologies like Twitter, Facebook, FriendFeed, FourSquare etc.  Supporting a product or service can take customer satisfaction to the next level by making use of these technologies. To be clear, I’m of the opinion that customer support has the ability and responsibility for improving customer experience with a product or service.  My opinion is that customer support should be proactive with regard to supporting customers; customer support teams that don’t believe this need not read the rest :)  The best product or service can be meaningless if the customer support … Continue reading Taking Customer Support Into Social Era

The Era of Usability

For most of the personal computer generation, success of computers and their operating systems have been ruled by people’s ability to do what they needed to do on or with the computer.  We’re starting to enter an era where the success of a computer and/or it’s operating system is going to hinge on it’s ability to reduce usage friction compared to another. We’re entering an era where software has effectively become a commodity—where the majority of people don’t differentiate between the major operating systems or the most frequently used software. To a certain degree computers and computer technology is becoming … Continue reading The Era of Usability

Never Mind Canonical Tags, Let’s Get Content/Navigation Tags.

http://www.appscout.com/2009/02/google_microsoft_yahoo_create.php describes that Microsoft, Yahoo, and Google have agreed on a “canonical tag”.  This tag basically allows a web site owner to tell search sites where the main page of a site is, regardless of the URL. This is fine, but it only reduces duplicate results.  It does nothing for incorrect results. Google’s algorithm bases its results on content and voting (either explicit or implict), among other things.  The longer content is around the more accurate Google is with results.  New links suffer from not having any of this meta data to help Google rank the content in the results. Many … Continue reading Never Mind Canonical Tags, Let’s Get Content/Navigation Tags.

Pontificating Virtual Parameterized Constructors in C#

Tom Hollander recently posted about a change he required to the Enterprise Library for date/time validation.  He had to create a new class (rather than modify the Enterprise Library) that derived from another, defective class.  One of his complaints was that in order to effectively implement the base class he had to also write matching constructors that simply called the base class.  His suggestion was effectively to add the concept of virtual parameterized constructors to C#.  I detail “parameterized constructors” because C# already effectively has virtual default constructors.  In the following example the base constructor (Form()) is automatically called by … Continue reading Pontificating Virtual Parameterized Constructors in C#

Location of unit tests.

I had a short  conversation at Alt.Net Canada about the location of unit tests.  I personally tend towards a distinct unit test project.  But, I deal with mostly commercial, off-the-shelf (COTS) projects where I simply can’t ship code like that.  I also don’t want to wire-off the unit test via #if because I would then be shipping something different than that which was tested. From an enterprise application point of view, this is different.  I would have no problem including the unit tests within their respective project as production code

My Wishlist for C# 4

[Edit: fixed the not-ready-for-publication problems]  There seems to be more than few people blogging about what they hope C# 4 will do for them.  I haven’t seen one that really synchronizes with my thoughts, so I’d thought I’d post my own list. Variance A good story with regard to variance with generics is vital for upcoming versions of C# 4.  You could argue that this should have been done in 3, but, unfortunately, that wasn’t the focus.  I think this really needs to be done for 4; and if Eric Lippert’s blog is any indication, that may come true. Design … Continue reading My Wishlist for C# 4

Is C++/CLI a Second Class Language with Microsoft?

The post frequency on the Visual C++ team blog is reasonably high. Some posts deal with new features that were added to VC++ 2008. But, is Visual C++ a second-class citizen in the Visual Studio product group?  Recently the Visual Studio 2008 Product Comparison was released (don’t ask me why it wasn’t released at the same time as the products…).  In the product comparisons VC++ Express has an inordinate number of features that only it doesn’t have.  When you look at the Visual C++ 2008 Express Edition product sites, it seems pretty clear that it’s geared towards native-only software development.  Despite this … Continue reading Is C++/CLI a Second Class Language with Microsoft?