<?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:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" 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:dc="http://purl.org/dc/elements/1.1/" 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>The Agileer</title>
    <link>http://agileer.com/blog/</link>
    <description>Doug's blog</description>
    <language>en-us</language>
    <copyright>Doug Seelinger</copyright>
    <lastBuildDate>Mon, 27 Oct 2008 16:22:48 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.0.7226.0</generator>
    <managingEditor>dseelinger@gmail.com</managingEditor>
    <webMaster>dseelinger@gmail.com</webMaster>
    <geo:lat>39.179076</geo:lat><geo:long>-78.166533</geo:long><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/Agileer" type="application/rss+xml" /><item>
      <trackback:ping>http://agileer.com/blog/Trackback.aspx?guid=a20b54e8-6c7f-4560-8ca0-b4ef038fe8ce</trackback:ping>
      <pingback:server>http://agileer.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://agileer.com/blog/PermaLink,guid,a20b54e8-6c7f-4560-8ca0-b4ef038fe8ce.aspx</pingback:target>
      <dc:creator>Doug Seelinger</dc:creator>
      <wfw:comment>http://agileer.com/blog/CommentView,guid,a20b54e8-6c7f-4560-8ca0-b4ef038fe8ce.aspx</wfw:comment>
      <wfw:commentRss>http://agileer.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=a20b54e8-6c7f-4560-8ca0-b4ef038fe8ce</wfw:commentRss>
      
      <title>Hey, Doug!  Where are you?</title>
      <guid isPermaLink="false">http://agileer.com/blog/PermaLink,guid,a20b54e8-6c7f-4560-8ca0-b4ef038fe8ce.aspx</guid>
      <link>http://feedproxy.google.com/~r/Agileer/~3/ayJzyavn8bQ/HeyDougWhereAreYou.aspx</link>
      <pubDate>Mon, 27 Oct 2008 16:22:48 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
If you've been wondering why I haven't posted lately, it's not because I've been lazy&#xD;
(at least not overly).&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
I've recently been hired by Microsoft and have been drinking from the infamous "Firehose".&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
I've also had the opportunity to host my blog on the MSDN site, which is where you'll&#xD;
be able to find the new content for me - &lt;a href="http://blogs.msdn.com/agileer"&gt;http://blogs.msdn.com/agileer&lt;/a&gt;.&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://agileer.com/blog/aggbug.ashx?id=a20b54e8-6c7f-4560-8ca0-b4ef038fe8ce"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=ayJzyavn8bQ:Cnokqfg5eUk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=ayJzyavn8bQ:Cnokqfg5eUk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=ayJzyavn8bQ:Cnokqfg5eUk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=ayJzyavn8bQ:Cnokqfg5eUk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=ayJzyavn8bQ:Cnokqfg5eUk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=ayJzyavn8bQ:Cnokqfg5eUk:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Agileer/~4/ayJzyavn8bQ" height="1" width="1"/&gt;</description>
      <comments>http://agileer.com/blog/CommentView,guid,a20b54e8-6c7f-4560-8ca0-b4ef038fe8ce.aspx</comments>
      <category>blogging</category>
    <feedburner:origLink>http://agileer.com/blog/2008/10/27/HeyDougWhereAreYou.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://agileer.com/blog/Trackback.aspx?guid=2cbe547c-d62d-4062-a982-2a1574a50de0</trackback:ping>
      <pingback:server>http://agileer.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://agileer.com/blog/PermaLink,guid,2cbe547c-d62d-4062-a982-2a1574a50de0.aspx</pingback:target>
      <dc:creator>Doug Seelinger</dc:creator>
      <wfw:comment>http://agileer.com/blog/CommentView,guid,2cbe547c-d62d-4062-a982-2a1574a50de0.aspx</wfw:comment>
      <wfw:commentRss>http://agileer.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=2cbe547c-d62d-4062-a982-2a1574a50de0</wfw:commentRss>
      
      <title>Hard-Coding Crazy?</title>
      <guid isPermaLink="false">http://agileer.com/blog/PermaLink,guid,2cbe547c-d62d-4062-a982-2a1574a50de0.aspx</guid>
      <link>http://feedproxy.google.com/~r/Agileer/~3/9jBWmPdnUfQ/HardCodingCrazy.aspx</link>
      <pubDate>Mon, 15 Sep 2008 14:52:19 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
The current application that I'm working on is pretty configuration-heavy.  There's&#xD;
even configuration to drive the configuration.  There's configuration that drives&#xD;
the UI that drives the configuration.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Even so, when the product owner recently said, "I think we need to move some of this&#xD;
out of configuration and just hard-code it."  Well... let's just say that I didn't&#xD;
agree.  I do now.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
I recently added a whole lot of flexibility by providing a "plug-in" configuration&#xD;
chooser enabled by... you guessed it - more configuration.  We then deployed&#xD;
the application last week and my app worked nicely.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
However, another application that consumes my code did not fair so well.  It&#xD;
failed each time it was called because of the additional configuration.  Yes,&#xD;
it was a "communication" gaff on my part, but it could have been avoided since we&#xD;
didn't really NEED extra configuration to achieve the plug-in capability.  I&#xD;
could have just hard coded something to the affect of - in MODE1 do X, and in MODE2&#xD;
do Y.  That way we could have executed just fine in production without failure.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Ayende has similar feelings &lt;a href="http://ayende.com/Blog/archive/2008/08/21/Enabling-change-by-hard-coding-everything-the-smart-way.aspx"&gt;here&lt;/a&gt;.&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://agileer.com/blog/aggbug.ashx?id=2cbe547c-d62d-4062-a982-2a1574a50de0"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=9jBWmPdnUfQ:CuRdU5cmFuU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=9jBWmPdnUfQ:CuRdU5cmFuU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=9jBWmPdnUfQ:CuRdU5cmFuU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=9jBWmPdnUfQ:CuRdU5cmFuU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=9jBWmPdnUfQ:CuRdU5cmFuU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=9jBWmPdnUfQ:CuRdU5cmFuU:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Agileer/~4/9jBWmPdnUfQ" height="1" width="1"/&gt;</description>
      <comments>http://agileer.com/blog/CommentView,guid,2cbe547c-d62d-4062-a982-2a1574a50de0.aspx</comments>
    <feedburner:origLink>http://agileer.com/blog/2008/09/15/HardCodingCrazy.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://agileer.com/blog/Trackback.aspx?guid=d0c2c3d9-9bbd-45b6-bba7-086f02dd400e</trackback:ping>
      <pingback:server>http://agileer.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://agileer.com/blog/PermaLink,guid,d0c2c3d9-9bbd-45b6-bba7-086f02dd400e.aspx</pingback:target>
      <dc:creator>Doug Seelinger</dc:creator>
      <wfw:comment>http://agileer.com/blog/CommentView,guid,d0c2c3d9-9bbd-45b6-bba7-086f02dd400e.aspx</wfw:comment>
      <wfw:commentRss>http://agileer.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=d0c2c3d9-9bbd-45b6-bba7-086f02dd400e</wfw:commentRss>
      
      <title>Red, Green, Refactor (then Integrate and Commit)</title>
      <guid isPermaLink="false">http://agileer.com/blog/PermaLink,guid,d0c2c3d9-9bbd-45b6-bba7-086f02dd400e.aspx</guid>
      <link>http://feedproxy.google.com/~r/Agileer/~3/Dj-IEggIHYE/RedGreenRefactorThenIntegrateAndCommit.aspx</link>
      <pubDate>Tue, 09 Sep 2008 15:14:50 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
xDD (TDD, BDD, DDD, etc.) emphasizes the standard "Red, Green, Refactor" mantra in&#xD;
order to prevent the buildup of technical debt.  However, without the addition&#xD;
of Integration testing, or user-acceptance testing, and then committing the code to&#xD;
source control, you're only partway there.  I'm not saying that cycle should&#xD;
execute all five every time (RGRIC, RGRIC, RGRIC), but it should definitely happen&#xD;
when a feature/story has been completed at the very least (perhaps RGR1, RGR2, ...RGRn,&#xD;
IC).  Don't forget that Integrate &amp;amp; Commit or you will end up with some very&#xD;
heavy technical debt rather quickly.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
I'm writing this down in order to remind myself.  I've also placed it in my desktop&#xD;
background via &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb897557.aspx"&gt;BgInfo&lt;/a&gt;.&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://agileer.com/blog/aggbug.ashx?id=d0c2c3d9-9bbd-45b6-bba7-086f02dd400e"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=Dj-IEggIHYE:vCStfW6KPYw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=Dj-IEggIHYE:vCStfW6KPYw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=Dj-IEggIHYE:vCStfW6KPYw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=Dj-IEggIHYE:vCStfW6KPYw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=Dj-IEggIHYE:vCStfW6KPYw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=Dj-IEggIHYE:vCStfW6KPYw:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Agileer/~4/Dj-IEggIHYE" height="1" width="1"/&gt;</description>
      <comments>http://agileer.com/blog/CommentView,guid,d0c2c3d9-9bbd-45b6-bba7-086f02dd400e.aspx</comments>
      <category>Agile</category>
      <category>Agile Testing</category>
    <feedburner:origLink>http://agileer.com/blog/2008/09/09/RedGreenRefactorThenIntegrateAndCommit.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://agileer.com/blog/Trackback.aspx?guid=d66d8d5f-0447-4759-8ed3-b0772b83f07d</trackback:ping>
      <pingback:server>http://agileer.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://agileer.com/blog/PermaLink,guid,d66d8d5f-0447-4759-8ed3-b0772b83f07d.aspx</pingback:target>
      <dc:creator>Doug Seelinger</dc:creator>
      <wfw:comment>http://agileer.com/blog/CommentView,guid,d66d8d5f-0447-4759-8ed3-b0772b83f07d.aspx</wfw:comment>
      <wfw:commentRss>http://agileer.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=d66d8d5f-0447-4759-8ed3-b0772b83f07d</wfw:commentRss>
      
      <title>A couple of Unit Testing Frameworks for .NET</title>
      <guid isPermaLink="false">http://agileer.com/blog/PermaLink,guid,d66d8d5f-0447-4759-8ed3-b0772b83f07d.aspx</guid>
      <link>http://feedproxy.google.com/~r/Agileer/~3/slVZjueJwtc/ACoupleOfUnitTestingFrameworksForNET.aspx</link>
      <pubDate>Tue, 12 Aug 2008 06:35:00 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
(archived from my old blog from my pre-MS days)&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
One of the great things about &lt;a href="http://altnetpedia.com/"&gt;ALT.NET&lt;/a&gt; is the&#xD;
variety of choices it affords.  However, this can also become an albatross around&#xD;
your neck when trying to choose a particular unit testing framework, mocking framework,&#xD;
IoC container, etc.  I mean, if you haven't tried most if not all of the choices,&#xD;
then you don't know what you're missing.  Of course you can read about the different&#xD;
options out there, but that's no substitute for trying them out for yourself. &#xD;
Having said that, there's still a lot of utility in reading about them to exploit&#xD;
them to your advantage.  Thus, I recently moved out of my normal comfort-zone,&#xD;
(&lt;a href="http://nunit.org"&gt;NUnit&lt;/a&gt;, &lt;a href="http://www.ayende.com"&gt;Rhino.Mocks&lt;/a&gt;, &lt;a href="http://castleproject.org"&gt;Windsor&#xD;
Container&lt;/a&gt;) and tried some other technologies.  &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
What follows is a short description of my impression of a couple of Unit Testing frameworks&#xD;
that I've played with in the past couple of weeks.  Note that this is &lt;strong&gt;not &lt;/strong&gt;intended&#xD;
to be an complete portrayal of each tool, but rather how I felt when attempting to&#xD;
use them.&#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;NUnit&#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
This is the old standby, but there's a &lt;a href="http://nunit.org/index.php?p=download#beta"&gt;2.5&#xD;
alpha&lt;/a&gt; that I hadn't tried.  I liked a lot of the changes that have gone into&#xD;
it, but found that too many things that I depend on for integrating with NUnit don't&#xD;
work with 2.5 yet.&#xD;
&lt;/p&gt;&#xD;
        &lt;h4&gt;&#xD;
          &lt;a href="http://www.codeplex.com/xunit"&gt;XUnit&lt;/a&gt;&#xD;
        &lt;/h4&gt;&#xD;
        &lt;p&gt;&#xD;
I like XUnit.  It's simple.  ALT.NET takes a bad rap for being hard to adopt,&#xD;
so one thing I try to emphasize is simplicity.  This is XUnit's strength. &#xD;
If I were starting someone off in Unit Testing, I'd tell them to look at XUnit. &#xD;
I have to admit that I do like the Constraint model in NUnit, however.  It just&#xD;
reads more naturally.  Also, pretty much everything works with NUnit, but not&#xD;
necessarily with XUnit (like &lt;a href="http://www.jetbrains.com/teamcity/"&gt;TeamCity&lt;/a&gt;,&#xD;
currently).  So eventually, I went back to NUnit 2.4.8.  It worked fine&#xD;
with &lt;a href="http://www.testdriven.net/"&gt;TestDriven.NET&lt;/a&gt;, however.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
So the moral of the story is that software (including OSS) has momentum.  Once&#xD;
you get used to a certain way of development, it feels painful to switch, even if&#xD;
the other applications have some nice new features.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Conspicuously missing here is &lt;a href="http://www.mbunit.com/"&gt;MbUnit&lt;/a&gt;, which I've&#xD;
tried in the past but again went back to NUnit eventually.  I'll have to try&#xD;
it out again soon.&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://agileer.com/blog/aggbug.ashx?id=d66d8d5f-0447-4759-8ed3-b0772b83f07d"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=slVZjueJwtc:CtQ9JFck6QQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=slVZjueJwtc:CtQ9JFck6QQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=slVZjueJwtc:CtQ9JFck6QQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=slVZjueJwtc:CtQ9JFck6QQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=slVZjueJwtc:CtQ9JFck6QQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=slVZjueJwtc:CtQ9JFck6QQ:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Agileer/~4/slVZjueJwtc" height="1" width="1"/&gt;</description>
      <comments>http://agileer.com/blog/CommentView,guid,d66d8d5f-0447-4759-8ed3-b0772b83f07d.aspx</comments>
      <category>.NET Framework</category>
      <category>Agile</category>
      <category>Agile Testing</category>
      <category>Automated Testing</category>
      <category>OSS</category>
    <feedburner:origLink>http://agileer.com/blog/2008/08/12/ACoupleOfUnitTestingFrameworksForNET.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://agileer.com/blog/Trackback.aspx?guid=0d55e9d5-a9c5-4a3f-94c1-19be60a7146f</trackback:ping>
      <pingback:server>http://agileer.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://agileer.com/blog/PermaLink,guid,0d55e9d5-a9c5-4a3f-94c1-19be60a7146f.aspx</pingback:target>
      <dc:creator>Doug Seelinger</dc:creator>
      <wfw:comment>http://agileer.com/blog/CommentView,guid,0d55e9d5-a9c5-4a3f-94c1-19be60a7146f.aspx</wfw:comment>
      <wfw:commentRss>http://agileer.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=0d55e9d5-a9c5-4a3f-94c1-19be60a7146f</wfw:commentRss>
      
      <title>Generic Type names</title>
      <guid isPermaLink="false">http://agileer.com/blog/PermaLink,guid,0d55e9d5-a9c5-4a3f-94c1-19be60a7146f.aspx</guid>
      <link>http://feedproxy.google.com/~r/Agileer/~3/lUpTXOc_ieA/GenericTypeNames.aspx</link>
      <pubDate>Tue, 29 Jul 2008 17:28:00 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
The type name that you need to use in config files, such as for &lt;a href="http://en.wikipedia.org/wiki/Inversion_of_control"&gt;IoC&#xD;
containers&lt;/a&gt;, can be quite complex. For me, it's easier just to spike them than&#xD;
to try to remember the format gobbledy-gook. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;code&gt;&#xD;
          &lt;/code&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;pre&gt;public class GenericsTypeSpikes&#xD;
{&#xD;
    [Fact]&#xD;
    public void The_name_of_a_complex_type_can_be_found_in_Type_AssemblyQualifiedName()&#xD;
    {&#xD;
        Type t = typeof(IList&amp;lt;ISource&amp;gt;);&#xD;
&#xD;
        Assert.Equal("System.Collections.Generic.IList`1[[Blah.Core.ISource, Blah.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", t.AssemblyQualifiedName);&#xD;
    }&#xD;
}&lt;/pre&gt;&#xD;
        &lt;img width="0" height="0" src="http://agileer.com/blog/aggbug.ashx?id=0d55e9d5-a9c5-4a3f-94c1-19be60a7146f"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=lUpTXOc_ieA:ptq6KxEugnw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=lUpTXOc_ieA:ptq6KxEugnw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=lUpTXOc_ieA:ptq6KxEugnw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=lUpTXOc_ieA:ptq6KxEugnw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=lUpTXOc_ieA:ptq6KxEugnw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=lUpTXOc_ieA:ptq6KxEugnw:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Agileer/~4/lUpTXOc_ieA" height="1" width="1"/&gt;</description>
      <comments>http://agileer.com/blog/CommentView,guid,0d55e9d5-a9c5-4a3f-94c1-19be60a7146f.aspx</comments>
      <category>.NET Framework</category>
      <category>IoC</category>
    <feedburner:origLink>http://agileer.com/blog/2008/07/29/GenericTypeNames.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://agileer.com/blog/Trackback.aspx?guid=4d44a470-a8b5-4324-a01a-bbb42e4b6e94</trackback:ping>
      <pingback:server>http://agileer.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://agileer.com/blog/PermaLink,guid,4d44a470-a8b5-4324-a01a-bbb42e4b6e94.aspx</pingback:target>
      <dc:creator>Doug Seelinger</dc:creator>
      <wfw:comment>http://agileer.com/blog/CommentView,guid,4d44a470-a8b5-4324-a01a-bbb42e4b6e94.aspx</wfw:comment>
      <wfw:commentRss>http://agileer.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=4d44a470-a8b5-4324-a01a-bbb42e4b6e94</wfw:commentRss>
      
      <title>NDepend</title>
      <guid isPermaLink="false">http://agileer.com/blog/PermaLink,guid,4d44a470-a8b5-4324-a01a-bbb42e4b6e94.aspx</guid>
      <link>http://feedproxy.google.com/~r/Agileer/~3/dd5a-jtu_AU/NDepend.aspx</link>
      <pubDate>Tue, 08 Jul 2008 00:14:25 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
The first time I heard of &lt;a href="http://www.ndepend.com"&gt;NDepend&lt;/a&gt; was on &lt;a href="http://hanselminutes.com/"&gt;Hanselminutes&lt;/a&gt; (&lt;a href="http://hanselminutes.com/default.aspx?showID=66"&gt;show&#xD;
here&lt;/a&gt;).  It sounded intriguing, but at the same time the show went into a&#xD;
lot of detail and used a lot of terminology that I wasn't familiar with, even with&#xD;
a computer science degree.  So it was with a little trepidation that I downloaded&#xD;
a copy and ran it against an application that I was working on at the time.  &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
To be honest, a bit of information overload was involved.  I could see that NDepend&#xD;
had gathered a lot of statistics regarding the code base, but I had no idea how to&#xD;
use it.  I didn't look at NDepend again for a few months.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
The next time I saw NDepend was when I was looking at &lt;a href="http://www.cifactory.org/joomla/"&gt;CI-Factory&lt;/a&gt; last&#xD;
year.  It was included as one of the tools in the continuous integration mix. &#xD;
Same experience - information overload.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Just last week or so I took one more look at NDepend to see if it could help out with&#xD;
the code base I had inherited at work.  I had many places that needed refactoring,&#xD;
but it was hard to tell where to start.  My initial (3-minutes) reaction was&#xD;
the same - too much information after the analysis was complete.  I didn't know&#xD;
where to start.  But this time I stuck it out for more than 5 minutes - and that&#xD;
was all it took for me to fall in love (this time) with NDepend.  NDepend is&#xD;
largely based on "CQL" (Code Query Language), that sorta-kinda looks like&#xD;
SQL, but goes against code instead of a database (hmm... "LINQ to code"&#xD;
can't be very far off).  NDepend has several canned CQL statements that it runs&#xD;
as part of the analysis to help identify coding faux-pas, and the first query, with&#xD;
the description of "&lt;strong&gt;Quick summary of methods to refactor&lt;/strong&gt;"&#xD;
was a treasure-trove of bad juju.  It identified methods that were too big, too&#xD;
complex, too... just about anything that can be quickly called out, and it picked&#xD;
the worst offenders to show.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a title="NDepend1 by dougseelinger, on Flickr" href="http://www.flickr.com/photos/8221201@N02/2647272205/"&gt;&#xD;
            &lt;img height="324" alt="NDepend1" src="http://farm4.static.flickr.com/3182/2647272205_6ac4ffb9e6.jpg" width="500"&gt;&lt;/img&gt;&#xD;
          &lt;/a&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a title="NDepend2 by dougseelinger, on Flickr" href="http://www.flickr.com/photos/8221201@N02/2648102970/"&gt;&#xD;
            &lt;img height="333" alt="NDepend2" src="http://farm4.static.flickr.com/3041/2648102970_0a884dc22d.jpg" width="500"&gt;&lt;/img&gt;&#xD;
          &lt;/a&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a title="NDepend3 by dougseelinger, on Flickr" href="http://www.flickr.com/photos/8221201@N02/2647272471/"&gt;&#xD;
            &lt;img height="334" alt="NDepend3" src="http://farm4.static.flickr.com/3173/2647272471_bec2b2705a.jpg" width="500"&gt;&lt;/img&gt;&#xD;
          &lt;/a&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
NDepend showed me where the worst code was first.  That's what I got for sticking&#xD;
it out this time.  Now there are many, many more features that I have hardly&#xD;
scratched the surface of, and I hope to be able to cover those in later blog posts. &#xD;
For now, just try out &lt;a href="http://www.ndepend.com"&gt;http://www.ndepend.com&lt;/a&gt; and&#xD;
check out your own FBI-most-wanted list.&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://agileer.com/blog/aggbug.ashx?id=4d44a470-a8b5-4324-a01a-bbb42e4b6e94"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=dd5a-jtu_AU:O0MzOGKgPFU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=dd5a-jtu_AU:O0MzOGKgPFU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=dd5a-jtu_AU:O0MzOGKgPFU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=dd5a-jtu_AU:O0MzOGKgPFU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=dd5a-jtu_AU:O0MzOGKgPFU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=dd5a-jtu_AU:O0MzOGKgPFU:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Agileer/~4/dd5a-jtu_AU" height="1" width="1"/&gt;</description>
      <comments>http://agileer.com/blog/CommentView,guid,4d44a470-a8b5-4324-a01a-bbb42e4b6e94.aspx</comments>
      <category>Agile</category>
      <category>Refactoring</category>
    <feedburner:origLink>http://agileer.com/blog/2008/07/08/NDepend.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://agileer.com/blog/Trackback.aspx?guid=9e639d9d-7f3a-41ad-b9b3-95c35d6e264b</trackback:ping>
      <pingback:server>http://agileer.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://agileer.com/blog/PermaLink,guid,9e639d9d-7f3a-41ad-b9b3-95c35d6e264b.aspx</pingback:target>
      <dc:creator>Doug Seelinger</dc:creator>
      <wfw:comment>http://agileer.com/blog/CommentView,guid,9e639d9d-7f3a-41ad-b9b3-95c35d6e264b.aspx</wfw:comment>
      <wfw:commentRss>http://agileer.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=9e639d9d-7f3a-41ad-b9b3-95c35d6e264b</wfw:commentRss>
      
      <title>Is &amp;quot;if/else&amp;quot; better than &amp;quot;if/return&amp;quot;?  If you want to easily refactor, then yes.</title>
      <guid isPermaLink="false">http://agileer.com/blog/PermaLink,guid,9e639d9d-7f3a-41ad-b9b3-95c35d6e264b.aspx</guid>
      <link>http://feedproxy.google.com/~r/Agileer/~3/zQGo0xy6oc4/IsQuotifelsequotBetterThanQuotifreturnquotIfYouWantToEasilyRefactorThenYes.aspx</link>
      <pubDate>Wed, 02 Jul 2008 02:10:01 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
Look at the following piece of code:&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;font face="Courier New"&gt;private void DbMove(CopyInfo info) &#xD;
&lt;br&gt;&#xD;
{ &#xD;
&lt;br&gt;&#xD;
    string targetDb = GetTargetDB(info); &#xD;
&lt;br&gt;&#xD;
    if (targetDb.Equals(string.Empty)) &#xD;
&lt;br&gt;&#xD;
        return; &lt;/font&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;font face="Courier New"&gt;    PrepDbsForCopy(info.SourceDb, targetDb); &lt;/font&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;font face="Courier New"&gt;    GetAllData(info); &#xD;
&lt;br&gt;&#xD;
    if (IsNoSourceData()) &#xD;
&lt;br&gt;&#xD;
        return; &lt;/font&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;font face="Courier New"&gt;    int upperBound = GetUpperBound(); &#xD;
&lt;br&gt;&#xD;
    int rangeCount = GetRange(); &lt;/font&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;font face="Courier New"&gt;    if (CopyNotCurrentlyPossible(_isDisconnected,&#xD;
_isHomogenous)) &#xD;
&lt;br&gt;&#xD;
        return; &lt;/font&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;font face="Courier New"&gt;    DoAsyncDbCopy(info, upperBound, rangeCount,&#xD;
_isDisconnected, _isHomogenous); &#xD;
&lt;br&gt;&#xD;
} &lt;/font&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Now this is a standard piece of code with several "short-circuit" returns&#xD;
in the code.  Short-circuiting is good, but usually only if it appears as the&#xD;
first instruction in the method, and only once.  Otherwise, refactoring the code&#xD;
(as above) is a bear.  Select a section of text to pull out (extract method),&#xD;
and if it contains a "return" or break, or anything like that, then you'll&#xD;
most likely get a complaint from your refactoring tool.  ReSharper 4 complains&#xD;
"Extracted block has exits to different points Proceed with refactoring?(sic)". &#xD;
Besides the pain from lack of proper punctuation (just a typo, I'm sure), the pain&#xD;
of not being able to refactor when you want to is even worse.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
However, you can refactor if you do some manual refactoring (and this is still easier&#xD;
than manually extracting the method).  Instead of:&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;font face="Courier New"&gt;    string targetDb = GetTargetDB(info); &#xD;
&lt;br&gt;&#xD;
    if (targetDb.Equals(string.Empty)) &#xD;
&lt;br&gt;&#xD;
        return;&lt;/font&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;font face="Courier New"&gt;    ...&lt;/font&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;font face="Courier New"&gt;&#xD;
            &lt;font face="Courier New"&gt; &lt;/font&gt;&#xD;
          &lt;/font&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Try the following:&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;font face="Courier New"&gt;    string targetDb = GetTargetDB(info); &#xD;
&lt;br&gt;&#xD;
    if (targetDb.Equals(string.Empty)) &#xD;
&lt;br&gt;&#xD;
        return; &#xD;
&lt;br&gt;&#xD;
    &lt;/font&gt;&#xD;
          &lt;font face="Courier New"&gt;else &#xD;
&lt;br&gt;&#xD;
    &lt;/font&gt;&#xD;
          &lt;font face="Courier New"&gt;{ &#xD;
&lt;br&gt;&#xD;
        &lt;/font&gt;&#xD;
          &lt;font face="Courier New"&gt;... &#xD;
&lt;br&gt;&#xD;
    }&lt;/font&gt;&#xD;
        &lt;/p&gt;&#xD;
Then you can start using your refactoring tools like "Invert If" &#xD;
&lt;p&gt;&lt;font face="Courier New"&gt;    string targetDb = GetTargetDB(info); &#xD;
&lt;br&gt;&#xD;
    if (!targetDb.Equals(string.Empty)) &#xD;
&lt;br&gt;&#xD;
    &lt;/font&gt;&lt;font face="Courier New"&gt;{ &#xD;
&lt;br&gt;&#xD;
        &lt;/font&gt;&lt;font face="Courier New"&gt;... &#xD;
&lt;br&gt;&#xD;
    } &#xD;
&lt;br&gt;&#xD;
    e&lt;/font&gt;&lt;font face="Courier New"&gt;lse &#xD;
&lt;br&gt;&#xD;
        return; &#xD;
&lt;br&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
And "voila," your &lt;font face="Courier New"&gt;else&lt;/font&gt; can be tossed as&#xD;
cruft.  Do so with the other "if"s and yes, you have more indented&#xD;
blocks of code, but indented blocks of code can be easily refactored with "Extract&#xD;
Method."&lt;img width="0" height="0" src="http://agileer.com/blog/aggbug.ashx?id=9e639d9d-7f3a-41ad-b9b3-95c35d6e264b"&gt;&lt;/img&gt;&lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=zQGo0xy6oc4:tcZsjlreQkY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=zQGo0xy6oc4:tcZsjlreQkY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=zQGo0xy6oc4:tcZsjlreQkY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=zQGo0xy6oc4:tcZsjlreQkY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=zQGo0xy6oc4:tcZsjlreQkY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=zQGo0xy6oc4:tcZsjlreQkY:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Agileer/~4/zQGo0xy6oc4" height="1" width="1"/&gt;</description>
      <comments>http://agileer.com/blog/CommentView,guid,9e639d9d-7f3a-41ad-b9b3-95c35d6e264b.aspx</comments>
      <category>Agile</category>
      <category>C#</category>
      <category>Refactoring</category>
    <feedburner:origLink>http://agileer.com/blog/2008/07/02/IsQuotifelsequotBetterThanQuotifreturnquotIfYouWantToEasilyRefactorThenYes.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://agileer.com/blog/Trackback.aspx?guid=e897b8cb-a1e2-4b41-8724-de7d93977013</trackback:ping>
      <pingback:server>http://agileer.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://agileer.com/blog/PermaLink,guid,e897b8cb-a1e2-4b41-8724-de7d93977013.aspx</pingback:target>
      <dc:creator>Doug Seelinger</dc:creator>
      <wfw:comment>http://agileer.com/blog/CommentView,guid,e897b8cb-a1e2-4b41-8724-de7d93977013.aspx</wfw:comment>
      <wfw:commentRss>http://agileer.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=e897b8cb-a1e2-4b41-8724-de7d93977013</wfw:commentRss>
      
      <title>Deleting Objects from Active Directory</title>
      <guid isPermaLink="false">http://agileer.com/blog/PermaLink,guid,e897b8cb-a1e2-4b41-8724-de7d93977013.aspx</guid>
      <link>http://feedproxy.google.com/~r/Agileer/~3/jmRll2tQanM/DeletingObjectsFromActiveDirectory.aspx</link>
      <pubDate>Thu, 19 Jun 2008 02:33:22 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a href="http://en.wikipedia.org/wiki/Active_Directory"&gt;Active Directory&lt;/a&gt; is funny.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Or should I say "&lt;a href="http://technet2.microsoft.com/windowsserver/en/library/2044d125-cfb2-428c-aa8c-c4e5ac007ba41033.mspx?mfr=true"&gt;permissions&#xD;
in Active Directory&lt;/a&gt; are funny."&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
I find that whenever I'm "stuck" on a problem for a good chunk of the day&#xD;
(AD or not) , about 80% of the time it's a permissions issue.  A couple of days&#xD;
ago I was stuck on an issue that I &lt;em&gt;&lt;strong&gt;knew&lt;/strong&gt;&lt;/em&gt; was a permissions&#xD;
issue, but I couldn't figure out &lt;em&gt;&lt;strong&gt;why&lt;/strong&gt;&lt;/em&gt;.  I mean, here&#xD;
I was, supposedly something of an development expert in directory services, but I&#xD;
couldn't get my DirectoryServices code to delete a simple AD object.  I could&#xD;
create objects, but I couldn't delete them.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Now, at this particular client they've tightened down the screws in their environment&#xD;
substantially, so simply increasing my permissions willy-nilly was out of the question. &#xD;
No domain admin privileges here.  I'm not even sure any of the developers on&#xD;
this project even use Active Directory Users &amp;amp; Computers, they seem to only use&#xD;
home-grown LDAP tools for examining AD.  They are able to delete items with one&#xD;
particular home-grown tool, but it was written in VB - in all it's COM, late-binding,&#xD;
who-knows-what's-really-lurking-under-this-IUnknown-interface glory.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Has anyone ever tried to peer into the &lt;a href="http://msdn.microsoft.com/en-us/library/system.security.accesscontrol.objectsecurity_members(VS.80).aspx"&gt;ObjectSecurity&#xD;
class&lt;/a&gt;?  It's not for the faint of heart.  And it wasn't something that&#xD;
I was going to be able to decipher in an afternoon.  So I downloaded the old&#xD;
Windows 2003 admin pack, installed it on my XP development box, and went into all&#xD;
the gory details that are AD ACLs.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
The question was, why could the old VB code delete the object when my DirectoryServices&#xD;
code not do it?  According to AD Users &amp;amp; Computers, the credentials I was&#xD;
using did not have "delete" permission on the object.  I knew that. &#xD;
That's what "access denied" usually means.  How could I explain this&#xD;
to the fellow who was successfully deleting with the VB code and expected me to do&#xD;
the same?  &lt;a href="http://msdn.microsoft.com/en-us/library/system.directoryservices.directoryentry.deletetree(VS.80).aspx"&gt;DirectoryEntry.DeleteTree()&lt;/a&gt; simply&#xD;
would not work.  &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
However, upon further examination, I could see that the OU that I was dealing with&#xD;
did allow my credentials to create and delete child objects.  Hmm...  One&#xD;
more quick test confirmed it.  Although DirectoryEntry.DeleteTree() failed, with&#xD;
the OU I could do &lt;a href="http://msdn.microsoft.com/en-us/library/system.directoryservices.directoryentries.remove(VS.80).aspx"&gt;DirectoryEntry.Children.Remove(objectInQuestion)&lt;/a&gt;. &#xD;
That's just crazy.  Boggles the mind.  But it works.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Of course, if the AD admins want to save another developer further grief (and there's&#xD;
no reason to believe they would - I know some sadistic infrastructure folks), then&#xD;
they'll just add the delete permission and avoid further confusion.&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://agileer.com/blog/aggbug.ashx?id=e897b8cb-a1e2-4b41-8724-de7d93977013"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=jmRll2tQanM:dgJKn0ApGxs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=jmRll2tQanM:dgJKn0ApGxs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=jmRll2tQanM:dgJKn0ApGxs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=jmRll2tQanM:dgJKn0ApGxs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=jmRll2tQanM:dgJKn0ApGxs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=jmRll2tQanM:dgJKn0ApGxs:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Agileer/~4/jmRll2tQanM" height="1" width="1"/&gt;</description>
      <comments>http://agileer.com/blog/CommentView,guid,e897b8cb-a1e2-4b41-8724-de7d93977013.aspx</comments>
      <category>.NET Framework</category>
      <category>Identity Management</category>
    <feedburner:origLink>http://agileer.com/blog/2008/06/19/DeletingObjectsFromActiveDirectory.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://agileer.com/blog/Trackback.aspx?guid=71c904f9-fa3c-4a07-adb7-60b46a1ed53a</trackback:ping>
      <pingback:server>http://agileer.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://agileer.com/blog/PermaLink,guid,71c904f9-fa3c-4a07-adb7-60b46a1ed53a.aspx</pingback:target>
      <dc:creator>Doug Seelinger</dc:creator>
      <wfw:comment>http://agileer.com/blog/CommentView,guid,71c904f9-fa3c-4a07-adb7-60b46a1ed53a.aspx</wfw:comment>
      <wfw:commentRss>http://agileer.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=71c904f9-fa3c-4a07-adb7-60b46a1ed53a</wfw:commentRss>
      
      <title>Starting out with Agile</title>
      <guid isPermaLink="false">http://agileer.com/blog/PermaLink,guid,71c904f9-fa3c-4a07-adb7-60b46a1ed53a.aspx</guid>
      <link>http://feedproxy.google.com/~r/Agileer/~3/HbllJNXSH_Y/StartingOutWithAgile.aspx</link>
      <pubDate>Thu, 12 Jun 2008 02:03:09 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
I heard recently on &lt;a href="http://hanselminutes.com/"&gt;Hanselminutes&lt;/a&gt; (&lt;a href="http://hanselminutes.com/default.aspx?showID=133"&gt;115,&#xD;
I think&lt;/a&gt;) something to the effect of "Alt.NET has a lot to contribute, but&#xD;
the barrier to entry is pretty high." I know that didn't necessarily mean "agile"&#xD;
in particular, but perhaps that was actually the intent. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Is it hard to "do agile"? I'm sure there would be plenty of voices on both&#xD;
sides, but I think there could be more effort put into making it easier or at least&#xD;
better explained. Sure all the "sexy" agile info is out there on the cutting&#xD;
edge, but there are plenty of folks who still need the basics.  &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
My own knowledge of agile principles &amp;amp; practices came over a long period of time.&#xD;
I didn't have the advantage of having a coach. In fact, I remember reading something&#xD;
on &lt;a href="http://msdn.microsoft.com/en-us/default.aspx"&gt;MSDN&lt;/a&gt; around the 2000-2002&#xD;
timeframe in which Anders Hejlsberg was writing about good coding practices, and in&#xD;
particular he mentioned how he used &lt;a href="http://NUnit.org"&gt;NUnit&lt;/a&gt; for his unit&#xD;
tests. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Unit tests? I thought that was like, run the application.  If it doesn't blow&#xD;
up it was a successful unit-test; one scant step beyond compiling. So I didn't learn&#xD;
agile overnight.  Even now I continually tweak my practices in an effort to learn&#xD;
the best way to develop the agile way.  I'll probably continue to do that as&#xD;
long as I write code.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
After thinking about my own experience, I believe that testing is probably the best&#xD;
way to introduce folks to agile concepts. I mean, if it worked for me without a coach&#xD;
(and for the longest time without blogs or many other agile resources), then perhaps&#xD;
testing is a great wedge for breaking folks thought processes into the agile arena. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
So start testing. &#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://agileer.com/blog/aggbug.ashx?id=71c904f9-fa3c-4a07-adb7-60b46a1ed53a"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=HbllJNXSH_Y:VtqlZ7_84bk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=HbllJNXSH_Y:VtqlZ7_84bk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=HbllJNXSH_Y:VtqlZ7_84bk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=HbllJNXSH_Y:VtqlZ7_84bk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=HbllJNXSH_Y:VtqlZ7_84bk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=HbllJNXSH_Y:VtqlZ7_84bk:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Agileer/~4/HbllJNXSH_Y" height="1" width="1"/&gt;</description>
      <comments>http://agileer.com/blog/CommentView,guid,71c904f9-fa3c-4a07-adb7-60b46a1ed53a.aspx</comments>
    <feedburner:origLink>http://agileer.com/blog/2008/06/12/StartingOutWithAgile.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://agileer.com/blog/Trackback.aspx?guid=9aaf77e0-79f5-40a5-8c35-825aad7e9172</trackback:ping>
      <pingback:server>http://agileer.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://agileer.com/blog/PermaLink,guid,9aaf77e0-79f5-40a5-8c35-825aad7e9172.aspx</pingback:target>
      <dc:creator>Doug Seelinger</dc:creator>
      <wfw:comment>http://agileer.com/blog/CommentView,guid,9aaf77e0-79f5-40a5-8c35-825aad7e9172.aspx</wfw:comment>
      <wfw:commentRss>http://agileer.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=9aaf77e0-79f5-40a5-8c35-825aad7e9172</wfw:commentRss>
      <slash:comments>2</slash:comments>
      
      <title>While I Was Sleeping...</title>
      <guid isPermaLink="false">http://agileer.com/blog/PermaLink,guid,9aaf77e0-79f5-40a5-8c35-825aad7e9172.aspx</guid>
      <link>http://feedproxy.google.com/~r/Agileer/~3/1nOHUcv2zcc/WhileIWasSleeping.aspx</link>
      <pubDate>Thu, 05 Jun 2008 03:42:55 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
It's incredible how fast things can change if you turn off your developer technology&#xD;
radar for a few months.  I was pretty comfortable with my knowledge of what was&#xD;
out there around fall of '07.  I'd explored pretty much all the different tools&#xD;
and technologies that had tickled my fancy and even though I wasn't an expert in all&#xD;
of them, I knew that I could pick any one of them up pretty quickly if need be. &#xD;
So down went my radar for awhile.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Holy cow.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Apparently not everyone has been as idle as I have been.  Here is a list that&#xD;
I compiled in a single afternoon of some things (I'm sure there are plenty more) that&#xD;
I'd like to try out in the not-too-distant-future to see if they can assist me in&#xD;
my daily chores.  What follows is not anything near a full review (basically&#xD;
I've pretty much only heard of them at this point), so my descriptions of what they&#xD;
are may be WAY off:&#xD;
&lt;/p&gt;&#xD;
        &lt;table cellspacing="0" cellpadding="2" width="781" border="1"&gt;&#xD;
          &lt;tbody&gt;&#xD;
            &lt;tr&gt;&#xD;
              &lt;td valign="top" width="197"&gt;&#xD;
                &lt;a href="http://www.gallio.org/"&gt;Gallio&lt;/a&gt;&#xD;
              &lt;/td&gt;&#xD;
              &lt;td valign="top" width="582"&gt;&#xD;
Unit testing framework agnostic unit test runner&lt;/td&gt;&#xD;
            &lt;/tr&gt;&#xD;
            &lt;tr&gt;&#xD;
              &lt;td valign="top" width="196"&gt;&#xD;
                &lt;a href="http://git.or.cz/"&gt;Git&lt;/a&gt;&#xD;
              &lt;/td&gt;&#xD;
              &lt;td valign="top" width="582"&gt;&#xD;
Successor to Subversion???&lt;/td&gt;&#xD;
            &lt;/tr&gt;&#xD;
            &lt;tr&gt;&#xD;
              &lt;td valign="top" width="195"&gt;&#xD;
                &lt;a href="http://www.jetbrains.com/teamcity/"&gt;Team City&lt;/a&gt;&#xD;
              &lt;/td&gt;&#xD;
              &lt;td valign="top" width="582"&gt;&#xD;
Continuous Integration competitor to CruiseControl.Net from the makers of ReSharper. &#xD;
And, yes, it's free.&lt;/td&gt;&#xD;
            &lt;/tr&gt;&#xD;
            &lt;tr&gt;&#xD;
              &lt;td valign="top" width="195"&gt;&#xD;
                &lt;a href="http://www.codeplex.com/xunit"&gt;XUnit&lt;/a&gt;&#xD;
              &lt;/td&gt;&#xD;
              &lt;td valign="top" width="582"&gt;&#xD;
The "opinionated" unit testing framework&lt;/td&gt;&#xD;
            &lt;/tr&gt;&#xD;
            &lt;tr&gt;&#xD;
              &lt;td valign="top" width="195"&gt;&#xD;
                &lt;a href="http://research.microsoft.com/Pex/"&gt;Pex&lt;/a&gt;&#xD;
              &lt;/td&gt;&#xD;
              &lt;td valign="top" width="582"&gt;&#xD;
Continuous testing&lt;/td&gt;&#xD;
            &lt;/tr&gt;&#xD;
            &lt;tr&gt;&#xD;
              &lt;td valign="top" width="195"&gt;&#xD;
                &lt;a href="http://research.microsoft.com/SpecSharp/"&gt;Spec#&lt;/a&gt;&#xD;
              &lt;/td&gt;&#xD;
              &lt;td valign="top" width="582"&gt;&#xD;
C# with built-in specifications - gives the user of a framework a better idea about&#xD;
how a class/method will behave.&lt;/td&gt;&#xD;
            &lt;/tr&gt;&#xD;
            &lt;tr&gt;&#xD;
              &lt;td valign="top" width="195"&gt;&#xD;
                &lt;a href="http://quickstarts.asp.net/Futures/dynamicdatacontrols/default.aspx"&gt;ASP.NET&#xD;
3.5 Dynamic Data&lt;/a&gt;&#xD;
              &lt;/td&gt;&#xD;
              &lt;td valign="top" width="582"&gt;&#xD;
Automatic CRUD that may actually work beyond simple scenarios&lt;/td&gt;&#xD;
            &lt;/tr&gt;&#xD;
          &lt;/tbody&gt;&#xD;
        &lt;/table&gt;&#xD;
        &lt;p&gt;&#xD;
How about you?  What kind of technologies have you excited right now?&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://agileer.com/blog/aggbug.ashx?id=9aaf77e0-79f5-40a5-8c35-825aad7e9172"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=1nOHUcv2zcc:XoGOLBx6RAQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=1nOHUcv2zcc:XoGOLBx6RAQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=1nOHUcv2zcc:XoGOLBx6RAQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=1nOHUcv2zcc:XoGOLBx6RAQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=1nOHUcv2zcc:XoGOLBx6RAQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=1nOHUcv2zcc:XoGOLBx6RAQ:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Agileer/~4/1nOHUcv2zcc" height="1" width="1"/&gt;</description>
      <comments>http://agileer.com/blog/CommentView,guid,9aaf77e0-79f5-40a5-8c35-825aad7e9172.aspx</comments>
      <category>.NET Framework</category>
      <category>Agile</category>
      <category>Open Source and Microsoft</category>
    <feedburner:origLink>http://agileer.com/blog/2008/06/05/WhileIWasSleeping.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://agileer.com/blog/Trackback.aspx?guid=e9dd7e4c-0858-499f-8fc2-4814fefe8703</trackback:ping>
      <pingback:server>http://agileer.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://agileer.com/blog/PermaLink,guid,e9dd7e4c-0858-499f-8fc2-4814fefe8703.aspx</pingback:target>
      <dc:creator>Doug Seelinger</dc:creator>
      <wfw:comment>http://agileer.com/blog/CommentView,guid,e9dd7e4c-0858-499f-8fc2-4814fefe8703.aspx</wfw:comment>
      <wfw:commentRss>http://agileer.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=e9dd7e4c-0858-499f-8fc2-4814fefe8703</wfw:commentRss>
      
      <title>Testing Changes to Untested Code</title>
      <guid isPermaLink="false">http://agileer.com/blog/PermaLink,guid,e9dd7e4c-0858-499f-8fc2-4814fefe8703.aspx</guid>
      <link>http://feedproxy.google.com/~r/Agileer/~3/8I2p1xGcchk/TestingChangesToUntestedCode.aspx</link>
      <pubDate>Tue, 03 Jun 2008 21:54:00 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
Let's face it, not everyone has automated unit tests for their code.  You may,&#xD;
however, have inherited some code and are responsible for making changes to that code&#xD;
or for creating additional functionality.  How do you handle such a situation?&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
The best way is to find places in the code into which you can place a pry-bar (not&#xD;
a technical term) and wedge a couple of components apart.  This is the best way,&#xD;
but it's also messy.  &#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;Pry-Bar Method&#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
I believe this comes from &lt;a href="http://www.amazon.com/gp/product/0131177052?ie=UTF8&amp;amp;tag=theagi-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0131177052"&gt;Working&#xD;
Effectively with Legacy Code (Robert C. Martin Series)&lt;/a&gt;&lt;img style="margin: 0px; border-top-style: none! important; border-right-style: none! important; border-left-style: none! important; border-bottom-style: none! important" height="1" alt="" src="http://www.assoc-amazon.com/e/ir?t=theagi-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=0131177052" width="1" border="0"&gt;&lt;/img&gt;,&#xD;
by Michael Feathers, though I haven't read the book personally (I need to get myself&#xD;
a copy).  But I do understand the concept.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Let's say that you have a class Engine, which contains a class Carburetor.  Let's&#xD;
also say that you have to modify some functionality of Engine.  What you need&#xD;
to do is isolate Engine so that it can be tested all by itself.  We don't care&#xD;
about the Carburetor class at this time - it's to be tested elsewhere (eventually). &#xD;
Here are the appropriate steps to "pry away" Engine's dependency on the&#xD;
Carburetor class:&#xD;
&lt;/p&gt;&#xD;
        &lt;ol&gt;&#xD;
          &lt;li&gt;&#xD;
If it doesn't already exist, create an interface for Carburetor's functionality, ICarburetor,&#xD;
such that ICarburetor contains at least all the methods/properties that are called&#xD;
by the Engine class.  Refactoring tools like &lt;a href="http://www.jetbrains.com/resharper/index.html"&gt;JetBrains&#xD;
ReSharper&lt;/a&gt; make this very easy. &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Modify Engine's constructor so that it accepts an ICarburetor parameter and set a&#xD;
private reference to an ICarburetor object(there are variations on this theme, but&#xD;
this is my favorite). &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
In your test, create a mock object of the ICarburetor type, either "manually"&#xD;
or by using a mock framework like Rhino Mocks. &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Set up any expectations of the mock object if required (that's a future post, or just&#xD;
Google &lt;a href="http://www.ayende.com/projects/rhino-mocks.aspx"&gt;Rhino Mocks&lt;/a&gt;). &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Pass your ICarburetor mock object into your Engine constructor. &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Do your test on Engine. &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Confirm your expected state (and/or interactions with the mock object) &#xD;
&lt;/li&gt;&#xD;
        &lt;/ol&gt;&#xD;
        &lt;p&gt;&#xD;
I hear what you're saying, "That's an awful lot of work for testing some code&#xD;
that's not been tested before!"  Yep.  However, if you ever intend&#xD;
to get the whole system under proper testing, then you've got to do it that way. &#xD;
What makes it more painful is when you don't have only one "dependency"&#xD;
(ICarburetor) but perhaps dozens (Carburetor, shocks, exhaust, fuel tank, oil, transmission,&#xD;
etc.).  Whew!!!&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Sometimes you may only be responsible for making a change to code ASAP and then go&#xD;
away.  In this case, you're not likely to lose sleep over the fact that someone&#xD;
has written some untested code (gasp!).  All you're responsible for is a small&#xD;
tweak.  What do you do in this situation?&#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;Lazy Method (perhaps too lazy)&#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
For some reason, I find myself in this situation more often than not, perhaps since&#xD;
as consultants we're not often called in after the fact for long-term code maintenance. &#xD;
You certainly could use the Pry-Bar method above, but it may involve creating a lot&#xD;
of "interface noise" (at least the client sees it that way) when all the&#xD;
client wanted was the web-page widget to appear blue instead of red (ok, that's a&#xD;
little extreme, but you get my point).  So what do we do?  In this case,&#xD;
I'll sometimes resort to the "lazy" method.  In this case, I really&#xD;
do mean lazy.  In agile terminology, &lt;a href="http://c2.com/cgi/wiki?LazyBastard"&gt;being&#xD;
lazy is not always a bad thing&lt;/a&gt;.  However, in this case "lazy" may&#xD;
not be such a good thing, but hey - you do what you can to make people happy.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
So here you simply create a class (these classes tend to "want to be" singletons,&#xD;
but don't have to be) that take data from the "untested" code and return&#xD;
data to the untested code (or don't in the case of "void").  You can&#xD;
test the "lazy class" all you want this way.  Again, not the best way,&#xD;
but perhaps the quickest for short-fuse work. &#xD;
&lt;br&gt;&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Whichever option you choose, it's better than not testing your code at all, which&#xD;
is probably why they called you in for help in the first place.&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://agileer.com/blog/aggbug.ashx?id=e9dd7e4c-0858-499f-8fc2-4814fefe8703"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=8I2p1xGcchk:ebrC14rIwOU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=8I2p1xGcchk:ebrC14rIwOU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=8I2p1xGcchk:ebrC14rIwOU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=8I2p1xGcchk:ebrC14rIwOU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=8I2p1xGcchk:ebrC14rIwOU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=8I2p1xGcchk:ebrC14rIwOU:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Agileer/~4/8I2p1xGcchk" height="1" width="1"/&gt;</description>
      <comments>http://agileer.com/blog/CommentView,guid,e9dd7e4c-0858-499f-8fc2-4814fefe8703.aspx</comments>
      <category>Agile</category>
      <category>Agile Testing</category>
    <feedburner:origLink>http://agileer.com/blog/2008/06/03/TestingChangesToUntestedCode.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://agileer.com/blog/Trackback.aspx?guid=2c5855b4-0dd6-4e95-8db9-36ee3aa69d44</trackback:ping>
      <pingback:server>http://agileer.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://agileer.com/blog/PermaLink,guid,2c5855b4-0dd6-4e95-8db9-36ee3aa69d44.aspx</pingback:target>
      <dc:creator>Doug Seelinger</dc:creator>
      <wfw:comment>http://agileer.com/blog/CommentView,guid,2c5855b4-0dd6-4e95-8db9-36ee3aa69d44.aspx</wfw:comment>
      <wfw:commentRss>http://agileer.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=2c5855b4-0dd6-4e95-8db9-36ee3aa69d44</wfw:commentRss>
      
      <title>Selling Agile (testing)</title>
      <guid isPermaLink="false">http://agileer.com/blog/PermaLink,guid,2c5855b4-0dd6-4e95-8db9-36ee3aa69d44.aspx</guid>
      <link>http://feedproxy.google.com/~r/Agileer/~3/YzBzyPgV6ZM/SellingAgileTesting.aspx</link>
      <pubDate>Thu, 08 May 2008 06:47:00 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
(archived from my old blog from my pre-MS days)&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
It's amazing.  The battle for agility is far from won.  Folks are still&#xD;
not writing unit tests.  Some folks don't even know what unit tests are, or have&#xD;
a badly mangled definition of them.  I'm not only finding this as a consultant&#xD;
at client sites, but among some of my own colleagues as well.  A developer asked&#xD;
me last week, "What is this agile thing?"  I seriously thought that&#xD;
by now people would have at least a basic understanding of what it is.  But alas,&#xD;
it not currently so.  This isn't to castigate anyone.  I'm more than happy&#xD;
to help folks out with "this agile thing".&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
So what is Agile?  I point you towards the &lt;a href="http://agilemanifesto.org/"&gt;Agile&#xD;
Software Development Manifesto&lt;/a&gt;, and &lt;a href="http://agilemanifesto.org/principles.html"&gt;some&#xD;
further explanation&lt;/a&gt;, and the "&lt;a href="http://c2.com/cgi/wiki?ExtremeProgrammingRoadmap"&gt;original&#xD;
wiki&lt;/a&gt;" houses a great deal of info on agile.  There is much info from&#xD;
people more eloquent than I.  Those who don't know what "agile" is&#xD;
usually know what "Google" is.  Use your search engine of choice and&#xD;
explore.  But back to testing...&#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;Test your doggone code, people!&#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
Why? Because I like to sleep at night.  That means that not only do I have to&#xD;
test my own code, but if I depend on your code, you better be testing yours. &#xD;
What?  I don't take your word that you've done an excellent job as a developer? &#xD;
Frankly, no.  I don't trust me, and IMHO I consider myself somewhat more than&#xD;
competent as a developer.  Therefore, if I don't trust myself, why in the world&#xD;
should I trust you?  I read somewhere (I think it was in &lt;a href="http://xprogramming.com/"&gt;Ron&#xD;
Jeffries&lt;/a&gt;' book, &lt;a href="http://www.amazon.com/gp/product/0735619492?ie=UTF8&amp;amp;tag=theagi-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0735619492"&gt;Extreme&#xD;
Programming Adventures in C#&lt;/a&gt;&lt;img style="margin: 0px; border-top-style: none! important; border-right-style: none! important; border-left-style: none! important; border-bottom-style: none! important" height="1" alt="" src="http://www.assoc-amazon.com/e/ir?t=theagi-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=0735619492" width="1" border="0"&gt;&lt;/img&gt;)&#xD;
that without testing, the average developer could only write about five lines of code&#xD;
before introducing a bug.  My own folly has born this out in the past.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
So if you don't test your code and I'm left to work with it, then I have to find the&#xD;
seams within your code and crack it open to wedge in support for testing, as found&#xD;
in &lt;a href="http://www.amazon.com/gp/product/0131177052?ie=UTF8&amp;amp;tag=theagi-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0131177052"&gt;Working&#xD;
Effectively with Legacy Code&lt;/a&gt;&lt;img style="margin: 0px; border-top-style: none! important; border-right-style: none! important; border-left-style: none! important; border-bottom-style: none! important" height="1" alt="" src="http://www.assoc-amazon.com/e/ir?t=theagi-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=0131177052" width="1" border="0"&gt;&lt;/img&gt;,&#xD;
by Michael Feathers.&#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;It's all about confidence&#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
Before I embraced the agile lifestyle, I never really knew if my code was doing what&#xD;
I thought it was supposed to do.  I hoped and prayed that it would.  And&#xD;
really, at that point, prayer was my only option, because I didn't know whether the&#xD;
testers (when we had them) were doing an adequate job.  What did we do when we&#xD;
didn't have testers? Well, testing turned out to be the weeks and months after going&#xD;
live on a production environment - not the best time to do your initial testing. &#xD;
Demos and integration testing were high stress times for me.  I didn't even want&#xD;
to be around when they happened.  I don't enjoy getting yelled at (or looked&#xD;
down upon as incompetent) any more than the next person.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
So I took the time to learn about unit testing.  &lt;a href="http://nunit.org"&gt;NUnit&lt;/a&gt; was&#xD;
the only thing available to me as a .NET developer at the time and it seemed to work&#xD;
well.  Over the years I started with writing unit test - bad unit tests to be&#xD;
sure, but tests nonetheless.  I recently had someone tell me that the code that&#xD;
they had written was too difficult to test and thus it was better to not have any&#xD;
tests at all.  I fail to see the logic in that (besides the fact that there are&#xD;
really very few situations that cannot be adequately unit tested if designed correctly&#xD;
in the first place).  Bad unit tests are SOOOOO.... much better than no unit&#xD;
tests.  Even if your unit tests are brittle and return false-positive results,&#xD;
at the very least you are thinking further about how your code will be utilized. &#xD;
It could be argued that you can have a false sense of security with badly written&#xD;
tests, and while that my be true, what, if not a false sense of security, is someone&#xD;
operating under when they have NO tests?&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Now, with proper testing in place, I have no problem ripping out huge sections of&#xD;
code and replacing them when requirements change.  Why?  With the press&#xD;
of a key I can run all my tests and confirm that yes, all is well.  That for&#xD;
which I am responsible... just works.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
In my organization we're going to start trying to bring all the developers up a notch&#xD;
or two.  If you write tests then that's the beginning - the very beginning. &#xD;
There is so much more to understand about improving the quality of code.  But&#xD;
testing is the very first thing.  If you're not testing your own code - just&#xD;
stop.  Turn around, and take some responsibility for quality without cowering&#xD;
behind some large object when your code goes live to the public.&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://agileer.com/blog/aggbug.ashx?id=2c5855b4-0dd6-4e95-8db9-36ee3aa69d44"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=YzBzyPgV6ZM:5jitnM8QbUk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=YzBzyPgV6ZM:5jitnM8QbUk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=YzBzyPgV6ZM:5jitnM8QbUk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=YzBzyPgV6ZM:5jitnM8QbUk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=YzBzyPgV6ZM:5jitnM8QbUk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=YzBzyPgV6ZM:5jitnM8QbUk:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Agileer/~4/YzBzyPgV6ZM" height="1" width="1"/&gt;</description>
      <comments>http://agileer.com/blog/CommentView,guid,2c5855b4-0dd6-4e95-8db9-36ee3aa69d44.aspx</comments>
      <category>Agile</category>
    <feedburner:origLink>http://agileer.com/blog/2008/05/08/SellingAgileTesting.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://agileer.com/blog/Trackback.aspx?guid=1eada9f3-acee-42fc-93f1-cb512f99030b</trackback:ping>
      <pingback:server>http://agileer.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://agileer.com/blog/PermaLink,guid,1eada9f3-acee-42fc-93f1-cb512f99030b.aspx</pingback:target>
      <dc:creator>Doug Seelinger</dc:creator>
      <wfw:comment>http://agileer.com/blog/CommentView,guid,1eada9f3-acee-42fc-93f1-cb512f99030b.aspx</wfw:comment>
      <wfw:commentRss>http://agileer.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=1eada9f3-acee-42fc-93f1-cb512f99030b</wfw:commentRss>
      
      <title>Coding Blind</title>
      <guid isPermaLink="false">http://agileer.com/blog/PermaLink,guid,1eada9f3-acee-42fc-93f1-cb512f99030b.aspx</guid>
      <link>http://feedproxy.google.com/~r/Agileer/~3/1no4zvqt528/CodingBlind.aspx</link>
      <pubDate>Fri, 25 Apr 2008 17:42:44 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
I remember a cartoon I saw in the early 90's regarding the way that software projects&#xD;
were sometimes run.  The punch line was, "You guys start coding, I'll go&#xD;
find out what they want."  &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
The industry's answer to that was the onset of "Big Requirements Up Front"&#xD;
- (BRUF).  Waterfall.  RUP.  UML full-trip code generation/regeneration&#xD;
- and like most things, it was something of a pendulum swing - reacting to the cowboy&#xD;
coders with a methodology that prevented writing any code that was not useful. &#xD;
Get all those requirements up front - they'll never change.  Implied in the "They'll&#xD;
never change" was that any analyst worth their salt would make sure that you're&#xD;
asking the right questions, then requirements never change.  Requirements only&#xD;
change when you've gotten the wrong requirements.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
But requirements do change, even if you've done a good job up front.  No one&#xD;
has all the info.  Decision makers don't always have the right info.  Things&#xD;
change.  And in RUP - if you were doing it "right" you had oodles of&#xD;
documents to modify if requirements ever "changed."  Not to mention&#xD;
the fact that you're most likely going to hit your client up for more money - they&#xD;
always love to hear that.  Change requests anyone?&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
In reaction to that, agile &amp;amp; XP arose.  Power to the Programmers!  But&#xD;
there are those who have taken that pendulum swing back too far as well.  We&#xD;
don't need no stinking Architects!  The problem with this approach is that you&#xD;
ignore resources that are already available here, sometimes called the "Not Invented&#xD;
Here" syndrome.  I confess that I've been guilty of this.  I love to&#xD;
code.  I'd rather be coding than analyzing any day.  It's not fair to the&#xD;
customer, however, to ignore the groundwork that other's have done in order to get&#xD;
my coding fix.  A few months ago a client had a project where they wanted to&#xD;
provision all accounts from a single request "front end."  I automatically&#xD;
thought "new web site," and for a long time ignored the fact that they already&#xD;
had a MOSS site available internally.  These account requests fit fine within&#xD;
the paradigm of a SharePoint list.  I almost went with a custom web site in spite&#xD;
of that, but in the end, I could not justify the fact that I'd spend a lot more on&#xD;
this custom web site than I would with MOSS.  In the end, I did get to do a good&#xD;
bit of coding, since we had to implement a custom MIIS extensible management agent&#xD;
to get into and out of MOSS.  I did end up getting my coding fix.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
So the moral of the story is - don't assume that you're going to do it better than&#xD;
anyone else who's already done the same.  If you have the opportunity to exploit&#xD;
the collateral of others, do so where it makes sense.&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://agileer.com/blog/aggbug.ashx?id=1eada9f3-acee-42fc-93f1-cb512f99030b"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=1no4zvqt528:1U_ifJ7aVeY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=1no4zvqt528:1U_ifJ7aVeY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=1no4zvqt528:1U_ifJ7aVeY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=1no4zvqt528:1U_ifJ7aVeY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=1no4zvqt528:1U_ifJ7aVeY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=1no4zvqt528:1U_ifJ7aVeY:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Agileer/~4/1no4zvqt528" height="1" width="1"/&gt;</description>
      <comments>http://agileer.com/blog/CommentView,guid,1eada9f3-acee-42fc-93f1-cb512f99030b.aspx</comments>
    <feedburner:origLink>http://agileer.com/blog/2008/04/25/CodingBlind.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://agileer.com/blog/Trackback.aspx?guid=6ee09b57-efed-48a0-ba00-92280bd18d3f</trackback:ping>
      <pingback:server>http://agileer.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://agileer.com/blog/PermaLink,guid,6ee09b57-efed-48a0-ba00-92280bd18d3f.aspx</pingback:target>
      <dc:creator>Doug Seelinger</dc:creator>
      <wfw:comment>http://agileer.com/blog/CommentView,guid,6ee09b57-efed-48a0-ba00-92280bd18d3f.aspx</wfw:comment>
      <wfw:commentRss>http://agileer.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=6ee09b57-efed-48a0-ba00-92280bd18d3f</wfw:commentRss>
      
      <title>The Wonder of GO</title>
      <guid isPermaLink="false">http://agileer.com/blog/PermaLink,guid,6ee09b57-efed-48a0-ba00-92280bd18d3f.aspx</guid>
      <link>http://feedproxy.google.com/~r/Agileer/~3/p_ata2W157c/TheWonderOfGO.aspx</link>
      <pubDate>Fri, 28 Mar 2008 20:20:09 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
Note: There is tech content in here, I promise!&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
I really suck at math.  Some may think that's odd for a "computer guy,"&#xD;
but it's true.  But perhaps it's because of this suckiness that keeps me coming&#xD;
back to it - the challenge of it.  In college, I didn't have a problem with computer&#xD;
science classes (well, except for numerical analysis - math) since I tend to have&#xD;
a pretty linear/logical thought process (or so I wish to believe, perhaps). &#xD;
I knew in 6th grade (around 1977) what I wanted to do - computer programming. &#xD;
The fact that I've stuck with it for so long is unusual, given the number of friends&#xD;
that changed their majors, multiple times, during just the four years of college. &#xD;
Probably only 25% of those people are doing anything even remotely close to what their&#xD;
degree was in.  Again, I'm the unusual one. So I've been the "logical"&#xD;
one, the steady one, for quite awhile.  &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Surprise, surprise - I was in the middle school and high-school &lt;a href="http://en.wikipedia.org/wiki/Chess" target="_blank"&gt;chess&lt;/a&gt; clubs&#xD;
(in addition to football, basketball, track &amp;amp; field, so don't start stereotyping&#xD;
me, thank you very much).  My dad, a West Virginia coal miner at the time, taught&#xD;
me how to play chess when I was in elementary school.  He says he doesn't remember,&#xD;
but it's true.  My best friend in middle school &amp;amp; high-school, and he was&#xD;
my best man as well, was also on those chess teams - another "logical guy,"&#xD;
whom we thought of as our own &lt;a href="http://en.wikipedia.org/wiki/Bobby_Fischer" target="_blank"&gt;Bobby&#xD;
Fischer&lt;/a&gt;.  I went to a several tournaments, but in high-school I caved under&#xD;
pressure, and quit competing in tournaments.  I don't remember my &lt;a href="http://main.uschess.org/" target="_blank"&gt;USCF&lt;/a&gt; rating,&#xD;
that was almost 30 years ago.  I won some and I lost some.  I've continued&#xD;
to play throughout the years, and have taught my kids how to play (no Bobby Fischers&#xD;
here, so far).  Bottom line - chess is fun and challenging. So chess is about&#xD;
the only traditional board game I ever "got into."  &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
I have another confession: I like to watch &lt;a href="http://en.wikipedia.org/wiki/Anime" target="_blank"&gt;anime&lt;/a&gt; with&#xD;
my kids (heck, I like to watch it alone, too.  There, I said it).  I tend&#xD;
towards the &lt;a href="http://en.wikipedia.org/wiki/Sh%C5%8Dnen" target="_blank"&gt;Shonen&lt;/a&gt; variety,&#xD;
even though I have mostly daughters - &lt;a href="http://en.wikipedia.org/wiki/Sailor_Moon" target="_blank"&gt;Sailor&#xD;
Moon&lt;/a&gt; gives me the heebee-geebees.  So about a month ago I started watching&#xD;
one called "&lt;a href="http://www.shonenjump.com/manga/hikarunogo/" target="_blank"&gt;Hikaru&#xD;
No Go&lt;/a&gt;" (Hikaru's Go - &lt;a href="http://en.wikipedia.org/wiki/Hikaru_no_Go" target="_blank"&gt;see&#xD;
Wikipedia&lt;/a&gt;).  The plot was pretty clear after a couple of episodes. &#xD;
The story centers around a kid (Hikaru) and his entrance into the world of &lt;a href="http://en.wikipedia.org/wiki/Go_(board_game)" target="_blank"&gt;"GO",&#xD;
an ancient Asian board game&lt;/a&gt;.  &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Now, I may have heard of Go before, but if so, I don't remember.  I get the same&#xD;
reaction from all my American family &amp;amp; friends - "What's Go?" &#xD;
In &lt;a href="http://www.weiqi.net/" target="_blank"&gt;China&lt;/a&gt;, &lt;a href="http://www.baduk.or.kr/" target="_blank"&gt;Korea&lt;/a&gt; &amp;amp; &lt;a href="http://www.nihonkiin.or.jp/index-e.htm" target="_blank"&gt;Japan&lt;/a&gt; Go&#xD;
is "the bomb."  They follow it the way &lt;a href="http://www.ruschess.com/" target="_blank"&gt;Russians&#xD;
follow the chess world&lt;/a&gt;, which is WAY more than Americans do (see &lt;a href="http://www.amazon.com/gp/product/0140230386?ie=UTF8&amp;amp;tag=theagi-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0140230386"&gt;Searching&#xD;
for Bobby Fischer: The Father of a Prodigy Observes the World of Chess&lt;/a&gt;&lt;img style="margin: 0px; border-top-style: none! important; border-right-style: none! important; border-left-style: none! important; border-bottom-style: none! important" height="1" alt="" src="http://www.assoc-amazon.com/e/ir?t=theagi-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=0140230386" width="1" border="0"&gt;&lt;/img&gt;).&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
I was unprepared for how interesting Hikaru No Go would be.  Perhaps it was my&#xD;
ties to traditional board games, but I was really sucked into the story line. &#xD;
It was also refreshing that it's neither dark nor was their a true "bad guy"&#xD;
in the traditional sense.  It still has the same basic motivation that many Shonen&#xD;
storylines have, which is "try your best and get better and better at what you&#xD;
do."&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
About halfway through the series, I actually started to get interested in the game&#xD;
itself.  I thought, "Hey, if it's that popular in east Asia, maybe there's&#xD;
something to it.  I saw a few decent introductions online, but I really wanted&#xD;
a book.  I found the ONLY book on Go available in the town of Winchester, VA&#xD;
- &lt;a href="http://www.amazon.com/gp/product/0071429778?ie=UTF8&amp;amp;tag=theagi-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0071429778"&gt;Teach&#xD;
Yourself Go&lt;/a&gt;&lt;img style="margin: 0px; border-top-style: none! important; border-right-style: none! important; border-left-style: none! important; border-bottom-style: none! important" height="1" alt="" src="http://www.assoc-amazon.com/e/ir?t=theagi-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=0071429778" width="1" border="0"&gt;&lt;/img&gt;. &#xD;
Now that I've bought that copy, there are no more books on Go available in Winchester&#xD;
- I've looked.  The book is very dense.  You CAN learn Go from it, but it's&#xD;
like learning math from the textbook alone - heaven help you if you miss a concept.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
One thing that this book attempts to explain is why there aren't very many computerized&#xD;
Go "engines," and why the existing ones aren't very strong.  The author&#xD;
believes that it's much more difficult to build a Go engine than, say, a chess engine,&#xD;
which now can pretty much beat any world champion.  There aren't any Go programs&#xD;
that can even beat strong club-level players, much less pro Go players (and yes, there&#xD;
are &lt;a href="http://en.wikipedia.org/wiki/Go_professional" target="_blank"&gt;professional&#xD;
Go players&lt;/a&gt;).  &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Seriously?  No one can write a strong Go engine?  I thought that was hard&#xD;
to believe - until I started to play go.  I'm the one reading the book. &#xD;
I've taught my children just the rules - and they beat the living daylights out of&#xD;
me.  Not just once in awhile, but about 80% of the time!  There is no randomness&#xD;
involved, no dice or anything.  I thought that I just didn't know enough (and&#xD;
I don't) and that a little more studying would help.  So I went to this section&#xD;
that tries to explain &lt;a href="http://en.wikipedia.org/wiki/Go_(board_game)#Capturing_tactics" target="_blank"&gt;how&#xD;
to capture stones&lt;/a&gt;.  Again, this book is a dense, textbook style rather than&#xD;
conversational (which I prefer any day of the week), and I played through the examples,&#xD;
and see this concept of a "net" on the edge of the board.  I see it&#xD;
WORKING, but I can't say WHY it works.  It's almost anti-logical!  I was&#xD;
up at midnight last night raving like a lunatic about how I couldn't see WHY this&#xD;
"net" thing would work (my wife and oldest daughter can confirm that I was&#xD;
on the edge of lunacy).&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
So I'm only about 1/8 of the way through &lt;a href="http://www.amazon.com/gp/product/0071429778?ie=UTF8&amp;amp;tag=theagi-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0071429778"&gt;Teach&#xD;
Yourself Go&lt;/a&gt; and already I see a concept that I have NO IDEA how you would code,&#xD;
since why it works is beyond me.  My wife and oldest daughter tell me that I&#xD;
don't need to know why it works, only that it does.  That is NOT good enough&#xD;
for me.  It seems like there should be an easy explanation, but I don't see it. &#xD;
Not that it couldn't be done EVER, but I have a feeling that you'd have to be a 9-dan&#xD;
Go pro AND a sharp software developer in order to write a strong Go engine. &#xD;
I have a feeling that I know how many of those are around - none.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
That doesn't mean that I'm not going to try, of course.  It looks like the perfect&#xD;
opportunity to get into Silverlight or WPF.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
It's this question of "Why does this work!?!?!?" that is both driving me&#xD;
crazy and fueled my desire to learn this game, as well as some of the "science"&#xD;
involved here.  I'm looking forward to an off-site long-term project with a Chinese&#xD;
colleague who has promised (whether he knows it or not) to become my own personal&#xD;
Go tutor.  &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Come to think of it, the other colleague of this three man team is Russian. &#xD;
Hmm... maybe I'll bring my chess set, along with the Go stones.&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://agileer.com/blog/aggbug.ashx?id=6ee09b57-efed-48a0-ba00-92280bd18d3f"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=p_ata2W157c:25wHBqgZb8I:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=p_ata2W157c:25wHBqgZb8I:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=p_ata2W157c:25wHBqgZb8I:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=p_ata2W157c:25wHBqgZb8I:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=p_ata2W157c:25wHBqgZb8I:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=p_ata2W157c:25wHBqgZb8I:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Agileer/~4/p_ata2W157c" height="1" width="1"/&gt;</description>
      <comments>http://agileer.com/blog/CommentView,guid,6ee09b57-efed-48a0-ba00-92280bd18d3f.aspx</comments>
    <feedburner:origLink>http://agileer.com/blog/2008/03/28/TheWonderOfGO.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://agileer.com/blog/Trackback.aspx?guid=2bf2b915-de03-4a1d-936b-f7f684cfbac6</trackback:ping>
      <pingback:server>http://agileer.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://agileer.com/blog/PermaLink,guid,2bf2b915-de03-4a1d-936b-f7f684cfbac6.aspx</pingback:target>
      <dc:creator>Doug Seelinger</dc:creator>
      <wfw:comment>http://agileer.com/blog/CommentView,guid,2bf2b915-de03-4a1d-936b-f7f684cfbac6.aspx</wfw:comment>
      <wfw:commentRss>http://agileer.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=2bf2b915-de03-4a1d-936b-f7f684cfbac6</wfw:commentRss>
      
      <title>&amp;quot;Heroes Happen Here&amp;quot; Notes part 2</title>
      <guid isPermaLink="false">http://agileer.com/blog/PermaLink,guid,2bf2b915-de03-4a1d-936b-f7f684cfbac6.aspx</guid>
      <link>http://feedproxy.google.com/~r/Agileer/~3/jWv9gLdLFo8/quotHeroesHappenHerequotNotesPart2.aspx</link>
      <pubDate>Thu, 13 Mar 2008 18:07:42 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
Yes, I know.  I have a weird definition of "tomorrow."  Here are&#xD;
my notes from last Thursday's HHH event in Harrisburg, PA:&#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;Session 2: Office Development&#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
Zhiming Xue &lt;a href="http://blogs.msdn.com/zxue"&gt;http://blogs.msdn.com/zxue&lt;/a&gt;&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Talked a bit bout how VSTO isn't an extra in VS 2008, but that it's built in.  &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
One thing I noticed about each of the presenters - they need to discover the &lt;a href="http://www.google.com/url?sa=t&amp;amp;ct=res&amp;amp;cd=1&amp;amp;url=http%3A%2F%2Fwww.microsoft.com%2Fdownloads%2Fdetails.aspx%3Ffamilyid%3D22e69ae4-7e40-4807-8a86-b3d36fab68d3&amp;amp;ei=x2bZR4LxH6eCggSKh4W5CA&amp;amp;usg=AFQjCNG-f-lpIlc6JAc3C6dqAo9O9qOumw&amp;amp;sig2=6X_mWQhacaY764YVJizPjw" target="_blank"&gt;Consolas&#xD;
font&lt;/a&gt;!  Scott Guthrie uses it, should be good enough for these guys.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
He had an interesting use of template expansion.  Before the demo he created&#xD;
some snippets and bound them to keywords inVS (like you do with "ctor" to&#xD;
expand a constructor).  So he'd type something like snip1, then "tab"&#xD;
and get his snippet inserted.  I don't think I've seen that one before, but maybe&#xD;
I'm behind on the power curve.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
I noticed that he spent a good while demoing the "auto include imports/using"&#xD;
feature, which has been in VS for three years now.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Showed using WPF inside an office Panel in word, which was cool.  It took me&#xD;
awhile to realize that it WAS WPF - just goes to show what we "expect" from&#xD;
software nowadays.&#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;Session 3: WPF &amp;amp; C++ (huh?)&#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
This session surprised me.  I really liked the first half-hour.  Not the&#xD;
most authoritative speaker, I could almost feel the BS oozing.  Yes, WPF can&#xD;
do some 3D things (on Vista), but that's not its strength.  WPF isn't challenging&#xD;
any 3D game engines out there, yet.  But the demo was really nice.  I almost&#xD;
had an epiphany... almost.  But I'm still not sure where I'd use WPF in a LoB&#xD;
app.  I had a similar experience but GOT the epiphany back at Tech Ed 97, where&#xD;
I finally understood how the Web could be used as an application platform (there really&#xD;
weren't too many of them around back in early 97).&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
The last half-hour was a total waste.  Completely unconnected to WPF, the speaker&#xD;
began on new features of C++ in VS 2008.  At least I think they were new features. &#xD;
I haven't used C++ in about 10 years or so I can't really say.  Another famous&#xD;
quote from 97 Tech Ed (from Don Box), "I used to code in C++, but then I had&#xD;
a family and had to go home at night."&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
 &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
So that's about it.  There were supposed to be four sessions but one was either&#xD;
combined with the others or just left out (a little confusing).  It was supposed&#xD;
to be about SOwhAt (my term for SOA), but I guess it just didn't happen.  I don't&#xD;
have anything against web services, but I just don't see the big advantage of WCF&#xD;
and w-death-*.&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://agileer.com/blog/aggbug.ashx?id=2bf2b915-de03-4a1d-936b-f7f684cfbac6"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=jWv9gLdLFo8:BC7AI5C47Q0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=jWv9gLdLFo8:BC7AI5C47Q0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=jWv9gLdLFo8:BC7AI5C47Q0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=jWv9gLdLFo8:BC7AI5C47Q0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=jWv9gLdLFo8:BC7AI5C47Q0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=jWv9gLdLFo8:BC7AI5C47Q0:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Agileer/~4/jWv9gLdLFo8" height="1" width="1"/&gt;</description>
      <comments>http://agileer.com/blog/CommentView,guid,2bf2b915-de03-4a1d-936b-f7f684cfbac6.aspx</comments>
    <feedburner:origLink>http://agileer.com/blog/2008/03/13/quotHeroesHappenHerequotNotesPart2.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://agileer.com/blog/Trackback.aspx?guid=ad88e96a-f5c6-4315-b4d3-7fee00b3b60d</trackback:ping>
      <pingback:server>http://agileer.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://agileer.com/blog/PermaLink,guid,ad88e96a-f5c6-4315-b4d3-7fee00b3b60d.aspx</pingback:target>
      <dc:creator>Doug Seelinger</dc:creator>
      <wfw:comment>http://agileer.com/blog/CommentView,guid,ad88e96a-f5c6-4315-b4d3-7fee00b3b60d.aspx</wfw:comment>
      <wfw:commentRss>http://agileer.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=ad88e96a-f5c6-4315-b4d3-7fee00b3b60d</wfw:commentRss>
      <slash:comments>1</slash:comments>
      
      <title>&amp;quot;Heroes Happen Here&amp;quot; Notes</title>
      <guid isPermaLink="false">http://agileer.com/blog/PermaLink,guid,ad88e96a-f5c6-4315-b4d3-7fee00b3b60d.aspx</guid>
      <link>http://feedproxy.google.com/~r/Agileer/~3/wKHo4Z847gE/quotHeroesHappenHerequotNotes.aspx</link>
      <pubDate>Sat, 08 Mar 2008 04:16:36 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
I attended the "&lt;a href="http://www.microsoft.com/heroeshappenhere/default.mspx" target="_blank"&gt;Heroes&#xD;
Happen Here&lt;/a&gt;" event in Harrisburg, PA yesterday.  Not a bad trip overall&#xD;
- the best takeaway was a free copy of Vista Ultimate and Windows Server 2008 (installing&#xD;
now for the first time), though this one is just a one year evaluation license (with&#xD;
a license key).  They only included Visual Studio 2008 Standard, which is pretty&#xD;
useless to me since we already have Team Dev, with the promise of Team Suite in the&#xD;
near future.  I also got a copy of SQL Server 2008, which I might install some&#xD;
day, but honestly, I don't know what big advantage that it holds right now, especially&#xD;
since &lt;em&gt;they didn't even mention SQL 2008 in the Dev Track for the launch event&#xD;
for... what was it? Oh yeah, Visual Studio 2008 (released 4 months ago), Windows Server&#xD;
2008 and &lt;u&gt;SQL Server 2008!&lt;/u&gt;&lt;/em&gt;  &#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;Stuff I Learned:&#xD;
&lt;/h3&gt;&#xD;
        &lt;ul&gt;&#xD;
          &lt;li&gt;&#xD;
PA Interstates around Harrisburg are dangerous. &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;em&gt;Registration&lt;/em&gt;&#xD;
            &lt;strong&gt;&#xD;
            &lt;/strong&gt;was one hour later than I thought. I thought&#xD;
my track started at noon, but that was just registration. Turned out to be a good&#xD;
thing since I was lost on the PA Interstate system. &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
The name tag they give you to stick on your shirt was just large enough to cover the&#xD;
blue printer-ink stain I got on my shirt 5 minutes before I left home for the event. &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;a href="http://www.microsoft.com/uc/products/roundtable.mspx" target="_blank"&gt;Microsoft&#xD;
RoundTable&lt;/a&gt; was very cool (in the Partner Expo area).  It shows a panoramic&#xD;
view of an entire room for video conferencing - set it in the middle of a conference&#xD;
table and it will show both a panoramic view of your room in Live Meeting, but also&#xD;
track the current person speaking (whoever's loudest, basically).  Runs about&#xD;
$3K, but much cheaper than others in its space (according to the blue-shirt I was&#xD;
speaking with). &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Overall, the Partner Expo was very small, with about 1/2 of the exhibits staffed by&#xD;
blue-shirts (Round Table, Windows Mobile, etc.) &#xD;
&lt;/li&gt;&#xD;
        &lt;/ul&gt;&#xD;
        &lt;h3&gt;Dev Track Keynote:&#xD;
&lt;/h3&gt;&#xD;
        &lt;ul&gt;&#xD;
          &lt;li&gt;&#xD;
5 minute video - complete waste of time.  1.5 hours may be too long for a keynote,&#xD;
but 5 minutes is too short.  I was not inspired, which is the whole point of&#xD;
a keynote, right? &#xD;
&lt;/li&gt;&#xD;
        &lt;/ul&gt;&#xD;
        &lt;h3&gt;Dev Track Session 1 - David Solomon &lt;a href="mailto:davidsol@microsoft.com"&gt;davidsol@microsoft.com&lt;/a&gt;:&#xD;
&lt;/h3&gt;&#xD;
        &lt;ul&gt;&#xD;
          &lt;li&gt;&#xD;
This was my favorite session.  Good info, good speaker. &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Lots of emphasis on RIA (aka Silverlight) and collaboration.  This year "collaboration"&#xD;
means devs collaborating with Expressions designers.  No one mentioned the fact&#xD;
that Expression lacks collaboration features itself - like any kind of communication&#xD;
with Team Foundation Server. &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Mort wants more wizards, apparently. &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
VS has better CSS &amp;amp; Javascript capabilities now, though I think FireBug has a&#xD;
better debugger, still. &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Still pushing SOA - "SOA is important" without any reason why in the talk. &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
My random thought while watching a demo - why doesn't the HTML editor automatically&#xD;
insert quotes in your attributes after you type - attrName= ? &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
I didn't realize the Comment/Uncomment  toolbar button works in the HTML and&#xD;
XML editors! &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Lots of interesting things regarding the AJAX extender controls and validators, though&#xD;
I'm still not convinced ASP.NET AJAX is the right way to go. &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Integrated Code Metrics in VS 2008 looks cool - Cyclometric Complexity, Maintainability,&#xD;
Coupling, etc. &#xD;
&lt;/li&gt;&#xD;
        &lt;/ul&gt;&#xD;
        &lt;p&gt;&#xD;
 &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Notes on Session 2 &amp;amp; 3 tomorrow.&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://agileer.com/blog/aggbug.ashx?id=ad88e96a-f5c6-4315-b4d3-7fee00b3b60d"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=wKHo4Z847gE:Md2yG996O0Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=wKHo4Z847gE:Md2yG996O0Q:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=wKHo4Z847gE:Md2yG996O0Q:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=wKHo4Z847gE:Md2yG996O0Q:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=wKHo4Z847gE:Md2yG996O0Q:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=wKHo4Z847gE:Md2yG996O0Q:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Agileer/~4/wKHo4Z847gE" height="1" width="1"/&gt;</description>
      <comments>http://agileer.com/blog/CommentView,guid,ad88e96a-f5c6-4315-b4d3-7fee00b3b60d.aspx</comments>
      <category>Microsoft Development</category>
    <feedburner:origLink>http://agileer.com/blog/2008/03/08/quotHeroesHappenHerequotNotes.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://agileer.com/blog/Trackback.aspx?guid=441123b6-10ee-427b-939e-58f5aadcbd60</trackback:ping>
      <pingback:server>http://agileer.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://agileer.com/blog/PermaLink,guid,441123b6-10ee-427b-939e-58f5aadcbd60.aspx</pingback:target>
      <dc:creator>Doug Seelinger</dc:creator>
      <wfw:comment>http://agileer.com/blog/CommentView,guid,441123b6-10ee-427b-939e-58f5aadcbd60.aspx</wfw:comment>
      <wfw:commentRss>http://agileer.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=441123b6-10ee-427b-939e-58f5aadcbd60</wfw:commentRss>
      
      <title>ScottGu and his faithful Blog</title>
      <guid isPermaLink="false">http://agileer.com/blog/PermaLink,guid,441123b6-10ee-427b-939e-58f5aadcbd60.aspx</guid>
      <link>http://feedproxy.google.com/~r/Agileer/~3/XbAIVGeA4s4/ScottGuAndHisFaithfulBlog.aspx</link>
      <pubDate>Fri, 29 Feb 2008 16:56:01 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
If you want to learn a new Microsoft developer tool or technology, what's the first&#xD;
thing you turn to?  MSDN?  Books? Google?  My blog (well, of course&#xD;
you do, but besides that)?  &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Me? I'm starting to learn to really appreciate the value of what gets posted on &lt;a href="http://weblogs.asp.net/scottgu/" target="_blank"&gt;ScottGu's&#xD;
blog&lt;/a&gt; (Corporate VP of Microsoft's Developer Division).  ASP.NET MVC Framework?  &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/02/12/asp-net-mvc-framework-road-map-update.aspx" target="_blank"&gt;I&#xD;
learned about it there&lt;/a&gt;.  jQuery Intellisense and Ajax?  &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/02/17/feb-17th-links-asp-net-asp-net-ajax-visual-studio-net.aspx" target="_blank"&gt;I&#xD;
learned about it there&lt;/a&gt;.  Silverlight?  Well, if I wanted to know more&#xD;
about it (and I will eventually), &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/02/22/first-look-at-silverlight-2.aspx" target="_blank"&gt;I&#xD;
can learn about it from there, too&lt;/a&gt;.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
I've subscribed to his blog for a good while, but it's almost better to look at it&#xD;
not as a subscription, but as a big reference library  of cool, Microsoft developer...&#xD;
stuff.  Subscribing and seeing the posts come out one at a time is almost anticlimactic,&#xD;
somehow.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Oh, and if you don't find what you need from Scott, you can always subscribe to my&#xD;
blog too: &lt;a title="Feed your aggregator (RSS 2.0)" href="http://feeds.feedburner.com/Agileer"&gt;Feed&#xD;
your aggregator (RSS 2.0)&lt;/a&gt;&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://agileer.com/blog/aggbug.ashx?id=441123b6-10ee-427b-939e-58f5aadcbd60"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=XbAIVGeA4s4:FLb9F_rEAsY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=XbAIVGeA4s4:FLb9F_rEAsY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=XbAIVGeA4s4:FLb9F_rEAsY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=XbAIVGeA4s4:FLb9F_rEAsY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=XbAIVGeA4s4:FLb9F_rEAsY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=XbAIVGeA4s4:FLb9F_rEAsY:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Agileer/~4/XbAIVGeA4s4" height="1" width="1"/&gt;</description>
      <comments>http://agileer.com/blog/CommentView,guid,441123b6-10ee-427b-939e-58f5aadcbd60.aspx</comments>
      <category>blogging</category>
      <category>Microsoft Development</category>
    <feedburner:origLink>http://agileer.com/blog/2008/02/29/ScottGuAndHisFaithfulBlog.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://agileer.com/blog/Trackback.aspx?guid=ac349338-0284-4c6f-807e-4840ee8b0763</trackback:ping>
      <pingback:server>http://agileer.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://agileer.com/blog/PermaLink,guid,ac349338-0284-4c6f-807e-4840ee8b0763.aspx</pingback:target>
      <dc:creator>Doug Seelinger</dc:creator>
      <wfw:comment>http://agileer.com/blog/CommentView,guid,ac349338-0284-4c6f-807e-4840ee8b0763.aspx</wfw:comment>
      <wfw:commentRss>http://agileer.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=ac349338-0284-4c6f-807e-4840ee8b0763</wfw:commentRss>
      
      <title>ReSharper 4.0 &amp;amp; LINQ</title>
      <guid isPermaLink="false">http://agileer.com/blog/PermaLink,guid,ac349338-0284-4c6f-807e-4840ee8b0763.aspx</guid>
      <link>http://feedproxy.google.com/~r/Agileer/~3/PlzqJbMMd2s/ReSharper40AmpLINQ.aspx</link>
      <pubDate>Thu, 28 Feb 2008 22:34:25 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
Unfortunately, as of today (2/28/08), the &lt;a href="http://www.jetbrains.net/confluence/display/ReSharper/ReSharper+4.0+EAP+Notes" target="_blank"&gt;ReSharper&#xD;
4.0 EAP still can't handle LINQ (or partial methods, apparently)&lt;/a&gt;.  However,&#xD;
I just can't give up ReSharper's refactoring capabilities and other goodness, so here's&#xD;
how you can disable the code analysis and IntelliSense in the ReSharper -&amp;gt; Tools&#xD;
menu dialog:&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a title="ReSharperDisable1 by dougseelinger, on Flickr" href="http://www.flickr.com/photos/8221201@N02/2298377163/"&gt;&#xD;
            &lt;img height="248" alt="ReSharperDisable1" src="http://farm4.static.flickr.com/3202/2298377163_5182c6f799_o.png" width="554"&gt;&lt;/img&gt;&#xD;
          &lt;/a&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a title="ReSharperDisable2 by dougseelinger, on Flickr" href="http://www.flickr.com/photos/8221201@N02/2299173122/"&gt;&#xD;
            &lt;img height="226" alt="ReSharperDisable2" src="http://farm4.static.flickr.com/3132/2299173122_7ee4923f49_o.png" width="623"&gt;&lt;/img&gt;&#xD;
          &lt;/a&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
If you don't use &lt;a href="http://msdn.microsoft.com/data/ref/linq/" target="_blank"&gt;LINQ&lt;/a&gt; (or&#xD;
partial methods), just ignore this advice - use ReSharper to the hilt!&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
If you're not yet using ReSharper for VS 2008, I'd still advise that you &lt;a href="http://www.jetbrains.net/confluence/display/ReSharper/ReSharper+4.0+Nightly+Builds" target="_blank"&gt;download&#xD;
the latest nightly build&lt;/a&gt; and give it a try.  You'll not want to go back.&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://agileer.com/blog/aggbug.ashx?id=ac349338-0284-4c6f-807e-4840ee8b0763"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=PlzqJbMMd2s:Y8Flf2PJNcA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=PlzqJbMMd2s:Y8Flf2PJNcA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=PlzqJbMMd2s:Y8Flf2PJNcA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=PlzqJbMMd2s:Y8Flf2PJNcA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=PlzqJbMMd2s:Y8Flf2PJNcA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=PlzqJbMMd2s:Y8Flf2PJNcA:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Agileer/~4/PlzqJbMMd2s" height="1" width="1"/&gt;</description>
      <comments>http://agileer.com/blog/CommentView,guid,ac349338-0284-4c6f-807e-4840ee8b0763.aspx</comments>
      <category>Agile</category>
      <category>Visual Studio</category>
    <feedburner:origLink>http://agileer.com/blog/2008/02/28/ReSharper40AmpLINQ.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://agileer.com/blog/Trackback.aspx?guid=7255109b-0788-41a5-b0f4-f483af475590</trackback:ping>
      <pingback:server>http://agileer.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://agileer.com/blog/PermaLink,guid,7255109b-0788-41a5-b0f4-f483af475590.aspx</pingback:target>
      <dc:creator>Doug Seelinger</dc:creator>
      <wfw:comment>http://agileer.com/blog/CommentView,guid,7255109b-0788-41a5-b0f4-f483af475590.aspx</wfw:comment>
      <wfw:commentRss>http://agileer.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=7255109b-0788-41a5-b0f4-f483af475590</wfw:commentRss>
      <slash:comments>1</slash:comments>
      
      <title>ASP.NET MVC Framework, Ajax, &amp;amp; jQuery</title>
      <guid isPermaLink="false">http://agileer.com/blog/PermaLink,guid,7255109b-0788-41a5-b0f4-f483af475590.aspx</guid>
      <link>http://feedproxy.google.com/~r/Agileer/~3/0BYGQYNZ-Aw/ASPNETMVCFrameworkAjaxAmpJQuery.aspx</link>
      <pubDate>Wed, 27 Feb 2008 19:17:29 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
I've seen a few examples trying to show how to combine the &lt;a href="http://www.asp.net/downloads/3.5-extensions/" target="_blank"&gt;MVC&#xD;
Framework&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/AJAX" target="_blank"&gt;Ajax&lt;/a&gt;. &#xD;
There are even a couple that show you how to use &lt;a href="http://jquery.com/" target="_blank"&gt;jQuery&lt;/a&gt; with&#xD;
MVC.  However, they sometimes leave out a couple of details - like properly passing&#xD;
parameters to the Ajax controller and &lt;em&gt;returning information from the controller&lt;/em&gt; -&#xD;
both are trivial if you've done it before, but if not... well, an example helps.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Let's have a view/page that insults you - that's always fun.  As a bonus, you're&#xD;
insulted via Ajax using jQuery to call an MVC Framework controller.  Let's start&#xD;
with the Controller, as all good MVC practitioners should:&#xD;
&lt;/p&gt;&#xD;
        &lt;blockquote&gt;&#xD;
          &lt;table cellspacing="0" cellpadding="2" width="659" border="2"&gt;&#xD;
            &lt;tbody&gt;&#xD;
              &lt;tr&gt;&#xD;
                &lt;td valign="top" width="655"&gt;&#xD;
                  &lt;pre&gt;namespace JqueryTest1.Controllers&#xD;
{&#xD;
    using System.Web.Mvc;&#xD;
&#xD;
    public class HomeController : Controller&#xD;
    {&#xD;
        [ControllerAction]&#xD;
        public void Index() { RenderView("InsultMe"); }&#xD;
&#xD;
        [ControllerAction]&#xD;
        public void InsultMe() { RenderView("InsultMe"); }&#xD;
&#xD;
        [ControllerAction]&#xD;
        &lt;font color="#ff0000"&gt;public&#xD;
void InsultViaAjax(string who, string what) &lt;/font&gt; { // normally we'd return something&#xD;
more sophisticated than plain text, // but, hey! It's just an example. &lt;font color="#ff0000"&gt;Response.Write("Your&#xD;
" + who + " wears " + what + "!" ); &lt;/font&gt; } } }&lt;/pre&gt;&#xD;
                &lt;/td&gt;&#xD;
              &lt;/tr&gt;&#xD;
            &lt;/tbody&gt;&#xD;
          &lt;/table&gt;&#xD;
        &lt;/blockquote&gt;&#xD;
        &lt;p&gt;&#xD;
It's pretty simple - a couple of controller actions to handle the default view and&#xD;
the "Insult Me" view, which are the same thing in this instance, and an&#xD;
"InsultViaAjax" action that takes its parameters from the Request["xxx"]&#xD;
collections - very nice.  Then my simple Ajax controller puts together an original&#xD;
insult from the parameters and writes it back out to the response stream.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Next we have the Site.Master page, which we've just modified to contain the references&#xD;
to the jQuery scripts.  In order to have some useful intellisense we add a second&#xD;
reference to a "dummy" jQuery script, which contains only the information&#xD;
required for jQuery intellisense, basically empty shells with XML documentation comments. &#xD;
You can get the jQuery intellisense script from &lt;a href="http://blogs.ipona.com/james/archive/2008/02/15/JQuery-IntelliSense-in-Visual-Studio-2008.aspx" target="_blank"&gt;here&lt;/a&gt;.&#xD;
&lt;/p&gt;&#xD;
        &lt;blockquote&gt;&#xD;
          &lt;table cellspacing="0" cellpadding="2" width="659" border="2"&gt;&#xD;
            &lt;tbody&gt;&#xD;
              &lt;tr&gt;&#xD;
                &lt;td valign="top" width="655"&gt;&#xD;
                  &lt;pre&gt;&amp;lt;%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" &#xD;
    Inherits="JqueryTest1.Views.Layouts.Site" %&amp;gt;&#xD;
&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &#xD;
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&amp;gt;&#xD;
&amp;lt;html xmlns="http://www.w3.org/1999/xhtml"&amp;gt;&#xD;
&amp;lt;head runat="server"&amp;gt;&#xD;
    &amp;lt;title&amp;gt;My Sample MVC Application&amp;lt;/title&amp;gt;&#xD;
    &amp;lt;link href="../../Content/Site.css" rel="stylesheet" type="text/css"  /&amp;gt;&lt;/pre&gt;&#xD;
                  &lt;pre&gt;&#xD;
                    &lt;font color="#ff0000"&gt;&amp;lt;script src="../../Content/javascript/jquery-1.2.3.js"&#xD;
type="text/javascript" /&amp;gt; &amp;lt;!-- this is a little trickery to get intellisense&#xD;
to work well for jQuery --&amp;gt; &amp;lt;asp:Placeholder runat="server" visible="false"&amp;gt;&#xD;
&amp;lt;script src="../../Content/javascript/jquery-1.2.3-intellisense.js" type="text/javascript"&#xD;
/&amp;gt; &amp;lt;/asp:Placeholder&amp;gt; &lt;/font&gt;&#xD;
                  &lt;/pre&gt;&#xD;
                  &lt;pre&gt;&amp;lt;/head&amp;gt;&#xD;
&amp;lt;body&amp;gt;&#xD;
    &amp;lt;div id="inner"&amp;gt;&#xD;
    &#xD;
        &amp;lt;div id="header"&amp;gt;&#xD;
            &amp;lt;h1&amp;gt;An Insulting Sample MVC Application&amp;lt;/h1&amp;gt;&#xD;
        &amp;lt;/div&amp;gt;&#xD;
        &#xD;
        &amp;lt;div id="maincontent"&amp;gt;&#xD;
            &amp;lt;asp:ContentPlaceHolder ID="MainContentPlaceHolder" runat="server"&amp;gt;&#xD;
            &amp;lt;/asp:ContentPlaceHolder&amp;gt;&#xD;
        &amp;lt;/div&amp;gt;&#xD;
   &#xD;
   &amp;lt;/div&amp;gt;&#xD;
&amp;lt;/body&amp;gt;&#xD;
&amp;lt;/html&amp;gt;&lt;/pre&gt;&#xD;
                &lt;/td&gt;&#xD;
              &lt;/tr&gt;&#xD;
            &lt;/tbody&gt;&#xD;
          &lt;/table&gt;&#xD;
        &lt;/blockquote&gt;&#xD;
        &lt;p&gt;&#xD;
And finally the view itself, InsultMe.aspx.&#xD;
&lt;/p&gt;&#xD;
        &lt;blockquote&gt;&#xD;
          &lt;table cellspacing="0" cellpadding="2" width="659" border="2"&gt;&#xD;
            &lt;tbody&gt;&#xD;
              &lt;tr&gt;&#xD;
                &lt;td valign="top" width="655"&gt;&#xD;
                  &lt;pre&gt;&amp;lt;%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" &#xD;
    AutoEventWireup="true" CodeBehind="InsultMe.aspx.cs" &#xD;
    Inherits="JqueryTest1.Views.Home.InsultMe" Title="Insulting Example" %&amp;gt;&#xD;
&amp;lt;asp:Content ID="Content1" ContentPlaceHolderID="MainContentPlaceHolder" &#xD;
    runat="server"&amp;gt;&#xD;
&amp;lt;form id="insult-form" action="NA"&amp;gt;&#xD;
    &amp;lt;fieldset&amp;gt;&#xD;
        &amp;lt;legend&amp;gt;Insult Me&amp;lt;/legend&amp;gt;&#xD;
        &amp;lt;label for="who"&amp;gt;Your relation:&amp;lt;/label&amp;gt;&#xD;
        &amp;lt;input type="text" id="who" name="who" value="mamma" /&amp;gt;&#xD;
        &amp;lt;br /&amp;gt;&#xD;
        &amp;lt;label for="what"&amp;gt;Footwear:&amp;lt;/label&amp;gt;&#xD;
        &amp;lt;input type="text" id="what" name="what" value="combat boots" /&amp;gt;&#xD;
        &amp;lt;br /&amp;gt;&#xD;
        &amp;lt;input type="submit" id="insult-me" name="insult-me" &#xD;
            value="Insult me now" /&amp;gt;&#xD;
    &amp;lt;/fieldset&amp;gt;&#xD;
&amp;lt;/form&amp;gt;&#xD;
&#xD;
&amp;lt;script type="text/javascript"&amp;gt;&#xD;
&lt;font color="#ff0000"&gt; $(document).ready(function&#xD;
() { // when the document is all ready, $("#insult-form").submit(function()&#xD;
{ // hijack the form's submission, &lt;strong&gt; $.post(&lt;/strong&gt; // and replace it with&#xD;
an Ajax call &lt;strong&gt;'/home/InsultViaAjax', $("#insult-form").serialize(),&#xD;
function(returnVal) { alert('Here it comes: ' + returnVal); });&lt;/strong&gt; return false;&#xD;
// stop the actual html form submission }); // a little eye-candy to hide the form&#xD;
until the ajax call is complete jQuery().ajaxStart(function() { $("#insult-form").fadeOut("slow");&#xD;
}); jQuery().ajaxStop(function() { $("#insult-form").fadeIn("fast");&#xD;
}); &lt;/font&gt; }); &amp;lt;/script&amp;gt; &amp;lt;/asp:Content&amp;gt;&lt;/pre&gt;&#xD;
                &lt;/td&gt;&#xD;
              &lt;/tr&gt;&#xD;
            &lt;/tbody&gt;&#xD;
          &lt;/table&gt;&#xD;
        &lt;/blockquote&gt;&#xD;
        &lt;p&gt;&#xD;
Do you want to watch it all happening? Love those morbid details? Then check out &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/1843" target="_blank"&gt;FireBug&lt;/a&gt;,&#xD;
an add-on to &lt;a href="http://www.mozilla.com" target="_blank"&gt;FireFox&lt;/a&gt; that makes&#xD;
it easy to set breakpoints and step through the JavaScript code.&#xD;
&lt;/p&gt;&#xD;
        &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:c093ec39-ae45-4cad-87cf-cd274a85f7ba" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati&#xD;
Tags: &lt;a href="http://technorati.com/tags/jQuery" rel="tag"&gt;jQuery&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Ajax" rel="tag"&gt;Ajax&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ASP.NET" rel="tag"&gt;ASP.NET&lt;/a&gt;&lt;/div&gt;&#xD;
        &lt;img width="0" height="0" src="http://agileer.com/blog/aggbug.ashx?id=7255109b-0788-41a5-b0f4-f483af475590"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=0BYGQYNZ-Aw:g15neHjOzY4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=0BYGQYNZ-Aw:g15neHjOzY4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=0BYGQYNZ-Aw:g15neHjOzY4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=0BYGQYNZ-Aw:g15neHjOzY4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=0BYGQYNZ-Aw:g15neHjOzY4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=0BYGQYNZ-Aw:g15neHjOzY4:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Agileer/~4/0BYGQYNZ-Aw" height="1" width="1"/&gt;</description>
      <comments>http://agileer.com/blog/CommentView,guid,7255109b-0788-41a5-b0f4-f483af475590.aspx</comments>
      <category>Ajax</category>
      <category>ASP.NET</category>
      <category>jQuery</category>
    <feedburner:origLink>http://agileer.com/blog/2008/02/27/ASPNETMVCFrameworkAjaxAmpJQuery.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://agileer.com/blog/Trackback.aspx?guid=170ad66a-aab3-4021-9928-6a5190894e4c</trackback:ping>
      <pingback:server>http://agileer.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://agileer.com/blog/PermaLink,guid,170ad66a-aab3-4021-9928-6a5190894e4c.aspx</pingback:target>
      <dc:creator>Doug Seelinger</dc:creator>
      <wfw:comment>http://agileer.com/blog/CommentView,guid,170ad66a-aab3-4021-9928-6a5190894e4c.aspx</wfw:comment>
      <wfw:commentRss>http://agileer.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=170ad66a-aab3-4021-9928-6a5190894e4c</wfw:commentRss>
      
      <title>Choosing a JavaScript Library</title>
      <guid isPermaLink="false">http://agileer.com/blog/PermaLink,guid,170ad66a-aab3-4021-9928-6a5190894e4c.aspx</guid>
      <link>http://feedproxy.google.com/~r/Agileer/~3/avZnvO535wQ/ChoosingAJavaScriptLibrary.aspx</link>
      <pubDate>Tue, 26 Feb 2008 15:14:23 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
Up until recently, I had pretty much ignored &lt;a href="http://en.wikipedia.org/wiki/JavaScript" target="_blank"&gt;JavaScript&lt;/a&gt;. &#xD;
The last time I remember using it heavily was back in the old &lt;a href="http://en.wikipedia.org/wiki/Active_Server_Pages" target="_blank"&gt;classic&#xD;
ASP&lt;/a&gt; days.  But when &lt;a href="http://www.asp.net/" target="_blank"&gt;ASP.NET&#xD;
WebForms&lt;/a&gt; came out, it handled all the nasty client-side stuff for you, so I was&#xD;
free to "think elsewhere".  However, with the advent of &lt;a href="http://www.rubyonrails.org/" target="_blank"&gt;Ruby&#xD;
on Rails&lt;/a&gt;, &lt;a href="http://www.castleproject.org/monorail/" target="_blank"&gt;Monorail&lt;/a&gt;,&#xD;
and the &lt;a href="http://www.asp.net/downloads/3.5-extensions/" target="_blank"&gt;ASP.NET&#xD;
MVC Framework&lt;/a&gt;, people are wondering if the WebForms paradigm (attempting to design&#xD;
a web-app the same as a stateful thick-client) was such a good way to go after all.  &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
One side-effect of ditching WebForms is that you lose all those lovely &lt;a href="http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols(VS.85).aspx" target="_blank"&gt;WebControls&#xD;
- DatePickers, DataGrids, Wizards - even TextBoxes and Buttons&lt;/a&gt;.  What did&#xD;
we use before TextBoxes and Buttons?  Remember &amp;lt;input /&amp;gt;?  Yeah, it&#xD;
really has been awhile.  At first blush, it would seem like switching from WebForms&#xD;
is a non-starter - that it would just be too complicated to do things "the old-fashioned&#xD;
way."  And if that were the case, it would be a correct assumption.  &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
However, while we were all in our own WebForms-induced sleep, the rest of the world&#xD;
went on.  They did not have WebControls, and they didn't like working "the old-fashioned&#xD;
way" any more than we did.  So what did they do?  Up until about 2005, I'm&#xD;
not really sure.  But starting around 2005, some general purpose JavaScript libraries&#xD;
began to emerge that were truly helpful. &lt;a href="http://www.prototypejs.org/" target="_blank"&gt;Prototype&lt;/a&gt;, &lt;a href="http://jquery.com/" target="_blank"&gt;jQuery&lt;/a&gt;, &lt;a href="http://developer.yahoo.com/yui/" target="_blank"&gt;YUI&lt;/a&gt;,&#xD;
and &lt;a href="http://dojotoolkit.org/" target="_blank"&gt;Dojo&lt;/a&gt; in particular are browser-only&#xD;
(no server requirements), open-source libraries.  I need to decide which one&#xD;
that I'm going to commit to, and I've found &lt;a href="http://www.slideshare.net/jeresig/javascript-library-overview/" target="_blank"&gt;an&#xD;
excellent set of online slides describing the differences between the available libraries&#xD;
out there&lt;/a&gt;.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
What about &lt;a href="http://www.asp.net/ajax/" target="_blank"&gt;ASP.NET Ajax (Atlas)&lt;/a&gt;? &#xD;
Well, one problem is that it's tied to both the client and server for full functionality. &#xD;
It's also built mainly for WebControls, which aren't available in MVC context (no&#xD;
viewstate or postbacks).  I understand that there is a JavaScript library supporting&#xD;
the client-side, but I haven't yet found anyone who's using it exclusive of server-side&#xD;
support, and certainly none that would defend it against something like Prototype&#xD;
or jQuery.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
So I think I'll go with jQuery for now.  It seems to have the most concise "syntax", &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/02/17/feb-17th-links-asp-net-asp-net-ajax-visual-studio-net.aspx" target="_blank"&gt;has&#xD;
intellisense and ajax support (of course) in VisualStudio 2008&lt;/a&gt;, Granted, the slides&#xD;
I mentioned previously were put together by one of the authors of jQuery, but it still&#xD;
looks impressive... or maybe I just like jQuery's logo... &#xD;
&lt;br&gt;&#xD;
it looks like &lt;a href="http://en.wikipedia.org/wiki/Devo" target="_blank"&gt;Devo&lt;/a&gt;. &#xD;
&lt;br&gt;&lt;a title="devo by dougseelinger, on Flickr" href="http://www.flickr.com/photos/8221201@N02/2294101254/"&gt;&lt;img height="160" alt="devo" src="http://farm4.static.flickr.com/3152/2294101254_821333f967_o.jpg" width="336"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://agileer.com/blog/aggbug.ashx?id=170ad66a-aab3-4021-9928-6a5190894e4c"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=avZnvO535wQ:y3fmLMlOMWI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=avZnvO535wQ:y3fmLMlOMWI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=avZnvO535wQ:y3fmLMlOMWI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=avZnvO535wQ:y3fmLMlOMWI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=avZnvO535wQ:y3fmLMlOMWI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=avZnvO535wQ:y3fmLMlOMWI:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Agileer/~4/avZnvO535wQ" height="1" width="1"/&gt;</description>
      <comments>http://agileer.com/blog/CommentView,guid,170ad66a-aab3-4021-9928-6a5190894e4c.aspx</comments>
    <feedburner:origLink>http://agileer.com/blog/2008/02/26/ChoosingAJavaScriptLibrary.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://agileer.com/blog/Trackback.aspx?guid=79ac819f-b650-44b9-b8aa-2ed3dbf9099d</trackback:ping>
      <pingback:server>http://agileer.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://agileer.com/blog/PermaLink,guid,79ac819f-b650-44b9-b8aa-2ed3dbf9099d.aspx</pingback:target>
      <dc:creator>Doug Seelinger</dc:creator>
      <wfw:comment>http://agileer.com/blog/CommentView,guid,79ac819f-b650-44b9-b8aa-2ed3dbf9099d.aspx</wfw:comment>
      <wfw:commentRss>http://agileer.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=79ac819f-b650-44b9-b8aa-2ed3dbf9099d</wfw:commentRss>
      
      <title>STSDEV &amp;amp; Visual Studio 2008</title>
      <guid isPermaLink="false">http://agileer.com/blog/PermaLink,guid,79ac819f-b650-44b9-b8aa-2ed3dbf9099d.aspx</guid>
      <link>http://feedproxy.google.com/~r/Agileer/~3/ZH5cdHrI1Xg/STSDEVAmpVisualStudio2008.aspx</link>
      <pubDate>Fri, 22 Feb 2008 03:10:11 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a href="http://www.codeplex.com/stsdev" target="_blank"&gt;STSDEV is a code generation&#xD;
tool on CodePlex&lt;/a&gt; for SharePoint, kind of like my &lt;a href="http://agileer.com/blog/2007/10/10/NewVersionOfPoShGenAvailable002.aspx" target="_blank"&gt;PoShGen&lt;/a&gt;,&#xD;
except much more polished.  It generates a starting project for several different&#xD;
kinds of scenarios - SharePoint Solutions, Features, &amp;amp; Web Parts.  I tried&#xD;
to bring it up on a box with Visual Studio 2008, however, and the app crashed. &#xD;
It was trying to use the Microsoft.Build.BuildEngine.Engine object and fails. &#xD;
I noticed that MsBuild.exe seems to work fine, so I posted a patch on CodePlex that&#xD;
replaces the routine that attempts to build the project with code that shells out&#xD;
to console (it's already a console app, so it uses the same window).  With that&#xD;
it works fine in 2008 and should work fine for VS2005, too.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
You can get the patch for STSDEV &lt;a href="http://www.codeplex.com/stsdev/SourceControl/PatchList.aspx" target="_blank"&gt;here&lt;/a&gt;.&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://agileer.com/blog/aggbug.ashx?id=79ac819f-b650-44b9-b8aa-2ed3dbf9099d"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=ZH5cdHrI1Xg:bwqP4hs32qI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=ZH5cdHrI1Xg:bwqP4hs32qI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=ZH5cdHrI1Xg:bwqP4hs32qI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=ZH5cdHrI1Xg:bwqP4hs32qI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=ZH5cdHrI1Xg:bwqP4hs32qI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=ZH5cdHrI1Xg:bwqP4hs32qI:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Agileer/~4/ZH5cdHrI1Xg" height="1" width="1"/&gt;</description>
      <comments>http://agileer.com/blog/CommentView,guid,79ac819f-b650-44b9-b8aa-2ed3dbf9099d.aspx</comments>
      <category>.NET Framework</category>
      <category>MOSS</category>
      <category>SharePoint</category>
    <feedburner:origLink>http://agileer.com/blog/2008/02/22/STSDEVAmpVisualStudio2008.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://agileer.com/blog/Trackback.aspx?guid=b7d6f4c3-b49b-4174-87fd-c5cf8de23856</trackback:ping>
      <pingback:server>http://agileer.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://agileer.com/blog/PermaLink,guid,b7d6f4c3-b49b-4174-87fd-c5cf8de23856.aspx</pingback:target>
      <dc:creator>Doug Seelinger</dc:creator>
      <wfw:comment>http://agileer.com/blog/CommentView,guid,b7d6f4c3-b49b-4174-87fd-c5cf8de23856.aspx</wfw:comment>
      <wfw:commentRss>http://agileer.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=b7d6f4c3-b49b-4174-87fd-c5cf8de23856</wfw:commentRss>
      
      <title>SharePoint Blog Tag Clouds</title>
      <guid isPermaLink="false">http://agileer.com/blog/PermaLink,guid,b7d6f4c3-b49b-4174-87fd-c5cf8de23856.aspx</guid>
      <link>http://feedproxy.google.com/~r/Agileer/~3/QEa9mYRdIj8/SharePointBlogTagClouds.aspx</link>
      <pubDate>Wed, 20 Feb 2008 23:27:28 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
As I've said before, my organization does an awful lot of &lt;a href="http://www.microsoft.com/sharepoint/default.mspx" target="_blank"&gt;SharePoint&lt;/a&gt; work. &#xD;
Since button-pushing really isn't my thing, I've got only a few options when it comes&#xD;
to coding most SharePoint projects:&#xD;
&lt;/p&gt;&#xD;
        &lt;ul&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;a href="http://blah.winsmarts.com/2006-8-SharePoint_2007__Authoring_custom_workflows_using_SharePoint_Designer.aspx" target="_blank"&gt;Custom&#xD;
Workflow&lt;/a&gt;&#xD;
          &lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;a href="http://blah.winsmarts.com/2006/05/14/writing-custom-webparts-for-sharepoint-2007.aspx" target="_blank"&gt;Custom&#xD;
Web Parts&lt;/a&gt;&#xD;
          &lt;/li&gt;&#xD;
        &lt;/ul&gt;&#xD;
        &lt;p&gt;&#xD;
I've started to duplicate this blog on our internal MOSS server, and there's something&#xD;
that I've missed about dasBlog that's not available in WSS or MOSS blogs - &lt;a href="http://en.wikipedia.org/wiki/Tag_cloud" target="_blank"&gt;Tag&#xD;
Clouds&lt;/a&gt;.  That sounds like a good place to get my feet wet in Web Part development. &#xD;
I know that there are already &lt;a href="http://linkbun.ch/28m" target="_blank"&gt;several&#xD;
web parts available that provide tag clouds for MOSS&lt;/a&gt;, but of course, they're "&lt;a href="http://en.wikipedia.org/wiki/Not_Invented_Here" target="_blank"&gt;not&#xD;
invented here&lt;/a&gt;".  No, seriously, this is purely for my own educational&#xD;
purposes, so even if I do provide a solution to the general public, there's certainly&#xD;
no assumption that it would be any better than what's already available.  This&#xD;
project will let me explore several interesting technologies:&#xD;
&lt;/p&gt;&#xD;
        &lt;ul&gt;&#xD;
          &lt;li&gt;&#xD;
Web Part development (of course)&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;a href="http://www.bluedoglimited.com/SharePointThoughts/ViewPost.aspx?ID=249" target="_blank"&gt;Code&#xD;
Access Security (CAS) in SharePoint&lt;/a&gt;&#xD;
          &lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;a href="http://www.codeplex.com/stsdev" target="_blank"&gt;STSDEV&lt;/a&gt;&#xD;
          &lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;a href="http://www.codeplex.com/unity" target="_blank"&gt;Microsoft Unity&lt;/a&gt; (though&#xD;
I'd rather play with &lt;a href="http://structuremap.sourceforge.net/" target="_blank"&gt;StructureMap&lt;/a&gt; &amp;lt;sigh/&amp;gt;.)&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;a href="http://msdn2.microsoft.com/en-us/tfs2008/default.aspx" target="_blank"&gt;VSTS&#xD;
2008 TFS Team Build&lt;/a&gt;&#xD;
          &lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
any other random bits of new tech that catch my eye!&lt;/li&gt;&#xD;
        &lt;/ul&gt;&#xD;
        &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:bbbd0d0f-8740-435d-9fbb-fcbce218ae69" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati&#xD;
Tags: &lt;a href="http://technorati.com/tags/SharePoint" rel="tag"&gt;SharePoint&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Web%20Parts" rel="tag"&gt;Web&#xD;
Parts&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Unity" rel="tag"&gt;Unity&lt;/a&gt;&lt;/div&gt;&#xD;
        &lt;img width="0" height="0" src="http://agileer.com/blog/aggbug.ashx?id=b7d6f4c3-b49b-4174-87fd-c5cf8de23856"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=QEa9mYRdIj8:xcmVREZVusM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=QEa9mYRdIj8:xcmVREZVusM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=QEa9mYRdIj8:xcmVREZVusM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=QEa9mYRdIj8:xcmVREZVusM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=QEa9mYRdIj8:xcmVREZVusM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=QEa9mYRdIj8:xcmVREZVusM:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Agileer/~4/QEa9mYRdIj8" height="1" width="1"/&gt;</description>
      <comments>http://agileer.com/blog/CommentView,guid,b7d6f4c3-b49b-4174-87fd-c5cf8de23856.aspx</comments>
      <category>Agile</category>
      <category>Automated Testing</category>
      <category>IoC</category>
      <category>MOSS</category>
      <category>SharePoint</category>
    <feedburner:origLink>http://agileer.com/blog/2008/02/20/SharePointBlogTagClouds.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://agileer.com/blog/Trackback.aspx?guid=b714b70d-d702-4a5b-9991-7c0eb5e9406c</trackback:ping>
      <pingback:server>http://agileer.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://agileer.com/blog/PermaLink,guid,b714b70d-d702-4a5b-9991-7c0eb5e9406c.aspx</pingback:target>
      <dc:creator>Doug Seelinger</dc:creator>
      <wfw:comment>http://agileer.com/blog/CommentView,guid,b714b70d-d702-4a5b-9991-7c0eb5e9406c.aspx</wfw:comment>
      <wfw:commentRss>http://agileer.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=b714b70d-d702-4a5b-9991-7c0eb5e9406c</wfw:commentRss>
      
      <title>Microsoft &amp;quot;Unity&amp;quot;... Isn't</title>
      <guid isPermaLink="false">http://agileer.com/blog/PermaLink,guid,b714b70d-d702-4a5b-9991-7c0eb5e9406c.aspx</guid>
      <link>http://feedproxy.google.com/~r/Agileer/~3/u1PSWvepdBA/MicrosoftQuotUnityquotIsnt.aspx</link>
      <pubDate>Wed, 20 Feb 2008 19:41:04 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
I'm not dissing &lt;a href="http://www.codeplex.com/unity" target="_blank"&gt;MS Unity&lt;/a&gt;,&#xD;
Microsoft's new &lt;a href="http://www.martinfowler.com/articles/injection.html" target="_blank"&gt;IoC&#xD;
Container&lt;/a&gt; - I'm really going to give it a chance.  Rather, I'm talking about&#xD;
the reaction to it on the &lt;a href="http://tech.groups.yahoo.com/group/altdotnet/" target="_blank"&gt;Yahoo!&#xD;
[altdotnet] group&lt;/a&gt;.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
I have just spent most of the morning following a thread on the [altdotnet] mailing&#xD;
list titled &lt;a href="http://tech.groups.yahoo.com/group/altdotnet/message/2774?var=1&amp;amp;l=1" target="_blank"&gt;"Unity"&#xD;
Ioc from Microsoft has been released in CTP..&lt;/a&gt;.  And it has.  But in&#xD;
retrospect, based on the thread, "Unity" was a very ironic name choice for&#xD;
the tool.  This is a very long thread that is involving dozens of folks. &#xD;
It started off by comparing the functionality in Unity to functionality in other IoC&#xD;
containers, mostly &lt;a href="http://castleproject.org/container/index.html" target="_blank"&gt;Castle&#xD;
Windsor&lt;/a&gt; &amp;amp; &lt;a href="http://structuremap.sourceforge.net/Default.htm" target="_blank"&gt;StructureMap&lt;/a&gt;. &#xD;
The &lt;a href="http://www.springframework.net/" target="_blank"&gt;Spring.NET&lt;/a&gt; crowd&#xD;
has been strangely silent.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Later in the thread, however, the "&lt;a href="http://www.altnetpedia.com/(S(qzvw0s45f0clevbo12mcewuo))/MainPage.ashx" target="_blank"&gt;altdotnet&lt;/a&gt;"ness&#xD;
of the list has begun to show its colors. Passions have arisen and tempered. &#xD;
Staunch defenders of each "side" (and there are more than two sides to this&#xD;
polygon) have held their ground while alternately being gracious one minute and on-the-attack&#xD;
the next.  It's the ultimate Reality TV... except that it's not TV, of course. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
I've wasted too much time trying to follow this thread and I declare that I am DONE&#xD;
with it.  Not that the task wasn't worth it.  I've learned a lot about IoC&#xD;
that I hadn't know before.  I'm familiar with Windsor, and I've downloaded Unity&#xD;
and played around with it as well.  The really great gem that I have just discovered&#xD;
is StructureMap.  I just love the "&lt;a href="http://martinfowler.com/bliki/FluentInterface.html" target="_blank"&gt;fluent&#xD;
interface&lt;/a&gt;" it has - much like is available in &lt;a href="http://www.ayende.com/projects/rhino-mocks.aspx" target="_blank"&gt;Rhino.Mocks&lt;/a&gt;. &#xD;
Fun, geeky stuff. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
I thought it would be a useful exercise to compare "Hello, World!" scenarios&#xD;
between the big-four (and, yes, I'm including Unity as part of that): &#xD;
&lt;br&gt;&lt;/p&gt;&#xD;
        &lt;table cellspacing="0" cellpadding="2" width="698" border="1"&gt;&#xD;
          &lt;tbody&gt;&#xD;
            &lt;tr&gt;&#xD;
              &lt;td valign="top" width="128"&gt;&#xD;
                &lt;strong&gt;&#xD;
                  &lt;em&gt;Function&lt;/em&gt;&#xD;
                &lt;/strong&gt;&#xD;
              &lt;/td&gt;&#xD;
              &lt;td valign="top" width="150"&gt;&#xD;
                &lt;strong&gt;&#xD;
                  &lt;em&gt;Castle Windsor&lt;/em&gt;&#xD;
                &lt;/strong&gt;&#xD;
              &lt;/td&gt;&#xD;
              &lt;td valign="top" width="162"&gt;&#xD;
                &lt;strong&gt;&#xD;
                  &lt;em&gt;StructureMap&lt;/em&gt;&#xD;
                &lt;/strong&gt;&#xD;
              &lt;/td&gt;&#xD;
              &lt;td valign="top" width="128"&gt;&#xD;
                &lt;strong&gt;&#xD;
                  &lt;em&gt;Unity&lt;/em&gt;&#xD;
                &lt;/strong&gt;&#xD;
              &lt;/td&gt;&#xD;
              &lt;td valign="top" width="128"&gt;&#xD;
                &lt;strong&gt;&#xD;
                  &lt;em&gt;Spring.NET&lt;/em&gt;&#xD;
                &lt;/strong&gt;&#xD;
              &lt;/td&gt;&#xD;
            &lt;/tr&gt;&#xD;
            &lt;tr&gt;&#xD;
              &lt;td valign="top" width="128"&gt;&#xD;
                &lt;p dir="ltr" style="margin-right: 0px"&gt;&#xD;
Putting an interface and concrete type into the IoC container&#xD;
&lt;/p&gt;&#xD;
              &lt;/td&gt;&#xD;
              &lt;td valign="top" width="150"&gt;&#xD;
WindsorContainer. AddComponent()&lt;/td&gt;&#xD;
              &lt;td valign="top" width="164"&gt;&#xD;
StructureMapConfiguration. BuildInstancesOf(). TheDefaultIsConcreteType()&lt;/td&gt;&#xD;
              &lt;td valign="top" width="128"&gt;&#xD;
UnityContainer. Register()&lt;/td&gt;&#xD;
              &lt;td valign="top" width="128"&gt;&#xD;
N/A - Spring doesn't support XMLless config (that I could find).  Those Java&#xD;
guys just have a love affair with XML, I guess&lt;/td&gt;&#xD;
            &lt;/tr&gt;&#xD;
            &lt;tr&gt;&#xD;
              &lt;td valign="top" width="127"&gt;&#xD;
Getting a concrete type for a given interface &#xD;
&lt;/td&gt;&#xD;
              &lt;td valign="top" width="150"&gt;&#xD;
Resolve()&lt;/td&gt;&#xD;
              &lt;td valign="top" width="165"&gt;&#xD;
ObjectFactory. GetInstance()&lt;/td&gt;&#xD;
              &lt;td valign="top" width="128"&gt;&#xD;
UnityContainer. Get()&lt;/td&gt;&#xD;
            &lt;/tr&gt;&#xD;
            &lt;tr&gt;&#xD;
              &lt;td valign="top" width="126"&gt;&#xD;
Default items are&lt;/td&gt;&#xD;
              &lt;td valign="top" width="150"&gt;&#xD;
Singleton&lt;/td&gt;&#xD;
              &lt;td valign="top" width="166"&gt;&#xD;
separate instance&lt;/td&gt;&#xD;
              &lt;td valign="top" width="128"&gt;&#xD;
separate instances&lt;/td&gt;&#xD;
            &lt;/tr&gt;&#xD;
          &lt;/tbody&gt;&#xD;
        &lt;/table&gt;&#xD;
        &lt;p&gt;&#xD;
The fluent-interface of StructureMap is so nice.  Yes, it's longer to type, but&#xD;
hey, that's what IntelliSense is fore, and that will make it easier for new developers&#xD;
to discover.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Incidentally, Unity looks an &lt;em&gt;awful&lt;/em&gt; lot like Windsor in its syntax, and it&#xD;
was mentioned in the aforementioned thread that the PM on the Unity project is a big&#xD;
Windsor fan.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:f3bb598c-17d8-4efe-9a01-4d2cc2521f36" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati&#xD;
Tags: &lt;a href="http://technorati.com/tags/IoC" rel="tag"&gt;IoC&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Microsoft" rel="tag"&gt;Microsoft&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Open%20Source" rel="tag"&gt;Open&#xD;
Source&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Unity" rel="tag"&gt;Unity&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Windsor" rel="tag"&gt;Windsor&lt;/a&gt;,&lt;a href="http://technorati.com/tags/StructureMap" rel="tag"&gt;StructureMap&lt;/a&gt;&lt;/div&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;img style="margin: 0px 10px 0px 0px" src="http://farm3.static.flickr.com/2061/2279415919_d37b64cb64_o.jpg" align="left"&gt;&lt;/img&gt;Apology:&#xD;
I just couldn't resist the &lt;a href="http://lolcats.com/" target="_blank"&gt;lolcats&lt;/a&gt; thing,&#xD;
it was just too apropos.  This is my one (1), lifetime, self-imposed limit. &#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://agileer.com/blog/aggbug.ashx?id=b714b70d-d702-4a5b-9991-7c0eb5e9406c"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=u1PSWvepdBA:1xLkCBwLVe4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=u1PSWvepdBA:1xLkCBwLVe4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=u1PSWvepdBA:1xLkCBwLVe4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=u1PSWvepdBA:1xLkCBwLVe4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=u1PSWvepdBA:1xLkCBwLVe4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=u1PSWvepdBA:1xLkCBwLVe4:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Agileer/~4/u1PSWvepdBA" height="1" width="1"/&gt;</description>
      <comments>http://agileer.com/blog/CommentView,guid,b714b70d-d702-4a5b-9991-7c0eb5e9406c.aspx</comments>
      <category>Agile</category>
      <category>Castle</category>
      <category>IoC</category>
      <category>Microsoft Development</category>
      <category>Open Source and Microsoft</category>
      <category>OSS</category>
    <feedburner:origLink>http://agileer.com/blog/2008/02/20/MicrosoftQuotUnityquotIsnt.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://agileer.com/blog/Trackback.aspx?guid=7983ff04-97ec-40fd-9cc9-5be26dbb0cb6</trackback:ping>
      <pingback:server>http://agileer.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://agileer.com/blog/PermaLink,guid,7983ff04-97ec-40fd-9cc9-5be26dbb0cb6.aspx</pingback:target>
      <dc:creator>Doug Seelinger</dc:creator>
      <wfw:comment>http://agileer.com/blog/CommentView,guid,7983ff04-97ec-40fd-9cc9-5be26dbb0cb6.aspx</wfw:comment>
      <wfw:commentRss>http://agileer.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=7983ff04-97ec-40fd-9cc9-5be26dbb0cb6</wfw:commentRss>
      
      <title>Team Foundation Server 2008 and Continuous Integration - Screencast</title>
      <guid isPermaLink="false">http://agileer.com/blog/PermaLink,guid,7983ff04-97ec-40fd-9cc9-5be26dbb0cb6.aspx</guid>
      <link>http://feedproxy.google.com/~r/Agileer/~3/ztA9gj6hGao/TeamFoundationServer2008AndContinuousIntegrationScreencast.aspx</link>
      <pubDate>Thu, 14 Feb 2008 01:52:47 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
Wow, that was a lot of work.  I always hate when a screencast of demo starts&#xD;
with this big huge installation of a bunch of different technologies, but doesn't&#xD;
tell you how to get the same environment, so I started from scratch and show you how&#xD;
to go from a generic W2K3 base image to a fully functional TFS 2008 box and THEN show&#xD;
the Continuous Integration sample.  Due to the fact that we're going soup to&#xD;
nuts it's a pretty big screencast for me 34+ minutes - a new record for me. &#xD;
I only wish complete installations like this REALLY only took 30-40 minutes.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a href="http://agileer.com/screencasts/BasicWorkflow/BasicWorkflow.html" target="_blank"&gt;Screencast:&#xD;
Continuous Integration and TFS 2008&lt;/a&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a title="TFS 2008 Screencast" href="http://agileer.com/screencasts/tfsci/Tfsci.html" target="_blank" rel="enclosure"&gt;&#xD;
            &lt;img src="http://agileer.com/images/Tfs1Thumb.png"&gt;&lt;/img&gt;&#xD;
          &lt;/a&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:712aa8b4-dd93-4e50-9821-75c03e2409b5" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati&#xD;
Tags: &lt;a href="http://technorati.com/tags/Team%20Foundation%20Server" rel="tag"&gt;Team&#xD;
Foundation Server&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Continuous%20Integration" rel="tag"&gt;Continuous&#xD;
Integration&lt;/a&gt;&lt;/div&gt;&#xD;
        &lt;img width="0" height="0" src="http://agileer.com/blog/aggbug.ashx?id=7983ff04-97ec-40fd-9cc9-5be26dbb0cb6"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=ztA9gj6hGao:LHkTW9wAenw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=ztA9gj6hGao:LHkTW9wAenw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=ztA9gj6hGao:LHkTW9wAenw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=ztA9gj6hGao:LHkTW9wAenw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=ztA9gj6hGao:LHkTW9wAenw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=ztA9gj6hGao:LHkTW9wAenw:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Agileer/~4/ztA9gj6hGao" height="1" width="1"/&gt;</description>
      <comments>http://agileer.com/blog/CommentView,guid,7983ff04-97ec-40fd-9cc9-5be26dbb0cb6.aspx</comments>
      <category>.NET Framework</category>
      <category>Agile</category>
      <category>Continuous Integration</category>
      <category>TFS</category>
    <feedburner:origLink>http://agileer.com/blog/2008/02/14/TeamFoundationServer2008AndContinuousIntegrationScreencast.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://agileer.com/blog/Trackback.aspx?guid=118c995d-b5a9-40e7-b2a8-3e570a8b9568</trackback:ping>
      <pingback:server>http://agileer.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://agileer.com/blog/PermaLink,guid,118c995d-b5a9-40e7-b2a8-3e570a8b9568.aspx</pingback:target>
      <dc:creator>Doug Seelinger</dc:creator>
      <wfw:comment>http://agileer.com/blog/CommentView,guid,118c995d-b5a9-40e7-b2a8-3e570a8b9568.aspx</wfw:comment>
      <wfw:commentRss>http://agileer.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=118c995d-b5a9-40e7-b2a8-3e570a8b9568</wfw:commentRss>
      
      <title>How To Delete A Rogue Build Agent from VSTS 2008 TFS Team Build</title>
      <guid isPermaLink="false">http://agileer.com/blog/PermaLink,guid,118c995d-b5a9-40e7-b2a8-3e570a8b9568.aspx</guid>
      <link>http://feedproxy.google.com/~r/Agileer/~3/UEJKQfALx8w/HowToDeleteARogueBuildAgentFromVSTS2008TFSTeamBuild.aspx</link>
      <pubDate>Sat, 09 Feb 2008 15:49:51 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
I'm pretty new to &lt;a href="http://msdn2.microsoft.com/en-us/teamsystem/aa718934.aspx"&gt;Team&#xD;
Foundation Server&lt;/a&gt;, so after my first (successful) install of it I tried to do&#xD;
a simple Build Definition (just an automated build configuration), but there are several&#xD;
moving parts involved, and somehow my VS Team Foundation Build service was set up&#xD;
to run as Local Service.  I found that out when my simple build def refused to&#xD;
build (Local Service wasn't a member of the requisite security group).  So I&#xD;
modified the service to run under the TFS service account and suddenly my "Build&#xD;
Agent" was "unreachable".&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
So since my build agent was then unreachable, I then tried to create a new build definition&#xD;
with a new build agent.  The problem was that my original build agent was still&#xD;
holding onto port 9191, my default build agent port.  When I tried to change&#xD;
it to port 9192, it complained, saying that I'd have to modify the port elsewhere&#xD;
so that the various moving parts could communicate.  That was more than I wanted&#xD;
to mess with in my first foray into Team Build, so I tried to figure out a way to&#xD;
delete the old build agent.  It took quite awhile for me to find, but I finally&#xD;
realized that TFS adds new menu items all over the place, not just in the Team menu. &#xD;
I finally found "Manage Build Agents..." under the "Build" menu. &#xD;
However, it only appears &lt;em&gt;AFTER &lt;/em&gt;you click on Team Explorer.  Once Team&#xD;
Explorer has been selected, it adds the appropriate menu items:&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a title="BuildMenu1 by dougseelinger, on Flickr" href="http://www.flickr.com/photos/8221201@N02/2252831804/"&gt;&#xD;
            &lt;img height="376" alt="BuildMenu1" src="http://farm3.static.flickr.com/2184/2252831804_bcb0d8be3e_o.png" width="604"&gt;&lt;/img&gt;&#xD;
          &lt;/a&gt;&#xD;
          &lt;br&gt;&#xD;
          &lt;strong&gt;Build Menu before selecting Team Explorer&lt;/strong&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a title="BuildMenu2 by dougseelinger, on Flickr" href="http://www.flickr.com/photos/8221201@N02/2252831852/"&gt;&#xD;
            &lt;img height="376" alt="BuildMenu2" src="http://farm3.static.flickr.com/2399/2252831852_1f2fde4117_o.png" width="604"&gt;&lt;/img&gt;&#xD;
          &lt;/a&gt;&#xD;
          &lt;br&gt;&#xD;
          &lt;strong&gt;Build Menu after selecting Team Explorer&lt;/strong&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Now, even if you go back to Solution Explorer, the additional "Build" items&#xD;
will still be available.  Every system has its quirks.&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://agileer.com/blog/aggbug.ashx?id=118c995d-b5a9-40e7-b2a8-3e570a8b9568"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=UEJKQfALx8w:F1HAdsPngm0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=UEJKQfALx8w:F1HAdsPngm0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=UEJKQfALx8w:F1HAdsPngm0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=UEJKQfALx8w:F1HAdsPngm0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=UEJKQfALx8w:F1HAdsPngm0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=UEJKQfALx8w:F1HAdsPngm0:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Agileer/~4/UEJKQfALx8w" height="1" width="1"/&gt;</description>
      <comments>http://agileer.com/blog/CommentView,guid,118c995d-b5a9-40e7-b2a8-3e570a8b9568.aspx</comments>
      <category>Continuous Integration</category>
      <category>TFS</category>
      <category>Visual Studio</category>
    <feedburner:origLink>http://agileer.com/blog/2008/02/09/HowToDeleteARogueBuildAgentFromVSTS2008TFSTeamBuild.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://agileer.com/blog/Trackback.aspx?guid=aae6cc31-bece-45bc-979d-84c5a7a674b6</trackback:ping>
      <pingback:server>http://agileer.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://agileer.com/blog/PermaLink,guid,aae6cc31-bece-45bc-979d-84c5a7a674b6.aspx</pingback:target>
      <dc:creator>Doug Seelinger</dc:creator>
      <wfw:comment>http://agileer.com/blog/CommentView,guid,aae6cc31-bece-45bc-979d-84c5a7a674b6.aspx</wfw:comment>
      <wfw:commentRss>http://agileer.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=aae6cc31-bece-45bc-979d-84c5a7a674b6</wfw:commentRss>
      <slash:comments>1</slash:comments>
      
      <title>Team Foundation Server 2008 and Continuous Integration</title>
      <guid isPermaLink="false">http://agileer.com/blog/PermaLink,guid,aae6cc31-bece-45bc-979d-84c5a7a674b6.aspx</guid>
      <link>http://feedproxy.google.com/~r/Agileer/~3/qqpk9W80VL0/TeamFoundationServer2008AndContinuousIntegration.aspx</link>
      <pubDate>Fri, 08 Feb 2008 14:01:29 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;em&gt;Why Should You Care?&lt;/em&gt;&#xD;
          &lt;a href="http://en.wikipedia.org/wiki/Continuous_Integration"&gt;Continuous&#xD;
Integration&lt;/a&gt; saves you much heartache when the time comes to integrate your code&#xD;
with someone else's, whether that someone else is a colleague or an external system&#xD;
- like SQL Server, for example.  &lt;a href="http://msdn2.microsoft.com/en-us/tfs2008/default.aspx"&gt;Visual&#xD;
Studio Team System 2008 Team Foundation Server&lt;/a&gt; (man, that's a long name - I think&#xD;
it's URL is even shorter) has CI baked in, something that TFS 2005 lacked (and was&#xD;
basically burned by in the OSS community).&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;em&gt;Why do I care?&lt;/em&gt; The decision has been made here at my organization to standardize&#xD;
on Team Foundation Server.  Personally, I'm a &lt;a href="http://confluence.public.thoughtworks.org/display/CCNET/Welcome+to+CruiseControl.NET"&gt;CruiseControl.NET&lt;/a&gt; fan,&#xD;
but in all honesty, perhaps it's just that I'm comfortable with it.  I know CC.NET&#xD;
has a pretty hefty learning-curve that goes along with it, but I've taken that curve&#xD;
and I'm comfortable with CC.NET, &lt;a href="http://nant.sourceforge.net/"&gt;NAnt&lt;/a&gt;, &lt;a href="http://www.ncover.com/"&gt;NCover&lt;/a&gt;,&#xD;
etc.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
So let's put together a TFS build-server and test it out.  First, here are some&#xD;
links/videos regarding TFS 2008 &amp;amp; CI:&#xD;
&lt;/p&gt;&#xD;
        &lt;ul&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;a title="http://www.virtualteched.com/pages/videossearch.aspx?KW=keller" href="http://www.virtualteched.com/pages/videossearch.aspx?KW=keller"&gt;Virtual&#xD;
Tech Ed South Africa&lt;/a&gt;&#xD;
          &lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;a href="http://blogs.msdn.com/ireland/archive/2007/06/25/continuous-integration-with-visual-studio-2008-orcas-team-foundation-server.aspx"&gt;MSDN&#xD;
Ireland Blog&lt;/a&gt;&#xD;
          &lt;/li&gt;&#xD;
        &lt;/ul&gt;&#xD;
        &lt;p&gt;&#xD;
And that's about it.  I smell a screen-cast coming.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;em&gt;Caveat 1:&lt;/em&gt; I still wonder what will happen when we engage with clients (we're&#xD;
the Microsoft consulting arm of EMC) who do NOT have licenses for all of the technologies&#xD;
that we're using.  In my experience, we don't hang around extensively after we've&#xD;
built the software and maintain the application, though it has happened before (has&#xD;
anyone ever been a "security blanket" before?).  But by and large,&#xD;
after we've delivered a project we go away.  Inevitably, the client asks, "How&#xD;
do I maintain this thing?"  &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
The convenient (and cop out) way to do things is to hand them a VM and say, "Have&#xD;
a nice day."  But that's not right from a software licensing aspect. &#xD;
Perhaps we simply leave them the code and say, "Have a nice day," but that&#xD;
sounds pretty rude as well.  That's why it's nice to have a very basic development&#xD;
environment using a lot of open source software, no licensing problems. &lt;a href="http://agileer.com/blog/2007/02/27/TheFinalMSAgileImageForNow.aspx"&gt;Here's&#xD;
an example&lt;/a&gt;.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;em&gt;Caveat 2:&lt;/em&gt; Another down-side of going the TFS route for Continuous Integration&#xD;
is the fact that you have to have &lt;a href="http://msdn2.microsoft.com/en-us/vstudio/default.aspx"&gt;Visual&#xD;
Studio 2008&lt;/a&gt; (Team System for Testers, Developers, or Suite) on the build machine&#xD;
in order to run tests, thus the build-machine is not as "pure" as it could&#xD;
potentially be (plus that's another license).  However, most build-servers I've&#xD;
worked with are not as pure as the driven snow, either (though much less costly).&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;em&gt;Caveat 3:&lt;/em&gt; TFS has a HUGE footprint. SQL Server (and attendant services) +&#xD;
WSS 3.0 + TFS Core + Team Build + VS 2008 Team Dev would not install on a VM with&#xD;
a 32 GB drive.  Well, that's a bit of a fib.  When I tried to install Team&#xD;
Build, it gave me a warning that performance wouldn't be as up to snuff since I didn't&#xD;
have enough disk.  The footprint for a standard CC.NET install is miniscule in&#xD;
comparison.  Thanks, MS, for kitchen-sinking me yet again.  &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
I was even bitten by this one TWICE.  I re-installed from my standard base VM&#xD;
image, added a second drive on which to install VS 2008, and changed the order of&#xD;
install - installing VS 2008 last.  When it came time to install VS 2008, it&#xD;
wouldn't let me install it onto my second 32GB drive, since Team Build (or Team Explorer,&#xD;
not sure which) had already installed several VS2008 components on the C drive. &#xD;
However, VS 2008 didn't complain about lack of space as did Team Build.  After&#xD;
finishing the VS 2008 install, I still had 21GB left on my C drive.  &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Team Build must expect to use A LOT of disk if it complains about disk in that environment.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;em&gt;Screen-cast To Come:&lt;/em&gt;&#xD;
          &lt;strong&gt;&#xD;
          &lt;/strong&gt;I'll see if I can get a screen-cast&#xD;
out soon to show off the CI capabilities of TFS - I'm still waiting for VS 2008 to&#xD;
finish its install... once again.&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://agileer.com/blog/aggbug.ashx?id=aae6cc31-bece-45bc-979d-84c5a7a674b6"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=qqpk9W80VL0:yZYttIQbSXU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=qqpk9W80VL0:yZYttIQbSXU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=qqpk9W80VL0:yZYttIQbSXU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=qqpk9W80VL0:yZYttIQbSXU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=qqpk9W80VL0:yZYttIQbSXU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=qqpk9W80VL0:yZYttIQbSXU:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Agileer/~4/qqpk9W80VL0" height="1" width="1"/&gt;</description>
      <comments>http://agileer.com/blog/CommentView,guid,aae6cc31-bece-45bc-979d-84c5a7a674b6.aspx</comments>
    <feedburner:origLink>http://agileer.com/blog/2008/02/08/TeamFoundationServer2008AndContinuousIntegration.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://agileer.com/blog/Trackback.aspx?guid=909d56be-91e9-4462-ad77-f8d24c2657d5</trackback:ping>
      <pingback:server>http://agileer.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://agileer.com/blog/PermaLink,guid,909d56be-91e9-4462-ad77-f8d24c2657d5.aspx</pingback:target>
      <dc:creator>Doug Seelinger</dc:creator>
      <wfw:comment>http://agileer.com/blog/CommentView,guid,909d56be-91e9-4462-ad77-f8d24c2657d5.aspx</wfw:comment>
      <wfw:commentRss>http://agileer.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=909d56be-91e9-4462-ad77-f8d24c2657d5</wfw:commentRss>
      
      <title>Scrum and XP from the Trenches</title>
      <guid isPermaLink="false">http://agileer.com/blog/PermaLink,guid,909d56be-91e9-4462-ad77-f8d24c2657d5.aspx</guid>
      <link>http://feedproxy.google.com/~r/Agileer/~3/HQI8jWNK2So/ScrumAndXPFromTheTrenches.aspx</link>
      <pubDate>Wed, 06 Feb 2008 22:10:02 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
A colleague, Daren May, has turned me onto a great &lt;a href="http://www.controlchaos.com/" target="_blank"&gt;Scrum&lt;/a&gt; resource, &lt;a href="http://blog.crisp.se/henrikkniberg/2006/11/26/1164574680000.html" target="_blank"&gt;Scrum&#xD;
and XP from the Trenches&lt;/a&gt;, which is the best online Scrum resource that I've seen&#xD;
yet.  It's a &lt;a href="http://www.crisp.se/henrik.kniberg/ScrumAndXpFromTheTrenches.pdf" target="_blank"&gt;free&#xD;
PDF book&lt;/a&gt; about one ScrumMaster's experience with Scrum.  Most of what I've&#xD;
read about Scrum so far has either been heavy on theory or very "&lt;a href="http://en.wikipedia.org/wiki/Pie_in_the_sky" target="_blank"&gt;Pie&#xD;
in the Sky&lt;/a&gt;"ish. I was so impressed by it that I've emailed everyone I know&#xD;
who's interested in Scrum.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
The author, &lt;a href="http://blog.crisp.se/henrikkniberg/" target="_blank"&gt;Henrik Kniberg,&#xD;
has a blog&lt;/a&gt; that's just dynamite as well.  Lots of good content on agile and&#xD;
Scrum in there.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
As I said, I was very impressed, so much so that I decided to &lt;a href="http://www.lulu.com/content/899349" target="_blank"&gt;pay&#xD;
for a hard-bound copy&lt;/a&gt;, which is pretty out of character for me if it's available&#xD;
in a free form.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a href="http://www.infoq.com/minibooks/scrum-xp-from-the-trenches" target="_blank"&gt;&#xD;
            &lt;img src="http://www.infoq.com/resource/minibooks/scrum-xp-from-the-trenches/en/cover/coverlandingpage.JPG"&gt;&lt;/img&gt;&#xD;
          &lt;/a&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://agileer.com/blog/aggbug.ashx?id=909d56be-91e9-4462-ad77-f8d24c2657d5"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=HQI8jWNK2So:hsh7F0_JuyY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=HQI8jWNK2So:hsh7F0_JuyY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=HQI8jWNK2So:hsh7F0_JuyY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=HQI8jWNK2So:hsh7F0_JuyY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=HQI8jWNK2So:hsh7F0_JuyY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=HQI8jWNK2So:hsh7F0_JuyY:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Agileer/~4/HQI8jWNK2So" height="1" width="1"/&gt;</description>
      <comments>http://agileer.com/blog/CommentView,guid,909d56be-91e9-4462-ad77-f8d24c2657d5.aspx</comments>
      <category>Agile</category>
      <category>OSS</category>
      <category>Scrum</category>
    <feedburner:origLink>http://agileer.com/blog/2008/02/06/ScrumAndXPFromTheTrenches.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://agileer.com/blog/Trackback.aspx?guid=933ab851-385a-4c36-9020-4090f139e7cb</trackback:ping>
      <pingback:server>http://agileer.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://agileer.com/blog/PermaLink,guid,933ab851-385a-4c36-9020-4090f139e7cb.aspx</pingback:target>
      <dc:creator>Doug Seelinger</dc:creator>
      <wfw:comment>http://agileer.com/blog/CommentView,guid,933ab851-385a-4c36-9020-4090f139e7cb.aspx</wfw:comment>
      <wfw:commentRss>http://agileer.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=933ab851-385a-4c36-9020-4090f139e7cb</wfw:commentRss>
      <slash:comments>2</slash:comments>
      
      <title>Secured MOSS/WSS Blogs and RSS Readers</title>
      <guid isPermaLink="false">http://agileer.com/blog/PermaLink,guid,933ab851-385a-4c36-9020-4090f139e7cb.aspx</guid>
      <link>http://feedproxy.google.com/~r/Agileer/~3/fepI6R_vFi0/SecuredMOSSWSSBlogsAndRSSReaders.aspx</link>
      <pubDate>Wed, 06 Feb 2008 21:31:33 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
It doesn't look like &lt;a href="http://http://www.google.com/reader" target="_blank"&gt;Google&#xD;
Reader&lt;/a&gt; or &lt;a href="http://www.newsgator.com/Individuals/FeedDemon/" target="_blank"&gt;FeedDemon&lt;/a&gt; are&#xD;
going to work out for subscribing to any of my secured corporate blogs (which currently&#xD;
only consist of my own blog).  Let's give the &lt;a href="http://msdn2.microsoft.com/en-us/library/ms686418.aspx" target="_blank"&gt;Windows&#xD;
Common Feed List&lt;/a&gt; a try.  Nope.  IE doesn't support "feeds with&#xD;
passwords" as it puts it.  Let's try Outlook.  It looks like Outlook&#xD;
is the only reader (that I know of so far) that handles this kind of feed.  Wow. &#xD;
I didn't know Outlook had it in it.  Am I ready to leave Google Reader yet? &#xD;
Mmm... not really, but I'll just have to have separate areas for public and private&#xD;
feeds from now on, however.&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://agileer.com/blog/aggbug.ashx?id=933ab851-385a-4c36-9020-4090f139e7cb"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=fepI6R_vFi0:kPkdz5QBbwY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=fepI6R_vFi0:kPkdz5QBbwY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=fepI6R_vFi0:kPkdz5QBbwY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=fepI6R_vFi0:kPkdz5QBbwY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=fepI6R_vFi0:kPkdz5QBbwY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=fepI6R_vFi0:kPkdz5QBbwY:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Agileer/~4/fepI6R_vFi0" height="1" width="1"/&gt;</description>
      <comments>http://agileer.com/blog/CommentView,guid,933ab851-385a-4c36-9020-4090f139e7cb.aspx</comments>
      <category>blogging</category>
      <category>OSS</category>
      <category>Outlook</category>
    <feedburner:origLink>http://agileer.com/blog/2008/02/06/SecuredMOSSWSSBlogsAndRSSReaders.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://agileer.com/blog/Trackback.aspx?guid=f9c84f03-eafb-49f9-8c87-38176b8c79ab</trackback:ping>
      <pingback:server>http://agileer.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://agileer.com/blog/PermaLink,guid,f9c84f03-eafb-49f9-8c87-38176b8c79ab.aspx</pingback:target>
      <dc:creator>Doug Seelinger</dc:creator>
      <wfw:comment>http://agileer.com/blog/CommentView,guid,f9c84f03-eafb-49f9-8c87-38176b8c79ab.aspx</wfw:comment>
      <wfw:commentRss>http://agileer.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=f9c84f03-eafb-49f9-8c87-38176b8c79ab</wfw:commentRss>
      
      <title>Windows Live Writer</title>
      <guid isPermaLink="false">http://agileer.com/blog/PermaLink,guid,f9c84f03-eafb-49f9-8c87-38176b8c79ab.aspx</guid>
      <link>http://feedproxy.google.com/~r/Agileer/~3/ke-ip343bbg/WindowsLiveWriter.aspx</link>
      <pubDate>Wed, 06 Feb 2008 19:10:21 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;div class="ExternalClass1959F4435ADB46C08AF0F584FD5BA3B6"&gt;&#xD;
          &lt;p class="ExternalClass625C9B4B9E564247A503EA43CDF37A14"&gt;&#xD;
            &lt;a href="http://windowslivewriter.spaces.live.com/" target="_blank"&gt;Windows Live Writer&lt;/a&gt; is&#xD;
definitely the way to go for writing your blog.  I've tried both &lt;a href="http://www.codingrobots.com/blogjet/" target="_blank"&gt;BlogJet&lt;/a&gt; and&#xD;
WLW, and besides the fact that WLW is FREE!, I didn't really see any advantage to&#xD;
BlogJet.  Plus WLW works seamlessly with my MOSS blog even though it's HTTPS,&#xD;
etc.&#xD;
&lt;/p&gt;&#xD;
          &lt;p class="ExternalClass625C9B4B9E564247A503EA43CDF37A14"&gt;&#xD;
Why not MS Word?&#xD;
&lt;/p&gt;&#xD;
          &lt;div class="ExternalClass625C9B4B9E564247A503EA43CDF37A14"&gt;&#xD;
            &lt;ol&gt;&#xD;
              &lt;li&gt;&#xD;
Can't stand how it pops up 3 different windows in order to just do a blog entry. &#xD;
&lt;/li&gt;&#xD;
              &lt;li&gt;&#xD;
Doesn't integrate with IE to blog with &#xD;
&lt;/li&gt;&#xD;
              &lt;li&gt;&#xD;
Won't post to &lt;a href="http://www.dasblog.info/"&gt;dasBlog&lt;/a&gt; (my public blog engine) &#xD;
&lt;/li&gt;&#xD;
            &lt;/ol&gt;&#xD;
          &lt;/div&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;img width="0" height="0" src="http://agileer.com/blog/aggbug.ashx?id=f9c84f03-eafb-49f9-8c87-38176b8c79ab"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=ke-ip343bbg:eDUxnRz0t5Y:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=ke-ip343bbg:eDUxnRz0t5Y:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=ke-ip343bbg:eDUxnRz0t5Y:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=ke-ip343bbg:eDUxnRz0t5Y:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=ke-ip343bbg:eDUxnRz0t5Y:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=ke-ip343bbg:eDUxnRz0t5Y:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Agileer/~4/ke-ip343bbg" height="1" width="1"/&gt;</description>
      <comments>http://agileer.com/blog/CommentView,guid,f9c84f03-eafb-49f9-8c87-38176b8c79ab.aspx</comments>
      <category>blogging</category>
    <feedburner:origLink>http://agileer.com/blog/2008/02/06/WindowsLiveWriter.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://agileer.com/blog/Trackback.aspx?guid=6f6e07a9-64b0-49cd-96bf-b3a37efd31c1</trackback:ping>
      <pingback:server>http://agileer.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://agileer.com/blog/PermaLink,guid,6f6e07a9-64b0-49cd-96bf-b3a37efd31c1.aspx</pingback:target>
      <dc:creator>Doug Seelinger</dc:creator>
      <wfw:comment>http://agileer.com/blog/CommentView,guid,6f6e07a9-64b0-49cd-96bf-b3a37efd31c1.aspx</wfw:comment>
      <wfw:commentRss>http://agileer.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=6f6e07a9-64b0-49cd-96bf-b3a37efd31c1</wfw:commentRss>
      <slash:comments>1</slash:comments>
      
      <title>The SharePoint Driven Blog</title>
      <guid isPermaLink="false">http://agileer.com/blog/PermaLink,guid,6f6e07a9-64b0-49cd-96bf-b3a37efd31c1.aspx</guid>
      <link>http://feedproxy.google.com/~r/Agileer/~3/VW41IjlwEww/TheSharePointDrivenBlog.aspx</link>
      <pubDate>Fri, 01 Feb 2008 02:03:39 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
If you've followed my blog for very long, you've seen that it's mostly about &lt;a href="http://agilemanifesto.org/" target="_blank"&gt;agile&#xD;
software development&lt;/a&gt;.  I took a short "sabbatical" over the holidays&#xD;
and started playing around with &lt;a href="http://www.microsoft.com/sharepoint/default.mspx" target="_blank"&gt;SharePoint&#xD;
(both WSS 3.0 and MOSS)&lt;/a&gt;, and I posted maybe 5-10 blog entries on these subjects. &#xD;
Since then, I've seen a &lt;strong&gt;&lt;em&gt;&lt;u&gt;dramatic&lt;/u&gt;&lt;/em&gt;&lt;/strong&gt; increase in my blog&#xD;
traffic - particularly from search-engine traffic.  It's now 9-1 SharePoint referrals. &#xD;
It's not like there's not a lot of places out there to get SharePoint info. &#xD;
I know that I haven't had a hard time finding SharePoint info in the Googlesphere:&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a title="GoogleSharePoint by dougseelinger, on Flickr" href="http://www.flickr.com/photos/8221201@N02/2233220559/"&gt;&#xD;
            &lt;img height="198" alt="GoogleSharePoint" src="http://farm3.static.flickr.com/2165/2233220559_a87cb016a6_o.jpg" width="703"&gt;&lt;/img&gt;&#xD;
          &lt;/a&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
but there you have it.  People are so starved for SharePoint info they're coming&#xD;
for my meager offerings (I must be 18,100,001).&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
It's all about marketshare.  I remember seeing something similar in 1994-95,&#xD;
when I was mostly a &lt;a href="http://www.borland.com/" target="_blank"&gt;Borland C++&lt;/a&gt; guy. &#xD;
I loved Borland, but &lt;a href="http://msdn2.microsoft.com/en-us/visualc/default.aspx" target="_blank"&gt;Microsoft&#xD;
Visual C++&lt;/a&gt; seemed to reach a tipping point in marketshare around then and I decided&#xD;
to hop into a different boat - turned out to be a really good move.  Whatever&#xD;
happened to Borland anyway?  Funny, I don't even feel the need to look them up&#xD;
now, it seems so irrelevant.  But I did, and it looks like the used-car dealearship&#xD;
of the internet:&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a title="borland by dougseelinger, on Flickr" href="http://www.flickr.com/photos/8221201@N02/2234032542/"&gt;&#xD;
            &lt;img height="108" alt="borland" src="http://farm3.static.flickr.com/2131/2234032542_b55c8a6a64_o.jpg" width="441"&gt;&lt;/img&gt;&#xD;
          &lt;/a&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
But unlike Borland C++ vs Visual C++, I don't feel quite the same tension.  I&#xD;
don't need to abandon "agile" in order to do SharePoint.  At least&#xD;
I hope not.  Agile hasn't made nearly the same in-roads in the MOSS world as&#xD;
it has in other areas of software development, so I kind of consider it a challenge&#xD;
to "agilify" (I just made the word up, I believe) the SharePoint world. &#xD;
There's only one question left...&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Should it be MosScrum or ScruMoss?  For some reason, I'm leaning toward's ScruMoss.&#xD;
&lt;/p&gt;&#xD;
        &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:e163ef19-4030-4a9f-96fe-c5c5d927f2ac" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati&#xD;
Tags: &lt;a href="http://technorati.com/tags/agile" rel="tag"&gt;agile&lt;/a&gt;,&lt;a href="http://technorati.com/tags/moss" rel="tag"&gt;moss&lt;/a&gt;&lt;/div&gt;&#xD;
        &lt;img width="0" height="0" src="http://agileer.com/blog/aggbug.ashx?id=6f6e07a9-64b0-49cd-96bf-b3a37efd31c1"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=VW41IjlwEww:xlE8CUsl6CU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=VW41IjlwEww:xlE8CUsl6CU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=VW41IjlwEww:xlE8CUsl6CU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=VW41IjlwEww:xlE8CUsl6CU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=VW41IjlwEww:xlE8CUsl6CU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=VW41IjlwEww:xlE8CUsl6CU:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Agileer/~4/VW41IjlwEww" height="1" width="1"/&gt;</description>
      <comments>http://agileer.com/blog/CommentView,guid,6f6e07a9-64b0-49cd-96bf-b3a37efd31c1.aspx</comments>
      <category>Agile</category>
      <category>blogging</category>
      <category>MOSS</category>
      <category>SharePoint</category>
    <feedburner:origLink>http://agileer.com/blog/2008/02/01/TheSharePointDrivenBlog.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://agileer.com/blog/Trackback.aspx?guid=30bbe88a-dadf-4cbc-9ad6-f85ca9d707ad</trackback:ping>
      <pingback:server>http://agileer.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://agileer.com/blog/PermaLink,guid,30bbe88a-dadf-4cbc-9ad6-f85ca9d707ad.aspx</pingback:target>
      <dc:creator>Doug Seelinger</dc:creator>
      <wfw:comment>http://agileer.com/blog/CommentView,guid,30bbe88a-dadf-4cbc-9ad6-f85ca9d707ad.aspx</wfw:comment>
      <wfw:commentRss>http://agileer.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=30bbe88a-dadf-4cbc-9ad6-f85ca9d707ad</wfw:commentRss>
      
      <title>Only Mock Thyself</title>
      <guid isPermaLink="false">http://agileer.com/blog/PermaLink,guid,30bbe88a-dadf-4cbc-9ad6-f85ca9d707ad.aspx</guid>
      <link>http://feedproxy.google.com/~r/Agileer/~3/kAcJ-BaoUcI/OnlyMockThyself.aspx</link>
      <pubDate>Wed, 30 Jan 2008 17:19:15 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
I knew that conventional wisdom states that you should only mock your own classes,&#xD;
but I was tempted by all the beautiful interfaces within Microsoft.Office.Interop.Outlook. &#xD;
I'm starting to pay the piper, however.  Rhino is slowing down a good bit because&#xD;
it has to emit so much "Reflection"ed stuff each time I CreateMock&amp;lt;AppointmentItem&amp;gt;(),&#xD;
etc.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Oh well, live and learn... or re-learn.&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://agileer.com/blog/aggbug.ashx?id=30bbe88a-dadf-4cbc-9ad6-f85ca9d707ad"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=kAcJ-BaoUcI:rMZ-RNzvxL8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=kAcJ-BaoUcI:rMZ-RNzvxL8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=kAcJ-BaoUcI:rMZ-RNzvxL8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=kAcJ-BaoUcI:rMZ-RNzvxL8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=kAcJ-BaoUcI:rMZ-RNzvxL8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=kAcJ-BaoUcI:rMZ-RNzvxL8:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Agileer/~4/kAcJ-BaoUcI" height="1" width="1"/&gt;</description>
      <comments>http://agileer.com/blog/CommentView,guid,30bbe88a-dadf-4cbc-9ad6-f85ca9d707ad.aspx</comments>
      <category>Agile</category>
      <category>Mock Objects</category>
      <category>MS Office</category>
    <feedburner:origLink>http://agileer.com/blog/2008/01/30/OnlyMockThyself.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://agileer.com/blog/Trackback.aspx?guid=c669d466-d0e0-4f8f-a49d-6b630dfb7770</trackback:ping>
      <pingback:server>http://agileer.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://agileer.com/blog/PermaLink,guid,c669d466-d0e0-4f8f-a49d-6b630dfb7770.aspx</pingback:target>
      <dc:creator>Doug Seelinger</dc:creator>
      <wfw:comment>http://agileer.com/blog/CommentView,guid,c669d466-d0e0-4f8f-a49d-6b630dfb7770.aspx</wfw:comment>
      <wfw:commentRss>http://agileer.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=c669d466-d0e0-4f8f-a49d-6b630dfb7770</wfw:commentRss>
      
      <title>The Dearth of Outlook Add-In Info</title>
      <guid isPermaLink="false">http://agileer.com/blog/PermaLink,guid,c669d466-d0e0-4f8f-a49d-6b630dfb7770.aspx</guid>
      <link>http://feedproxy.google.com/~r/Agileer/~3/bWRyVGUEQhg/TheDearthOfOutlookAddInInfo.aspx</link>
      <pubDate>Fri, 25 Jan 2008 18:53:55 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
My current project has me working on an Outlook 2003 Add-In (funny how clients aren't&#xD;
always up with the latest-and-greatest, huh?).  With it, I should be able to&#xD;
do just about anything in Outlook... if I only knew how.  The problem is that&#xD;
this project has a really short duration (2 wks.) and I've got to figure out how to&#xD;
do some things that I've never done before.  Usually I can find out all I need&#xD;
to know after a few sessions with Google, but info on Outlook Add-Ins (beyond the&#xD;
simple "Hello, World" style, which I can already do - there's a wizard,&#xD;
for heaven's sake) is pretty rare.  Most searches bring back references to Sue&#xD;
Mosher's Outlook books, but after looking at the contents, there's nothing in there&#xD;
about Add-Ins so far as I can tell.  The one book specifically about VSTO Add-Ins&#xD;
doesn't have any Outlook examples that I could find.  Sheesh.  I'm still&#xD;
installing VS 2008 on a box that has Office 2003 installed, which was another pain. &#xD;
I tossed my copy of Office 2003 awhile back and had to go the the company software&#xD;
download area to get a copy.  So once 2008 is installed, with both support for&#xD;
Outlook 2003 &amp;amp; 2007, I'm hoping that they have some stellar documentation.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Anyone have any great tips for Outlook Add-In development?&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://agileer.com/blog/aggbug.ashx?id=c669d466-d0e0-4f8f-a49d-6b630dfb7770"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=bWRyVGUEQhg:_EojFuY7rVA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=bWRyVGUEQhg:_EojFuY7rVA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=bWRyVGUEQhg:_EojFuY7rVA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=bWRyVGUEQhg:_EojFuY7rVA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=bWRyVGUEQhg:_EojFuY7rVA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=bWRyVGUEQhg:_EojFuY7rVA:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Agileer/~4/bWRyVGUEQhg" height="1" width="1"/&gt;</description>
      <comments>http://agileer.com/blog/CommentView,guid,c669d466-d0e0-4f8f-a49d-6b630dfb7770.aspx</comments>
      <category>.NET Framework</category>
      <category>MS Office</category>
      <category>Outlook</category>
    <feedburner:origLink>http://agileer.com/blog/2008/01/25/TheDearthOfOutlookAddInInfo.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://agileer.com/blog/Trackback.aspx?guid=2c98a851-4966-49ab-9d26-5a7dd3a85b89</trackback:ping>
      <pingback:server>http://agileer.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://agileer.com/blog/PermaLink,guid,2c98a851-4966-49ab-9d26-5a7dd3a85b89.aspx</pingback:target>
      <dc:creator>Doug Seelinger</dc:creator>
      <wfw:comment>http://agileer.com/blog/CommentView,guid,2c98a851-4966-49ab-9d26-5a7dd3a85b89.aspx</wfw:comment>
      <wfw:commentRss>http://agileer.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=2c98a851-4966-49ab-9d26-5a7dd3a85b89</wfw:commentRss>
      
      <title>Custom MOSS Workflow with Visual Studio 2005, with Guest Guru Arya Parsee</title>
      <guid isPermaLink="false">http://agileer.com/blog/PermaLink,guid,2c98a851-4966-49ab-9d26-5a7dd3a85b89.aspx</guid>
      <link>http://feedproxy.google.com/~r/Agileer/~3/D6vjw-OOoIE/CustomMOSSWorkflowWithVisualStudio2005WithGuestGuruAryaParsee.aspx</link>
      <pubDate>Thu, 24 Jan 2008 23:28:32 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
Last but not least is workflow in MOSS is created using Visual Studio 2005. &#xD;
The same dude that did the SharePoint Designer screencast, Ted Pattison (&lt;a title="http://tedpattison.net/" href="http://tedpattison.net/"&gt;http://tedpattison.net/&lt;/a&gt;),&#xD;
has another &lt;a href="http://channel9.msdn.com/ShowPost.aspx?PostID=230212" target="_blank"&gt;screencast&#xD;
posted on Channel 9&lt;/a&gt; that shows the process of creating a custom workflow in Visual&#xD;
Studio for MOSS (or WSS 3.0 to be precise).  This is exactly what I needed to&#xD;
finish off my crash course in MOSS workflow!  Thanks, Ted.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Note that the version that Ted uses of the wizard is slightly different than what&#xD;
most of us would have installed today.  He was using a beta 1 installation of&#xD;
the VS tools for MOSS workflow, but I didn't have any problem following along. &#xD;
He takes a couple of minutes to work through a problem that was in the beta, but appears&#xD;
to work fine in the released version without any workaround required.  &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
One thing that I did notice, however, is that there appear to be a lot fewer "activities"&#xD;
available in the designer than he shows in the beta 1 - maybe a bunch got dropped&#xD;
after that beta.  Another problem is that the deployment seems to be completely&#xD;
different in the beta he's using and what's in RTM.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
I never did get it deployed correctly, Arya Parsee even got together with me in Office&#xD;
Live Meeting and we still couldn't get the thing deployed.  &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Arya says that he thinks I messed up the MOSS installation somehow, but we may never&#xD;
know, since I'm now billable on a new project that is going to be taking all my time&#xD;
over the next couple weeks or so.&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://agileer.com/blog/aggbug.ashx?id=2c98a851-4966-49ab-9d26-5a7dd3a85b89"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=D6vjw-OOoIE:28NVqWih0oI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=D6vjw-OOoIE:28NVqWih0oI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=D6vjw-OOoIE:28NVqWih0oI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=D6vjw-OOoIE:28NVqWih0oI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=D6vjw-OOoIE:28NVqWih0oI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=D6vjw-OOoIE:28NVqWih0oI:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Agileer/~4/D6vjw-OOoIE" height="1" width="1"/&gt;</description>
      <comments>http://agileer.com/blog/CommentView,guid,2c98a851-4966-49ab-9d26-5a7dd3a85b89.aspx</comments>
      <category>MOSS</category>
      <category>SharePoint</category>
      <category>Workflow</category>
    <feedburner:origLink>http://agileer.com/blog/2008/01/24/CustomMOSSWorkflowWithVisualStudio2005WithGuestGuruAryaParsee.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://agileer.com/blog/Trackback.aspx?guid=c66ec320-f208-4c05-9671-0e679870e8c4</trackback:ping>
      <pingback:server>http://agileer.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://agileer.com/blog/PermaLink,guid,c66ec320-f208-4c05-9671-0e679870e8c4.aspx</pingback:target>
      <dc:creator>Doug Seelinger</dc:creator>
      <wfw:comment>http://agileer.com/blog/CommentView,guid,c66ec320-f208-4c05-9671-0e679870e8c4.aspx</wfw:comment>
      <wfw:commentRss>http://agileer.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=c66ec320-f208-4c05-9671-0e679870e8c4</wfw:commentRss>
      
      <title>&amp;quot;Where everybody knows your name...&amp;quot;</title>
      <guid isPermaLink="false">http://agileer.com/blog/PermaLink,guid,c66ec320-f208-4c05-9671-0e679870e8c4.aspx</guid>
      <link>http://feedproxy.google.com/~r/Agileer/~3/UQnEjJ1C_e8/quotWhereEverybodyKnowsYourNamequot.aspx</link>
      <pubDate>Mon, 21 Jan 2008 19:03:59 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
Stop me if you've heard this one... &lt;a href="http://www.microsoft.com/winme/0801/31869/WS08_LoneServer_LongVersion.asx" target="_blank"&gt;Windows&#xD;
Server 2003 walks into a bar and...&lt;/a&gt;&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Cute.&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://agileer.com/blog/aggbug.ashx?id=c66ec320-f208-4c05-9671-0e679870e8c4"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=UQnEjJ1C_e8:73QynOQkOEs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=UQnEjJ1C_e8:73QynOQkOEs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=UQnEjJ1C_e8:73QynOQkOEs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=UQnEjJ1C_e8:73QynOQkOEs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=UQnEjJ1C_e8:73QynOQkOEs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=UQnEjJ1C_e8:73QynOQkOEs:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Agileer/~4/UQnEjJ1C_e8" height="1" width="1"/&gt;</description>
      <comments>http://agileer.com/blog/CommentView,guid,c66ec320-f208-4c05-9671-0e679870e8c4.aspx</comments>
    <feedburner:origLink>http://agileer.com/blog/2008/01/21/quotWhereEverybodyKnowsYourNamequot.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://agileer.com/blog/Trackback.aspx?guid=dbc15981-d4e0-4702-9177-1b544e279375</trackback:ping>
      <pingback:server>http://agileer.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://agileer.com/blog/PermaLink,guid,dbc15981-d4e0-4702-9177-1b544e279375.aspx</pingback:target>
      <dc:creator>Doug Seelinger</dc:creator>
      <wfw:comment>http://agileer.com/blog/CommentView,guid,dbc15981-d4e0-4702-9177-1b544e279375.aspx</wfw:comment>
      <wfw:commentRss>http://agileer.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=dbc15981-d4e0-4702-9177-1b544e279375</wfw:commentRss>
      
      <title>Creating a Workflow with SharePoint Designer 2007</title>
      <guid isPermaLink="false">http://agileer.com/blog/PermaLink,guid,dbc15981-d4e0-4702-9177-1b544e279375.aspx</guid>
      <link>http://feedproxy.google.com/~r/Agileer/~3/zcQzuXEdOjQ/CreatingAWorkflowWithSharePointDesigner2007.aspx</link>
      <pubDate>Thu, 17 Jan 2008 17:00:16 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
The next step for me in understanding workflows in MOSS is SharePoint Designer. &#xD;
There is a problem with SharePoint Designer workflows, however.  They can only&#xD;
be attached to a single Content Type or Document Library.  It's not like the&#xD;
Three-State workflow, that is available everywhere and can be attached to multiple&#xD;
things - SharePoint Designer workflows are all one-off workflows.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Note: I suspect that you can tweak the xxx.xoml.wfconfig.xml config file to associate&#xD;
this workflow with another list or library as well, but I can't be sure without trying&#xD;
and, frankly I just don't want to mess with it.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Given the above caveat, SharePoint Designer 2007 workflows are pretty powerful for&#xD;
next to zero coding (but where's the fun in that, I say!).  If, and only if,&#xD;
you have a workflow that is manually started, you can have a custom page pop up at&#xD;
initiation that can be used to gather additional information about the workflow specifically.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
But why would you have separate information just for the workflow?  Why not have&#xD;
it embedded into the list or library content type?  Good question, and there's&#xD;
a good answer.  Document libraries and lists can have multiple workflows associated&#xD;
with them, so you wouldn't want to carry around the extra data associated just with&#xD;
the workflow that may or may not be used for a particular item.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
For example, consider a document library that centered around a project type document. &#xD;
There could be many workflows associated with the project - like initiation, funding,&#xD;
execution, post-mortem.  Some may or may not happen, as in the case where a project&#xD;
was not funded, you'd skip the execution step.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
I did find at least a couple of interesting posts on Designer-specific workflows,&#xD;
I'm sure there are many more.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a title="http://blah.winsmarts.com/2006-8-SharePoint_2007__Authoring_custom_workflows_using_SharePoint_Designer.aspx" href="http://blah.winsmarts.com/2006-8-SharePoint_2007__Authoring_custom_workflows_using_SharePoint_Designer.aspx"&gt;http://blah.winsmarts.com/2006-8-SharePoint_2007__Authoring_custom_workflows_using_SharePoint_Designer.aspx&lt;/a&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
And here's a good screen-cast: &lt;a title="http://channel9.msdn.com/ShowPost.aspx?PostID=197661" href="http://channel9.msdn.com/ShowPost.aspx?PostID=197661"&gt;http://channel9.msdn.com/ShowPost.aspx?PostID=197661&lt;/a&gt;,&#xD;
that's one I don't have to do.&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://agileer.com/blog/aggbug.ashx?id=dbc15981-d4e0-4702-9177-1b544e279375"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=zcQzuXEdOjQ:cYN1vPK-fsE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=zcQzuXEdOjQ:cYN1vPK-fsE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=zcQzuXEdOjQ:cYN1vPK-fsE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=zcQzuXEdOjQ:cYN1vPK-fsE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=zcQzuXEdOjQ:cYN1vPK-fsE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=zcQzuXEdOjQ:cYN1vPK-fsE:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Agileer/~4/zcQzuXEdOjQ" height="1" width="1"/&gt;</description>
      <comments>http://agileer.com/blog/CommentView,guid,dbc15981-d4e0-4702-9177-1b544e279375.aspx</comments>
      <category>MOSS</category>
      <category>SharePoint</category>
      <category>Workflow</category>
    <feedburner:origLink>http://agileer.com/blog/2008/01/17/CreatingAWorkflowWithSharePointDesigner2007.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://agileer.com/blog/Trackback.aspx?guid=0f438c99-4f1f-43b9-83f7-249680026051</trackback:ping>
      <pingback:server>http://agileer.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://agileer.com/blog/PermaLink,guid,0f438c99-4f1f-43b9-83f7-249680026051.aspx</pingback:target>
      <dc:creator>Doug Seelinger</dc:creator>
      <wfw:comment>http://agileer.com/blog/CommentView,guid,0f438c99-4f1f-43b9-83f7-249680026051.aspx</wfw:comment>
      <wfw:commentRss>http://agileer.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=0f438c99-4f1f-43b9-83f7-249680026051</wfw:commentRss>
      <slash:comments>3</slash:comments>
      
      <title>WSS 3.0 Built-In Workflow</title>
      <guid isPermaLink="false">http://agileer.com/blog/PermaLink,guid,0f438c99-4f1f-43b9-83f7-249680026051.aspx</guid>
      <link>http://feedproxy.google.com/~r/Agileer/~3/IFpZQRQmY7s/WSS30BuiltInWorkflow.aspx</link>
      <pubDate>Wed, 16 Jan 2008 00:01:26 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
Here's the promised screen-cast.  It was a bigger deal than I thought it would&#xD;
be and I had a couple of false starts before finally getting something that worked&#xD;
- even then one of the workflow emails did not get sent for some reason or other. &#xD;
It's also about the longest screencast I've done to date at over 24 minutes. &#xD;
Covered in the screencast:&#xD;
&lt;/p&gt;&#xD;
        &lt;ul&gt;&#xD;
          &lt;li&gt;&#xD;
Creating a domain user enabled for POP3 (to allow them to send/receive email)&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Creating an Issue Tracking List in WSS 3.0&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Enabling workflow for the Issue List&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Setting up a WSS 3.0 Server's email capability&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Creating an List Item and starting the workflow&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Monitoring workflow&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Tracing an items progress through workflow.&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Completing workflow items.&lt;/li&gt;&#xD;
        &lt;/ul&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a href="http://agileer.com/screencasts/BasicWorkflow/BasicWorkflow.html" target="_blank"&gt;Enjoy&#xD;
the screencast!&lt;/a&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a href="http://agileer.com/screencasts/BasicWorkflow/BasicWorkflow.html" target="_blank"&gt;&#xD;
            &lt;img src="http://agileer.com/images/screencastThumb1.jpg"&gt;&lt;/img&gt;&#xD;
          &lt;/a&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://agileer.com/blog/aggbug.ashx?id=0f438c99-4f1f-43b9-83f7-249680026051"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=IFpZQRQmY7s:cuDUtCe5K1Y:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=IFpZQRQmY7s:cuDUtCe5K1Y:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=IFpZQRQmY7s:cuDUtCe5K1Y:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=IFpZQRQmY7s:cuDUtCe5K1Y:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=IFpZQRQmY7s:cuDUtCe5K1Y:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=IFpZQRQmY7s:cuDUtCe5K1Y:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Agileer/~4/IFpZQRQmY7s" height="1" width="1"/&gt;</description>
      <comments>http://agileer.com/blog/CommentView,guid,0f438c99-4f1f-43b9-83f7-249680026051.aspx</comments>
      <category>MOSS</category>
      <category>SharePoint</category>
      <category>Workflow</category>
    <feedburner:origLink>http://agileer.com/blog/2008/01/16/WSS30BuiltInWorkflow.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://agileer.com/blog/Trackback.aspx?guid=fa67d214-6e9f-4ec5-bbf1-8f05edf79d3e</trackback:ping>
      <pingback:server>http://agileer.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://agileer.com/blog/PermaLink,guid,fa67d214-6e9f-4ec5-bbf1-8f05edf79d3e.aspx</pingback:target>
      <dc:creator>Doug Seelinger</dc:creator>
      <wfw:comment>http://agileer.com/blog/CommentView,guid,fa67d214-6e9f-4ec5-bbf1-8f05edf79d3e.aspx</wfw:comment>
      <wfw:commentRss>http://agileer.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=fa67d214-6e9f-4ec5-bbf1-8f05edf79d3e</wfw:commentRss>
      
      <title>MOSS Workflow Notes</title>
      <guid isPermaLink="false">http://agileer.com/blog/PermaLink,guid,fa67d214-6e9f-4ec5-bbf1-8f05edf79d3e.aspx</guid>
      <link>http://feedproxy.google.com/~r/Agileer/~3/GdfQ1tetrGY/MOSSWorkflowNotes.aspx</link>
      <pubDate>Tue, 15 Jan 2008 04:42:22 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;strong&gt;Workflow (in MOSS):&lt;/strong&gt; The automated movement of documents or items&#xD;
through a specific sequence of actions or tasks.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;strong&gt;WSS 3.0&lt;/strong&gt; has one default type of workflow available - the &lt;strong&gt;&lt;em&gt;Three-state&#xD;
workflow&lt;/em&gt;&lt;/strong&gt;.  It's main purpose is to supply the &lt;strong&gt;&lt;em&gt;Issue&#xD;
Tracking&lt;/em&gt;&lt;/strong&gt; list template with its workflow, but supposedly any list that&#xD;
has a choice-type column with three or more choices (??? why &amp;gt;3 when it's a &lt;em&gt;three-state&lt;/em&gt; workflow&#xD;
???) can use the workflow.  Though this workflow is here by default to service&#xD;
the Issue Tracking list template, a new list from this template does not have the&#xD;
workflow associated with it by default.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;strong&gt;MOSS's &lt;/strong&gt;built-in workflow types are:&#xD;
&lt;/p&gt;&#xD;
        &lt;ul&gt;&#xD;
          &lt;li&gt;&#xD;
Approval - can have one or more approvers&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Collect Feedback - completed when others have sent feedback&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Collect Signatures - gathers signatures (somehow), can only be started in something&#xD;
like Word.&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Disposition Approval - participants can decide whether to retain or delete &lt;em&gt;expired&lt;/em&gt; documents&lt;/li&gt;&#xD;
        &lt;/ul&gt;&#xD;
        &lt;p&gt;&#xD;
If you want something beyond the simple workflow that's built-in, you have two other&#xD;
choices, as I mentioned in a previous post:&#xD;
&lt;/p&gt;&#xD;
        &lt;ul&gt;&#xD;
          &lt;li&gt;&#xD;
SharePoint Designer - &lt;em&gt;ONLY&lt;/em&gt; if you're dealing with a specific list or library&#xD;
- can't be copied or moved to a different list or site!&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Visual Studio Extensions for WWF, created by a professional developer.  Hey,&#xD;
that's me!  Ah, job security.&lt;/li&gt;&#xD;
        &lt;/ul&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;strong&gt;Adding workflow - &lt;/strong&gt;In order of increasing specificity, here are the &lt;em&gt;things&lt;/em&gt; in&#xD;
SharePoint to which you can add a workflow:&#xD;
&lt;/p&gt;&#xD;
        &lt;ul&gt;&#xD;
          &lt;li&gt;&#xD;
Site Content Type - any list (or document library) in a site that uses your content&#xD;
type will have the workflow available for it.  This is the most general way to&#xD;
specify workflow, though it does have to be attached to a particular content type.&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
List or Library - any item in your list (could be multiple content types) will have&#xD;
the workflow available for it.&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
List Content Type - only items in a specific list that are of a specific content type&#xD;
will have workflow available for it.&lt;/li&gt;&#xD;
        &lt;/ul&gt;&#xD;
        &lt;p&gt;&#xD;
WSS/MOSS workflow is also tightly coupled with a specific &lt;em&gt;Task List&lt;/em&gt; (you&#xD;
choose which one) besides the list that is "generating" the workflow.  Tasks&#xD;
(BigBossMan must approve/reject document X) are stored in this list.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Workflow History is stored in yet another list in MOSS/WSS.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Hey, I should now have enough info in order to create a new Issue Tracking list, enable&#xD;
workflow and to test it out.  Screen-cast tomorrow!  Should be very exciting.&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://agileer.com/blog/aggbug.ashx?id=fa67d214-6e9f-4ec5-bbf1-8f05edf79d3e"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=GdfQ1tetrGY:OWsdHkfPjjo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=GdfQ1tetrGY:OWsdHkfPjjo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=GdfQ1tetrGY:OWsdHkfPjjo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=GdfQ1tetrGY:OWsdHkfPjjo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=GdfQ1tetrGY:OWsdHkfPjjo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=GdfQ1tetrGY:OWsdHkfPjjo:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Agileer/~4/GdfQ1tetrGY" height="1" width="1"/&gt;</description>
      <comments>http://agileer.com/blog/CommentView,guid,fa67d214-6e9f-4ec5-bbf1-8f05edf79d3e.aspx</comments>
      <category>MOSS</category>
      <category>SharePoint</category>
      <category>Workflow</category>
    <feedburner:origLink>http://agileer.com/blog/2008/01/15/MOSSWorkflowNotes.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://agileer.com/blog/Trackback.aspx?guid=5ef844c4-c4d9-486c-85ca-eed12a44d5d5</trackback:ping>
      <pingback:server>http://agileer.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://agileer.com/blog/PermaLink,guid,5ef844c4-c4d9-486c-85ca-eed12a44d5d5.aspx</pingback:target>
      <dc:creator>Doug Seelinger</dc:creator>
      <wfw:comment>http://agileer.com/blog/CommentView,guid,5ef844c4-c4d9-486c-85ca-eed12a44d5d5.aspx</wfw:comment>
      <wfw:commentRss>http://agileer.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=5ef844c4-c4d9-486c-85ca-eed12a44d5d5</wfw:commentRss>
      
      <title>Stuff I Learned about MOSS Content Types Today</title>
      <guid isPermaLink="false">http://agileer.com/blog/PermaLink,guid,5ef844c4-c4d9-486c-85ca-eed12a44d5d5.aspx</guid>
      <link>http://feedproxy.google.com/~r/Agileer/~3/m4V8hxdQr_k/StuffILearnedAboutMOSSContentTypesToday.aspx</link>
      <pubDate>Tue, 15 Jan 2008 00:32:22 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
More Workflow today.  In learning about workflow I had to learn about Content&#xD;
Types.  I did find a good page on describing what Content Types are: &lt;a href="http://office.microsoft.com/en-us/sharepointtechnology/HA101215701033.aspx" target="_blank"&gt;Content&#xD;
Types&lt;/a&gt;.  Yes, it's the MS Office Online web site.  It had very good documentation. &#xD;
Here's what I learned:&#xD;
&lt;/p&gt;&#xD;
        &lt;ul&gt;&#xD;
          &lt;li&gt;&#xD;
Content Types can be defined for:&lt;/li&gt;&#xD;
          &lt;ul&gt;&#xD;
            &lt;li&gt;&#xD;
Documents&lt;/li&gt;&#xD;
            &lt;li&gt;&#xD;
List Items&lt;/li&gt;&#xD;
            &lt;li&gt;&#xD;
Folders (haven't figured out how to do this one, however)&lt;/li&gt;&#xD;
          &lt;/ul&gt;&#xD;
          &lt;li&gt;&#xD;
A Content Type can specify custom solutions of features that are associated with it&#xD;
(not sure about this one, either)&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Content Types have the concept of Inheritance (they call it a &lt;strong&gt;&lt;em&gt;hierarchy&lt;/em&gt;&lt;/strong&gt;,&#xD;
however).&lt;/li&gt;&#xD;
        &lt;/ul&gt;&#xD;
        &lt;p&gt;&#xD;
The difference between a &lt;strong&gt;&lt;em&gt;Site&lt;/em&gt;&lt;/strong&gt;and a &lt;strong&gt;&lt;em&gt;Site Collection&lt;/em&gt;&lt;/strong&gt;? &#xD;
A Site Collection is a Site that has Sub-Sites... I think, Microsoft's definition&#xD;
was kind of fuzzy.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
One difference between MOSS and WSS?  WSS has only one &lt;strong&gt;&lt;em&gt;Feature&lt;/em&gt;&lt;/strong&gt;: &lt;strong&gt;&lt;em&gt;Team&#xD;
Collaboration Lists&lt;/em&gt;&lt;/strong&gt;.&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://agileer.com/blog/aggbug.ashx?id=5ef844c4-c4d9-486c-85ca-eed12a44d5d5"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=m4V8hxdQr_k:PFoUsgEQQ8A:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=m4V8hxdQr_k:PFoUsgEQQ8A:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=m4V8hxdQr_k:PFoUsgEQQ8A:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=m4V8hxdQr_k:PFoUsgEQQ8A:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=m4V8hxdQr_k:PFoUsgEQQ8A:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=m4V8hxdQr_k:PFoUsgEQQ8A:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Agileer/~4/m4V8hxdQr_k" height="1" width="1"/&gt;</description>
      <comments>http://agileer.com/blog/CommentView,guid,5ef844c4-c4d9-486c-85ca-eed12a44d5d5.aspx</comments>
      <category>MOSS</category>
      <category>SharePoint</category>
    <feedburner:origLink>http://agileer.com/blog/2008/01/15/StuffILearnedAboutMOSSContentTypesToday.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://agileer.com/blog/Trackback.aspx?guid=79d747cf-1d08-4a56-923f-a52fe0a770cd</trackback:ping>
      <pingback:server>http://agileer.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://agileer.com/blog/PermaLink,guid,79d747cf-1d08-4a56-923f-a52fe0a770cd.aspx</pingback:target>
      <dc:creator>Doug Seelinger</dc:creator>
      <wfw:comment>http://agileer.com/blog/CommentView,guid,79d747cf-1d08-4a56-923f-a52fe0a770cd.aspx</wfw:comment>
      <wfw:commentRss>http://agileer.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=79d747cf-1d08-4a56-923f-a52fe0a770cd</wfw:commentRss>
      <slash:comments>2</slash:comments>
      
      <title>Three Ways With Workflow:</title>
      <guid isPermaLink="false">http://agileer.com/blog/PermaLink,guid,79d747cf-1d08-4a56-923f-a52fe0a770cd.aspx</guid>
      <link>http://feedproxy.google.com/~r/Agileer/~3/e15QDSz9oTQ/ThreeWaysWithWorkflow.aspx</link>
      <pubDate>Wed, 09 Jan 2008 17:27:21 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
The big world of actual "work" is rearing its ugly head at me and I need to put at&#xD;
least SOME focus on whatever is likely to be my next project.  It's a safe bet&#xD;
at the EMC Microsoft Practice that that project will involve &lt;a href="http://office.microsoft.com/en-us/sharepointserver/FX100492001033.aspx" target="_blank"&gt;MOSS&#xD;
2007&lt;/a&gt;.  I'm pretty interested in the &lt;a href="http://www.microsoft.com/windowsserver/ilm2007/faq.mspx" target="_blank"&gt;ILM&#xD;
"2"&lt;/a&gt; beta, which is heavily involved with MOSS, but chances are that it won't be&#xD;
in the EMC pipeline for awhile.  I'm at least mildly interested in &lt;a href="http://wf.netfx3.com/" target="_blank"&gt;Windows&#xD;
Workflow Foundation&lt;/a&gt;, so that's probably the best place to put my focus on for&#xD;
now.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
From my somewhat limited knowledge in MOSS - I'm not completely clueless, I just don't&#xD;
spend 40-hrs a week in MOSS unlike some of my colleagues - I see that there are basically&#xD;
three ways to "work" with workflow in MOSS:&#xD;
&lt;/p&gt;&#xD;
        &lt;ul&gt;&#xD;
          &lt;li&gt;&#xD;
Built-in Workflow to the MOSS&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Workflow built with &lt;a href="http://office.microsoft.com/en-us/sharepointdesigner/FX100487631033.aspx" target="_blank"&gt;SharePoint&#xD;
Designer&lt;/a&gt;&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Custom Workflow built in Visual Studio (or Notepad, if you really wanted to). &#xD;
My guide is &lt;a href="http://www.amazon.com/Essential-Workflow-Foundation-Microsoft-Development/dp/0321399838/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1199926065&amp;amp;sr=8-1"&gt;Essential&#xD;
Windows Workflow Foundation&lt;/a&gt;.  &#xD;
&lt;br&gt;&lt;/li&gt;&#xD;
        &lt;/ul&gt;&#xD;
        &lt;p&gt;&#xD;
For some reason I find it a big pain in the patootie to install MOSS.  Part of&#xD;
the reason is that there seems to be a big long checklist of "stuff" (maybe it's just&#xD;
in my mind) that you have to go through in order to get the development environment&#xD;
right.  So for probably the next few days I'll be putting together my own MOSS&#xD;
install.  Pray for me.  &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Fortunately, while trying to figure out how to get POP3 to work with my demo VM, I&#xD;
came across what appears to be a pretty good description of &lt;a href="http://blogs.infosupport.com/porint/archive/2007/03/01/Creating-a-MOSS--Office-Demo-setup.aspx" target="_blank"&gt;how&#xD;
to create a MOSS demo setup&lt;/a&gt;.&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://agileer.com/blog/aggbug.ashx?id=79d747cf-1d08-4a56-923f-a52fe0a770cd"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=e15QDSz9oTQ:2aeR1d80TiE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=e15QDSz9oTQ:2aeR1d80TiE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=e15QDSz9oTQ:2aeR1d80TiE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=e15QDSz9oTQ:2aeR1d80TiE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=e15QDSz9oTQ:2aeR1d80TiE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=e15QDSz9oTQ:2aeR1d80TiE:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Agileer/~4/e15QDSz9oTQ" height="1" width="1"/&gt;</description>
      <comments>http://agileer.com/blog/CommentView,guid,79d747cf-1d08-4a56-923f-a52fe0a770cd.aspx</comments>
      <category>MOSS</category>
      <category>SharePoint</category>
      <category>Workflow</category>
    <feedburner:origLink>http://agileer.com/blog/2008/01/09/ThreeWaysWithWorkflow.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://agileer.com/blog/Trackback.aspx?guid=33d30c68-39da-423f-8bbb-cd97d129d068</trackback:ping>
      <pingback:server>http://agileer.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://agileer.com/blog/PermaLink,guid,33d30c68-39da-423f-8bbb-cd97d129d068.aspx</pingback:target>
      <dc:creator>Doug Seelinger</dc:creator>
      <wfw:comment>http://agileer.com/blog/CommentView,guid,33d30c68-39da-423f-8bbb-cd97d129d068.aspx</wfw:comment>
      <wfw:commentRss>http://agileer.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=33d30c68-39da-423f-8bbb-cd97d129d068</wfw:commentRss>
      
      <title>Ajax &amp;amp; the Browser &amp;quot;Back&amp;quot; Button</title>
      <guid isPermaLink="false">http://agileer.com/blog/PermaLink,guid,33d30c68-39da-423f-8bbb-cd97d129d068.aspx</guid>
      <link>http://feedproxy.google.com/~r/Agileer/~3/-znMGJOPG8U/AjaxAmpTheBrowserQuotBackquotButton.aspx</link>
      <pubDate>Wed, 09 Jan 2008 15:52:19 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
I'm &lt;a href="http://www.asp.net/downloads/3.5-extensions/" target="_blank"&gt;watching&#xD;
another ASP.NET 3.5 Extensions video&lt;/a&gt; while waiting for information in order to&#xD;
begin work on a new proposal.  This video shows you how to allow the user to&#xD;
go "Back" in an AJAX web-app even though the page doesn't really postback&#xD;
during AJAX updates.  Normally, a regular ASP.NET app fires postbacks when clicking&#xD;
on buttons &amp;amp; what-not, but put those buttons into an UpdatePanel and you don't&#xD;
get a full postback of the page, only a partial update, which does not affect the&#xD;
browser history (and thus you can't go back).  I still have nightmares about&#xD;
the back-button in web-apps, so if it goes away, I don't care too much, but at least&#xD;
it's another tool in my box.&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://agileer.com/blog/aggbug.ashx?id=33d30c68-39da-423f-8bbb-cd97d129d068"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=-znMGJOPG8U:PUlTACVHRro:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=-znMGJOPG8U:PUlTACVHRro:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=-znMGJOPG8U:PUlTACVHRro:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=-znMGJOPG8U:PUlTACVHRro:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?i=-znMGJOPG8U:PUlTACVHRro:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Agileer?a=-znMGJOPG8U:PUlTACVHRro:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Agileer?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Agileer/~4/-znMGJOPG8U" height="1" width="1"/&gt;</description>
      <comments>http://agileer.com/blog/CommentView,guid,33d30c68-39da-423f-8bbb-cd97d129d068.aspx</comments>
    <feedburner:origLink>http://agileer.com/blog/2008/01/09/AjaxAmpTheBrowserQuotBackquotButton.aspx</feedburner:origLink></item>
  </channel>
</rss>
