<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://codebetter.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Don Demsak</title><subtitle type="html">Tales from the field</subtitle><id>http://codebetter.com/blogs/donxml/atom.aspx</id><link rel="alternate" type="text/html" href="http://codebetter.com/blogs/donxml/default.aspx" /><link rel="self" type="application/atom+xml" href="http://codebetter.com/blogs/donxml/atom.aspx" /><generator uri="http://communityserver.org" version="3.0.20416.853">Community Server</generator><updated>2007-10-20T20:25:00Z</updated><entry><title>Jason Bock - Write Your Tests First...Because Adding Them Later Sucks</title><link rel="alternate" type="text/html" href="http://codebetter.com/blogs/donxml/archive/2007/12/10/jason-bock-write-your-tests-first-because-adding-them-later-sucks.aspx" /><id>http://codebetter.com/blogs/donxml/archive/2007/12/10/jason-bock-write-your-tests-first-because-adding-them-later-sucks.aspx</id><published>2007-12-10T15:04:43Z</published><updated>2007-12-10T15:04:43Z</updated><content type="html">&lt;p&gt;&lt;a href="http://www.jasonbock.net/JB/Default.aspx?blog=entry.a44b94d177ed4c139029e8cca6efe90f" target="_blank"&gt;Jason has it right&lt;/a&gt;, write your tests first.&amp;nbsp; Yes, a lot of us already know this, but it is great to add another person to the choir.&lt;/p&gt;&lt;img src="http://codebetter.com/aggbug.aspx?PostID=171822" width="1" height="1"&gt;</content><author><name>DonXML</name><uri>http://codebetter.com/members/DonXML.aspx</uri></author></entry><entry><title>ThoughtWorks Podcast #1 - Domain Specific Languages Part 1</title><link rel="alternate" type="text/html" href="http://codebetter.com/blogs/donxml/archive/2007/12/04/thoughtworks-podcast-1-domain-specific-languages-part-1.aspx" /><id>http://codebetter.com/blogs/donxml/archive/2007/12/04/thoughtworks-podcast-1-domain-specific-languages-part-1.aspx</id><published>2007-12-04T16:04:06Z</published><updated>2007-12-04T16:04:06Z</updated><content type="html">&lt;p&gt;While going thru my morning ritual of reading my subscribed blogs, I ran across &lt;a href="http://www.thoughtworks.com/what-we-say/podcasts.html" target="_blank"&gt;Martin Fowler&amp;#39;s announcement&lt;/a&gt; of the first ThoughtWorks podcast, &lt;a href="http://podcast.thoughtworks.com/itmatters/it_matters.xml" target="_blank"&gt;IT Matters&lt;/a&gt;.&amp;nbsp; There doesn&amp;#39;t seem to be an HTML page up for the podcast, just a feed.&amp;nbsp; I started to listen to it on the train ride into NYC this morning, and so far so good (well what do you expect).&amp;nbsp; The only thing I would suggest to ThoughtWorks is if they will to continue with the podcast:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Put up a website (I&amp;#39;d be surprise if this wasn&amp;#39;t already in the works).&lt;/li&gt; &lt;li&gt;Add a forum to the site, so people can discuss the podcasts (helping to develop a listener community).&lt;/li&gt; &lt;li&gt;Hire (or contract) a sound engineer.&amp;nbsp; I know this is just their first podcast, but the sound quality is pretty bad.&amp;nbsp; From working with &lt;a href="http://www.intellectualhedonism.com/" target="_blank"&gt;Carl Franklin&lt;/a&gt; and the &lt;a href="http://www.dotnetrocks.com" target="_blank"&gt;.Net Rocks&lt;/a&gt; team, I know how hard it is to produce decent sound quality podcasts.&amp;nbsp; ThoughtWorks should be able to come up with great content for the podcasts, but if the sound quality isn&amp;#39;t there, it will limit their audience.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;But, don&amp;#39;t let these small issues stop you from subscribing to the podcast, the content is worth your time.&amp;nbsp; I&amp;#39;m looking forward to DSLs Part 2, and beyond.&amp;nbsp; &lt;/p&gt;&lt;img src="http://codebetter.com/aggbug.aspx?PostID=171616" width="1" height="1"&gt;</content><author><name>DonXML</name><uri>http://codebetter.com/members/DonXML.aspx</uri></author></entry><entry><title>PatternExpert - Not a .Net Patterns Expert</title><link rel="alternate" type="text/html" href="http://codebetter.com/blogs/donxml/archive/2007/11/13/patternexpert-not-a-net-patterns-expert.aspx" /><id>http://codebetter.com/blogs/donxml/archive/2007/11/13/patternexpert-not-a-net-patterns-expert.aspx</id><published>2007-11-13T17:34:54Z</published><updated>2007-11-13T17:34:54Z</updated><content type="html">&lt;p&gt;I happen to be reading the current issue of &lt;a href="http://reddevnews.com/default.aspx" target="_blank"&gt;Redmond Developers News&lt;/a&gt; and ran across the article, &lt;a href="http://reddevnews.com/features/article.aspx?editorialsid=2371" target="_blank"&gt;.NET Toolbox Picks: Part II&lt;/a&gt; by Leonard Lobel and Brian Schmitt.&amp;nbsp; In it they mention some of the usual must have&amp;nbsp;3rd&amp;nbsp;party&amp;nbsp;development tools (ReSharper, Reflector, RegexDesigner.NET, etc.), and one that I&amp;#39;ve never heard of, &lt;a href="http://www.bitslinger.com/prod01.htm" target="_blank"&gt;PatternExpert&lt;/a&gt;.&amp;nbsp; It sounded like it had some good potential, trying to add a little guidance on using software patterns, so I figured I&amp;#39;d download it and give it a whirl.&amp;nbsp; &lt;/p&gt; &lt;p&gt;There is no installer, just an executable, which would be fine if the product was open source or free, but at $79, I expect an installer.&amp;nbsp; First thing I noticed, no support for Visual Basic, which is unfortunate, since this is a major .Net&amp;nbsp;language, and an area that needs some patterns guidance.&amp;nbsp; The product itself has a tree view listing 22 major patterns, and a wizard or Powerpoint-like frame, where the pattern is explained.&amp;nbsp;&amp;nbsp;I like the style of the pattern documentation,&amp;nbsp;and it seemed easy to understand.&amp;nbsp; But, when I got to the&amp;nbsp;sample code, that is where things totally fell apart.&lt;/p&gt; &lt;p&gt;The first (and only) code I checked was for&amp;nbsp;the Singleton Pattern.&amp;nbsp; The fact that there were 2 implementations of a Singleton, simple, and limited number (isn&amp;#39;t&amp;nbsp;Limited&amp;nbsp;Number of instances a Multiton not a Singleton?) let me know that something was amiss here.&amp;nbsp; Then I looked at the Singleton Code.&amp;nbsp; Since the Code&amp;nbsp;Samples where done in .Net 2.0, I expected the&amp;nbsp;commonly&amp;nbsp;accepted implementation (&lt;a href="http://www.yoda.arachsys.com/csharp/singleton.html" target="_blank"&gt;Jon Skeet&lt;/a&gt; has a great tutorial on this topic):&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;public sealed class Singleton&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; static readonly Singleton instance=new Singleton();  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Explicit static constructor to tell C# compiler&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // not to mark type as beforefieldinit&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; static Singleton()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Singleton()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static Singleton Instance&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return instance;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;But instead the PatternExpert code looks like this:  &lt;blockquote&gt; &lt;p&gt;namespace SingletonApp&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;summary&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// Singleton, with added reference count and release call&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;/summary&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class zZ00singletonZz&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static zZ00singletonZz&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oInstance = null;&amp;nbsp;// Single instance&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int iReferenceCount = 0; // Reference count  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected zZ00singletonZz()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create or get the singleton object&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static zZ00singletonZz getInstance()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (iReferenceCount == 0) // See if the object is around yet&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oInstance = new zZ00singletonZz();// Create the object&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iReferenceCount++; // Increase the reference count&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return oInstance; // Pass the object back&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Release or delete the singleton object&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void releaseInstance(zZ00singletonZz inst)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Exit if already deleted or if it is not our instance&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (iReferenceCount == 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iReferenceCount--;// Decrement the reference count  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (iReferenceCount == 0) // See if this is the last user&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // No one needs this object, garbage collection will delete it&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&amp;nbsp; &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;That code is so bad, it is scary that it is in a tool designed to teach developers about how to write good code.&amp;nbsp; IMHO, it looks like something a C++ programmer that hasn&amp;#39;t bothered to learn how to write managed code would come up with.&amp;nbsp; Reference Counters?&amp;nbsp; In Managed Code?  &lt;p&gt;But, the tool did get me thinking that something like this (but done right), installed in the IDE would be cool.&amp;nbsp; Yeah, code snippets and the Guidance Automation Toolkit cover some of this area, but they don&amp;#39;t quite make it.&lt;/p&gt;&lt;img src="http://codebetter.com/aggbug.aspx?PostID=170860" width="1" height="1"&gt;</content><author><name>DonXML</name><uri>http://codebetter.com/members/DonXML.aspx</uri></author></entry><entry><title>Fairfield / Westchester CT Code Camp</title><link rel="alternate" type="text/html" href="http://codebetter.com/blogs/donxml/archive/2007/11/08/fairfield-westchester-ct-code-camp.aspx" /><id>http://codebetter.com/blogs/donxml/archive/2007/11/08/fairfield-westchester-ct-code-camp.aspx</id><published>2007-11-08T10:56:00Z</published><updated>2007-11-08T10:56:00Z</updated><content type="html">&lt;p&gt;The &lt;a href="http://fwcodecamp.net/" target="_blank"&gt;Fairfield / Westchester CT Code Camp&lt;/a&gt; will be held this Saturday, Nov. 10, 2007 at &lt;a href="http://www.citi.uconn.edu/" target="_blank"&gt;The University of Connecticut School of Business, at the Stamford Campus&lt;/a&gt;.&amp;nbsp; I&amp;#39;ll be giving my VB + XML is Cooler than C# talk (yeah, language snobs love this talk ;) ).&amp;nbsp; There is still room for more attendees, so, if you live in CT area and want to spend a Saturday improving your skills, stop on by.&lt;/p&gt;&lt;img src="http://codebetter.com/aggbug.aspx?PostID=170706" width="1" height="1"&gt;</content><author><name>DonXML</name><uri>http://codebetter.com/members/DonXML.aspx</uri></author></entry><entry><title>Heartland Developers Conference and ALT.Net</title><link rel="alternate" type="text/html" href="http://codebetter.com/blogs/donxml/archive/2007/10/20/heartland-developers-conference-and-alt-net.aspx" /><id>http://codebetter.com/blogs/donxml/archive/2007/10/20/heartland-developers-conference-and-alt-net.aspx</id><published>2007-10-21T00:25:00Z</published><updated>2007-10-21T00:25:00Z</updated><content type="html">&lt;p&gt;I&amp;#39;m just back from Omaha, NE&amp;nbsp;where I spoke at&amp;nbsp;the &lt;a href="http://www.heartlanddc.com/" target="_blank"&gt;Heartland Developers Conference&lt;/a&gt;.&amp;nbsp; This was my 2nd time speaking at this conference, and I got to say, I really like the conference that Joe Olsen and Phil Wolfe have put together.&amp;nbsp; It isn&amp;#39;t your prototypical large conference (even though they had 500 people there this year), and they manage to keep that mid-western (OK, heartland)&amp;nbsp;feel.&amp;nbsp; This year I was asked to speak on ALT.NET, which is a pretty broad topic, and thus a little hard to get that talk just right.&amp;nbsp; They also had a number of Agile or ALT.Net oriented talks: &lt;a href="http://blog.lozanotek.com/" target="_blank"&gt;Javier Lozano&lt;/a&gt; did a talk on Software Factories, &lt;a href="http://www.timrayburn.net/" target="_blank"&gt;Tim Rayburn&lt;/a&gt;&amp;nbsp;did a great TDD talk, Beth Schmidt, Director of Application Development for Farm Credit Services of America, spoke about&amp;nbsp; her experiences with Agile, &lt;a href="http://adamesterline.com/" target="_blank"&gt;Adam Esterline&lt;/a&gt; spoke about &lt;a href="http://www.castleproject.org/monorail/index.html" target="_blank"&gt;MonoRails&lt;/a&gt;, and &lt;a href="http://blogs.msdn.com/rjacobs/" target="_blank"&gt;Ron Jacobs&lt;/a&gt; had the first day&amp;#39;s keynote - The Perfect Pattern Storm, where TDD meets UX and MVP.&amp;nbsp; Definitely a nice coverage of ALT.Net topics.&lt;/p&gt;
&lt;p&gt;In my talk, I did my best to try to cover all the bases and expose folks to all sorts of alternative development styles/practices.&amp;nbsp; The night before, I heard that F# is going to make it into VS 2008 as a first class language, so I added it to my list of alternative languages.&amp;nbsp; In the talk I mentioned that F# would help turn your brain inside out, and that it is something that I&amp;#39;ve been playing with.&amp;nbsp; Unfortunately, I didn&amp;#39;t think of it ahead of time and have F# installed on my presentation machine and have some example code to show them, and of course someone asked me to show them some F#.&amp;nbsp; Man, I blew that opportunity.&lt;/p&gt;
&lt;p&gt;But, I was able to get some of the attendees to engage in a bit of conversation during the session.&amp;nbsp; Midwest folks tend not to ask as many questions as my NJ and NYC brethren, and it took some doing, but I did have a couple folks come up to me later in the conference and ask for suggestions on getting their teams to look outside the box.&amp;nbsp; This definitely seems to be a reoccurring theme with the ALT.Net folks, and I think we need to spend some time in this space.&amp;nbsp; There seem to be a lot of people willing to give this stuff a try and just need a little help.&amp;nbsp; One of the things I suggest is to find a mentor, either online or if you can, someone local.&amp;nbsp; Even better would be to hire a consultant as a mentor for a couple months.&amp;nbsp; There are enough independent consultants in the ALT.Net movement, and I&amp;#39;m a firm believer that although training is a good thing, it might be more cost effective to bring in a consultant for 2-3 months and get the pump primed.&amp;nbsp; I&amp;#39;ve seen too many folks come out of training classes all gung-ho, just to fall back into their old habits after a couple weeks.&lt;/p&gt;
&lt;p&gt;Oh, yeah, I forgot to mention, yes, I&amp;#39;m back to blogging on CodeBetter.&amp;nbsp; I&amp;#39;m still keeping my personal blog up and running, but I&amp;#39;m going to post different material on both sites.&amp;nbsp; This one, I&amp;#39;m going to try to keep more &amp;quot;ALT.Net in the field&amp;quot;, and leave my other site just the way it is.&amp;nbsp; Actually, I&amp;#39;ve been suffering from writers block over the last 6 months, so I&amp;#39;m hoping the change of scenery will help get me past that.&lt;/p&gt;&lt;img src="http://codebetter.com/aggbug.aspx?PostID=170017" width="1" height="1"&gt;</content><author><name>DonXML</name><uri>http://codebetter.com/members/DonXML.aspx</uri></author><category term="Alt.Net" scheme="http://codebetter.com/blogs/donxml/archive/tags/Alt.Net/default.aspx" /><category term="Conferences" scheme="http://codebetter.com/blogs/donxml/archive/tags/Conferences/default.aspx" /><category term="featured" scheme="http://codebetter.com/blogs/donxml/archive/tags/featured/default.aspx" /></entry></feed>