<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:blogChannel="http://backend.userland.com/blogChannelModule" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>Loosely Coupled Human Code Factory</title>
    <description>Agilist Mercenary</description>
    <link>http://adronbhall.com/blogs/technology__software_development/</link>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>BlogEngine.NET 1.4.5.0</generator>
    <language>en-GB</language>
    <blogChannel:blogRoll>http://adronbhall.com/blogs/technology__software_development/opml.axd</blogChannel:blogRoll>
    <blogChannel:blink>http://www.dotnetblogengine.net/syndication.axd</blogChannel:blink>
    <dc:creator>Adron B. Hall</dc:creator>
    <dc:title>Loosely Coupled Human Code Factory</dc:title>
    <geo:lat>4,549,997.000000</geo:lat>
    <geo:long>-1,226,447.000000</geo:long>
    <geo:lat>45.51854</geo:lat><geo:long>-122.675506</geo:long><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/LooselyCoupledHumanCodeFactory" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
      <title>PADNUG, Kelly White on MVVM</title>
      <description>&lt;p&gt;Tonight &lt;a href="http://www.padnug.org" target="_blank"&gt;PADNUG&lt;/a&gt; has Kelly White doing a presentation on MVVM.&amp;#160; That?s Model View View-Model, and looks to be an interesting presentation.&amp;#160; Kelly?s been working with MVVM for some time now so I?m sure it?ll be an interesting presentation.&amp;#160; I think I myself might even throw some questions his way.&amp;#160; So be sure to swing out to the west side for the presentation.&amp;#160; For more information check out the &lt;a href="http://www.padnug.org/padnug/meetings.aspx?ID=179" target="_blank"&gt;meeting information&lt;/a&gt;.&lt;/p&gt;&lt;div class="socialBookmarksContainer"&gt;&lt;a rel="nofollow" href="http://digg.com/submit/?url=http://adronbhall.com/blogs/technology__software_development/post/2009/11/03/PADNUG-Kelly-White-on-MVVM.aspx" target="_blank" title="Digg It!"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/digg_24.png" style="border: 0;" alt="Digg It!" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://www.dzone.com/links/add.html?url=http://adronbhall.com/blogs/technology__software_development/post/2009/11/03/PADNUG-Kelly-White-on-MVVM.aspx&amp;amp;title=PADNUG, Kelly White on MVVM" target="_blank" title="DZone It!"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/dzone_24.png" style="border: 0;" alt="DZone It!" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://www.stumbleupon.com/submit?url=http://adronbhall.com/blogs/technology__software_development/post/2009/11/03/PADNUG-Kelly-White-on-MVVM.aspx" target="_blank" title="StumbleUpon"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/stumbleupon_24.png" style="border: 0;" alt="StumbleUpon" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://technorati.com/ping?url=http://adronbhall.com/blogs/technology__software_development/" target="_blank" title="Technorati"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/technorati_24.png" style="border: 0;" alt="Technorati" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://reddit.com/submit?url=http://adronbhall.com/blogs/technology__software_development/post/2009/11/03/PADNUG-Kelly-White-on-MVVM.aspx&amp;amp;title=PADNUG, Kelly White on MVVM" target="_blank" title="Reddit"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/reddit_24.png" style="border: 0;" alt="Reddit" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://del.icio.us/post?url=http://adronbhall.com/blogs/technology__software_development/post/2009/11/03/PADNUG-Kelly-White-on-MVVM.aspx&amp;amp;title=PADNUG, Kelly White on MVVM" target="_blank" title="Del.icio.us"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/delicious_24.png" style="border: 0;" alt="Del.icio.us" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://www.newsvine.com/_wine/save?u=http://adronbhall.com/blogs/technology__software_development/post/2009/11/03/PADNUG-Kelly-White-on-MVVM.aspx" target="_blank"title="NewsVine"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/newsvine_24.png" style="border: 0;" alt="NewsVine" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://furl.net" target="_blank" title="Furl"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/furl_24.png" style="border: 0;" alt="Furl" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://blinklist.com/submit/" target="_blank" title="BlinkList"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/blinklist_24.png" style="border: 0;" alt="BlinkList" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=7KescrpCbeE:ptVF9rTi83Y:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=7KescrpCbeE:ptVF9rTi83Y:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=7KescrpCbeE:ptVF9rTi83Y:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=7KescrpCbeE:ptVF9rTi83Y:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=7KescrpCbeE:ptVF9rTi83Y:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=7KescrpCbeE:ptVF9rTi83Y:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=7KescrpCbeE:ptVF9rTi83Y:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=7KescrpCbeE:ptVF9rTi83Y:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=7KescrpCbeE:ptVF9rTi83Y:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=7KescrpCbeE:ptVF9rTi83Y:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=7KescrpCbeE:ptVF9rTi83Y:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=7KescrpCbeE:ptVF9rTi83Y:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=7KescrpCbeE:ptVF9rTi83Y:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=7KescrpCbeE:ptVF9rTi83Y:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=7KescrpCbeE:ptVF9rTi83Y:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=7KescrpCbeE:ptVF9rTi83Y:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=7KescrpCbeE:ptVF9rTi83Y:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/LooselyCoupledHumanCodeFactory/~4/7KescrpCbeE" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/LooselyCoupledHumanCodeFactory/~3/7KescrpCbeE/post.aspx</link>
      <author>adron.nospam@nospam.adronbhall.com (Adron)</author>
      <comments>http://adronbhall.com/blogs/technology__software_development/post/2009/11/03/PADNUG-Kelly-White-on-MVVM.aspx#comment</comments>
      <guid isPermaLink="false">http://adronbhall.com/blogs/technology__software_development/post.aspx?id=d0e775dd-1ae5-4edb-8cef-58c954eb24c2</guid>
      <pubDate>Tue, 03 Nov 2009 13:34:25 -0800</pubDate>
      <category>Keeping Up</category>
      <dc:publisher>Adron</dc:publisher>
      <pingback:server>http://adronbhall.com/blogs/technology__software_development/pingback.axd</pingback:server>
      <pingback:target>http://adronbhall.com/blogs/technology__software_development/post.aspx?id=d0e775dd-1ae5-4edb-8cef-58c954eb24c2</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://adronbhall.com/blogs/technology__software_development/trackback.axd?id=d0e775dd-1ae5-4edb-8cef-58c954eb24c2</trackback:ping>
      <wfw:comment>http://adronbhall.com/blogs/technology__software_development/post/2009/11/03/PADNUG-Kelly-White-on-MVVM.aspx#comment</wfw:comment>
      <wfw:commentRss>http://adronbhall.com/blogs/technology__software_development/syndication.axd?post=d0e775dd-1ae5-4edb-8cef-58c954eb24c2</wfw:commentRss>
    <feedburner:origLink>http://adronbhall.com/blogs/technology__software_development/post.aspx?id=d0e775dd-1ae5-4edb-8cef-58c954eb24c2</feedburner:origLink></item>
    <item>
      <title>Rocking the Code @Webtrends</title>
      <description>&lt;p&gt;Ok, I have some cool code bits, announcements, and other such things.&amp;nbsp; Some of the code bits will be here &amp;quot;&lt;a href="http://developer.webtrends.com/docs/DOC-1182" target="_blank"&gt;Developer Document&lt;/a&gt;&amp;quot;, the blog entry for the first example I&amp;#39;ve written up is here &amp;quot;&lt;a href="http://bit.ly/4hbz2l" target="_blank"&gt;SDK, ADO.NET DataTable/DataSet, and Code Bits&lt;/a&gt;&amp;quot;, and then of course the regular sundry of my writings.&lt;/p&gt;  &lt;p&gt;There has been an on and off demand internally for some additions to the &lt;a href="http://www.webtrends.com/" target="_blank"&gt;Webtrends&lt;/a&gt; SDK for our DX Web Services offerings, so I added some bits.&amp;nbsp; The following are a list of the features:&lt;/p&gt;  &lt;ul&gt;	   	&lt;li&gt;Map to &lt;a href="http://msdn.microsoft.com/en-us/library/system.data.datatable.aspx" target="_blank"&gt;DataTable&lt;/a&gt;/&lt;a href="http://msdn.microsoft.com/en-us/library/system.data.dataset.aspx" target="_blank"&gt;DataSet&lt;/a&gt; from &lt;a href="http://en.wikipedia.org/wiki/Data_Transfer_Object" target="_blank"&gt;Data Transfer Object&lt;/a&gt;.&amp;nbsp; Alright, I&amp;#39;m going to do a little explaining on this topic.&amp;nbsp; The &lt;a href="http://msdn.microsoft.com/en-us/library/system.data.datatable.aspx" target="_blank"&gt;DataTable&lt;/a&gt; is the standard, years old ADO.NET &lt;a href="http://msdn.microsoft.com/en-us/library/system.data.datatable.aspx" target="_blank"&gt;DataTable&lt;/a&gt; that someone can put in with other &lt;a href="http://msdn.microsoft.com/en-us/library/system.data.datatable.aspx" target="_blank"&gt;DataTable&lt;/a&gt;s in the &lt;a href="http://msdn.microsoft.com/en-us/library/system.data.dataset.aspx" target="_blank"&gt;DataSet&lt;/a&gt;.&amp;nbsp; It basically provides the data pulled from the DX web services in a flattened easy to use &lt;a href="http://msdn.microsoft.com/en-us/library/system.data.datatable.aspx" target="_blank"&gt;DataTable&lt;/a&gt; format. &lt;/li&gt;    	&lt;li&gt;Profile &amp;amp; Report Listing Factory.&amp;nbsp; I added a profile and report listing factory for pulling lists from the DX web services.&amp;nbsp; This seemed like a no brained, it just needed to be available. &lt;/li&gt;    	&lt;li&gt;I also refactored the Report Factory Methods to accept a string or Uri Object Parameter to retrieve a report from.&amp;nbsp; This way, if another tool creates a Uri then it can be used directly instead of parsing it apart only to hand of the values to have the factory parse it back together. &lt;/li&gt;    	&lt;li&gt;Last but not least, available in bite size assembly format.&amp;nbsp; Check out the &lt;a href="http://developer.webtrends.com/docs/DOC-1182" target="_blank"&gt;Webtrends Developers&amp;#39; Website&lt;/a&gt; for the bits.&lt;/li&gt; &lt;/ul&gt;&lt;div class="socialBookmarksContainer"&gt;&lt;a rel="nofollow" href="http://digg.com/submit/?url=http://adronbhall.com/blogs/technology__software_development/post/2009/10/23/Rocking-the-Code-Webtrends.aspx" target="_blank" title="Digg It!"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/digg_24.png" style="border: 0;" alt="Digg It!" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://www.dzone.com/links/add.html?url=http://adronbhall.com/blogs/technology__software_development/post/2009/10/23/Rocking-the-Code-Webtrends.aspx&amp;amp;title=Rocking the Code @Webtrends" target="_blank" title="DZone It!"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/dzone_24.png" style="border: 0;" alt="DZone It!" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://www.stumbleupon.com/submit?url=http://adronbhall.com/blogs/technology__software_development/post/2009/10/23/Rocking-the-Code-Webtrends.aspx" target="_blank" title="StumbleUpon"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/stumbleupon_24.png" style="border: 0;" alt="StumbleUpon" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://technorati.com/ping?url=http://adronbhall.com/blogs/technology__software_development/" target="_blank" title="Technorati"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/technorati_24.png" style="border: 0;" alt="Technorati" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://reddit.com/submit?url=http://adronbhall.com/blogs/technology__software_development/post/2009/10/23/Rocking-the-Code-Webtrends.aspx&amp;amp;title=Rocking the Code @Webtrends" target="_blank" title="Reddit"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/reddit_24.png" style="border: 0;" alt="Reddit" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://del.icio.us/post?url=http://adronbhall.com/blogs/technology__software_development/post/2009/10/23/Rocking-the-Code-Webtrends.aspx&amp;amp;title=Rocking the Code @Webtrends" target="_blank" title="Del.icio.us"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/delicious_24.png" style="border: 0;" alt="Del.icio.us" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://www.newsvine.com/_wine/save?u=http://adronbhall.com/blogs/technology__software_development/post/2009/10/23/Rocking-the-Code-Webtrends.aspx" target="_blank"title="NewsVine"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/newsvine_24.png" style="border: 0;" alt="NewsVine" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://furl.net" target="_blank" title="Furl"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/furl_24.png" style="border: 0;" alt="Furl" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://blinklist.com/submit/" target="_blank" title="BlinkList"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/blinklist_24.png" style="border: 0;" alt="BlinkList" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=oxis8QbBqVE:zTTX6VxEi3o:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=oxis8QbBqVE:zTTX6VxEi3o:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=oxis8QbBqVE:zTTX6VxEi3o:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=oxis8QbBqVE:zTTX6VxEi3o:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=oxis8QbBqVE:zTTX6VxEi3o:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=oxis8QbBqVE:zTTX6VxEi3o:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=oxis8QbBqVE:zTTX6VxEi3o:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=oxis8QbBqVE:zTTX6VxEi3o:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=oxis8QbBqVE:zTTX6VxEi3o:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=oxis8QbBqVE:zTTX6VxEi3o:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=oxis8QbBqVE:zTTX6VxEi3o:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=oxis8QbBqVE:zTTX6VxEi3o:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=oxis8QbBqVE:zTTX6VxEi3o:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=oxis8QbBqVE:zTTX6VxEi3o:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=oxis8QbBqVE:zTTX6VxEi3o:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=oxis8QbBqVE:zTTX6VxEi3o:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=oxis8QbBqVE:zTTX6VxEi3o:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/LooselyCoupledHumanCodeFactory/~4/oxis8QbBqVE" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/LooselyCoupledHumanCodeFactory/~3/oxis8QbBqVE/post.aspx</link>
      <author>adron.nospam@nospam.adronbhall.com (Adron)</author>
      <comments>http://adronbhall.com/blogs/technology__software_development/post/2009/10/23/Rocking-the-Code-Webtrends.aspx#comment</comments>
      <guid isPermaLink="false">http://adronbhall.com/blogs/technology__software_development/post.aspx?id=ac68481e-d7e6-4c13-b878-9f69e13f99ee</guid>
      <pubDate>Fri, 23 Oct 2009 05:30:00 -0800</pubDate>
      <category>Keeping Up</category>
      <category>WebTrends</category>
      <dc:publisher>Adron</dc:publisher>
      <pingback:server>http://adronbhall.com/blogs/technology__software_development/pingback.axd</pingback:server>
      <pingback:target>http://adronbhall.com/blogs/technology__software_development/post.aspx?id=ac68481e-d7e6-4c13-b878-9f69e13f99ee</pingback:target>
      <slash:comments>4</slash:comments>
      <trackback:ping>http://adronbhall.com/blogs/technology__software_development/trackback.axd?id=ac68481e-d7e6-4c13-b878-9f69e13f99ee</trackback:ping>
      <wfw:comment>http://adronbhall.com/blogs/technology__software_development/post/2009/10/23/Rocking-the-Code-Webtrends.aspx#comment</wfw:comment>
      <wfw:commentRss>http://adronbhall.com/blogs/technology__software_development/syndication.axd?post=ac68481e-d7e6-4c13-b878-9f69e13f99ee</wfw:commentRss>
    <feedburner:origLink>http://adronbhall.com/blogs/technology__software_development/post.aspx?id=ac68481e-d7e6-4c13-b878-9f69e13f99ee</feedburner:origLink></item>
    <item>
      <title>I've Been Pondering Android, But Now?</title>
      <description>&lt;p&gt;This is a serious smackdown ad, I LOVED it.&amp;#160; I've been pondering dropping the iPhone as it has never felt robust, but the Windows Mobile was just a disgrace.&amp;#160; Now though, WOW!&amp;#160; Between the ad &amp;amp; the seriousness of Android coming to other phone platforms I am honestly getting pretty stoked.&amp;#160; The development environments are better (I mean, Object C, come on), there are multiples to choose from, the platform is open.&amp;#160; Sounds like Windows stomping Macintosh those years ago.&amp;#160; Cept' this time it is &lt;a href="http://www.google.com/" target="_blank"&gt;Google&lt;/a&gt; vs. Apple.&amp;#160; It is about time this battle got real!!&amp;#160; I'm looking forward to it with bated breath.&amp;#160; :)&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:beb5a3ac-e1db-4f20-94b6-ad86c0d15050" class="wlWriterEditableSmartContent"&gt;&lt;div&gt;&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/fsWFxvdh-6Q&amp;amp;hl=en&amp;amp;fs=1&amp;amp;color1=0x3a3a3a&amp;amp;color2=0x999999&amp;amp;border=1&amp;amp;hl=en"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/fsWFxvdh-6Q&amp;amp;hl=en&amp;amp;fs=1&amp;amp;color1=0x3a3a3a&amp;amp;color2=0x999999&amp;amp;border=1&amp;amp;hl=en" type="application/x-shockwave-flash" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;/div&gt;  &lt;p&gt;So with that, it just kicked off the motivation to start doing some real Mobile Dev.&amp;#160; Yes, I will probably get some iPhone Apps built, but my focus will definitely be Android.&lt;/p&gt;&lt;div class="socialBookmarksContainer"&gt;&lt;a rel="nofollow" href="http://digg.com/submit/?url=http://adronbhall.com/blogs/technology__software_development/post/2009/10/18/Ive-Been-Pondering-Android-But-Now.aspx" target="_blank" title="Digg It!"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/digg_24.png" style="border: 0;" alt="Digg It!" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://www.dzone.com/links/add.html?url=http://adronbhall.com/blogs/technology__software_development/post/2009/10/18/Ive-Been-Pondering-Android-But-Now.aspx&amp;amp;title=I've Been Pondering Android, But Now?" target="_blank" title="DZone It!"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/dzone_24.png" style="border: 0;" alt="DZone It!" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://www.stumbleupon.com/submit?url=http://adronbhall.com/blogs/technology__software_development/post/2009/10/18/Ive-Been-Pondering-Android-But-Now.aspx" target="_blank" title="StumbleUpon"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/stumbleupon_24.png" style="border: 0;" alt="StumbleUpon" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://technorati.com/ping?url=http://adronbhall.com/blogs/technology__software_development/" target="_blank" title="Technorati"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/technorati_24.png" style="border: 0;" alt="Technorati" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://reddit.com/submit?url=http://adronbhall.com/blogs/technology__software_development/post/2009/10/18/Ive-Been-Pondering-Android-But-Now.aspx&amp;amp;title=I've Been Pondering Android, But Now?" target="_blank" title="Reddit"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/reddit_24.png" style="border: 0;" alt="Reddit" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://del.icio.us/post?url=http://adronbhall.com/blogs/technology__software_development/post/2009/10/18/Ive-Been-Pondering-Android-But-Now.aspx&amp;amp;title=I've Been Pondering Android, But Now?" target="_blank" title="Del.icio.us"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/delicious_24.png" style="border: 0;" alt="Del.icio.us" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://www.newsvine.com/_wine/save?u=http://adronbhall.com/blogs/technology__software_development/post/2009/10/18/Ive-Been-Pondering-Android-But-Now.aspx" target="_blank"title="NewsVine"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/newsvine_24.png" style="border: 0;" alt="NewsVine" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://furl.net" target="_blank" title="Furl"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/furl_24.png" style="border: 0;" alt="Furl" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://blinklist.com/submit/" target="_blank" title="BlinkList"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/blinklist_24.png" style="border: 0;" alt="BlinkList" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=Ybpglo3HzAM:T1VOViBDIto:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=Ybpglo3HzAM:T1VOViBDIto:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=Ybpglo3HzAM:T1VOViBDIto:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=Ybpglo3HzAM:T1VOViBDIto:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=Ybpglo3HzAM:T1VOViBDIto:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=Ybpglo3HzAM:T1VOViBDIto:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=Ybpglo3HzAM:T1VOViBDIto:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=Ybpglo3HzAM:T1VOViBDIto:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=Ybpglo3HzAM:T1VOViBDIto:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=Ybpglo3HzAM:T1VOViBDIto:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=Ybpglo3HzAM:T1VOViBDIto:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=Ybpglo3HzAM:T1VOViBDIto:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=Ybpglo3HzAM:T1VOViBDIto:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=Ybpglo3HzAM:T1VOViBDIto:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=Ybpglo3HzAM:T1VOViBDIto:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=Ybpglo3HzAM:T1VOViBDIto:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=Ybpglo3HzAM:T1VOViBDIto:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/LooselyCoupledHumanCodeFactory/~4/Ybpglo3HzAM" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/LooselyCoupledHumanCodeFactory/~3/Ybpglo3HzAM/post.aspx</link>
      <author>adron.nospam@nospam.adronbhall.com (adron)</author>
      <comments>http://adronbhall.com/blogs/technology__software_development/post/2009/10/18/Ive-Been-Pondering-Android-But-Now.aspx#comment</comments>
      <guid isPermaLink="false">http://adronbhall.com/blogs/technology__software_development/post.aspx?id=89784e94-7ceb-4e3d-aa2f-aa07feb77cc6</guid>
      <pubDate>Sun, 18 Oct 2009 20:28:00 -0800</pubDate>
      <category>Just Stuff</category>
      <category>Rants</category>
      <dc:publisher>adron</dc:publisher>
      <pingback:server>http://adronbhall.com/blogs/technology__software_development/pingback.axd</pingback:server>
      <pingback:target>http://adronbhall.com/blogs/technology__software_development/post.aspx?id=89784e94-7ceb-4e3d-aa2f-aa07feb77cc6</pingback:target>
      <slash:comments>5</slash:comments>
      <trackback:ping>http://adronbhall.com/blogs/technology__software_development/trackback.axd?id=89784e94-7ceb-4e3d-aa2f-aa07feb77cc6</trackback:ping>
      <wfw:comment>http://adronbhall.com/blogs/technology__software_development/post/2009/10/18/Ive-Been-Pondering-Android-But-Now.aspx#comment</wfw:comment>
      <wfw:commentRss>http://adronbhall.com/blogs/technology__software_development/syndication.axd?post=89784e94-7ceb-4e3d-aa2f-aa07feb77cc6</wfw:commentRss>
    <feedburner:origLink>http://adronbhall.com/blogs/technology__software_development/post.aspx?id=89784e94-7ceb-4e3d-aa2f-aa07feb77cc6</feedburner:origLink></item>
    <item>
      <title>My Agile Efforts</title>
      <description>&lt;p&gt;I recently watched a &lt;a href="http://www.infoq.com/presentations/cockburn-bury-not-praise-agile" target="_blank"&gt;video presentation of Alistair Cockburn&lt;/a&gt;, who is a fairly major name in the Agile Development Community.&amp;nbsp; It pushed me to put this entry together for future discussion that I intend to kick off (at least on this blog &amp;amp; the few readers I have).&amp;nbsp; I have worked on the following Agile Projects:&lt;/p&gt;  &lt;ul&gt;	   	&lt;li&gt;My most recent project utilizing Agile Processes was at &lt;a href="http://www.webtrends.com/" target="_blank"&gt;Webtrends&lt;/a&gt; for my stint in Engineering late 08 and earlier 09.&amp;nbsp; I worked on a team to build &lt;a href="http://product.webtrends.com/dxapi/index.html" target="_blank"&gt;web services for Webtrends data access&lt;/a&gt; for customers.       	&lt;ul&gt;		       		&lt;li&gt;The team consisted of three people, one being a team lead.&amp;nbsp; Our primary use of Agile was somewhat limited as it was a new process for the team.&amp;nbsp; We performed continuous builds via Team Foundation Server and test driven development when feasible.&amp;nbsp; We were limited in using TDD to some degree as a large part of the work was configuration based for server configuration and required a large degree of integration tests more than isolated &lt;a href="http://adronbhall.com/blogs/technology__software_development/post/2007/06/20/Software-Development-Testing-Tip-O-The-Day.aspx" target="_blank"&gt;unit tests&lt;/a&gt;.&amp;nbsp; In addition to TDD we also utilized user stories, burn down charts, and to some degree kanban style prioritization.&amp;nbsp; The project was a rocking success, and is now offered as a &lt;a href="http://www.webtrends.com" target="_blank"&gt;Webtrends&lt;/a&gt; offering and &lt;a href="http://product.webtrends.com/dxapi/index.html" target="_blank"&gt;documented&lt;/a&gt;, &lt;a href="http://developer.webtrends.com/community/dx/?view=discussions" target="_blank"&gt;discussed&lt;/a&gt;, &lt;a href="http://developer.webtrends.com/community/dx/" target="_blank"&gt;blogged&lt;/a&gt; and &lt;a href="http://developer.webtrends.com" target="_blank"&gt;continuously maintained and advanced&lt;/a&gt;.&amp;nbsp; Even though I am on a different team now working directly with customers to implement integrations with these REST based web services, the engineering team continues forward with more Agile practices being used daily, including paper prototyping, furthering the unit testing majority of the teams, and more.&lt;/li&gt;     	&lt;/ul&gt;	   &lt;/li&gt;    	&lt;li&gt;After&lt;strong&gt;*&lt;/strong&gt; and before&lt;strong&gt;*&lt;/strong&gt; the &lt;a href="http://www.webtrends.com" target="_blank"&gt;Webtrends&lt;/a&gt; engagement I helped to initiate Agile in a development group of 4 people at Axiom Group (now Axiom EPM) to build a Excel UI to SQL Server for accounting data storage, manipulation, analysis, trending, and retrieval.&amp;nbsp; I helped get the group kick started, and the software that was released is now called &lt;a href="http://axiomepm.com/Products.htm" target="_blank"&gt;Axiom Planning&lt;/a&gt;.       	&lt;ul&gt;		       		&lt;li&gt;The team of 4, split into two pairs, and we did pairing &amp;amp; individual development.&amp;nbsp; Other agile software methods used were rapid learning, extensive test driven development, continuous integration (w/ TeamCity), unit tests in builds w/ good coverage (the logical kind), mocking (for databases), self organizing team, paper prototyping, and direct daily communication with customer representatives.&amp;nbsp; We also as pairs and as a team used refactoring heavily.&amp;nbsp; In addition heavy utilization of design patterns and domain driven-design was used in close collaboration with the customer.&lt;/li&gt;     	&lt;/ul&gt;	   &lt;/li&gt;    	&lt;li&gt;In 06 &amp;amp; 07&amp;#39; I worked with &lt;a href="http://www.centerstance.com" target="_blank"&gt;Centerstance&lt;/a&gt; Consulting on a project which started Waterfall and moved to Agile during the course of the engagement.&amp;nbsp; We started off a team of 5 developers, grew to about 16 at one point, and shrunk down toward the completion of the overarching architectural design to about 8-12 again.	&lt;ul&gt;		     		&lt;li&gt;The teams ranged from 4-5 people per team with a team lead, to two teams with two sub-teams split with a team lead each doing their own respective stand ups (SCRUM style), a continuous integration was setup, unit &amp;amp; integration testing was eventually put into place across a wide spectrum of the code base.&amp;nbsp; Mocking, faking where appropriate, and general unit testing took place, with business analysts acting as customers.&lt;/li&gt;   	&lt;/ul&gt;	&lt;/li&gt;        	&lt;li&gt;For &lt;em&gt;Ghallt Enterprises&lt;/em&gt; I served as CTO with a business partner, leading efforts among remote teams, utilizing &lt;a href="http://en.wikipedia.org/wiki/Agile_software_development" target="_blank"&gt;Agile&lt;/a&gt; practices (yeah, remotely, I know, it seems crazy) to develop social media software.&amp;nbsp; Methods included continuous integration, build management, pair development, code review &amp;amp; refactoring on a regular basis, and other practices.&amp;nbsp; Even though this is a company that a friend and I started, it served to provide a catalyst for me to push forward extensively into Agile Processes.&amp;nbsp; The level of progress, quality of code, and other characteristics that are inherent to effective Agile Processes were of a level that left no reason to endeavor toward traditional style project planning or Waterfall style approaches.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I?ve worked with others to mentor and experiment with pair development, continuous integration, unit testing, and other processes to enhance and streamline the software development life cycle.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;* &lt;/strong&gt;&lt;font size="1"&gt;I write after and before &lt;/font&gt;&lt;a href="http://www.webtrends.com/" target="_blank"&gt;&lt;font size="1"&gt;Webtrends&lt;/font&gt;&lt;/a&gt;&lt;font size="1"&gt; because I left &lt;/font&gt;&lt;a href="http://www.webtrends.com/" target="_blank"&gt;&lt;font size="1"&gt;Webtrends&lt;/font&gt;&lt;/a&gt;&lt;font size="1"&gt; in 08&amp;#39; to work the Axiom effort, upon kicking that off, I then headed back to &lt;/font&gt;&lt;a href="http://www.webtrends.com/" target="_blank"&gt;&lt;font size="1"&gt;Webtrends&lt;/font&gt;&lt;/a&gt;&lt;font size="1"&gt; to work on the then new Web Services with REST Architecture Project.&lt;/font&gt;&lt;/p&gt;&lt;div class="socialBookmarksContainer"&gt;&lt;a rel="nofollow" href="http://digg.com/submit/?url=http://adronbhall.com/blogs/technology__software_development/post/2009/09/17/My-Agile-Efforts.aspx" target="_blank" title="Digg It!"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/digg_24.png" style="border: 0;" alt="Digg It!" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://www.dzone.com/links/add.html?url=http://adronbhall.com/blogs/technology__software_development/post/2009/09/17/My-Agile-Efforts.aspx&amp;amp;title=My Agile Efforts" target="_blank" title="DZone It!"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/dzone_24.png" style="border: 0;" alt="DZone It!" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://www.stumbleupon.com/submit?url=http://adronbhall.com/blogs/technology__software_development/post/2009/09/17/My-Agile-Efforts.aspx" target="_blank" title="StumbleUpon"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/stumbleupon_24.png" style="border: 0;" alt="StumbleUpon" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://technorati.com/ping?url=http://adronbhall.com/blogs/technology__software_development/" target="_blank" title="Technorati"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/technorati_24.png" style="border: 0;" alt="Technorati" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://reddit.com/submit?url=http://adronbhall.com/blogs/technology__software_development/post/2009/09/17/My-Agile-Efforts.aspx&amp;amp;title=My Agile Efforts" target="_blank" title="Reddit"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/reddit_24.png" style="border: 0;" alt="Reddit" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://del.icio.us/post?url=http://adronbhall.com/blogs/technology__software_development/post/2009/09/17/My-Agile-Efforts.aspx&amp;amp;title=My Agile Efforts" target="_blank" title="Del.icio.us"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/delicious_24.png" style="border: 0;" alt="Del.icio.us" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://www.newsvine.com/_wine/save?u=http://adronbhall.com/blogs/technology__software_development/post/2009/09/17/My-Agile-Efforts.aspx" target="_blank"title="NewsVine"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/newsvine_24.png" style="border: 0;" alt="NewsVine" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://furl.net" target="_blank" title="Furl"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/furl_24.png" style="border: 0;" alt="Furl" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://blinklist.com/submit/" target="_blank" title="BlinkList"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/blinklist_24.png" style="border: 0;" alt="BlinkList" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=B4ZCqkWNfzc:42m7kOCGu4s:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=B4ZCqkWNfzc:42m7kOCGu4s:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=B4ZCqkWNfzc:42m7kOCGu4s:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=B4ZCqkWNfzc:42m7kOCGu4s:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=B4ZCqkWNfzc:42m7kOCGu4s:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=B4ZCqkWNfzc:42m7kOCGu4s:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=B4ZCqkWNfzc:42m7kOCGu4s:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=B4ZCqkWNfzc:42m7kOCGu4s:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=B4ZCqkWNfzc:42m7kOCGu4s:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=B4ZCqkWNfzc:42m7kOCGu4s:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=B4ZCqkWNfzc:42m7kOCGu4s:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=B4ZCqkWNfzc:42m7kOCGu4s:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=B4ZCqkWNfzc:42m7kOCGu4s:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=B4ZCqkWNfzc:42m7kOCGu4s:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=B4ZCqkWNfzc:42m7kOCGu4s:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=B4ZCqkWNfzc:42m7kOCGu4s:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=B4ZCqkWNfzc:42m7kOCGu4s:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/LooselyCoupledHumanCodeFactory/~4/B4ZCqkWNfzc" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/LooselyCoupledHumanCodeFactory/~3/B4ZCqkWNfzc/post.aspx</link>
      <author>adron.nospam@nospam.adronbhall.com (Adron)</author>
      <comments>http://adronbhall.com/blogs/technology__software_development/post/2009/09/17/My-Agile-Efforts.aspx#comment</comments>
      <guid isPermaLink="false">http://adronbhall.com/blogs/technology__software_development/post.aspx?id=ecc64f43-bc14-4558-98e9-feab824e5e0e</guid>
      <pubDate>Thu, 17 Sep 2009 06:53:00 -0800</pubDate>
      <category>Agile, Theory, and Process Stuff</category>
      <category>Centerstance</category>
      <category>My Projects</category>
      <category>WebTrends</category>
      <dc:publisher>Adron</dc:publisher>
      <pingback:server>http://adronbhall.com/blogs/technology__software_development/pingback.axd</pingback:server>
      <pingback:target>http://adronbhall.com/blogs/technology__software_development/post.aspx?id=ecc64f43-bc14-4558-98e9-feab824e5e0e</pingback:target>
      <slash:comments>4</slash:comments>
      <trackback:ping>http://adronbhall.com/blogs/technology__software_development/trackback.axd?id=ecc64f43-bc14-4558-98e9-feab824e5e0e</trackback:ping>
      <wfw:comment>http://adronbhall.com/blogs/technology__software_development/post/2009/09/17/My-Agile-Efforts.aspx#comment</wfw:comment>
      <wfw:commentRss>http://adronbhall.com/blogs/technology__software_development/syndication.axd?post=ecc64f43-bc14-4558-98e9-feab824e5e0e</wfw:commentRss>
    <feedburner:origLink>http://adronbhall.com/blogs/technology__software_development/post.aspx?id=ecc64f43-bc14-4558-98e9-feab824e5e0e</feedburner:origLink></item>
    <item>
      <title>Busy Busy Me</title>
      <description>&lt;p&gt;Wow.&amp;nbsp; Today has been one of those, &lt;em&gt;&amp;quot;go here, go there, do this, do that, quick hurry, finished, done, thanks, awesome, bang&amp;quot;&lt;/em&gt; type of days.&amp;nbsp; Getting a lot accomplished, but also so busy it is hard to see the finished efforts for all the new efforts coming by way.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Lunch 2.0&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Today I did manage to make it to my first Lunch 2.0, saw some familiar faces and some new faces I haven&amp;#39;t met.&amp;nbsp; One of these new people that I met was Eric M. Curtis, the creative director &amp;amp; interface designer for &lt;a href="http://www.rgbdesignstudio.com" target="_blank"&gt;rgb Design Studio&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Business Development&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I also had a morning coffee at a ridiculously early 7:10am today with some un-named sources.&amp;nbsp; We discussed some new upcoming analytics business opportunities that may be heading &lt;a href="http://www.webtrends.com/" target="_blank"&gt;Webtrends&lt;/a&gt; way and the recent large event in the analytics industry, the &lt;a href="http://www.adobe.com/aboutadobe/invrelations/adobeandomniture.html" target="_blank"&gt;acquisition&lt;/a&gt; of &lt;a href="http://www.omniture.com" target="_blank"&gt;Omniture&lt;/a&gt; by &lt;a href="http://www.adobe.com" target="_blank"&gt;Adobe&lt;/a&gt;.&amp;nbsp; This of course is on my mind as I have developed tons of Flash &amp;amp; AIR tagging solutions over the last few months, which now gives me pause.&amp;nbsp; Many in the industry wait with bated breath as to the path &lt;a href="http://www.adobe.com" target="_blank"&gt;Adobe&lt;/a&gt; will now take with this &lt;a href="http://www.adobe.com/aboutadobe/invrelations/adobeandomniture.html" target="_blank"&gt;acquisition&lt;/a&gt;.&amp;nbsp; As many in the industry have already stated, it is a somewhat strange pairing and not to jump on that bandwagon, but it does seem that way.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;In Other News&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I have a number of projects I am working on, all which will benefit &lt;a href="http://www.webtrends.com/" target="_blank"&gt;Webtrends&lt;/a&gt; Analytics customers as well as people in the analytics industry in general.&amp;nbsp; A few blog entries (which you&amp;#39;ll have to read on the &lt;a href="http://www.webtrends.com/" target="_blank"&gt;Webtrends&lt;/a&gt; Blog or the &lt;a href="http://www.webtrends.com/" target="_blank"&gt;Webtrends&lt;/a&gt; Developer?s Blog), and a whole bunch of awesome technical bits, code snippets, and other code based sundry.&amp;nbsp; So stay tuned, more to come.&amp;nbsp; :)&lt;/p&gt;&lt;div class="socialBookmarksContainer"&gt;&lt;a rel="nofollow" href="http://digg.com/submit/?url=http://adronbhall.com/blogs/technology__software_development/post/2009/09/16/Busy-Busy-Me.aspx" target="_blank" title="Digg It!"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/digg_24.png" style="border: 0;" alt="Digg It!" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://www.dzone.com/links/add.html?url=http://adronbhall.com/blogs/technology__software_development/post/2009/09/16/Busy-Busy-Me.aspx&amp;amp;title=Busy Busy Me" target="_blank" title="DZone It!"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/dzone_24.png" style="border: 0;" alt="DZone It!" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://www.stumbleupon.com/submit?url=http://adronbhall.com/blogs/technology__software_development/post/2009/09/16/Busy-Busy-Me.aspx" target="_blank" title="StumbleUpon"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/stumbleupon_24.png" style="border: 0;" alt="StumbleUpon" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://technorati.com/ping?url=http://adronbhall.com/blogs/technology__software_development/" target="_blank" title="Technorati"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/technorati_24.png" style="border: 0;" alt="Technorati" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://reddit.com/submit?url=http://adronbhall.com/blogs/technology__software_development/post/2009/09/16/Busy-Busy-Me.aspx&amp;amp;title=Busy Busy Me" target="_blank" title="Reddit"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/reddit_24.png" style="border: 0;" alt="Reddit" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://del.icio.us/post?url=http://adronbhall.com/blogs/technology__software_development/post/2009/09/16/Busy-Busy-Me.aspx&amp;amp;title=Busy Busy Me" target="_blank" title="Del.icio.us"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/delicious_24.png" style="border: 0;" alt="Del.icio.us" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://www.newsvine.com/_wine/save?u=http://adronbhall.com/blogs/technology__software_development/post/2009/09/16/Busy-Busy-Me.aspx" target="_blank"title="NewsVine"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/newsvine_24.png" style="border: 0;" alt="NewsVine" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://furl.net" target="_blank" title="Furl"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/furl_24.png" style="border: 0;" alt="Furl" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://blinklist.com/submit/" target="_blank" title="BlinkList"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/blinklist_24.png" style="border: 0;" alt="BlinkList" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=tzonZfxpQP0:jtjFxcvjWgY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=tzonZfxpQP0:jtjFxcvjWgY:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=tzonZfxpQP0:jtjFxcvjWgY:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=tzonZfxpQP0:jtjFxcvjWgY:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=tzonZfxpQP0:jtjFxcvjWgY:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=tzonZfxpQP0:jtjFxcvjWgY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=tzonZfxpQP0:jtjFxcvjWgY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=tzonZfxpQP0:jtjFxcvjWgY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=tzonZfxpQP0:jtjFxcvjWgY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=tzonZfxpQP0:jtjFxcvjWgY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=tzonZfxpQP0:jtjFxcvjWgY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=tzonZfxpQP0:jtjFxcvjWgY:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=tzonZfxpQP0:jtjFxcvjWgY:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=tzonZfxpQP0:jtjFxcvjWgY:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=tzonZfxpQP0:jtjFxcvjWgY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=tzonZfxpQP0:jtjFxcvjWgY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=tzonZfxpQP0:jtjFxcvjWgY:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/LooselyCoupledHumanCodeFactory/~4/tzonZfxpQP0" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/LooselyCoupledHumanCodeFactory/~3/tzonZfxpQP0/post.aspx</link>
      <author>adron.nospam@nospam.adronbhall.com (Adron)</author>
      <comments>http://adronbhall.com/blogs/technology__software_development/post/2009/09/16/Busy-Busy-Me.aspx#comment</comments>
      <guid isPermaLink="false">http://adronbhall.com/blogs/technology__software_development/post.aspx?id=5f57b5b7-7ea3-4c56-82ed-2dc6994fa389</guid>
      <pubDate>Wed, 16 Sep 2009 17:47:00 -0800</pubDate>
      <category>Just Stuff</category>
      <category>Memories</category>
      <category>WebTrends</category>
      <dc:publisher>Adron</dc:publisher>
      <pingback:server>http://adronbhall.com/blogs/technology__software_development/pingback.axd</pingback:server>
      <pingback:target>http://adronbhall.com/blogs/technology__software_development/post.aspx?id=5f57b5b7-7ea3-4c56-82ed-2dc6994fa389</pingback:target>
      <slash:comments>3</slash:comments>
      <trackback:ping>http://adronbhall.com/blogs/technology__software_development/trackback.axd?id=5f57b5b7-7ea3-4c56-82ed-2dc6994fa389</trackback:ping>
      <wfw:comment>http://adronbhall.com/blogs/technology__software_development/post/2009/09/16/Busy-Busy-Me.aspx#comment</wfw:comment>
      <wfw:commentRss>http://adronbhall.com/blogs/technology__software_development/syndication.axd?post=5f57b5b7-7ea3-4c56-82ed-2dc6994fa389</wfw:commentRss>
    <feedburner:origLink>http://adronbhall.com/blogs/technology__software_development/post.aspx?id=5f57b5b7-7ea3-4c56-82ed-2dc6994fa389</feedburner:origLink></item>
    <item>
      <title>OMFG, Please Make the Tests Work FIRST!</title>
      <description>&lt;p&gt;Alright Mr &amp;amp; Ms Developer.&amp;#160; This hasn?t happened in a while, since most of my work as of late has been green field (i.e. brand new development).&amp;#160; But in the past, oh boy have I gotten some pure crap.&amp;#160; I am a bit arnery today, so just bare with me, I need to rant a bit.&lt;/p&gt;  &lt;p&gt;When I am handed code to fix, maintain, alter, or read for any reason I would love to have &lt;a href="http://www.adronbhall.com/blogs/technology__software_development/post/2007/06/20/Software-Development-Testing-Tip-O-The-Day.aspx" target="_blank"&gt;unit tests&lt;/a&gt; come along with it.&amp;#160; If someone then promises to provide unit tests for the code they are writing that is being handed off to me, I expect the unit tests to run, execute isolated, and throw green lights across the board.&amp;#160; However there are a billion different things I run into all the time that frustrate me to no end.&amp;#160; If you promise me unit tests, do NOT . . .&lt;/p&gt;  &lt;p&gt;&lt;em&gt;[RANT ON]&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;DO NOT&lt;/em&gt;&lt;/strong&gt; give me unit tests that take 13 steps to setup, fake data INSERTs against an un-configured or even pre-configured database.&amp;#160; That is NOT isolated and it makes them almost entirely useless to me.&amp;#160; It might be great for your own personal testing, but it doesn't help me understand the isolated unit of work, the separation of concern, or anything else about the actual code.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;DO NOT&lt;/em&gt;&lt;/strong&gt; give me unit tests that outright fail immediately.&amp;#160; If they all fail that means you have NOT finished your work.&amp;#160; It means your code doesn't work.&amp;#160; Please, make the tests work right, make the code work right before passing the buck.&amp;#160; Note:&amp;#160; I said &lt;em&gt;&lt;strong&gt;please! :)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;DO NOT&lt;/em&gt;&lt;/strong&gt; write a unit test for something that checks the length of a string when you need to check the content of the string.&amp;#160; Don't check that something is a number when the method adds two numbers, instead check to see if the numbers are aggregated correctly.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;DO NOT&lt;/em&gt;&lt;/strong&gt; tell me you have 100% code coverage and then hand me tests that basically asset that a mocked method executes on an object.&amp;#160; OF COURSE THE METHOD EXECUTES, YOU ARE MOCKING IT!!!&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;DO NOT&lt;/em&gt;&lt;/strong&gt; give me unit tests that test so far across boundaries that isolation is lost by so many degrees it would take many minutes, if not hours, to figure out what the test doesn't work.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;[Rant Off]&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;In all honesty I would rather get code and just be told the truth;&amp;#160; &lt;em&gt;?X tests do not work anymore?, ?I could not figure out a way to test this so I did this dumb partial test thing?, or simply ?I was screwing around so I didn?t get full coverage, to make management shush up I did a quick assert fake to get the rest of the coverage?.&amp;#160; &lt;/em&gt;I'm a developer too, I will understand and probably have no problem at all that something is not completely done, partially done, or you hit a stumbling block.&amp;#160; I do it all the time, I also make a point to lay it out the way it is.&amp;#160; No point in beating around the bush.&lt;/p&gt;  &lt;p&gt;Keep in mind, if your management thinks you need to slave away and be forced to lie about things, you can probably go work somewhere else within a few weeks.&amp;#160; Even in this crappy market there is barely any reason to allow bad management to treat develops like crap or to mismanage projects.&amp;#160; So don't take the bull and just make sure to keep things on the up and up with your fellow developers.&amp;#160; i.e. &lt;strong&gt;&lt;em&gt;DON'T &lt;/em&gt;&lt;/strong&gt;lie about your unit tests!&amp;#160; Cheers!&lt;/p&gt;&lt;div class="socialBookmarksContainer"&gt;&lt;a rel="nofollow" href="http://digg.com/submit/?url=http://adronbhall.com/blogs/technology__software_development/post/2009/09/14/OMFG-Please-Make-the-Tests-Work-FIRST!.aspx" target="_blank" title="Digg It!"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/digg_24.png" style="border: 0;" alt="Digg It!" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://www.dzone.com/links/add.html?url=http://adronbhall.com/blogs/technology__software_development/post/2009/09/14/OMFG-Please-Make-the-Tests-Work-FIRST!.aspx&amp;amp;title=OMFG, Please Make the Tests Work FIRST!" target="_blank" title="DZone It!"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/dzone_24.png" style="border: 0;" alt="DZone It!" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://www.stumbleupon.com/submit?url=http://adronbhall.com/blogs/technology__software_development/post/2009/09/14/OMFG-Please-Make-the-Tests-Work-FIRST!.aspx" target="_blank" title="StumbleUpon"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/stumbleupon_24.png" style="border: 0;" alt="StumbleUpon" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://technorati.com/ping?url=http://adronbhall.com/blogs/technology__software_development/" target="_blank" title="Technorati"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/technorati_24.png" style="border: 0;" alt="Technorati" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://reddit.com/submit?url=http://adronbhall.com/blogs/technology__software_development/post/2009/09/14/OMFG-Please-Make-the-Tests-Work-FIRST!.aspx&amp;amp;title=OMFG, Please Make the Tests Work FIRST!" target="_blank" title="Reddit"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/reddit_24.png" style="border: 0;" alt="Reddit" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://del.icio.us/post?url=http://adronbhall.com/blogs/technology__software_development/post/2009/09/14/OMFG-Please-Make-the-Tests-Work-FIRST!.aspx&amp;amp;title=OMFG, Please Make the Tests Work FIRST!" target="_blank" title="Del.icio.us"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/delicious_24.png" style="border: 0;" alt="Del.icio.us" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://www.newsvine.com/_wine/save?u=http://adronbhall.com/blogs/technology__software_development/post/2009/09/14/OMFG-Please-Make-the-Tests-Work-FIRST!.aspx" target="_blank"title="NewsVine"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/newsvine_24.png" style="border: 0;" alt="NewsVine" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://furl.net" target="_blank" title="Furl"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/furl_24.png" style="border: 0;" alt="Furl" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://blinklist.com/submit/" target="_blank" title="BlinkList"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/blinklist_24.png" style="border: 0;" alt="BlinkList" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=5Vw3fvAdscQ:wGQkFN3qcZE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=5Vw3fvAdscQ:wGQkFN3qcZE:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=5Vw3fvAdscQ:wGQkFN3qcZE:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=5Vw3fvAdscQ:wGQkFN3qcZE:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=5Vw3fvAdscQ:wGQkFN3qcZE:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=5Vw3fvAdscQ:wGQkFN3qcZE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=5Vw3fvAdscQ:wGQkFN3qcZE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=5Vw3fvAdscQ:wGQkFN3qcZE:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=5Vw3fvAdscQ:wGQkFN3qcZE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=5Vw3fvAdscQ:wGQkFN3qcZE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=5Vw3fvAdscQ:wGQkFN3qcZE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=5Vw3fvAdscQ:wGQkFN3qcZE:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=5Vw3fvAdscQ:wGQkFN3qcZE:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=5Vw3fvAdscQ:wGQkFN3qcZE:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=5Vw3fvAdscQ:wGQkFN3qcZE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=5Vw3fvAdscQ:wGQkFN3qcZE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=5Vw3fvAdscQ:wGQkFN3qcZE:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/LooselyCoupledHumanCodeFactory/~4/5Vw3fvAdscQ" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/LooselyCoupledHumanCodeFactory/~3/5Vw3fvAdscQ/post.aspx</link>
      <author>adron.nospam@nospam.adronbhall.com (Adron)</author>
      <comments>http://adronbhall.com/blogs/technology__software_development/post/2009/09/14/OMFG-Please-Make-the-Tests-Work-FIRST!.aspx#comment</comments>
      <guid isPermaLink="false">http://adronbhall.com/blogs/technology__software_development/post.aspx?id=e5371f6e-de21-482c-beb2-b754f4b65575</guid>
      <pubDate>Mon, 14 Sep 2009 11:51:52 -0800</pubDate>
      <category>Rants</category>
      <dc:publisher>Adron</dc:publisher>
      <pingback:server>http://adronbhall.com/blogs/technology__software_development/pingback.axd</pingback:server>
      <pingback:target>http://adronbhall.com/blogs/technology__software_development/post.aspx?id=e5371f6e-de21-482c-beb2-b754f4b65575</pingback:target>
      <slash:comments>3</slash:comments>
      <trackback:ping>http://adronbhall.com/blogs/technology__software_development/trackback.axd?id=e5371f6e-de21-482c-beb2-b754f4b65575</trackback:ping>
      <wfw:comment>http://adronbhall.com/blogs/technology__software_development/post/2009/09/14/OMFG-Please-Make-the-Tests-Work-FIRST!.aspx#comment</wfw:comment>
      <wfw:commentRss>http://adronbhall.com/blogs/technology__software_development/syndication.axd?post=e5371f6e-de21-482c-beb2-b754f4b65575</wfw:commentRss>
    <feedburner:origLink>http://adronbhall.com/blogs/technology__software_development/post.aspx?id=e5371f6e-de21-482c-beb2-b754f4b65575</feedburner:origLink></item>
    <item>
      <title>Excel Helper Utilities Library Part Four</title>
      <description>&lt;p&gt;&lt;a href="http://www.adronbhall.com/Software.aspx" target="_blank"&gt;&lt;img style="margin: 5px 0px 5px 15px; display: inline" border="0" alt="" align="right" src="http://adronhall.smugmug.com/photos/637807425_mYEcT-S.png" /&gt;&lt;/a&gt;Over the last few entries I've added various pieces of functionality to the Excel Helper Library.&amp;#160; Well, I decided to put together and offer the the documentation I've created, the assembly, and the solution files themselves via my site.&amp;#160; Here's everything that is included so far.&lt;/p&gt;  &lt;p&gt;T&lt;a href="http://www.adronbhall.com/Downloads/Documentation.zip" target="_blank"&gt;&lt;img style="margin: 5px 15px 5px 0px; display: inline" border="0" alt="" align="left" src="http://adronhall.smugmug.com/photos/637807414_7ALiv-S.png" /&gt;&lt;/a&gt;he image above shows the page where the assembly, documentation, and visual studio solution links are available.&amp;#160; Below I have a shot of the *.chm file and the html based documentation.&amp;#160; Click either image to get at either of those forms of documentation.&lt;/p&gt;  &lt;p&gt;Now don't think I am finishing this series here, I will absolutely be adding more functionality and capabilities to the Excel Helper.&amp;#160; Each step will have &lt;a href="http://www.adronbhall.com/Help/Index.html" target="_blank"&gt;&lt;img style="margin: 5px 0px 5px 15px; display: inline" border="0" alt="" align="right" src="http://adronhall.smugmug.com/photos/637807403_BanbH-S.png" /&gt;&lt;/a&gt;added code and information right here on my blog.&lt;/p&gt;  &lt;p&gt;Stay tuned for more, specifically what I intend to build next, but am not promising, is some ribbon functionality addins.&amp;#160; Currently I'm finalizing what architecture I'll be using for the Excel Ribbon addin.&amp;#160; So stay tuned, more coming.&lt;/p&gt; &lt;p&gt;Be sure to give this article a kick &lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fwww.adronbhall.com%2fblogs%2ftechnology__software_development%2fpost%2f2009%2f09%2f09%2fExcel-Helper-Utilities-Library-Part-Four.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fwww.adronbhall.com%2fblogs%2ftechnology__software_development%2fpost%2f2009%2f09%2f09%2fExcel-Helper-Utilities-Library-Part-Four.aspx&amp;amp;bgcolor=3333FF&amp;amp;cfgcolor=CC3300" border="0" alt="kick it on DotNetKicks.com" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="socialBookmarksContainer"&gt;&lt;a rel="nofollow" href="http://digg.com/submit/?url=http://adronbhall.com/blogs/technology__software_development/post/2009/09/09/Excel-Helper-Utilities-Library-Part-Four.aspx" target="_blank" title="Digg It!"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/digg_24.png" style="border: 0;" alt="Digg It!" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://www.dzone.com/links/add.html?url=http://adronbhall.com/blogs/technology__software_development/post/2009/09/09/Excel-Helper-Utilities-Library-Part-Four.aspx&amp;amp;title=Excel Helper Utilities Library Part Four" target="_blank" title="DZone It!"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/dzone_24.png" style="border: 0;" alt="DZone It!" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://www.stumbleupon.com/submit?url=http://adronbhall.com/blogs/technology__software_development/post/2009/09/09/Excel-Helper-Utilities-Library-Part-Four.aspx" target="_blank" title="StumbleUpon"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/stumbleupon_24.png" style="border: 0;" alt="StumbleUpon" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://technorati.com/ping?url=http://adronbhall.com/blogs/technology__software_development/" target="_blank" title="Technorati"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/technorati_24.png" style="border: 0;" alt="Technorati" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://reddit.com/submit?url=http://adronbhall.com/blogs/technology__software_development/post/2009/09/09/Excel-Helper-Utilities-Library-Part-Four.aspx&amp;amp;title=Excel Helper Utilities Library Part Four" target="_blank" title="Reddit"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/reddit_24.png" style="border: 0;" alt="Reddit" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://del.icio.us/post?url=http://adronbhall.com/blogs/technology__software_development/post/2009/09/09/Excel-Helper-Utilities-Library-Part-Four.aspx&amp;amp;title=Excel Helper Utilities Library Part Four" target="_blank" title="Del.icio.us"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/delicious_24.png" style="border: 0;" alt="Del.icio.us" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://www.newsvine.com/_wine/save?u=http://adronbhall.com/blogs/technology__software_development/post/2009/09/09/Excel-Helper-Utilities-Library-Part-Four.aspx" target="_blank"title="NewsVine"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/newsvine_24.png" style="border: 0;" alt="NewsVine" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://furl.net" target="_blank" title="Furl"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/furl_24.png" style="border: 0;" alt="Furl" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://blinklist.com/submit/" target="_blank" title="BlinkList"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/blinklist_24.png" style="border: 0;" alt="BlinkList" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=JvwIYUW9mhA:r-ac8aViVP8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=JvwIYUW9mhA:r-ac8aViVP8:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=JvwIYUW9mhA:r-ac8aViVP8:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=JvwIYUW9mhA:r-ac8aViVP8:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=JvwIYUW9mhA:r-ac8aViVP8:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=JvwIYUW9mhA:r-ac8aViVP8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=JvwIYUW9mhA:r-ac8aViVP8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=JvwIYUW9mhA:r-ac8aViVP8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=JvwIYUW9mhA:r-ac8aViVP8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=JvwIYUW9mhA:r-ac8aViVP8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=JvwIYUW9mhA:r-ac8aViVP8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=JvwIYUW9mhA:r-ac8aViVP8:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=JvwIYUW9mhA:r-ac8aViVP8:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=JvwIYUW9mhA:r-ac8aViVP8:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=JvwIYUW9mhA:r-ac8aViVP8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=JvwIYUW9mhA:r-ac8aViVP8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=JvwIYUW9mhA:r-ac8aViVP8:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/LooselyCoupledHumanCodeFactory/~4/JvwIYUW9mhA" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/LooselyCoupledHumanCodeFactory/~3/JvwIYUW9mhA/post.aspx</link>
      <author>adron.nospam@nospam.adronbhall.com (Adron)</author>
      <comments>http://adronbhall.com/blogs/technology__software_development/post/2009/09/09/Excel-Helper-Utilities-Library-Part-Four.aspx#comment</comments>
      <guid isPermaLink="false">http://adronbhall.com/blogs/technology__software_development/post.aspx?id=45af52b3-f2ab-4bfa-97e7-b6cf0363645c</guid>
      <pubDate>Wed, 09 Sep 2009 12:37:00 -0800</pubDate>
      <category>How-To, Samples, and Such</category>
      <dc:publisher>Adron</dc:publisher>
      <pingback:server>http://adronbhall.com/blogs/technology__software_development/pingback.axd</pingback:server>
      <pingback:target>http://adronbhall.com/blogs/technology__software_development/post.aspx?id=45af52b3-f2ab-4bfa-97e7-b6cf0363645c</pingback:target>
      <slash:comments>5</slash:comments>
      <trackback:ping>http://adronbhall.com/blogs/technology__software_development/trackback.axd?id=45af52b3-f2ab-4bfa-97e7-b6cf0363645c</trackback:ping>
      <wfw:comment>http://adronbhall.com/blogs/technology__software_development/post/2009/09/09/Excel-Helper-Utilities-Library-Part-Four.aspx#comment</wfw:comment>
      <wfw:commentRss>http://adronbhall.com/blogs/technology__software_development/syndication.axd?post=45af52b3-f2ab-4bfa-97e7-b6cf0363645c</wfw:commentRss>
    <feedburner:origLink>http://adronbhall.com/blogs/technology__software_development/post.aspx?id=45af52b3-f2ab-4bfa-97e7-b6cf0363645c</feedburner:origLink></item>
    <item>
      <title>Excel Helper Utilities Library Part Three</title>
      <description>&lt;p&gt;Obviously I've missed my self made time schedule of Monday, Wednesday, and Friday for these entries, so bare with me while I get em' published as fast as possible.&amp;#160; With that written . . .&lt;/p&gt;  &lt;p&gt;Welcome to part three of the Excel Helper Utilities Library series.&amp;#160; In this entry I will cover the extension of the ExcelHelper class created in &lt;a href="http://www.adronbhall.com/blogs/technology__software_development/post/2009/08/19/Excel-Helper-Utilities-Library-Part-Two.aspx" target="_blank"&gt;Part Two&lt;/a&gt;.&amp;#160; The first method is one I wrote ages ago for VB.NET, but I've added here for the C# helper.&amp;#160; As always, tests first.&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;[Test]&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; GetColumnLetterA()&lt;/pre&gt;

  &lt;pre class="alt"&gt;{&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;string&lt;/span&gt; twentySeventColumn = ExcelHelper.GetExcelColumnLetter(1);&lt;/pre&gt;

  &lt;pre class="alt"&gt;    Assert.AreEqual(twentySeventColumn, &lt;span class="str"&gt;&amp;quot;A&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;}&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;[Test]&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; GetColumnLetterB()&lt;/pre&gt;

  &lt;pre&gt;{&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;string&lt;/span&gt; twentySeventColumn = ExcelHelper.GetExcelColumnLetter(2);&lt;/pre&gt;

  &lt;pre&gt;    Assert.AreEqual(twentySeventColumn, &lt;span class="str"&gt;&amp;quot;B&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre class="alt"&gt;}&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;[Test]&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; GetColumnLetterAa()&lt;/pre&gt;

  &lt;pre class="alt"&gt;{&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;string&lt;/span&gt; twentySeventColumn = ExcelHelper.GetExcelColumnLetter(703);&lt;/pre&gt;

  &lt;pre class="alt"&gt;    Assert.AreEqual(twentySeventColumn, &lt;span class="str"&gt;&amp;quot;AAA&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;. . . and the implemented code . . .&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="rem"&gt;/// This method gets the appropriate &amp;quot;A&amp;quot; thru &amp;quot;ZZZ&amp;quot; column header for Excel based&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="rem"&gt;/// on a passed in long data type.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;columnIndex&amp;quot;&amp;gt;Pass in a long type to derive the appropriate column header letter.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="rem"&gt;/// &amp;lt;returns&amp;gt;A string of the appropriate &amp;quot;A&amp;quot; thru &amp;quot;ZZZ&amp;quot; header letter.&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; GetExcelColumnLetter(&lt;span class="kwrd"&gt;int&lt;/span&gt; columnIndex)&lt;/pre&gt;

  &lt;pre&gt;{&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;int&lt;/span&gt; dividend = columnIndex;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;string&lt;/span&gt; columnName = String.Empty;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;while&lt;/span&gt; (dividend &amp;gt; 0)&lt;/pre&gt;

  &lt;pre class="alt"&gt;    {&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;int&lt;/span&gt; mod = (dividend - 1)%26;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        columnName = Convert.ToChar(65 + mod) + columnName;&lt;/pre&gt;

  &lt;pre&gt;        dividend = ((dividend - mod)/26);&lt;/pre&gt;

  &lt;pre class="alt"&gt;    }&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; columnName;&lt;/pre&gt;

  &lt;pre class="alt"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;The next thing I wanted was a column range set, basically something that would return &amp;quot;A:A&amp;quot; if I passed it the start column index and ending column index.&amp;#160; Easy enough, again, tests first.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;[Test]&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; GetColumnLetterSetAandA()&lt;/pre&gt;

  &lt;pre class="alt"&gt;{&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; columnStart = &lt;span class="str"&gt;&amp;quot;1&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; columnEnd = &lt;span class="str"&gt;&amp;quot;4&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; expectedValue = &lt;span class="str"&gt;&amp;quot;A:D&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;string&lt;/span&gt; returnedValue = ExcelHelper.GetExcelColumnSet(columnStart, columnEnd);&lt;/pre&gt;

  &lt;pre&gt;    Assert.AreEqual(expectedValue, returnedValue);&lt;/pre&gt;

  &lt;pre class="alt"&gt;}&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;[Test]&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; GetColumnLetterSetAandAaa()&lt;/pre&gt;

  &lt;pre class="alt"&gt;{&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; columnStart = &lt;span class="str"&gt;&amp;quot;1&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; columnEnd = &lt;span class="str"&gt;&amp;quot;703&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; expectedValue = &lt;span class="str"&gt;&amp;quot;A:AAA&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;string&lt;/span&gt; returnedValue = ExcelHelper.GetExcelColumnSet(columnStart, columnEnd);&lt;/pre&gt;

  &lt;pre&gt;    Assert.AreEqual(expectedValue, returnedValue);&lt;/pre&gt;

  &lt;pre class="alt"&gt;}&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;[Test]&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; GetColumnLetterSetAandZ()&lt;/pre&gt;

  &lt;pre class="alt"&gt;{&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; columnStart = &lt;span class="str"&gt;&amp;quot;1&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; columnEnd = &lt;span class="str"&gt;&amp;quot;26&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; expectedValue = &lt;span class="str"&gt;&amp;quot;A:Z&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;string&lt;/span&gt; returnedValue = ExcelHelper.GetExcelColumnSet(columnStart, columnEnd);&lt;/pre&gt;

  &lt;pre&gt;    Assert.AreEqual(expectedValue, returnedValue);&lt;/pre&gt;

  &lt;pre class="alt"&gt;}&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;. . . and the implementation . . .&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="rem"&gt;/// This method returns the (&amp;quot;A:ZZZ&amp;quot;) part of the Range(&amp;quot;A:ZZZ&amp;quot;) column interface.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;firstColumn&amp;quot;&amp;gt;Enter the first column to start the range with.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;secondColumn&amp;quot;&amp;gt;Enter the second column to end the range with.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="rem"&gt;/// &amp;lt;returns&amp;gt;A string formatted as A:ZZZ is returned from this method.&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; GetExcelColumnSet(&lt;span class="kwrd"&gt;string&lt;/span&gt; firstColumn, &lt;span class="kwrd"&gt;string&lt;/span&gt; secondColumn)&lt;/pre&gt;

  &lt;pre&gt;{&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;int&lt;/span&gt; firstColumnValue = Convert.ToInt32(firstColumn);&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;int&lt;/span&gt; secondColumnValue = Convert.ToInt32(secondColumn);&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; GetExcelColumnLetter(firstColumnValue) + &lt;span class="str"&gt;&amp;quot;:&amp;quot;&lt;/span&gt; + GetExcelColumnLetter(secondColumnValue);&lt;/pre&gt;

  &lt;pre&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;That is the short and sweet of this entry.&amp;#160; I have to catch a bus and get a move on, but the next entry will be a few cell manipulations to simplify capturing and putting things in the cells in Excel.&lt;/p&gt;

&lt;p&gt;If you visit, please give this entry a kick over at &lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fwww.adronbhall.com%2fblogs%2ftechnology__software_development%2fpost%2f2009%2f08%2f27%2fExcel-Helper-Utilities-Library-Part-Three.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fwww.adronbhall.com%2fblogs%2ftechnology__software_development%2fpost%2f2009%2f08%2f27%2fExcel-Helper-Utilities-Library-Part-Three.aspx&amp;amp;bgcolor=3333FF&amp;amp;cfgcolor=CC3300" border="0" alt="kick it on DotNetKicks.com" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="socialBookmarksContainer"&gt;&lt;a rel="nofollow" href="http://digg.com/submit/?url=http://adronbhall.com/blogs/technology__software_development/post/2009/08/27/Excel-Helper-Utilities-Library-Part-Three.aspx" target="_blank" title="Digg It!"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/digg_24.png" style="border: 0;" alt="Digg It!" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://www.dzone.com/links/add.html?url=http://adronbhall.com/blogs/technology__software_development/post/2009/08/27/Excel-Helper-Utilities-Library-Part-Three.aspx&amp;amp;title=Excel Helper Utilities Library Part Three" target="_blank" title="DZone It!"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/dzone_24.png" style="border: 0;" alt="DZone It!" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://www.stumbleupon.com/submit?url=http://adronbhall.com/blogs/technology__software_development/post/2009/08/27/Excel-Helper-Utilities-Library-Part-Three.aspx" target="_blank" title="StumbleUpon"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/stumbleupon_24.png" style="border: 0;" alt="StumbleUpon" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://technorati.com/ping?url=http://adronbhall.com/blogs/technology__software_development/" target="_blank" title="Technorati"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/technorati_24.png" style="border: 0;" alt="Technorati" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://reddit.com/submit?url=http://adronbhall.com/blogs/technology__software_development/post/2009/08/27/Excel-Helper-Utilities-Library-Part-Three.aspx&amp;amp;title=Excel Helper Utilities Library Part Three" target="_blank" title="Reddit"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/reddit_24.png" style="border: 0;" alt="Reddit" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://del.icio.us/post?url=http://adronbhall.com/blogs/technology__software_development/post/2009/08/27/Excel-Helper-Utilities-Library-Part-Three.aspx&amp;amp;title=Excel Helper Utilities Library Part Three" target="_blank" title="Del.icio.us"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/delicious_24.png" style="border: 0;" alt="Del.icio.us" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://www.newsvine.com/_wine/save?u=http://adronbhall.com/blogs/technology__software_development/post/2009/08/27/Excel-Helper-Utilities-Library-Part-Three.aspx" target="_blank"title="NewsVine"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/newsvine_24.png" style="border: 0;" alt="NewsVine" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://furl.net" target="_blank" title="Furl"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/furl_24.png" style="border: 0;" alt="Furl" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://blinklist.com/submit/" target="_blank" title="BlinkList"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/blinklist_24.png" style="border: 0;" alt="BlinkList" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=9AsTryukGyg:zIzyTPg88Zw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=9AsTryukGyg:zIzyTPg88Zw:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=9AsTryukGyg:zIzyTPg88Zw:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=9AsTryukGyg:zIzyTPg88Zw:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=9AsTryukGyg:zIzyTPg88Zw:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=9AsTryukGyg:zIzyTPg88Zw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=9AsTryukGyg:zIzyTPg88Zw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=9AsTryukGyg:zIzyTPg88Zw:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=9AsTryukGyg:zIzyTPg88Zw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=9AsTryukGyg:zIzyTPg88Zw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=9AsTryukGyg:zIzyTPg88Zw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=9AsTryukGyg:zIzyTPg88Zw:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=9AsTryukGyg:zIzyTPg88Zw:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=9AsTryukGyg:zIzyTPg88Zw:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=9AsTryukGyg:zIzyTPg88Zw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=9AsTryukGyg:zIzyTPg88Zw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=9AsTryukGyg:zIzyTPg88Zw:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/LooselyCoupledHumanCodeFactory/~4/9AsTryukGyg" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/LooselyCoupledHumanCodeFactory/~3/9AsTryukGyg/post.aspx</link>
      <author>adron.nospam@nospam.adronbhall.com (Adron)</author>
      <comments>http://adronbhall.com/blogs/technology__software_development/post/2009/08/27/Excel-Helper-Utilities-Library-Part-Three.aspx#comment</comments>
      <guid isPermaLink="false">http://adronbhall.com/blogs/technology__software_development/post.aspx?id=76f1ec25-79c2-4eba-824c-9d071b15f376</guid>
      <pubDate>Thu, 27 Aug 2009 17:06:21 -0800</pubDate>
      <category>How-To, Samples, and Such</category>
      <dc:publisher>Adron</dc:publisher>
      <pingback:server>http://adronbhall.com/blogs/technology__software_development/pingback.axd</pingback:server>
      <pingback:target>http://adronbhall.com/blogs/technology__software_development/post.aspx?id=76f1ec25-79c2-4eba-824c-9d071b15f376</pingback:target>
      <slash:comments>5</slash:comments>
      <trackback:ping>http://adronbhall.com/blogs/technology__software_development/trackback.axd?id=76f1ec25-79c2-4eba-824c-9d071b15f376</trackback:ping>
      <wfw:comment>http://adronbhall.com/blogs/technology__software_development/post/2009/08/27/Excel-Helper-Utilities-Library-Part-Three.aspx#comment</wfw:comment>
      <wfw:commentRss>http://adronbhall.com/blogs/technology__software_development/syndication.axd?post=76f1ec25-79c2-4eba-824c-9d071b15f376</wfw:commentRss>
    <feedburner:origLink>http://adronbhall.com/blogs/technology__software_development/post.aspx?id=76f1ec25-79c2-4eba-824c-9d071b15f376</feedburner:origLink></item>
    <item>
      <title>Blog Entry Roundup</title>
      <description>&lt;p&gt;A few of the good blog entries I have had the pleasure of reading the last few weeks.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.codeville.net/2009/08/24/writing-great-unit-tests-best-and-worst-practises/" target="_blank"&gt;Writing Great Unit Tests:&amp;#160; Best and Worst Practices&lt;/a&gt; by &lt;a href="http://blog.codeville.net/" target="_blank"&gt;Steve Sanderson&lt;/a&gt;.&amp;#160; This entry is just an overview of unit testing, but really well written.&amp;#160; Also Steve placed a few nice charts in defining unit &amp;amp; integration tests.&amp;#160; The combination just made for a nice refresher, or for the test newbie, a great introduction.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://gregdoesit.com/" target="_blank"&gt;Gergely Orosz&lt;/a&gt; has some articles on NHibernate versus Entity Framework performance;&amp;#160; &lt;a href="http://gregdoesit.com/2009/08/thoughts-on-ranking-orm-tools/"&gt;Thoughts on ranking ORM tools&lt;/a&gt;, &lt;a href="http://gregdoesit.com/2009/08/nhibernate-vs-entity-framework-a-performance-test/"&gt;NHibernate vs Entity Framework: a performance test&lt;/a&gt;, and &lt;a href="http://gregdoesit.com/2009/08/nhibernate-vs-entity-framework-%e2%80%93-a-revised-performance-comparison/"&gt;Nhibernate vs Entity Framework ? a revised performance comparison&lt;/a&gt;.&amp;#160; The interesting conclusion is that there is no good effective way to compare ORM platforms.&amp;#160; I suppose, it best to compare on the specific metrics you desire in an ORM platform, then choose.&lt;/p&gt;  &lt;p&gt;The &lt;a href="http://blog.maartenballiauw.be/post/2009/08/19/REST-for-ASPNET-MVC-SDK.aspx"&gt;REST for ASP.NET MVC SDK&lt;/a&gt; entry is a good read.&amp;#160; First off it states what it is and why you would want to use it, which would be helpful for many.&amp;#160; It caught my eye solely because I would have loved to have the functionality 10 months ago for a project, instead of manually developing all the bits.&amp;#160; At least it is out now and I will surely be using it as such.&lt;/p&gt;  &lt;p&gt;Last but not least, there is the &lt;a href="http://www.robertschultz.org/2009/08/17/facebook-asp-net-mvc/" target="_blank"&gt;Facebook &amp;amp; ASP.NET MVC&lt;/a&gt; entry.&amp;#160; This is a useful entry, being I have just jumped onto a project doing some Facebook Development this is a very helpful entry in getting up to speed.&lt;/p&gt;&lt;div class="socialBookmarksContainer"&gt;&lt;a rel="nofollow" href="http://digg.com/submit/?url=http://adronbhall.com/blogs/technology__software_development/post/2009/08/25/Blog-Entry-Roundup.aspx" target="_blank" title="Digg It!"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/digg_24.png" style="border: 0;" alt="Digg It!" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://www.dzone.com/links/add.html?url=http://adronbhall.com/blogs/technology__software_development/post/2009/08/25/Blog-Entry-Roundup.aspx&amp;amp;title=Blog Entry Roundup" target="_blank" title="DZone It!"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/dzone_24.png" style="border: 0;" alt="DZone It!" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://www.stumbleupon.com/submit?url=http://adronbhall.com/blogs/technology__software_development/post/2009/08/25/Blog-Entry-Roundup.aspx" target="_blank" title="StumbleUpon"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/stumbleupon_24.png" style="border: 0;" alt="StumbleUpon" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://technorati.com/ping?url=http://adronbhall.com/blogs/technology__software_development/" target="_blank" title="Technorati"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/technorati_24.png" style="border: 0;" alt="Technorati" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://reddit.com/submit?url=http://adronbhall.com/blogs/technology__software_development/post/2009/08/25/Blog-Entry-Roundup.aspx&amp;amp;title=Blog Entry Roundup" target="_blank" title="Reddit"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/reddit_24.png" style="border: 0;" alt="Reddit" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://del.icio.us/post?url=http://adronbhall.com/blogs/technology__software_development/post/2009/08/25/Blog-Entry-Roundup.aspx&amp;amp;title=Blog Entry Roundup" target="_blank" title="Del.icio.us"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/delicious_24.png" style="border: 0;" alt="Del.icio.us" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://www.newsvine.com/_wine/save?u=http://adronbhall.com/blogs/technology__software_development/post/2009/08/25/Blog-Entry-Roundup.aspx" target="_blank"title="NewsVine"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/newsvine_24.png" style="border: 0;" alt="NewsVine" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://furl.net" target="_blank" title="Furl"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/furl_24.png" style="border: 0;" alt="Furl" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://blinklist.com/submit/" target="_blank" title="BlinkList"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/blinklist_24.png" style="border: 0;" alt="BlinkList" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=Y1pH2_dxk14:Z_2p1vLHmbQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=Y1pH2_dxk14:Z_2p1vLHmbQ:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=Y1pH2_dxk14:Z_2p1vLHmbQ:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=Y1pH2_dxk14:Z_2p1vLHmbQ:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=Y1pH2_dxk14:Z_2p1vLHmbQ:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=Y1pH2_dxk14:Z_2p1vLHmbQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=Y1pH2_dxk14:Z_2p1vLHmbQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=Y1pH2_dxk14:Z_2p1vLHmbQ:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=Y1pH2_dxk14:Z_2p1vLHmbQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=Y1pH2_dxk14:Z_2p1vLHmbQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=Y1pH2_dxk14:Z_2p1vLHmbQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=Y1pH2_dxk14:Z_2p1vLHmbQ:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=Y1pH2_dxk14:Z_2p1vLHmbQ:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=Y1pH2_dxk14:Z_2p1vLHmbQ:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=Y1pH2_dxk14:Z_2p1vLHmbQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=Y1pH2_dxk14:Z_2p1vLHmbQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=Y1pH2_dxk14:Z_2p1vLHmbQ:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/LooselyCoupledHumanCodeFactory/~4/Y1pH2_dxk14" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/LooselyCoupledHumanCodeFactory/~3/Y1pH2_dxk14/post.aspx</link>
      <author>adron.nospam@nospam.adronbhall.com (Adron)</author>
      <comments>http://adronbhall.com/blogs/technology__software_development/post/2009/08/25/Blog-Entry-Roundup.aspx#comment</comments>
      <guid isPermaLink="false">http://adronbhall.com/blogs/technology__software_development/post.aspx?id=9d33171d-c75b-430a-9545-d8df057ef0e3</guid>
      <pubDate>Tue, 25 Aug 2009 10:20:08 -0800</pubDate>
      <dc:publisher>Adron</dc:publisher>
      <pingback:server>http://adronbhall.com/blogs/technology__software_development/pingback.axd</pingback:server>
      <pingback:target>http://adronbhall.com/blogs/technology__software_development/post.aspx?id=9d33171d-c75b-430a-9545-d8df057ef0e3</pingback:target>
      <slash:comments>6</slash:comments>
      <trackback:ping>http://adronbhall.com/blogs/technology__software_development/trackback.axd?id=9d33171d-c75b-430a-9545-d8df057ef0e3</trackback:ping>
      <wfw:comment>http://adronbhall.com/blogs/technology__software_development/post/2009/08/25/Blog-Entry-Roundup.aspx#comment</wfw:comment>
      <wfw:commentRss>http://adronbhall.com/blogs/technology__software_development/syndication.axd?post=9d33171d-c75b-430a-9545-d8df057ef0e3</wfw:commentRss>
    <feedburner:origLink>http://adronbhall.com/blogs/technology__software_development/post.aspx?id=9d33171d-c75b-430a-9545-d8df057ef0e3</feedburner:origLink></item>
    <item>
      <title>Excel Helper Utilities Library Part Two</title>
      <description>&lt;p&gt;In the last entry I covered a range of utility class methods including appropriate &lt;a href="http://www.adronbhall.com/blogs/technology__software_development/post/2007/06/20/Software-Development-Testing-Tip-O-The-Day.aspx" target="_blank"&gt;unit tests&lt;/a&gt;.&amp;#160; Today I want to cover the first steps into the twisted world of Excel Development with C#.&amp;#160; Note, there are many things I probably will not mention that are pivotal to this code working.&amp;#160; Namely the order in which Excel objects &amp;amp; framework interfaces and components are instantiated are of massive importance within managed code.&amp;#160; So if you are following along, first do the exact example here and then step on to changes.&amp;#160; That way you will have working code before arbitrarily having non-working code.&lt;/p&gt;  &lt;p&gt;As always, &lt;a href="http://www.adronbhall.com/blogs/technology__software_development/post/2007/06/20/Software-Development-Testing-Tip-O-The-Day.aspx" target="_blank"&gt;tests are first&lt;/a&gt;.&amp;#160; In this entry I will actually step from test, to code, then green light the test for each part versus writing all the tests and then working through the methods.&amp;#160; That way I can cover each method and the purpose of the method.&lt;a href="http://adronhall.smugmug.com/gallery/9339220_UAfqA#624708491_LUTtZ" target="_blank"&gt;&lt;img style="margin: 15px 0px 15px 20px; display: inline" align="right" src="http://adronhall.smugmug.com/photos/624708491_LUTtZ-S.png" /&gt;&lt;/a&gt;&lt;a title="" href=""&gt;&lt;img border="0" hspace="15" alt="" vspace="15" src="http://adronhall.smugmug.com/photos/624708493_EBQiT-Ti.png" /&gt;&lt;/a&gt;&lt;a title="" href=""&gt;&lt;img border="0" hspace="15" alt="" vspace="15" src="http://adronhall.smugmug.com/photos/624708490_9WCw2-Ti.png" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Before even jumping straight into tests we will need to add two specific assemblies that are needed to test Excel appropriately;&amp;#160; Microsoft.Office.Interop.Excel and Microsoft.Office.Tools.Excel.v9.0.&amp;#160; (Click the images to see larger images) &lt;td valign="top"&gt;&lt;/p&gt;  &lt;p&gt;Now to get started with Excel unit tests, we really do need to use the Excel Assemblies we've added because mocking just doesn't cut it.&amp;#160; Because of the legacy code &amp;amp; other such droves of complexities, it is extremely hard to really mock accurately.&amp;#160; One really needs to know when the actual application is behaving appropriately under load &amp;amp; use from software written to use it.&amp;#160; With that said, here's my first few tests &amp;amp; setup code.&lt;/p&gt;  &lt;p&gt;I start out by creating the test class and creating a public property to act for all tests as the actual Excel Application under test.&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;[TestFixture]&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; ExcelHelperTests&lt;/pre&gt;

  &lt;pre class="alt"&gt;{&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; Application ExcelApplication { get; set; }&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;











.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Next I create two tests for setup and teardown of the Excel Application object.&amp;#160; In addition to the basic Excel Application object, one thing I have learned about Excel from experience, is that one needs to go ahead and immediately add a workbook.&amp;#160; If there is no workbook, Excel can throw all sorts of odd errors that provide very little insight into what is going on.&amp;#160; So just remove that possibility by adding that default workbook.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;[TestFixtureSetUp]&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; CreateExcelAppAppropriately()&lt;/pre&gt;

  &lt;pre class="alt"&gt;{&lt;/pre&gt;

  &lt;pre&gt;    ExcelApplication = &lt;span class="kwrd"&gt;new&lt;/span&gt; Application();&lt;/pre&gt;

  &lt;pre class="alt"&gt;    ExcelApplication.Workbooks.Add(Type.Missing);&lt;/pre&gt;

  &lt;pre&gt;    ExcelApplication.Visible = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;}&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;[TestFixtureTearDown]&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; QuitExcelAppAppropriately()&lt;/pre&gt;

  &lt;pre class="alt"&gt;{&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (Workbook workbook &lt;span class="kwrd"&gt;in&lt;/span&gt; ExcelApplication.Workbooks)&lt;/pre&gt;

  &lt;pre class="alt"&gt;    {&lt;/pre&gt;

  &lt;pre&gt;        workbook.Close(&lt;span class="kwrd"&gt;false&lt;/span&gt;, &lt;span class="kwrd"&gt;false&lt;/span&gt;, Type.Missing);&lt;/pre&gt;

  &lt;pre class="alt"&gt;    }&lt;/pre&gt;

  &lt;pre&gt;    ExcelApplication.Quit();&lt;/pre&gt;

  &lt;pre class="alt"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;











.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Now that this is setup I can really test how the class will react and behave under test with Excel.&amp;#160; Just to make sure, I verify that the appropriate Excel Application object is created and has a single workbook that was added in the fixture setup.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;[Test]&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; InitializeDefaultWorkbook()&lt;/pre&gt;

  &lt;pre class="alt"&gt;{&lt;/pre&gt;

  &lt;pre&gt;    Assert.GreaterOrEqual(1, ExcelApplication.Workbooks.Count);&lt;/pre&gt;

  &lt;pre class="alt"&gt;}&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Next on the list is finally getting to the real nitty gritty of the Excel Helper class I'm creating.&amp;#160; My first test to begin this class is as follows.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;[Test]&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; ExcelHelperInstantiation()&lt;/pre&gt;

  &lt;pre class="alt"&gt;{&lt;/pre&gt;

  &lt;pre&gt;    var excelHelper = &lt;span class="kwrd"&gt;new&lt;/span&gt; ExcelHelper(ExcelApplication);&lt;/pre&gt;

  &lt;pre class="alt"&gt;    Assert.IsNotNull(excelHelper);&lt;/pre&gt;

  &lt;pre&gt;    Assert.IsNotNull(excelHelper.ExcelApplication);&lt;/pre&gt;

  &lt;pre class="alt"&gt;}&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;With these tests throwing errors I'm now ready to add my initial class skeleton.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="rem"&gt;/// This class provides helper utility methods for Excel 2007 that cover common&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="rem"&gt;/// needs such as creating a new worksheet, or getting an insantiated instance&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="rem"&gt;/// of an existing worksheet.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; ExcelHelper&lt;/pre&gt;

  &lt;pre class="alt"&gt;{&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="rem"&gt;/// This class has a single constructor used to &lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="rem"&gt;/// setup the needed Microsoft.Office.Interop.Excel.Application&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="rem"&gt;/// object for use.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;excelApplication&amp;quot;&amp;gt;Pass the active Excel Application&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="rem"&gt;/// object.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; ExcelHelper(Application excelApplication)&lt;/pre&gt;

  &lt;pre&gt;    {&lt;/pre&gt;

  &lt;pre class="alt"&gt;        ExcelApplication = excelApplication;&lt;/pre&gt;

  &lt;pre&gt;    }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="rem"&gt;/// This property is set to the active application the class&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="rem"&gt;/// executes methods against.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; Application ExcelApplication { get; set; }&lt;/pre&gt;

  &lt;pre class="alt"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;





.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Run the test now and you should get a green light.&amp;#160; Moving along I added a test for the first method I want, a way to retrieve a Worksheet that already exists in Excel.&amp;#160; First my test looks something like this.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;[Test]&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; GetWorksheet()&lt;/pre&gt;

  &lt;pre class="alt"&gt;{&lt;/pre&gt;

  &lt;pre&gt;    var newWorksheet = ExcelApplication.Worksheets.Add(Type.Missing, Type.Missing, Type.Missing,&lt;/pre&gt;

  &lt;pre class="alt"&gt;                                                             Type.Missing) &lt;span class="kwrd"&gt;as&lt;/span&gt; Worksheet;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; newWorksheetName = &lt;span class="str"&gt;&amp;quot;UniqueName&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    newWorksheet.Name = newWorksheetName;&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    Worksheet foundNewWorksheet = &lt;span class="kwrd"&gt;new&lt;/span&gt; ExcelHelper(ExcelApplication).GetWorksheet(newWorksheetName);&lt;/pre&gt;

  &lt;pre&gt;    Assert.IsNotNull(foundNewWorksheet);&lt;/pre&gt;

  &lt;pre class="alt"&gt;    Assert.AreEqual(foundNewWorksheet.Name, newWorksheet.Name);&lt;/pre&gt;

  &lt;pre&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;





.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;I get a red light and then implement the code to return a Worksheet Object based on the passed in worksheet name.&amp;#160; It fails, since the method isn't created, so I create the method.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="rem"&gt;/// This method retrieves a specific worksheet by name.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;worksheetName&amp;quot;&amp;gt;Pass the name of the&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="rem"&gt;/// worksheet to retrieve.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="rem"&gt;/// &amp;lt;returns&amp;gt;The Worksheet Object of the requested&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="rem"&gt;/// worksheet, or if not found null.&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; Worksheet GetWorksheet(&lt;span class="kwrd"&gt;string&lt;/span&gt; worksheetName)&lt;/pre&gt;

  &lt;pre class="alt"&gt;{&lt;/pre&gt;

  &lt;pre&gt;    Worksheet foundSheet = &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (Worksheet sheet &lt;span class="kwrd"&gt;in&lt;/span&gt; ExcelApplication.Worksheets)&lt;/pre&gt;

  &lt;pre&gt;    {&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt; (sheet.Name == worksheetName)&lt;/pre&gt;

  &lt;pre&gt;            foundSheet = sheet;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    }&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; foundSheet;&lt;/pre&gt;

  &lt;pre class="alt"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;





.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Next test is for creating a new Worksheet, and adding it to the Excel Workbook.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;[Test]&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; NewWorksheet()&lt;/pre&gt;

  &lt;pre class="alt"&gt;{&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; newWorksheetName = &lt;span class="str"&gt;&amp;quot;UniqueName&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;new&lt;/span&gt; ExcelHelper(ExcelApplication).NewWorksheet(newWorksheetName);&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;bool&lt;/span&gt; foundWorksheet = &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (Worksheet worksheet &lt;span class="kwrd"&gt;in&lt;/span&gt; ExcelApplication.Worksheets)&lt;/pre&gt;

  &lt;pre class="alt"&gt;    {&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt;(worksheet.Name == newWorksheetName)&lt;/pre&gt;

  &lt;pre class="alt"&gt;            foundWorksheet = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;    }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;    Assert.IsTrue(foundWorksheet);&lt;/pre&gt;

  &lt;pre class="alt"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;





.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Red lighted, so I add the method.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="rem"&gt;/// This method creates a new worksheet with the name&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="rem"&gt;/// specified.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;name&amp;quot;&amp;gt;Pass the name you want the new&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="rem"&gt;/// worksheet to have.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="rem"&gt;/// &amp;lt;returns&amp;gt;Returns the new Worksheet object.&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; Worksheet NewWorksheet(&lt;span class="kwrd"&gt;string&lt;/span&gt; name)&lt;/pre&gt;

  &lt;pre class="alt"&gt;{&lt;/pre&gt;

  &lt;pre&gt;    var returnToThisWorksheet = ExcelApplication.ActiveSheet &lt;span class="kwrd"&gt;as&lt;/span&gt; _Worksheet;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    var returnSheet = ExcelApplication.Worksheets.Add(&lt;/pre&gt;

  &lt;pre&gt;                          Type.Missing,&lt;/pre&gt;

  &lt;pre class="alt"&gt;                          Type.Missing,&lt;/pre&gt;

  &lt;pre&gt;                          Type.Missing,&lt;/pre&gt;

  &lt;pre class="alt"&gt;                          Type.Missing) &lt;span class="kwrd"&gt;as&lt;/span&gt; Worksheet;&lt;/pre&gt;

  &lt;pre&gt;    returnSheet.Name = name;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;if&lt;/span&gt; (returnToThisWorksheet != &lt;span class="kwrd"&gt;null&lt;/span&gt;) returnToThisWorksheet.Activate();&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; returnSheet;&lt;/pre&gt;

  &lt;pre class="alt"&gt;}&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Now that I've simplified the methods to create and retrieve a worksheet from Excel, I want to add some functionality around determining if a Worksheet already exists within a workbook.&amp;#160; This is usually a common need within Excel and I find many examples are simply a foreach loop stepping through each Worksheet until it found or did not find the Worksheet it is looking for.&amp;#160; This is a perfect example of something that would be better as a method.&lt;/p&gt;

&lt;p&gt;First the test, which I'll make a static method in case one wants to call this method without instantiating?&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;[Test]&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; IsExistingWorksheetName()&lt;/pre&gt;

  &lt;pre class="alt"&gt;{&lt;/pre&gt;

  &lt;pre&gt;    var newWorksheet = ExcelApplication.Worksheets.Add(Type.Missing, Type.Missing, Type.Missing,&lt;/pre&gt;

  &lt;pre class="alt"&gt;                                                                         Type.Missing) &lt;span class="kwrd"&gt;as&lt;/span&gt; Worksheet;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; newWorksheetName = &lt;span class="str"&gt;&amp;quot;UniqueName&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    newWorksheet.Name = newWorksheetName;&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    ExcelHelper.IsExistingWorksheetName(newWorksheetName, ExcelApplication.Worksheets);&lt;/pre&gt;

  &lt;pre&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;




.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;?and a test for a static method?&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;[Test]&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; IsExistingWorksheetNameInstantiatedMethod()&lt;/pre&gt;

  &lt;pre class="alt"&gt;{&lt;/pre&gt;

  &lt;pre&gt;    var newWorksheet = ExcelApplication.Worksheets.Add(Type.Missing, Type.Missing, Type.Missing,&lt;/pre&gt;

  &lt;pre class="alt"&gt;                                                              Type.Missing) &lt;span class="kwrd"&gt;as&lt;/span&gt; Worksheet;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; newWorksheetName = &lt;span class="str"&gt;&amp;quot;UniqueName&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    newWorksheet.Name = newWorksheetName;&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    ExcelHelper helper = &lt;span class="kwrd"&gt;new&lt;/span&gt; ExcelHelper(ExcelApplication);&lt;/pre&gt;

  &lt;pre&gt;    Assert.IsTrue(helper.IsExistingWorksheetName(newWorksheetName));&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (Worksheet sheet &lt;span class="kwrd"&gt;in&lt;/span&gt; ExcelApplication.Worksheets)&lt;/pre&gt;

  &lt;pre class="alt"&gt;    {&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt; (sheet.Name == newWorksheetName)&lt;/pre&gt;

  &lt;pre class="alt"&gt;            sheet.Delete();&lt;/pre&gt;

  &lt;pre&gt;    }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;    Assert.IsFalse(helper.IsExistingWorksheetName(newWorksheetName));&lt;/pre&gt;

  &lt;pre class="alt"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;




.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;As I finished this test and got a red light I realized, I needed to assure the other tests cleaned up after themselves like this one does with the deletion of the Worksheet.&amp;#160; I then went back and add the snippet&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;foreach&lt;/span&gt; (Worksheet sheet &lt;span class="kwrd"&gt;in&lt;/span&gt; ExcelApplication.Worksheets)&lt;/pre&gt;

  &lt;pre&gt;{&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;if&lt;/span&gt; (sheet.Name == newWorksheetName)&lt;/pre&gt;

  &lt;pre&gt;        sheet.Delete();&lt;/pre&gt;

  &lt;pre class="alt"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;




.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;to each of the tests that needed it.&amp;#160; After the tests where appropriately refactored I ran the tests to assure they still where all green lights except for the one I just created.&amp;#160; I then jumped back into my ExcelHelper Class and created the methods I just wrote tests for.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="rem"&gt;/// This method checks for existing names to prevent identical name collisions within the&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="rem"&gt;/// worksheet collection.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;worksheetName&amp;quot;&amp;gt;Pass in the worksheet name to check for.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;existingWorksheets&amp;quot;&amp;gt;Pass in the Excel worksheets collection to search in.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="rem"&gt;/// &amp;lt;returns&amp;gt;Return true if existing worksheet name is found, false if no existing worksheet names.&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; IsExistingWorksheetName(&lt;span class="kwrd"&gt;string&lt;/span&gt; worksheetName, Sheets existingWorksheets)&lt;/pre&gt;

  &lt;pre class="alt"&gt;        {&lt;/pre&gt;

  &lt;pre&gt;            &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (_Worksheet worksheet &lt;span class="kwrd"&gt;in&lt;/span&gt; existingWorksheets)&lt;/pre&gt;

  &lt;pre class="alt"&gt;            {&lt;/pre&gt;

  &lt;pre&gt;                &lt;span class="kwrd"&gt;string&lt;/span&gt; existingWorksheet = worksheet.Name;&lt;/pre&gt;

  &lt;pre class="alt"&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (worksheetName == existingWorksheet)&lt;/pre&gt;

  &lt;pre&gt;                    &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            }&lt;/pre&gt;

  &lt;pre&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        }&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="rem"&gt;/// This method checks for existing names to prevent identical name collisions within the&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="rem"&gt;/// worksheet collection.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;worksheetName&amp;quot;&amp;gt;Pass in the worksheet name to check for.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="rem"&gt;/// &amp;lt;returns&amp;gt;Return true if existing worksheet name is found, false if no existing worksheet names.&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; IsExistingWorksheetName(&lt;span class="kwrd"&gt;string&lt;/span&gt; worksheetName)&lt;/pre&gt;

  &lt;pre&gt;        {&lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; IsExistingWorksheetName(worksheetName, ExcelApplication.Worksheets);&lt;/pre&gt;

  &lt;pre&gt;        }&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;For this entry we've covered appropriate tests and methods for getting an Excel Worksheet, creating a new Excel Worksheet, and finding out if a Excel Worksheet Name is already taken.&amp;#160; In my next entry on this topic I'll keep adding more Excel Helper Methods that will help make Excel Addin Development easier.&lt;/p&gt;
&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fwww.adronbhall.com%2fblogs%2ftechnology__software_development%2fpost%2f2009%2f08%2f19%2fExcel-Helper-Utilities-Library-Part-Two.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fwww.adronbhall.com%2fblogs%2ftechnology__software_development%2fpost%2f2009%2f08%2f19%2fExcel-Helper-Utilities-Library-Part-Two.aspx&amp;amp;bgcolor=3333FF&amp;amp;cfgcolor=CC3300" /&gt;&lt;/a&gt;&lt;div class="socialBookmarksContainer"&gt;&lt;a rel="nofollow" href="http://digg.com/submit/?url=http://adronbhall.com/blogs/technology__software_development/post/2009/08/19/Excel-Helper-Utilities-Library-Part-Two.aspx" target="_blank" title="Digg It!"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/digg_24.png" style="border: 0;" alt="Digg It!" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://www.dzone.com/links/add.html?url=http://adronbhall.com/blogs/technology__software_development/post/2009/08/19/Excel-Helper-Utilities-Library-Part-Two.aspx&amp;amp;title=Excel Helper Utilities Library Part Two" target="_blank" title="DZone It!"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/dzone_24.png" style="border: 0;" alt="DZone It!" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://www.stumbleupon.com/submit?url=http://adronbhall.com/blogs/technology__software_development/post/2009/08/19/Excel-Helper-Utilities-Library-Part-Two.aspx" target="_blank" title="StumbleUpon"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/stumbleupon_24.png" style="border: 0;" alt="StumbleUpon" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://technorati.com/ping?url=http://adronbhall.com/blogs/technology__software_development/" target="_blank" title="Technorati"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/technorati_24.png" style="border: 0;" alt="Technorati" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://reddit.com/submit?url=http://adronbhall.com/blogs/technology__software_development/post/2009/08/19/Excel-Helper-Utilities-Library-Part-Two.aspx&amp;amp;title=Excel Helper Utilities Library Part Two" target="_blank" title="Reddit"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/reddit_24.png" style="border: 0;" alt="Reddit" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://del.icio.us/post?url=http://adronbhall.com/blogs/technology__software_development/post/2009/08/19/Excel-Helper-Utilities-Library-Part-Two.aspx&amp;amp;title=Excel Helper Utilities Library Part Two" target="_blank" title="Del.icio.us"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/delicious_24.png" style="border: 0;" alt="Del.icio.us" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://www.newsvine.com/_wine/save?u=http://adronbhall.com/blogs/technology__software_development/post/2009/08/19/Excel-Helper-Utilities-Library-Part-Two.aspx" target="_blank"title="NewsVine"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/newsvine_24.png" style="border: 0;" alt="NewsVine" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://furl.net" target="_blank" title="Furl"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/furl_24.png" style="border: 0;" alt="Furl" /&gt;&lt;/a&gt;&lt;a rel="nofollow" href="http://blinklist.com/submit/" target="_blank" title="BlinkList"&gt;&lt;img src="/blogs/technology__software_development/themes/darkblog/images/socialbookmarks/square/blinklist_24.png" style="border: 0;" alt="BlinkList" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=XO_XtlPt0-g:1XkoDMoBrB8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=XO_XtlPt0-g:1XkoDMoBrB8:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=XO_XtlPt0-g:1XkoDMoBrB8:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=XO_XtlPt0-g:1XkoDMoBrB8:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=XO_XtlPt0-g:1XkoDMoBrB8:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=XO_XtlPt0-g:1XkoDMoBrB8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=XO_XtlPt0-g:1XkoDMoBrB8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=XO_XtlPt0-g:1XkoDMoBrB8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=XO_XtlPt0-g:1XkoDMoBrB8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=XO_XtlPt0-g:1XkoDMoBrB8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=XO_XtlPt0-g:1XkoDMoBrB8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=XO_XtlPt0-g:1XkoDMoBrB8:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=XO_XtlPt0-g:1XkoDMoBrB8:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=XO_XtlPt0-g:1XkoDMoBrB8:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=XO_XtlPt0-g:1XkoDMoBrB8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=XO_XtlPt0-g:1XkoDMoBrB8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=XO_XtlPt0-g:1XkoDMoBrB8:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/LooselyCoupledHumanCodeFactory/~4/XO_XtlPt0-g" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/LooselyCoupledHumanCodeFactory/~3/XO_XtlPt0-g/post.aspx</link>
      <author>adron.nospam@nospam.adronbhall.com (Adron)</author>
      <comments>http://adronbhall.com/blogs/technology__software_development/post/2009/08/19/Excel-Helper-Utilities-Library-Part-Two.aspx#comment</comments>
      <guid isPermaLink="false">http://adronbhall.com/blogs/technology__software_development/post.aspx?id=701df4ae-a397-4f89-b662-efe75c3a5242</guid>
      <pubDate>Wed, 19 Aug 2009 07:35:00 -0800</pubDate>
      <category>How-To, Samples, and Such</category>
      <dc:publisher>Adron</dc:publisher>
      <pingback:server>http://adronbhall.com/blogs/technology__software_development/pingback.axd</pingback:server>
      <pingback:target>http://adronbhall.com/blogs/technology__software_development/post.aspx?id=701df4ae-a397-4f89-b662-efe75c3a5242</pingback:target>
      <slash:comments>6</slash:comments>
      <trackback:ping>http://adronbhall.com/blogs/technology__software_development/trackback.axd?id=701df4ae-a397-4f89-b662-efe75c3a5242</trackback:ping>
      <wfw:comment>http://adronbhall.com/blogs/technology__software_development/post/2009/08/19/Excel-Helper-Utilities-Library-Part-Two.aspx#comment</wfw:comment>
      <wfw:commentRss>http://adronbhall.com/blogs/technology__software_development/syndication.axd?post=701df4ae-a397-4f89-b662-efe75c3a5242</wfw:commentRss>
    <feedburner:origLink>http://adronbhall.com/blogs/technology__software_development/post.aspx?id=701df4ae-a397-4f89-b662-efe75c3a5242</feedburner:origLink></item>
  </channel>
</rss>
