<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>The Dynamic Programmer</title>
    <link>http://blog.dynamicprogrammer.com/</link>
    <description>-</description>
    <language>en-us</language>
    <copyright>Hernan Garcia</copyright>
    <lastBuildDate>Fri, 02 Jan 2009 04:38:20 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.1.8102.813</generator>
    <managingEditor>hernifootball@yahoo.com</managingEditor>
    <webMaster>hernifootball@yahoo.com</webMaster>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/TheDynamicProgrammer" type="application/rss+xml" /><item>
      <trackback:ping>http://blog.dynamicprogrammer.com/Trackback.aspx?guid=5b05ca5f-80e7-4d00-9686-62332f42d72c</trackback:ping>
      <pingback:server>http://blog.dynamicprogrammer.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.dynamicprogrammer.com/PermaLink,guid,5b05ca5f-80e7-4d00-9686-62332f42d72c.aspx</pingback:target>
      <dc:creator>Hernan</dc:creator>
      <wfw:comment>http://blog.dynamicprogrammer.com/CommentView,guid,5b05ca5f-80e7-4d00-9686-62332f42d72c.aspx</wfw:comment>
      <wfw:commentRss>http://blog.dynamicprogrammer.com/SyndicationService.asmx/GetEntryCommentsRss?guid=5b05ca5f-80e7-4d00-9686-62332f42d72c</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
 
</p>
        <p>
Once in a while I like to browse around <a href="http://www.codeplex.com" target="_blank">Codeplex</a> to
see what’s new and if I found anything interesting.
</p>
        <p>
Today I found this Gem of a project called <a href="http://www.codeplex.com/Catharsis" target="_blank">Catharsis</a>. 
<br />
To be able to use it you will need VS 2008 with <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=FBEE1648-7106-44A7-9649-6D9F6D58056E&amp;displaylang=en" target="_blank">SP1</a>. 
<br />
The <a href="http://www.microsoft.com/downloads/details.aspx?familyid=B91066B3-D1D6-4990-A45F-34CF8DBDC60C&amp;displaylang=en" target="_blank">Guidance
Automation Toolkit</a>  and I also installed the <a href="http://www.microsoft.com/downloads/details.aspx?familyid=E28205C6-BB07-401B-9A76-804784598BF0&amp;displaylang=en" target="_blank">GAX
SP1</a>.  
<br />
The <a href="http://www.codeplex.com/aspnet/Release/ProjectReleases.aspx?ReleaseId=18593" target="_blank">ASP.NET
MVC (BETA)</a> installed via the installer.
</p>
        <p>
What is Catharsis? You may ask. It’s a complete application framework that uses ASP.NET
MVC for the UI layer, they mention to support WPF projects as well but I haven’t see
it yet, maybe 1.0 version, the current release is 0.95. 
</p>
        <p>
But it’s more than that. It’s also a set of tools that integrate with Visual Studio
and provide several Wizards to do most task in a very simple way. The solution created
is quite complicate but very well organized.
</p>
        <p>
          <a href="http://blog.dynamicprogrammer.com/content/binary/WindowsLiveWriter/Catharsisacompleteframeworkfordevelopi.0_14C6D/ScreenHunter_02%202009-01-01%2023.13.49_2.jpg">
            <img title="ScreenHunter_02 2009-01-01 23.13.49" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="571" alt="ScreenHunter_02 2009-01-01 23.13.49" src="http://blog.dynamicprogrammer.com/content/binary/WindowsLiveWriter/Catharsisacompleteframeworkfordevelopi.0_14C6D/ScreenHunter_02%202009-01-01%2023.13.49_thumb.jpg" width="261" border="0" />
          </a>
        </p>
        <h3>
        </h3>
        <h3>Installing Catharsis
</h3>
        <p>
In the documentation of how to install Catharsis they recommend using the msi file,
but I couldn’t find it in the release, so I have to open the Guidance projects, do
a build and them run the msi. This was a non issue, you will be prompted to remove
the references to Source Control from the solution when you open it for the first
time, just click yes.
</p>
        <h3>Creating your first project.
</h3>
        <p>
It’s very simple open the Create new project dialog and you will see a new Catharsis
type of project
</p>
        <p>
          <a href="http://blog.dynamicprogrammer.com/content/binary/WindowsLiveWriter/Catharsisacompleteframeworkfordevelopi.0_14C6D/ScreenHunter_03%202009-01-01%2023.19.58_2.jpg">
            <img title="ScreenHunter_03 2009-01-01 23.19.58" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="425" alt="ScreenHunter_03 2009-01-01 23.19.58" src="http://blog.dynamicprogrammer.com/content/binary/WindowsLiveWriter/Catharsisacompleteframeworkfordevelopi.0_14C6D/ScreenHunter_03%202009-01-01%2023.19.58_thumb.jpg" width="582" border="0" />
          </a>
        </p>
        <p>
Enter the Name and click Ok, another window shows
</p>
        <p>
          <a href="http://blog.dynamicprogrammer.com/content/binary/WindowsLiveWriter/Catharsisacompleteframeworkfordevelopi.0_14C6D/ScreenHunter_04%202009-01-01%2023.20.26_2.jpg">
            <img title="ScreenHunter_04 2009-01-01 23.20.26" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="297" alt="ScreenHunter_04 2009-01-01 23.20.26" src="http://blog.dynamicprogrammer.com/content/binary/WindowsLiveWriter/Catharsisacompleteframeworkfordevelopi.0_14C6D/ScreenHunter_04%202009-01-01%2023.20.26_thumb.jpg" width="696" border="0" />
          </a>
        </p>
        <p>
Click Finish, sit and wait.
</p>
        <p>
At this moment you should be able to set up you Web project as the startup project
and the Default.aspx file as the Star up page, hit F5 and see it work. I had a few
issues at this point.
</p>
        <p>
The first one was that the project did not compile: 
<br />
The problem was an extra comma on the file: BaseEntityControllers.cs in the Controllers
project under the Project.Web folder. This comma is in the list of Interfaces the
class implements.
</p>
        <p>
Once fixed the project compiled with no problems but when trying to run it I had my
second issue, the tables in the database have not been created. So I had to run the
scripts located at DB_SQLServer in order 01_ first and 02_ afterwards. Notice that
the connection string I provide in the wizard was correct since NHibernate can connect
to the database, so no sure why the scripts didn’t run. 
</p>
        <p>
Note: To run the scripts make sure you change the first line of them to point to your
database (they are pointing to a Catalog called Project, maybe this is the problem
during the setup wizard?)
</p>
        <p>
Once you have done this, make sure you rebuild the project and hit F5 again and, another
problem (the last one). The log4net.dll wasn’t copy into the bin folder of the web
solution, so copy it from Assemblies/Log4Net into the proper bin or add a reference
from you web project to the log4net dll and rebuild.
</p>
        <p>
After that everything worked fine for me. I will try to port an old asp classic application
using this architecture and see what I like and what I don’t, but I suggest you give
it a try.
</p>
        <p>
There are several articles at <a href="http://www.codeproject.com/KB/applications/Catharsis.aspx" target="_blank">CodeProject</a> on
how to do different things and in more details about the architecture, Ioc, Tracking
Changes and more.
</p>
        <img width="0" height="0" src="http://blog.dynamicprogrammer.com/aggbug.ashx?id=5b05ca5f-80e7-4d00-9686-62332f42d72c" />
      <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/TheDynamicProgrammer/~4/500687980" height="1" width="1" /></body>
      <title>Catharsis, a complete framework for developing Web apps using MVC and NHibernate 2.0</title>
      <guid isPermaLink="false">http://blog.dynamicprogrammer.com/PermaLink,guid,5b05ca5f-80e7-4d00-9686-62332f42d72c.aspx</guid>
      <link>http://feeds.feedburner.com/~r/TheDynamicProgrammer/~3/500687980/CatharsisACompleteFrameworkForDevelopingWebAppsUsingMVCAndNHibernate20.aspx</link>
      <pubDate>Fri, 02 Jan 2009 04:38:20 GMT</pubDate>
      <description>&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;p&gt;
Once in a while I like to browse around &lt;a href="http://www.codeplex.com" target="_blank"&gt;Codeplex&lt;/a&gt; to
see what’s new and if I found anything interesting.
&lt;/p&gt;
&lt;p&gt;
Today I found this Gem of a project called &lt;a href="http://www.codeplex.com/Catharsis" target="_blank"&gt;Catharsis&lt;/a&gt;. 
&lt;br /&gt;
To be able to use it you will need VS 2008 with &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=FBEE1648-7106-44A7-9649-6D9F6D58056E&amp;amp;displaylang=en" target="_blank"&gt;SP1&lt;/a&gt;. 
&lt;br /&gt;
The &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=B91066B3-D1D6-4990-A45F-34CF8DBDC60C&amp;amp;displaylang=en" target="_blank"&gt;Guidance
Automation Toolkit&lt;/a&gt;&amp;#160; and I also installed the &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=E28205C6-BB07-401B-9A76-804784598BF0&amp;amp;displaylang=en" target="_blank"&gt;GAX
SP1&lt;/a&gt;.&amp;#160; 
&lt;br /&gt;
The &lt;a href="http://www.codeplex.com/aspnet/Release/ProjectReleases.aspx?ReleaseId=18593" target="_blank"&gt;ASP.NET
MVC (BETA)&lt;/a&gt; installed via the installer.
&lt;/p&gt;
&lt;p&gt;
What is Catharsis? You may ask. It’s a complete application framework that uses ASP.NET
MVC for the UI layer, they mention to support WPF projects as well but I haven’t see
it yet, maybe 1.0 version, the current release is 0.95. 
&lt;/p&gt;
&lt;p&gt;
But it’s more than that. It’s also a set of tools that integrate with Visual Studio
and provide several Wizards to do most task in a very simple way. The solution created
is quite complicate but very well organized.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blog.dynamicprogrammer.com/content/binary/WindowsLiveWriter/Catharsisacompleteframeworkfordevelopi.0_14C6D/ScreenHunter_02%202009-01-01%2023.13.49_2.jpg"&gt;&lt;img title="ScreenHunter_02 2009-01-01 23.13.49" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="571" alt="ScreenHunter_02 2009-01-01 23.13.49" src="http://blog.dynamicprogrammer.com/content/binary/WindowsLiveWriter/Catharsisacompleteframeworkfordevelopi.0_14C6D/ScreenHunter_02%202009-01-01%2023.13.49_thumb.jpg" width="261" border="0" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;h3&gt;
&lt;/h3&gt;
&lt;h3&gt;Installing Catharsis
&lt;/h3&gt;
&lt;p&gt;
In the documentation of how to install Catharsis they recommend using the msi file,
but I couldn’t find it in the release, so I have to open the Guidance projects, do
a build and them run the msi. This was a non issue, you will be prompted to remove
the references to Source Control from the solution when you open it for the first
time, just click yes.
&lt;/p&gt;
&lt;h3&gt;Creating your first project.
&lt;/h3&gt;
&lt;p&gt;
It’s very simple open the Create new project dialog and you will see a new Catharsis
type of project
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blog.dynamicprogrammer.com/content/binary/WindowsLiveWriter/Catharsisacompleteframeworkfordevelopi.0_14C6D/ScreenHunter_03%202009-01-01%2023.19.58_2.jpg"&gt;&lt;img title="ScreenHunter_03 2009-01-01 23.19.58" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="425" alt="ScreenHunter_03 2009-01-01 23.19.58" src="http://blog.dynamicprogrammer.com/content/binary/WindowsLiveWriter/Catharsisacompleteframeworkfordevelopi.0_14C6D/ScreenHunter_03%202009-01-01%2023.19.58_thumb.jpg" width="582" border="0" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Enter the Name and click Ok, another window shows
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blog.dynamicprogrammer.com/content/binary/WindowsLiveWriter/Catharsisacompleteframeworkfordevelopi.0_14C6D/ScreenHunter_04%202009-01-01%2023.20.26_2.jpg"&gt;&lt;img title="ScreenHunter_04 2009-01-01 23.20.26" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="297" alt="ScreenHunter_04 2009-01-01 23.20.26" src="http://blog.dynamicprogrammer.com/content/binary/WindowsLiveWriter/Catharsisacompleteframeworkfordevelopi.0_14C6D/ScreenHunter_04%202009-01-01%2023.20.26_thumb.jpg" width="696" border="0" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Click Finish, sit and wait.
&lt;/p&gt;
&lt;p&gt;
At this moment you should be able to set up you Web project as the startup project
and the Default.aspx file as the Star up page, hit F5 and see it work. I had a few
issues at this point.
&lt;/p&gt;
&lt;p&gt;
The first one was that the project did not compile: 
&lt;br /&gt;
The problem was an extra comma on the file: BaseEntityControllers.cs in the Controllers
project under the Project.Web folder. This comma is in the list of Interfaces the
class implements.
&lt;/p&gt;
&lt;p&gt;
Once fixed the project compiled with no problems but when trying to run it I had my
second issue, the tables in the database have not been created. So I had to run the
scripts located at DB_SQLServer in order 01_ first and 02_ afterwards. Notice that
the connection string I provide in the wizard was correct since NHibernate can connect
to the database, so no sure why the scripts didn’t run. 
&lt;/p&gt;
&lt;p&gt;
Note: To run the scripts make sure you change the first line of them to point to your
database (they are pointing to a Catalog called Project, maybe this is the problem
during the setup wizard?)
&lt;/p&gt;
&lt;p&gt;
Once you have done this, make sure you rebuild the project and hit F5 again and, another
problem (the last one). The log4net.dll wasn’t copy into the bin folder of the web
solution, so copy it from Assemblies/Log4Net into the proper bin or add a reference
from you web project to the log4net dll and rebuild.
&lt;/p&gt;
&lt;p&gt;
After that everything worked fine for me. I will try to port an old asp classic application
using this architecture and see what I like and what I don’t, but I suggest you give
it a try.
&lt;/p&gt;
&lt;p&gt;
There are several articles at &lt;a href="http://www.codeproject.com/KB/applications/Catharsis.aspx" target="_blank"&gt;CodeProject&lt;/a&gt; on
how to do different things and in more details about the architecture, Ioc, Tracking
Changes and more.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.dynamicprogrammer.com/aggbug.ashx?id=5b05ca5f-80e7-4d00-9686-62332f42d72c" /&gt;</description>
      <comments>http://blog.dynamicprogrammer.com/CommentView,guid,5b05ca5f-80e7-4d00-9686-62332f42d72c.aspx</comments>
      <category>Architecture</category>
      <category>Frameworks</category>
      <category>Programming</category>
      <category>Tools</category>
    <feedburner:origLink>http://blog.dynamicprogrammer.com/2009/01/02/CatharsisACompleteFrameworkForDevelopingWebAppsUsingMVCAndNHibernate20.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.dynamicprogrammer.com/Trackback.aspx?guid=b40f26b7-4284-4119-a544-d9f2ecc03c9f</trackback:ping>
      <pingback:server>http://blog.dynamicprogrammer.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.dynamicprogrammer.com/PermaLink,guid,b40f26b7-4284-4119-a544-d9f2ecc03c9f.aspx</pingback:target>
      <dc:creator>Hernan</dc:creator>
      <wfw:comment>http://blog.dynamicprogrammer.com/CommentView,guid,b40f26b7-4284-4119-a544-d9f2ecc03c9f.aspx</wfw:comment>
      <wfw:commentRss>http://blog.dynamicprogrammer.com/SyndicationService.asmx/GetEntryCommentsRss?guid=b40f26b7-4284-4119-a544-d9f2ecc03c9f</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
 
</p>
        <p>
I was going to write a post about this but my thoughts are exactly the same as <a href="http://weblogs.asp.net/fredriknormen/archive/2008/12/01/controllers-in-the-mvc-pattern-is-not-a-replacement-for-business-logic-layer.aspx" target="_blank">Fredrik
Normen’s.</a></p>
        <p>
For example, one thing that creeps me out is seen think like this in the Controller.
</p>
        <div style="font-size: 10pt; background: white; color: black; font-family: courier new">
          <p style="margin: 0px">
            <span style="color: #2b91af">   23</span>         <span style="color: blue">public</span><span style="color: #2b91af">ActionResult</span> Index()
</p>
          <p style="margin: 0px">
            <span style="color: #2b91af">   24</span>        
{
</p>
          <p style="margin: 0px">
            <span style="color: #2b91af">   25</span>             <span style="color: blue">var</span> repository
= <span style="color: #2b91af">IocContainer</span>.GetClassInstance&lt;<span style="color: #2b91af">IRepository</span>&gt;();
</p>
          <p style="margin: 0px">
            <span style="color: #2b91af">   26</span>             <span style="color: blue">var</span> members
= repository.GetAll&lt;<span style="color: #2b91af">Member</span>&gt;();
</p>
          <p style="margin: 0px">
            <span style="color: #2b91af">   27</span>            
ViewData[<span style="color: #a31515">"members"</span>] = members;
</p>
          <p style="margin: 0px">
            <span style="color: #2b91af">   28</span>             <span style="color: blue">return</span> View();
</p>
          <p style="margin: 0px">
            <span style="color: #2b91af">   29</span>        
}
</p>
        </div>
        <p>
Or even worse:
</p>
        <div style="font-size: 10pt; background: white; color: black; font-family: courier new">
          <p style="margin: 0px">
            <span style="color: #2b91af">   45</span>         <span style="color: blue">public</span><span style="color: #2b91af">ActionResult</span> CreateMember()
</p>
          <p style="margin: 0px">
            <span style="color: #2b91af">   46</span>        
{
</p>
          <p style="margin: 0px">
            <span style="color: #2b91af">   47</span>             <span style="color: blue">var</span> member
= <span style="color: blue">new</span><span style="color: #2b91af">Member</span>();
</p>
          <p style="margin: 0px">
            <span style="color: #2b91af">   48</span>            
member.Hydrate(Request.Form);
</p>
          <p style="margin: 0px">
            <span style="color: #2b91af">   49</span> 
</p>
          <p style="margin: 0px">
            <span style="color: #2b91af">   50</span>             <span style="color: blue">if</span> (member.Email
== <span style="color: blue">null</span>)
</p>
          <p style="margin: 0px">
            <span style="color: #2b91af">   51</span>            
{
</p>
          <p style="margin: 0px">
            <span style="color: #2b91af">   52</span>                
ViewData.ModelState.AddModelError(<span style="color: #a31515">"Email"</span>, <span style="color: #a31515">"Email
can't be empty"</span>);
</p>
          <p style="margin: 0px">
            <span style="color: #2b91af">   53</span>            
}
</p>
          <p style="margin: 0px">
            <span style="color: #2b91af">   54</span>             <span style="color: green">//More
code here</span></p>
          <p style="margin: 0px">
            <span style="color: #2b91af">   55</span>        
}
</p>
        </div>
        <p>
I don’t think that the controller should ever touch the repository and of course it
shouldn’t do any type of validation besides data entry from the view.
</p>
        <img width="0" height="0" src="http://blog.dynamicprogrammer.com/aggbug.ashx?id=b40f26b7-4284-4119-a544-d9f2ecc03c9f" />
      <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/TheDynamicProgrammer/~4/495971472" height="1" width="1" /></body>
      <title>Keep your Controllers lean.</title>
      <guid isPermaLink="false">http://blog.dynamicprogrammer.com/PermaLink,guid,b40f26b7-4284-4119-a544-d9f2ecc03c9f.aspx</guid>
      <link>http://feeds.feedburner.com/~r/TheDynamicProgrammer/~3/495971472/KeepYourControllersLean.aspx</link>
      <pubDate>Sat, 27 Dec 2008 01:22:47 GMT</pubDate>
      <description>&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;p&gt;
I was going to write a post about this but my thoughts are exactly the same as &lt;a href="http://weblogs.asp.net/fredriknormen/archive/2008/12/01/controllers-in-the-mvc-pattern-is-not-a-replacement-for-business-logic-layer.aspx" target="_blank"&gt;Fredrik
Normen’s.&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
For example, one thing that creeps me out is seen think like this in the Controller.
&lt;/p&gt;
&lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 23&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ActionResult&lt;/span&gt; Index()
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 24&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
{
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 25&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;var&lt;/span&gt; repository
= &lt;span style="color: #2b91af"&gt;IocContainer&lt;/span&gt;.GetClassInstance&amp;lt;&lt;span style="color: #2b91af"&gt;IRepository&lt;/span&gt;&amp;gt;();
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 26&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;var&lt;/span&gt; members
= repository.GetAll&amp;lt;&lt;span style="color: #2b91af"&gt;Member&lt;/span&gt;&amp;gt;();
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 27&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
ViewData[&lt;span style="color: #a31515"&gt;&amp;quot;members&amp;quot;&lt;/span&gt;] = members;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 28&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; View();
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 29&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
}
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
Or even worse:
&lt;/p&gt;
&lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 45&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ActionResult&lt;/span&gt; CreateMember()
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 46&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
{
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 47&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;var&lt;/span&gt; member
= &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Member&lt;/span&gt;();
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 48&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
member.Hydrate(Request.Form);
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 49&lt;/span&gt;&amp;#160;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 50&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (member.Email
== &lt;span style="color: blue"&gt;null&lt;/span&gt;)
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 51&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
{
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 52&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
ViewData.ModelState.AddModelError(&lt;span style="color: #a31515"&gt;&amp;quot;Email&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;Email
can't be empty&amp;quot;&lt;/span&gt;);
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 53&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
}
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 54&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;//More
code here&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 55&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
}
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
I don’t think that the controller should ever touch the repository and of course it
shouldn’t do any type of validation besides data entry from the view.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.dynamicprogrammer.com/aggbug.ashx?id=b40f26b7-4284-4119-a544-d9f2ecc03c9f" /&gt;</description>
      <comments>http://blog.dynamicprogrammer.com/CommentView,guid,b40f26b7-4284-4119-a544-d9f2ecc03c9f.aspx</comments>
      <category>Frameworks</category>
      <category>Patterns</category>
      <category>Programming</category>
    <feedburner:origLink>http://blog.dynamicprogrammer.com/2008/12/27/KeepYourControllersLean.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.dynamicprogrammer.com/Trackback.aspx?guid=1c98a0cd-4c79-4acb-af8c-8b700bdd03e6</trackback:ping>
      <pingback:server>http://blog.dynamicprogrammer.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.dynamicprogrammer.com/PermaLink,guid,1c98a0cd-4c79-4acb-af8c-8b700bdd03e6.aspx</pingback:target>
      <dc:creator>Hernan</dc:creator>
      <wfw:comment>http://blog.dynamicprogrammer.com/CommentView,guid,1c98a0cd-4c79-4acb-af8c-8b700bdd03e6.aspx</wfw:comment>
      <wfw:commentRss>http://blog.dynamicprogrammer.com/SyndicationService.asmx/GetEntryCommentsRss?guid=1c98a0cd-4c79-4acb-af8c-8b700bdd03e6</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
 
</p>
        <p>
How many times have you done this?
</p>
        <pre class="c#" name="code">public void Delete(IEnumerable objectsToDelete)<br />
{ 
<br />
if (objectsToDelete == null)<br />
{<br />
throw new ArgumentNullException("objectsToDelete");<br />
}<br />
//More code here<br />
}</pre>
        <p>
Every time I wrote this code I think, I should write a library to do this for me.
So I went ahead and wrote this simple class. The idea is to use the Introduce Assertion
Refactoring in this cases and write this code in this way.
</p>
        <pre class="c#" name="code">public void Delete(IEnumerable objectsToDelete)<br />
{<br />
Check.That(objectsToDelete).IsNotNull();<br />
//Mode code here<br />
}</pre>
        <p>
If the parameter is null an Exception of type NullReferenceException will be thrown.
Of course, this is not the right Exception in this context, so you should do this.
</p>
        <pre class="c#" name="code">public void Delete(IEnumerable objectsToDelete)<br />
{<br />
Check.That(objectsToDelete)<br />
.IsNotNull(new ArgumentNullException("objectsToDelete"));<br />
//More code here<br />
}</pre>
        <p>
Of course, I may want to check more than one thing at a time, and I may not want to
throw an Exception but look at the errors and pass them all at once to a higher tier,
maybe a UI so the user can fix the problem. 
<br />
In that case I can use it like this.
</p>
        <pre class="c#" name="code">public void Delete(IEnumerable objectsToDelete)<br />
{<br /><br />
//I want to make sure that the IEnumerable is not null<br />
//And I also want to check that is not an empty collection<br /><br />
var errors = Check.That(objectsToDelete, "objectsToDelete")<br />
.IsNotNull().CountMoreThan(0).Errors;<br /><br /><br /><br />
//More code here<br />
}</pre>
        <p>
At this moment the Check class has methods to validate String, IEnumerable, IEnumerable&lt;T&gt;,
object, int, decimal, double and DateTime. 
<br />
This is not complete by any stretch of the imagination but I like it so far.
</p>
        <p>
You can download a Release of my base library on <a href="http://code.google.com/p/latrompa/downloads/list" target="_blank">Google
code</a>. 
<br />
You can also download the code from: <a title="http://code.google.com/p/latrompa/source/checkout" href="http://code.google.com/p/latrompa/source/checkout">http://code.google.com/p/latrompa/source/checkout</a></p>
        <img width="0" height="0" src="http://blog.dynamicprogrammer.com/aggbug.ashx?id=1c98a0cd-4c79-4acb-af8c-8b700bdd03e6" />
      <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/TheDynamicProgrammer/~4/495323757" height="1" width="1" /></body>
      <title>Implementing a validation class.</title>
      <guid isPermaLink="false">http://blog.dynamicprogrammer.com/PermaLink,guid,1c98a0cd-4c79-4acb-af8c-8b700bdd03e6.aspx</guid>
      <link>http://feeds.feedburner.com/~r/TheDynamicProgrammer/~3/495323757/ImplementingAValidationClass.aspx</link>
      <pubDate>Fri, 26 Dec 2008 04:55:52 GMT</pubDate>
      <description>&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;p&gt;
How many times have you done this?
&lt;/p&gt;
&lt;pre class="c#" name="code"&gt;public void Delete(IEnumerable objectsToDelete)&lt;br /&gt;
{ 
&lt;br /&gt;
if (objectsToDelete == null)&lt;br /&gt;
{&lt;br /&gt;
throw new ArgumentNullException(&amp;quot;objectsToDelete&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
//More code here&lt;br /&gt;
}&lt;/pre&gt;
&lt;p&gt;
Every time I wrote this code I think, I should write a library to do this for me.
So I went ahead and wrote this simple class. The idea is to use the Introduce Assertion
Refactoring in this cases and write this code in this way.
&lt;/p&gt;
&lt;pre class="c#" name="code"&gt;public void Delete(IEnumerable objectsToDelete)&lt;br /&gt;
{&lt;br /&gt;
Check.That(objectsToDelete).IsNotNull();&lt;br /&gt;
//Mode code here&lt;br /&gt;
}&lt;/pre&gt;
&lt;p&gt;
If the parameter is null an Exception of type NullReferenceException will be thrown.
Of course, this is not the right Exception in this context, so you should do this.
&lt;/p&gt;
&lt;pre class="c#" name="code"&gt;public void Delete(IEnumerable objectsToDelete)&lt;br /&gt;
{&lt;br /&gt;
Check.That(objectsToDelete)&lt;br /&gt;
.IsNotNull(new ArgumentNullException(&amp;quot;objectsToDelete&amp;quot;));&lt;br /&gt;
//More code here&lt;br /&gt;
}&lt;/pre&gt;
&lt;p&gt;
Of course, I may want to check more than one thing at a time, and I may not want to
throw an Exception but look at the errors and pass them all at once to a higher tier,
maybe a UI so the user can fix the problem. 
&lt;br /&gt;
In that case I can use it like this.
&lt;/p&gt;
&lt;pre class="c#" name="code"&gt;public void Delete(IEnumerable objectsToDelete)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
//I want to make sure that the IEnumerable is not null&lt;br /&gt;
//And I also want to check that is not an empty collection&lt;br /&gt;
&lt;br /&gt;
var errors = Check.That(objectsToDelete, &amp;quot;objectsToDelete&amp;quot;)&lt;br /&gt;
.IsNotNull().CountMoreThan(0).Errors;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//More code here&lt;br /&gt;
}&lt;/pre&gt;
&lt;p&gt;
At this moment the Check class has methods to validate String, IEnumerable, IEnumerable&amp;lt;T&amp;gt;,
object, int, decimal, double and DateTime. 
&lt;br /&gt;
This is not complete by any stretch of the imagination but I like it so far.
&lt;/p&gt;
&lt;p&gt;
You can download a Release of my base library on &lt;a href="http://code.google.com/p/latrompa/downloads/list" target="_blank"&gt;Google
code&lt;/a&gt;. 
&lt;br /&gt;
You can also download the code from: &lt;a title="http://code.google.com/p/latrompa/source/checkout" href="http://code.google.com/p/latrompa/source/checkout"&gt;http://code.google.com/p/latrompa/source/checkout&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.dynamicprogrammer.com/aggbug.ashx?id=1c98a0cd-4c79-4acb-af8c-8b700bdd03e6" /&gt;</description>
      <comments>http://blog.dynamicprogrammer.com/CommentView,guid,1c98a0cd-4c79-4acb-af8c-8b700bdd03e6.aspx</comments>
      <category>Programming</category>
    <feedburner:origLink>http://blog.dynamicprogrammer.com/2008/12/26/ImplementingAValidationClass.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.dynamicprogrammer.com/Trackback.aspx?guid=89b5549c-7233-40c5-9991-4d7928b438f8</trackback:ping>
      <pingback:server>http://blog.dynamicprogrammer.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.dynamicprogrammer.com/PermaLink,guid,89b5549c-7233-40c5-9991-4d7928b438f8.aspx</pingback:target>
      <dc:creator>Hernan</dc:creator>
      <wfw:comment>http://blog.dynamicprogrammer.com/CommentView,guid,89b5549c-7233-40c5-9991-4d7928b438f8.aspx</wfw:comment>
      <wfw:commentRss>http://blog.dynamicprogrammer.com/SyndicationService.asmx/GetEntryCommentsRss?guid=89b5549c-7233-40c5-9991-4d7928b438f8</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
 
</p>
        <p>
My previous post got me thinking, what are the things I will considered as minimum
requirements for me to work in a project even when I have serious constrains on time?
</p>
        <p>
In requirements I mean methodologies and practices that I will need to use. After
some thinking this is what I came up with.
</p>
        <p>
There are at least three things, commonly associated to an <a href="http://agilemanifesto.org/" target="_blank">Agile</a> project
that I will want to have in place.
</p>
        <ul>
          <li>
Source control (yes, there are still companies that don’t know what this is). Installing
Subversion (<a href="http://www.visualsvn.com/server/" target="_blank">VisualSVN server</a> + <a href="http://tortoisesvn.tigris.org/" target="_blank">TortoiseSVN</a>)
usually takes 30/60 minutes. 
<br /></li>
          <li>
Continuous Integration server, <a href="http://confluence.public.thoughtworks.org/display/CCNET/Welcome+to+CruiseControl.NET" target="_blank">CC.net</a>, <a href="http://www.jetbrains.com/teamcity/" target="_blank">TeamCity</a>:
install and configuration 3 hours maybe half a day. 
<br /></li>
          <li>
Using TDD as a design tool at least for the domain but only If I can use <a href="http://www.jetbrains.com/resharper/" target="_blank">ReSharper</a> or
a similar tool (I can do with the free version of <a href="http://devexpress.com/Products/Visual_Studio_Add-in/CodeRushX/" target="_blank">CodeRush</a> as
well).</li>
        </ul>
        <p>
This is the type of things that I use, even when writing some demo code or my own
applications that I’m playing with. At home I have Subversion installed in my dev
machine and in and old Pentium 4 that runs TeamCity.
</p>
        <p>
I don’t think that this will add any significant amount of time and the benefits are
such that I can see myself not using them.
</p>
        <p>
I will probably don’t do much in the sense of integration test, (of any at all) in
the automated UI test fields and code coverage. I like to do that but not in circumstances
as described in the previous post.
</p>
        <img width="0" height="0" src="http://blog.dynamicprogrammer.com/aggbug.ashx?id=89b5549c-7233-40c5-9991-4d7928b438f8" />
      <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/TheDynamicProgrammer/~4/494465166" height="1" width="1" /></body>
      <title>My actual minimum requirements for a project</title>
      <guid isPermaLink="false">http://blog.dynamicprogrammer.com/PermaLink,guid,89b5549c-7233-40c5-9991-4d7928b438f8.aspx</guid>
      <link>http://feeds.feedburner.com/~r/TheDynamicProgrammer/~3/494465166/MyActualMinimumRequirementsForAProject.aspx</link>
      <pubDate>Thu, 25 Dec 2008 00:01:00 GMT</pubDate>
      <description>&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;p&gt;
My previous post got me thinking, what are the things I will considered as minimum
requirements for me to work in a project even when I have serious constrains on time?
&lt;/p&gt;
&lt;p&gt;
In requirements I mean methodologies and practices that I will need to use. After
some thinking this is what I came up with.
&lt;/p&gt;
&lt;p&gt;
There are at least three things, commonly associated to an &lt;a href="http://agilemanifesto.org/" target="_blank"&gt;Agile&lt;/a&gt; project
that I will want to have in place.
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Source control (yes, there are still companies that don’t know what this is). Installing
Subversion (&lt;a href="http://www.visualsvn.com/server/" target="_blank"&gt;VisualSVN server&lt;/a&gt; + &lt;a href="http://tortoisesvn.tigris.org/" target="_blank"&gt;TortoiseSVN&lt;/a&gt;)
usually takes 30/60 minutes. 
&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;
Continuous Integration server, &lt;a href="http://confluence.public.thoughtworks.org/display/CCNET/Welcome+to+CruiseControl.NET" target="_blank"&gt;CC.net&lt;/a&gt;, &lt;a href="http://www.jetbrains.com/teamcity/" target="_blank"&gt;TeamCity&lt;/a&gt;:
install and configuration 3 hours maybe half a day. 
&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;
Using TDD as a design tool at least for the domain but only If I can use &lt;a href="http://www.jetbrains.com/resharper/" target="_blank"&gt;ReSharper&lt;/a&gt; or
a similar tool (I can do with the free version of &lt;a href="http://devexpress.com/Products/Visual_Studio_Add-in/CodeRushX/" target="_blank"&gt;CodeRush&lt;/a&gt; as
well).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
This is the type of things that I use, even when writing some demo code or my own
applications that I’m playing with. At home I have Subversion installed in my dev
machine and in and old Pentium 4 that runs TeamCity.
&lt;/p&gt;
&lt;p&gt;
I don’t think that this will add any significant amount of time and the benefits are
such that I can see myself not using them.
&lt;/p&gt;
&lt;p&gt;
I will probably don’t do much in the sense of integration test, (of any at all) in
the automated UI test fields and code coverage. I like to do that but not in circumstances
as described in the previous post.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.dynamicprogrammer.com/aggbug.ashx?id=89b5549c-7233-40c5-9991-4d7928b438f8" /&gt;</description>
      <comments>http://blog.dynamicprogrammer.com/CommentView,guid,89b5549c-7233-40c5-9991-4d7928b438f8.aspx</comments>
      <category>Methodology</category>
      <category>Programming</category>
      <category>Tools</category>
    <feedburner:origLink>http://blog.dynamicprogrammer.com/2008/12/25/MyActualMinimumRequirementsForAProject.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.dynamicprogrammer.com/Trackback.aspx?guid=61264dd3-3eca-4006-bca9-4da8a5c94334</trackback:ping>
      <pingback:server>http://blog.dynamicprogrammer.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.dynamicprogrammer.com/PermaLink,guid,61264dd3-3eca-4006-bca9-4da8a5c94334.aspx</pingback:target>
      <dc:creator>Hernan</dc:creator>
      <wfw:comment>http://blog.dynamicprogrammer.com/CommentView,guid,61264dd3-3eca-4006-bca9-4da8a5c94334.aspx</wfw:comment>
      <wfw:commentRss>http://blog.dynamicprogrammer.com/SyndicationService.asmx/GetEntryCommentsRss?guid=61264dd3-3eca-4006-bca9-4da8a5c94334</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
 
</p>
        <p>
          <a href="http://www.azamsharp.com/Default.aspx" target="_blank">Mohammad Azam</a> has
a post entitled <a href="http://www.azamsharp.com/Posts/145_When_Being_Agile_Kills_the_Project.aspx" target="_blank">When
Being Agile Kills the Project</a>. He mentions a project were the client gave a one
month deadline not negotiable and so, he had to go and start cutting corners to make
the deadline since, he <strike>wanted</strike> needed to keep his job (totally reasonable,
keeping the job I mean).
</p>
        <blockquote>
          <p>
Unfortunately, in this case the owner was fixed with the deadline and was not willing
to move it further. The other option was to leave the project and search for a different
one. This option was not reasonable for me as I was on a worker visa and finding another
company to sponsor a new worker visa is like finding a needle in a hay stack
</p>
        </blockquote>
        <p>
There is no discussion on this, but this post got me thinking. First the things that
they have to sacrifice.
</p>
        <blockquote>
          <p>
I said earlier that the reasonable deadline for the project was 3 months. This will
include all levels of testing, clean separation of code, automated build etc. When
the project was to be completed within a month I had to compromise many of the agile
methods. The application was a simple 3-layer application with no unit tests and no
automated deployment. 
</p>
        </blockquote>
        <p>
All this make me think that the company, the development team/division and everything
else in general weren’t Agile (in a sense of practicing Agile methodologies). Mohammad
was in a non Agile company, with totally unrealistic deadlines and in a terrible position
due to the sponsorship. He manage to keep his client happy and keep his job.
</p>
        <blockquote>
          <p>
The project was finish in exactly 29 days. I had to work some late nights but the
project was deployed successfully. 
</p>
        </blockquote>
        <p>
But I had to disagree with the conclusions draw from his experience.
</p>
        <blockquote>
          <p>
This experience led me to believe that all the projects cannot be agile projects.
Sometime you will have to give up agile principles just to meet the deadline. Yes,
the resultant code was messy but at the end I get to keep my job.
</p>
        </blockquote>
        <p>
This is only true in situations like the one he described. I will paraphrase and said:
Not all companies are ready to work in an Agile manner. This is true and will be true
for a while, maybe for ever. I think that been in Mohammad situation I will probably
do the same, write the code the faster I can to have it shipped. This doesn’t mean
that projects can’t be Agile, any and all projects can be Agile. This is a question
of the people involved in the project and not the project per se.
</p>
        <p>
As a comment to the post mention:
</p>
        <blockquote>
          <ul>
            <li>
by Domingos on 12/23/2008 6:07:49 AM 
</li>
            <li>
That's why being agile is not only about engineering practices. 
<br />
In order to be Agile, a company needs to change the way it does business. 
<br />
At the end of the day, it is about what applies to your situation. No one should never
adopt all practices blindly without consideration. 
<br />
I would have done exactly what you did: put everything in a balance and decide what
practice to use in your specific case. And you were 'agile', but no Agile. And I think
that it is the the former that really matters. 
<br /><a href="http://www.codeinstructions.com" target="_blank">http://www.codeinstructions.com</a></li>
          </ul>
        </blockquote>
        <p>
Mohammad post reminded me how lucky I’m to be able to work in a company were not just
Agile but even Lean principles are applied, and not only at the development level
but by our clients.
</p>
        <img width="0" height="0" src="http://blog.dynamicprogrammer.com/aggbug.ashx?id=61264dd3-3eca-4006-bca9-4da8a5c94334" />
      <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/TheDynamicProgrammer/~4/493742269" height="1" width="1" /></body>
      <title>Can Agile kill a project?</title>
      <guid isPermaLink="false">http://blog.dynamicprogrammer.com/PermaLink,guid,61264dd3-3eca-4006-bca9-4da8a5c94334.aspx</guid>
      <link>http://feeds.feedburner.com/~r/TheDynamicProgrammer/~3/493742269/CanAgileKillAProject.aspx</link>
      <pubDate>Wed, 24 Dec 2008 04:43:13 GMT</pubDate>
      <description>&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.azamsharp.com/Default.aspx" target="_blank"&gt;Mohammad Azam&lt;/a&gt; has
a post entitled &lt;a href="http://www.azamsharp.com/Posts/145_When_Being_Agile_Kills_the_Project.aspx" target="_blank"&gt;When
Being Agile Kills the Project&lt;/a&gt;. He mentions a project were the client gave a one
month deadline not negotiable and so, he had to go and start cutting corners to make
the deadline since, he &lt;strike&gt;wanted&lt;/strike&gt; needed to keep his job (totally reasonable,
keeping the job I mean).
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
Unfortunately, in this case the owner was fixed with the deadline and was not willing
to move it further. The other option was to leave the project and search for a different
one. This option was not reasonable for me as I was on a worker visa and finding another
company to sponsor a new worker visa is like finding a needle in a hay stack
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
There is no discussion on this, but this post got me thinking. First the things that
they have to sacrifice.
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
I said earlier that the reasonable deadline for the project was 3 months. This will
include all levels of testing, clean separation of code, automated build etc. When
the project was to be completed within a month I had to compromise many of the agile
methods. The application was a simple 3-layer application with no unit tests and no
automated deployment. 
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
All this make me think that the company, the development team/division and everything
else in general weren’t Agile (in a sense of practicing Agile methodologies). Mohammad
was in a non Agile company, with totally unrealistic deadlines and in a terrible position
due to the sponsorship. He manage to keep his client happy and keep his job.
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
The project was finish in exactly 29 days. I had to work some late nights but the
project was deployed successfully. 
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
But I had to disagree with the conclusions draw from his experience.
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
This experience led me to believe that all the projects cannot be agile projects.
Sometime you will have to give up agile principles just to meet the deadline. Yes,
the resultant code was messy but at the end I get to keep my job.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
This is only true in situations like the one he described. I will paraphrase and said:
Not all companies are ready to work in an Agile manner. This is true and will be true
for a while, maybe for ever. I think that been in Mohammad situation I will probably
do the same, write the code the faster I can to have it shipped. This doesn’t mean
that projects can’t be Agile, any and all projects can be Agile. This is a question
of the people involved in the project and not the project per se.
&lt;/p&gt;
&lt;p&gt;
As a comment to the post mention:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;ul&gt;
&lt;li&gt;
by Domingos on 12/23/2008 6:07:49 AM 
&lt;/li&gt;
&lt;li&gt;
That's why being agile is not only about engineering practices. 
&lt;br /&gt;
In order to be Agile, a company needs to change the way it does business. 
&lt;br /&gt;
At the end of the day, it is about what applies to your situation. No one should never
adopt all practices blindly without consideration. 
&lt;br /&gt;
I would have done exactly what you did: put everything in a balance and decide what
practice to use in your specific case. And you were 'agile', but no Agile. And I think
that it is the the former that really matters. 
&lt;br /&gt;
&lt;a href="http://www.codeinstructions.com" target="_blank"&gt;http://www.codeinstructions.com&lt;/a&gt; 
&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Mohammad post reminded me how lucky I’m to be able to work in a company were not just
Agile but even Lean principles are applied, and not only at the development level
but by our clients.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.dynamicprogrammer.com/aggbug.ashx?id=61264dd3-3eca-4006-bca9-4da8a5c94334" /&gt;</description>
      <comments>http://blog.dynamicprogrammer.com/CommentView,guid,61264dd3-3eca-4006-bca9-4da8a5c94334.aspx</comments>
      <category>Methodology</category>
    <feedburner:origLink>http://blog.dynamicprogrammer.com/2008/12/24/CanAgileKillAProject.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.dynamicprogrammer.com/Trackback.aspx?guid=12de35b9-88b4-48a0-960b-1d0d989485a9</trackback:ping>
      <pingback:server>http://blog.dynamicprogrammer.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.dynamicprogrammer.com/PermaLink,guid,12de35b9-88b4-48a0-960b-1d0d989485a9.aspx</pingback:target>
      <dc:creator>Hernan</dc:creator>
      <wfw:comment>http://blog.dynamicprogrammer.com/CommentView,guid,12de35b9-88b4-48a0-960b-1d0d989485a9.aspx</wfw:comment>
      <wfw:commentRss>http://blog.dynamicprogrammer.com/SyndicationService.asmx/GetEntryCommentsRss?guid=12de35b9-88b4-48a0-960b-1d0d989485a9</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
 
</p>
        <p>
A post by <a href="http://igorbrejc.net/development/continuous-integration/continuous-integration-builds-dos-and-donts" target="_blank">Igor
Brejc</a> with a set of valid points when implementing Continuous Integration.
</p>
        <img width="0" height="0" src="http://blog.dynamicprogrammer.com/aggbug.ashx?id=12de35b9-88b4-48a0-960b-1d0d989485a9" />
      <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/TheDynamicProgrammer/~4/492728469" height="1" width="1" /></body>
      <title>Continuous Integration Do’s and Don't</title>
      <guid isPermaLink="false">http://blog.dynamicprogrammer.com/PermaLink,guid,12de35b9-88b4-48a0-960b-1d0d989485a9.aspx</guid>
      <link>http://feeds.feedburner.com/~r/TheDynamicProgrammer/~3/492728469/ContinuousIntegrationDosAndDont.aspx</link>
      <pubDate>Tue, 23 Dec 2008 11:40:00 GMT</pubDate>
      <description>&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;p&gt;
A post by &lt;a href="http://igorbrejc.net/development/continuous-integration/continuous-integration-builds-dos-and-donts" target="_blank"&gt;Igor
Brejc&lt;/a&gt; with a set of valid points when implementing Continuous Integration.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.dynamicprogrammer.com/aggbug.ashx?id=12de35b9-88b4-48a0-960b-1d0d989485a9" /&gt;</description>
      <comments>http://blog.dynamicprogrammer.com/CommentView,guid,12de35b9-88b4-48a0-960b-1d0d989485a9.aspx</comments>
      <category>Continuous Integration</category>
      <category>Methodology</category>
    <feedburner:origLink>http://blog.dynamicprogrammer.com/2008/12/23/ContinuousIntegrationDosAndDont.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.dynamicprogrammer.com/Trackback.aspx?guid=7f07b88b-c97e-4055-a243-e12690276b3f</trackback:ping>
      <pingback:server>http://blog.dynamicprogrammer.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.dynamicprogrammer.com/PermaLink,guid,7f07b88b-c97e-4055-a243-e12690276b3f.aspx</pingback:target>
      <dc:creator>Hernan</dc:creator>
      <wfw:comment>http://blog.dynamicprogrammer.com/CommentView,guid,7f07b88b-c97e-4055-a243-e12690276b3f.aspx</wfw:comment>
      <wfw:commentRss>http://blog.dynamicprogrammer.com/SyndicationService.asmx/GetEntryCommentsRss?guid=7f07b88b-c97e-4055-a243-e12690276b3f</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
 
</p>
        <p>
          <a href="http://www.lostechies.com/blogs/derickbailey/default.aspx" target="_blank">Derick
Bailey</a> is doing a very good series on Kanban. 
</p>
        <p>
So far he posted about: The board, queues, order points, pipelines, handling bugs
and emergency fixes.
</p>
        <p>
You can find all the posts <a href="http://www.lostechies.com/blogs/derickbailey/archive/tags/Kanban/default.aspx" target="_blank">under
the Kanban tag</a>.
</p>
        <img width="0" height="0" src="http://blog.dynamicprogrammer.com/aggbug.ashx?id=7f07b88b-c97e-4055-a243-e12690276b3f" />
      <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/TheDynamicProgrammer/~4/492728470" height="1" width="1" /></body>
      <title>Los Techies is having a very interesting series on Kanban</title>
      <guid isPermaLink="false">http://blog.dynamicprogrammer.com/PermaLink,guid,7f07b88b-c97e-4055-a243-e12690276b3f.aspx</guid>
      <link>http://feeds.feedburner.com/~r/TheDynamicProgrammer/~3/492728470/LosTechiesIsHavingAVeryInterestingSeriesOnKanban.aspx</link>
      <pubDate>Tue, 23 Dec 2008 11:36:00 GMT</pubDate>
      <description>&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.lostechies.com/blogs/derickbailey/default.aspx" target="_blank"&gt;Derick
Bailey&lt;/a&gt; is doing a very good series on Kanban. 
&lt;/p&gt;
&lt;p&gt;
So far he posted about: The board, queues, order points, pipelines, handling bugs
and emergency fixes.
&lt;/p&gt;
&lt;p&gt;
You can find all the posts &lt;a href="http://www.lostechies.com/blogs/derickbailey/archive/tags/Kanban/default.aspx" target="_blank"&gt;under
the Kanban tag&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.dynamicprogrammer.com/aggbug.ashx?id=7f07b88b-c97e-4055-a243-e12690276b3f" /&gt;</description>
      <comments>http://blog.dynamicprogrammer.com/CommentView,guid,7f07b88b-c97e-4055-a243-e12690276b3f.aspx</comments>
      <category>Methodology</category>
      <category>Tools</category>
    <feedburner:origLink>http://blog.dynamicprogrammer.com/2008/12/23/LosTechiesIsHavingAVeryInterestingSeriesOnKanban.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.dynamicprogrammer.com/Trackback.aspx?guid=ae19dcc0-2457-406c-b597-829f36c741fd</trackback:ping>
      <pingback:server>http://blog.dynamicprogrammer.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.dynamicprogrammer.com/PermaLink,guid,ae19dcc0-2457-406c-b597-829f36c741fd.aspx</pingback:target>
      <dc:creator>Hernan</dc:creator>
      <wfw:comment>http://blog.dynamicprogrammer.com/CommentView,guid,ae19dcc0-2457-406c-b597-829f36c741fd.aspx</wfw:comment>
      <wfw:commentRss>http://blog.dynamicprogrammer.com/SyndicationService.asmx/GetEntryCommentsRss?guid=ae19dcc0-2457-406c-b597-829f36c741fd</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
 
</p>
        <p>
          <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=0178e2ef-9da8-445e-9348-c93f24cc9f9d&amp;displaylang=en" target="_blank">CAT</a> is
a Visual Studio Add-in that analyze your code and all the references in your project
looking for vulnerabilities to common attacks.
</p>
        <p>
According to the copy in the download page this version deals with:
</p>
        <ul>
          <li>
Cross Site Scripting 
</li>
          <li>
SQL Injection 
</li>
          <li>
Process Command Injection 
</li>
          <li>
File Canonicalization 
</li>
          <li>
Exception Information 
</li>
          <li>
LDAP Injection 
</li>
          <li>
XPATH Injection 
</li>
          <li>
Redirection to User Controlled Site</li>
        </ul>
        <img width="0" height="0" src="http://blog.dynamicprogrammer.com/aggbug.ashx?id=ae19dcc0-2457-406c-b597-829f36c741fd" />
      <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/TheDynamicProgrammer/~4/491904696" height="1" width="1" /></body>
      <title>Microsoft Code Analysis Tool (CAT) identify vulnerabilities on your code.</title>
      <guid isPermaLink="false">http://blog.dynamicprogrammer.com/PermaLink,guid,ae19dcc0-2457-406c-b597-829f36c741fd.aspx</guid>
      <link>http://feeds.feedburner.com/~r/TheDynamicProgrammer/~3/491904696/MicrosoftCodeAnalysisToolCATIdentifyVulnerabilitiesOnYourCode.aspx</link>
      <pubDate>Mon, 22 Dec 2008 11:29:00 GMT</pubDate>
      <description>&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=0178e2ef-9da8-445e-9348-c93f24cc9f9d&amp;amp;displaylang=en" target="_blank"&gt;CAT&lt;/a&gt; is
a Visual Studio Add-in that analyze your code and all the references in your project
looking for vulnerabilities to common attacks.
&lt;/p&gt;
&lt;p&gt;
According to the copy in the download page this version deals with:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Cross Site Scripting 
&lt;/li&gt;
&lt;li&gt;
SQL Injection 
&lt;/li&gt;
&lt;li&gt;
Process Command Injection 
&lt;/li&gt;
&lt;li&gt;
File Canonicalization 
&lt;/li&gt;
&lt;li&gt;
Exception Information 
&lt;/li&gt;
&lt;li&gt;
LDAP Injection 
&lt;/li&gt;
&lt;li&gt;
XPATH Injection 
&lt;/li&gt;
&lt;li&gt;
Redirection to User Controlled Site&lt;/li&gt;
&lt;/ul&gt;
&lt;img width="0" height="0" src="http://blog.dynamicprogrammer.com/aggbug.ashx?id=ae19dcc0-2457-406c-b597-829f36c741fd" /&gt;</description>
      <comments>http://blog.dynamicprogrammer.com/CommentView,guid,ae19dcc0-2457-406c-b597-829f36c741fd.aspx</comments>
      <category>Tools</category>
    <feedburner:origLink>http://blog.dynamicprogrammer.com/2008/12/22/MicrosoftCodeAnalysisToolCATIdentifyVulnerabilitiesOnYourCode.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.dynamicprogrammer.com/Trackback.aspx?guid=80c0841e-2e14-4f33-9cfd-5be93582f8dc</trackback:ping>
      <pingback:server>http://blog.dynamicprogrammer.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.dynamicprogrammer.com/PermaLink,guid,80c0841e-2e14-4f33-9cfd-5be93582f8dc.aspx</pingback:target>
      <dc:creator>Hernan</dc:creator>
      <wfw:comment>http://blog.dynamicprogrammer.com/CommentView,guid,80c0841e-2e14-4f33-9cfd-5be93582f8dc.aspx</wfw:comment>
      <wfw:commentRss>http://blog.dynamicprogrammer.com/SyndicationService.asmx/GetEntryCommentsRss?guid=80c0841e-2e14-4f33-9cfd-5be93582f8dc</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
 
</p>
        <p>
At least two really good post today about the future RC1 for the ASP.NET MVC framework. <a href="http://weblogs.asp.net/scottgu/archive/2008/12/19/asp-net-mvc-design-gallery-and-upcoming-view-improvements-with-the-asp-net-mvc-release-candidate.aspx" target="_blank">Scott
Gu</a> has a very detailed post with some of the new features expected in RC1. <a href="http://haacked.com/archive/2008/12/19/a-little-holiday-love-from-the-asp.net-mvc-team.aspx" target="_blank">Phil
Haack</a> talks about the delay and the improvements with the Views.
</p>
        <p>
Scaffolding, views without code behind (yeah!), new HtmlHelper&lt;TModel&gt; and AjaxHelper&lt;TModel&gt;
types to build strongly typed HTML and AJAX helpers (this should remove the need for
magic string.
</p>
        <p>
The feature that got most exited was the changes to the Views, no code behind is,
IMHO the way the Views should be. 
</p>
        <p>
I can’t wait to put my hands in this release.
</p>
        <img width="0" height="0" src="http://blog.dynamicprogrammer.com/aggbug.ashx?id=80c0841e-2e14-4f33-9cfd-5be93582f8dc" />
      <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/TheDynamicProgrammer/~4/490251474" height="1" width="1" /></body>
      <title>ASP.NET MVC RC 1 coming next January.</title>
      <guid isPermaLink="false">http://blog.dynamicprogrammer.com/PermaLink,guid,80c0841e-2e14-4f33-9cfd-5be93582f8dc.aspx</guid>
      <link>http://feeds.feedburner.com/~r/TheDynamicProgrammer/~3/490251474/ASPNETMVCRC1ComingNextJanuary.aspx</link>
      <pubDate>Sat, 20 Dec 2008 22:48:00 GMT</pubDate>
      <description>&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
At least two really good post today about the future RC1 for the ASP.NET MVC framework. &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/12/19/asp-net-mvc-design-gallery-and-upcoming-view-improvements-with-the-asp-net-mvc-release-candidate.aspx" target="_blank"&gt;Scott
Gu&lt;/a&gt; has a very detailed post with some of the new features expected in RC1. &lt;a href="http://haacked.com/archive/2008/12/19/a-little-holiday-love-from-the-asp.net-mvc-team.aspx" target="_blank"&gt;Phil
Haack&lt;/a&gt; talks about the delay and the improvements with the Views.
&lt;/p&gt;
&lt;p&gt;
Scaffolding, views without code behind (yeah!), new HtmlHelper&amp;lt;TModel&amp;gt; and AjaxHelper&amp;lt;TModel&amp;gt;
types to build strongly typed HTML and AJAX helpers (this should remove the need for
magic string.
&lt;/p&gt;
&lt;p&gt;
The feature that got most exited was the changes to the Views, no code behind is,
IMHO the way the Views should be. 
&lt;/p&gt;
&lt;p&gt;
I can’t wait to put my hands in this release.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.dynamicprogrammer.com/aggbug.ashx?id=80c0841e-2e14-4f33-9cfd-5be93582f8dc" /&gt;</description>
      <comments>http://blog.dynamicprogrammer.com/CommentView,guid,80c0841e-2e14-4f33-9cfd-5be93582f8dc.aspx</comments>
      <category>Frameworks</category>
      <category>Programming</category>
    <feedburner:origLink>http://blog.dynamicprogrammer.com/2008/12/20/ASPNETMVCRC1ComingNextJanuary.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.dynamicprogrammer.com/Trackback.aspx?guid=39e90e60-79aa-4772-b00a-d581f3f7ab78</trackback:ping>
      <pingback:server>http://blog.dynamicprogrammer.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.dynamicprogrammer.com/PermaLink,guid,39e90e60-79aa-4772-b00a-d581f3f7ab78.aspx</pingback:target>
      <dc:creator>Hernan</dc:creator>
      <wfw:comment>http://blog.dynamicprogrammer.com/CommentView,guid,39e90e60-79aa-4772-b00a-d581f3f7ab78.aspx</wfw:comment>
      <wfw:commentRss>http://blog.dynamicprogrammer.com/SyndicationService.asmx/GetEntryCommentsRss?guid=39e90e60-79aa-4772-b00a-d581f3f7ab78</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
 
</p>
        <p>
In my machine at work I can’t install ASP.NET MVC (it installs but fails to install
the project templates, I don’t know why and I haven’t had time to look into it). When
I installed Sharp Architecture everything went well, but running the project template
yields and error. I was doing this at a Starbuck’s, trying to build a proof of concept
and was a bit frustrating. I was sure that the culprit was related to the error I
had installing MVC.
</p>
        <p>
Last night I run across a thread entitled <a href="http://groups.google.com/group/sharp-architecture/browse_thread/thread/bd62213055e35bea?hl=en" target="_blank">Removed
dependency on installed ASP.NET MVC Beta</a> on the <a href="http://groups.google.com/group/sharp-architecture?hl=en" target="_blank">Sharp
Architecture discussion group</a>. In this thread in reference to a post by <a href="http://codebetter.com/blogs/kyle.baley/archive/2008/12/12/asp-net-mvc-and-the-gaaak.aspx" target="_blank">Kyle
Baley</a> where he mentions the same problem, <a href="http://devlicio.us/blogs/billy_mccafferty/default.aspx" target="_blank">Billy
McCafferty</a> notes that the reference to the MVC templates have been removed on
the trunk.
</p>
        <p>
Kyle’s post mentions a few alternative solutions and further down the thread there
is a discussion about losing the item templates for the MVC project and Replacing
them with ReSharper templates.
</p>
        <p>
I will suggest just that you can also use Visual Studio Item Templates, <a href="http://msdn.microsoft.com/en-us/library/tsyyf0yh(VS.80).aspx" target="_blank">creating
them yourself</a> in case you don’t have ReSharper.  You can see an example on
building this item templates in this old post of mine <a href="http://blog.dynamicprogrammer.com/2008/05/18/NantBuildScriptsTemplateForVisualStudio.aspx">Nant
build scripts template for Visual Studio</a>.
</p>
        <img width="0" height="0" src="http://blog.dynamicprogrammer.com/aggbug.ashx?id=39e90e60-79aa-4772-b00a-d581f3f7ab78" />
      <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/TheDynamicProgrammer/~4/490251477" height="1" width="1" /></body>
      <title>Sharp Architecture project template in a machine without ASP.NET MVC Beta installed</title>
      <guid isPermaLink="false">http://blog.dynamicprogrammer.com/PermaLink,guid,39e90e60-79aa-4772-b00a-d581f3f7ab78.aspx</guid>
      <link>http://feeds.feedburner.com/~r/TheDynamicProgrammer/~3/490251477/SharpArchitectureProjectTemplateInAMachineWithoutASPNETMVCBetaInstalled.aspx</link>
      <pubDate>Sat, 20 Dec 2008 12:56:00 GMT</pubDate>
      <description>&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;p&gt;
In my machine at work I can’t install ASP.NET MVC (it installs but fails to install
the project templates, I don’t know why and I haven’t had time to look into it). When
I installed Sharp Architecture everything went well, but running the project template
yields and error. I was doing this at a Starbuck’s, trying to build a proof of concept
and was a bit frustrating. I was sure that the culprit was related to the error I
had installing MVC.
&lt;/p&gt;
&lt;p&gt;
Last night I run across a thread entitled &lt;a href="http://groups.google.com/group/sharp-architecture/browse_thread/thread/bd62213055e35bea?hl=en" target="_blank"&gt;Removed
dependency on installed ASP.NET MVC Beta&lt;/a&gt; on the &lt;a href="http://groups.google.com/group/sharp-architecture?hl=en" target="_blank"&gt;Sharp
Architecture discussion group&lt;/a&gt;. In this thread in reference to a post by &lt;a href="http://codebetter.com/blogs/kyle.baley/archive/2008/12/12/asp-net-mvc-and-the-gaaak.aspx" target="_blank"&gt;Kyle
Baley&lt;/a&gt; where he mentions the same problem, &lt;a href="http://devlicio.us/blogs/billy_mccafferty/default.aspx" target="_blank"&gt;Billy
McCafferty&lt;/a&gt; notes that the reference to the MVC templates have been removed on
the trunk.
&lt;/p&gt;
&lt;p&gt;
Kyle’s post mentions a few alternative solutions and further down the thread there
is a discussion about losing the item templates for the MVC project and Replacing
them with ReSharper templates.
&lt;/p&gt;
&lt;p&gt;
I will suggest just that you can also use Visual Studio Item Templates, &lt;a href="http://msdn.microsoft.com/en-us/library/tsyyf0yh(VS.80).aspx" target="_blank"&gt;creating
them yourself&lt;/a&gt; in case you don’t have ReSharper.&amp;#160; You can see an example on
building this item templates in this old post of mine &lt;a href="http://blog.dynamicprogrammer.com/2008/05/18/NantBuildScriptsTemplateForVisualStudio.aspx"&gt;Nant
build scripts template for Visual Studio&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.dynamicprogrammer.com/aggbug.ashx?id=39e90e60-79aa-4772-b00a-d581f3f7ab78" /&gt;</description>
      <comments>http://blog.dynamicprogrammer.com/CommentView,guid,39e90e60-79aa-4772-b00a-d581f3f7ab78.aspx</comments>
      <category>Programming</category>
      <category>Tools</category>
    <feedburner:origLink>http://blog.dynamicprogrammer.com/2008/12/20/SharpArchitectureProjectTemplateInAMachineWithoutASPNETMVCBetaInstalled.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.dynamicprogrammer.com/Trackback.aspx?guid=509262fc-e0eb-47ee-8f00-6ac648211106</trackback:ping>
      <pingback:server>http://blog.dynamicprogrammer.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.dynamicprogrammer.com/PermaLink,guid,509262fc-e0eb-47ee-8f00-6ac648211106.aspx</pingback:target>
      <dc:creator>Hernan</dc:creator>
      <wfw:comment>http://blog.dynamicprogrammer.com/CommentView,guid,509262fc-e0eb-47ee-8f00-6ac648211106.aspx</wfw:comment>
      <wfw:commentRss>http://blog.dynamicprogrammer.com/SyndicationService.asmx/GetEntryCommentsRss?guid=509262fc-e0eb-47ee-8f00-6ac648211106</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
 
</p>
        <p>
On December 2nd <a href="http://code.google.com/p/sharp-architecture/" target="_blank">Sharp
Architecture</a> released <a href="http://code.google.com/p/sharp-architecture/downloads/detail?name=SharpArchitecture%200.9.114.zip&amp;can=2&amp;q=" target="_blank">version
0.9.114</a>.
</p>
        <p>
Sharp Architecture is a project created by <a href="http://devlicio.us/blogs/billy_mccafferty/default.aspx" target="_blank">Billy
McCafferty</a>. It’s an architecture framework for web application that uses ASP.NET
MVC, NH 2.0.1, NHibernate.Validator, Fluent NHibernate, and Castle Windsor.
</p>
        <p>
From their site:
</p>
        <blockquote>
          <p>
Pronounced "Sharp Architecture," this is a solid architectural foundation
for rapidly building maintainable web applications leveraging the ASP.NET MVC framework
with NHibernate.
</p>
          <p>
The overall goal of this is to allow developers to worry less about application "plumbing"
and to spend most of their time on adding value for the client by focusing on the
business logic and developing a rich user experience.
</p>
          <ul>
            <li>
Focused on Domain Driven Design 
</li>
            <li>
Loosely Coupled 
</li>
            <li>
Preconfigured Infrastructure 
</li>
            <li>
Open Ended Presentation 
</li>
          </ul>
        </blockquote>
        <p>
There is of course a strong focus on TDD as well. New on this version (from the change
log)
</p>
        <blockquote>
          <p>
* A Visual Studio 2008 template project has been added under /TemplatesAndCodeGen
to get your own S#arp Architecture project up and running quickly 
<br />
* Replaced Ninject with Castle Windsor 
<br />
* Added support for behavior driven unit testing 
<br />
* Unit tests now use an in-memory SQLite database for testing data access methods
along with providing an integration verification mechanism to check mappings against
a live database 
<br />
* This will likely be the last interim release before version 1.0
</p>
        </blockquote>
        <p>
I think that the project templates and wizards are a big plus on this package. In
the roadmap for version one this is what we can look for:
</p>
        <blockquote>
          <p>
* WCF integration 
<br />
* Hone CRUD capabilities 
<br />
* Support for multiple databases 
<br />
* Example of using a Unit of Work to encapsulate non-trivial controller logic 
<br />
* Scaffolding generators!
</p>
        </blockquote>
        <p>
There is a discussion group on <a href="http://groups.google.com/group/sharp-architecture?hl=en" target="_blank">Google
groups</a> to provide support and ask for help.
</p>
        <p>
Another thing that really impress me was the 34 pages Word document included with
the release. It’s very detailed, from configuration to usage. There is a explanation
for each of the Tiers in the architecture, a tutorial to develop with it that covers
the TDD cycle and a set of best practices.
</p>
        <p>
The documentation is very detailed, specially on thing that may seem of minor importance
as on how to configure the IDE to be consistent with the sample code!!!
</p>
        <p>
If you haven’t do so, go download it and play with it.
</p>
        <img width="0" height="0" src="http://blog.dynamicprogrammer.com/aggbug.ashx?id=509262fc-e0eb-47ee-8f00-6ac648211106" />
      <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/TheDynamicProgrammer/~4/489350417" height="1" width="1" /></body>
      <title>Sharp Architecture approaching version 1.0</title>
      <guid isPermaLink="false">http://blog.dynamicprogrammer.com/PermaLink,guid,509262fc-e0eb-47ee-8f00-6ac648211106.aspx</guid>
      <link>http://feeds.feedburner.com/~r/TheDynamicProgrammer/~3/489350417/SharpArchitectureApproachingVersion10.aspx</link>
      <pubDate>Fri, 19 Dec 2008 12:03:00 GMT</pubDate>
      <description>&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;p&gt;
On December 2nd &lt;a href="http://code.google.com/p/sharp-architecture/" target="_blank"&gt;Sharp
Architecture&lt;/a&gt; released &lt;a href="http://code.google.com/p/sharp-architecture/downloads/detail?name=SharpArchitecture%200.9.114.zip&amp;amp;can=2&amp;amp;q=" target="_blank"&gt;version
0.9.114&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Sharp Architecture is a project created by &lt;a href="http://devlicio.us/blogs/billy_mccafferty/default.aspx" target="_blank"&gt;Billy
McCafferty&lt;/a&gt;. It’s an architecture framework for web application that uses ASP.NET
MVC, NH 2.0.1, NHibernate.Validator, Fluent NHibernate, and Castle Windsor.
&lt;/p&gt;
&lt;p&gt;
From their site:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
Pronounced &amp;quot;Sharp Architecture,&amp;quot; this is a solid architectural foundation
for rapidly building maintainable web applications leveraging the ASP.NET MVC framework
with NHibernate.
&lt;/p&gt;
&lt;p&gt;
The overall goal of this is to allow developers to worry less about application &amp;quot;plumbing&amp;quot;
and to spend most of their time on adding value for the client by focusing on the
business logic and developing a rich user experience.
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Focused on Domain Driven Design 
&lt;/li&gt;
&lt;li&gt;
Loosely Coupled 
&lt;/li&gt;
&lt;li&gt;
Preconfigured Infrastructure 
&lt;/li&gt;
&lt;li&gt;
Open Ended Presentation 
&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
There is of course a strong focus on TDD as well. New on this version (from the change
log)
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
* A Visual Studio 2008 template project has been added under /TemplatesAndCodeGen
to get your own S#arp Architecture project up and running quickly 
&lt;br /&gt;
* Replaced Ninject with Castle Windsor 
&lt;br /&gt;
* Added support for behavior driven unit testing 
&lt;br /&gt;
* Unit tests now use an in-memory SQLite database for testing data access methods
along with providing an integration verification mechanism to check mappings against
a live database 
&lt;br /&gt;
* This will likely be the last interim release before version 1.0
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
I think that the project templates and wizards are a big plus on this package. In
the roadmap for version one this is what we can look for:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
* WCF integration 
&lt;br /&gt;
* Hone CRUD capabilities 
&lt;br /&gt;
* Support for multiple databases 
&lt;br /&gt;
* Example of using a Unit of Work to encapsulate non-trivial controller logic 
&lt;br /&gt;
* Scaffolding generators!
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
There is a discussion group on &lt;a href="http://groups.google.com/group/sharp-architecture?hl=en" target="_blank"&gt;Google
groups&lt;/a&gt; to provide support and ask for help.
&lt;/p&gt;
&lt;p&gt;
Another thing that really impress me was the 34 pages Word document included with
the release. It’s very detailed, from configuration to usage. There is a explanation
for each of the Tiers in the architecture, a tutorial to develop with it that covers
the TDD cycle and a set of best practices.
&lt;/p&gt;
&lt;p&gt;
The documentation is very detailed, specially on thing that may seem of minor importance
as on how to configure the IDE to be consistent with the sample code!!!
&lt;/p&gt;
&lt;p&gt;
If you haven’t do so, go download it and play with it.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.dynamicprogrammer.com/aggbug.ashx?id=509262fc-e0eb-47ee-8f00-6ac648211106" /&gt;</description>
      <comments>http://blog.dynamicprogrammer.com/CommentView,guid,509262fc-e0eb-47ee-8f00-6ac648211106.aspx</comments>
      <category>Architecture</category>
      <category>Frameworks</category>
      <category>Patterns</category>
      <category>Programming</category>
    <feedburner:origLink>http://blog.dynamicprogrammer.com/2008/12/19/SharpArchitectureApproachingVersion10.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.dynamicprogrammer.com/Trackback.aspx?guid=4bb2d0c6-2d70-4f06-b708-08a6e78cd06b</trackback:ping>
      <pingback:server>http://blog.dynamicprogrammer.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.dynamicprogrammer.com/PermaLink,guid,4bb2d0c6-2d70-4f06-b708-08a6e78cd06b.aspx</pingback:target>
      <dc:creator>Hernan</dc:creator>
      <wfw:comment>http://blog.dynamicprogrammer.com/CommentView,guid,4bb2d0c6-2d70-4f06-b708-08a6e78cd06b.aspx</wfw:comment>
      <wfw:commentRss>http://blog.dynamicprogrammer.com/SyndicationService.asmx/GetEntryCommentsRss?guid=4bb2d0c6-2d70-4f06-b708-08a6e78cd06b</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
 
</p>
        <p>
          <a href="http://svnnotifier.tigris.org/" target="_blank">SVN Notifier</a> is a nice
little tool that sits on your Tray and let you know when a folder under source control
on your system goes out of date. It’s useful is you are working on several projects
with several developers or you follow the trunk of an open source project. This will
let you know as soon as your project gets outdate. 
</p>
        <p>
You will need to have <a href="http://tortoisesvn.tigris.org/" target="_blank">TortoiseSVN</a> and
a Svn client installed in your machine, I use <a href="http://www.sliksvn.com/en/download" target="_blank">SilkSvn</a>. 
</p>
        <p>
Once installed you configure witch folders you want the tool to monitor. The icon
on your system tray will be Green or Orange to indicate if your projects are up to
date or not.
</p>
        <p>
          <a href="http://blog.dynamicprogrammer.com/content/binary/WindowsLiveWriter/SVNNotifierorkeepinguptodatewithyoursour_126FD/ScreenHunter_01%202008-12-17%2021.06.51_2.jpg">
            <img title="ScreenHunter_01 2008-12-17 21.06.51" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="105" alt="ScreenHunter_01 2008-12-17 21.06.51" src="http://blog.dynamicprogrammer.com/content/binary/WindowsLiveWriter/SVNNotifierorkeepinguptodatewithyoursour_126FD/ScreenHunter_01%202008-12-17%2021.06.51_thumb.jpg" width="167" border="0" />
          </a>
        </p>
        <p>
Right click on it and you can Update all or open the status window (double click on
it also opens the status window).
</p>
        <p>
          <a href="http://blog.dynamicprogrammer.com/content/binary/WindowsLiveWriter/SVNNotifierorkeepinguptodatewithyoursour_126FD/ScreenHunter_03%202008-12-17%2021.07.20_2.jpg">
            <img title="ScreenHunter_03 2008-12-17 21.07.20" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="277" alt="ScreenHunter_03 2008-12-17 21.07.20" src="http://blog.dynamicprogrammer.com/content/binary/WindowsLiveWriter/SVNNotifierorkeepinguptodatewithyoursour_126FD/ScreenHunter_03%202008-12-17%2021.07.20_thumb.jpg" width="611" border="0" />
          </a>
        </p>
        <p>
You can also use this tool to do commits for each project. This is really nice, sometimes
I work using just a simple text editor and I don’t want to navigate to the folders
to do the commits, with this tool I just click in the System Tray icon, right click
in the project I want to commit and that’s it, the TortoiseSVN dialog will open and
you go from there like you usually do.
</p>
        <p>
The other thing is nice is that before updating you can check all the logs right clicking
in the project and selecting Change log.
</p>
        <p>
          <a href="http://blog.dynamicprogrammer.com/content/binary/WindowsLiveWriter/SVNNotifierorkeepinguptodatewithyoursour_126FD/ScreenHunter_04%202008-12-17%2021.09.24_2.jpg">
            <img title="ScreenHunter_04 2008-12-17 21.09.24" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="146" alt="ScreenHunter_04 2008-12-17 21.09.24" src="http://blog.dynamicprogrammer.com/content/binary/WindowsLiveWriter/SVNNotifierorkeepinguptodatewithyoursour_126FD/ScreenHunter_04%202008-12-17%2021.09.24_thumb.jpg" width="609" border="0" />
          </a>
        </p>
        <img width="0" height="0" src="http://blog.dynamicprogrammer.com/aggbug.ashx?id=4bb2d0c6-2d70-4f06-b708-08a6e78cd06b" />
      <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/TheDynamicProgrammer/~4/489217279" height="1" width="1" /></body>
      <title>SVN Notifier, or keeping up to date with your source control system</title>
      <guid isPermaLink="false">http://blog.dynamicprogrammer.com/PermaLink,guid,4bb2d0c6-2d70-4f06-b708-08a6e78cd06b.aspx</guid>
      <link>http://feeds.feedburner.com/~r/TheDynamicProgrammer/~3/489217279/SVNNotifierOrKeepingUpToDateWithYourSourceControlSystem.aspx</link>
      <pubDate>Fri, 19 Dec 2008 02:59:00 GMT</pubDate>
      <description>&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://svnnotifier.tigris.org/" target="_blank"&gt;SVN Notifier&lt;/a&gt; is a nice
little tool that sits on your Tray and let you know when a folder under source control
on your system goes out of date. It’s useful is you are working on several projects
with several developers or you follow the trunk of an open source project. This will
let you know as soon as your project gets outdate. 
&lt;/p&gt;
&lt;p&gt;
You will need to have &lt;a href="http://tortoisesvn.tigris.org/" target="_blank"&gt;TortoiseSVN&lt;/a&gt; and
a Svn client installed in your machine, I use &lt;a href="http://www.sliksvn.com/en/download" target="_blank"&gt;SilkSvn&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
Once installed you configure witch folders you want the tool to monitor. The icon
on your system tray will be Green or Orange to indicate if your projects are up to
date or not.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blog.dynamicprogrammer.com/content/binary/WindowsLiveWriter/SVNNotifierorkeepinguptodatewithyoursour_126FD/ScreenHunter_01%202008-12-17%2021.06.51_2.jpg"&gt;&lt;img title="ScreenHunter_01 2008-12-17 21.06.51" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="105" alt="ScreenHunter_01 2008-12-17 21.06.51" src="http://blog.dynamicprogrammer.com/content/binary/WindowsLiveWriter/SVNNotifierorkeepinguptodatewithyoursour_126FD/ScreenHunter_01%202008-12-17%2021.06.51_thumb.jpg" width="167" border="0" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Right click on it and you can Update all or open the status window (double click on
it also opens the status window).
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blog.dynamicprogrammer.com/content/binary/WindowsLiveWriter/SVNNotifierorkeepinguptodatewithyoursour_126FD/ScreenHunter_03%202008-12-17%2021.07.20_2.jpg"&gt;&lt;img title="ScreenHunter_03 2008-12-17 21.07.20" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="277" alt="ScreenHunter_03 2008-12-17 21.07.20" src="http://blog.dynamicprogrammer.com/content/binary/WindowsLiveWriter/SVNNotifierorkeepinguptodatewithyoursour_126FD/ScreenHunter_03%202008-12-17%2021.07.20_thumb.jpg" width="611" border="0" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
You can also use this tool to do commits for each project. This is really nice, sometimes
I work using just a simple text editor and I don’t want to navigate to the folders
to do the commits, with this tool I just click in the System Tray icon, right click
in the project I want to commit and that’s it, the TortoiseSVN dialog will open and
you go from there like you usually do.
&lt;/p&gt;
&lt;p&gt;
The other thing is nice is that before updating you can check all the logs right clicking
in the project and selecting Change log.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blog.dynamicprogrammer.com/content/binary/WindowsLiveWriter/SVNNotifierorkeepinguptodatewithyoursour_126FD/ScreenHunter_04%202008-12-17%2021.09.24_2.jpg"&gt;&lt;img title="ScreenHunter_04 2008-12-17 21.09.24" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="146" alt="ScreenHunter_04 2008-12-17 21.09.24" src="http://blog.dynamicprogrammer.com/content/binary/WindowsLiveWriter/SVNNotifierorkeepinguptodatewithyoursour_126FD/ScreenHunter_04%202008-12-17%2021.09.24_thumb.jpg" width="609" border="0" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.dynamicprogrammer.com/aggbug.ashx?id=4bb2d0c6-2d70-4f06-b708-08a6e78cd06b" /&gt;</description>
      <comments>http://blog.dynamicprogrammer.com/CommentView,guid,4bb2d0c6-2d70-4f06-b708-08a6e78cd06b.aspx</comments>
      <category>Tools</category>
    <feedburner:origLink>http://blog.dynamicprogrammer.com/2008/12/19/SVNNotifierOrKeepingUpToDateWithYourSourceControlSystem.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.dynamicprogrammer.com/Trackback.aspx?guid=16dfc370-a34f-47ad-8a10-bb62256f05dd</trackback:ping>
      <pingback:server>http://blog.dynamicprogrammer.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.dynamicprogrammer.com/PermaLink,guid,16dfc370-a34f-47ad-8a10-bb62256f05dd.aspx</pingback:target>
      <dc:creator>Hernan</dc:creator>
      <wfw:comment>http://blog.dynamicprogrammer.com/CommentView,guid,16dfc370-a34f-47ad-8a10-bb62256f05dd.aspx</wfw:comment>
      <wfw:commentRss>http://blog.dynamicprogrammer.com/SyndicationService.asmx/GetEntryCommentsRss?guid=16dfc370-a34f-47ad-8a10-bb62256f05dd</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
 
</p>
        <p>
This is a plug-in for Resharper that allows you to use Reflector and and the .Net
framework source code to navigate your code.
</p>
        <p>
You can download it from the <a href="http://code.google.com/p/scoutplugin/" target="_blank">Google
code project page</a>.
</p>
        <p>
Install it is a non issue. Once installed open VS and the Resharper options page.
Under environment go to Search and Navigation-&gt; Scout
</p>
        <p>
Clicking into it will ask you if you want to download Reflector, click Yes if you
haven’t done this before. Since I already have Reflector I just browse to the exe
file. You can them can set some configuration options like using the same instance
of Reflector each time or set some configuration per solution or custom.
</p>
        <p>
To configure the MS server reference follow <a href="http://weblogs.asp.net/scottgu/archive/2007/10/03/releasing-the-source-code-for-the-net-framework-libraries.aspx" target="_blank">the
instructions on Scott Gu site</a>.
</p>
        <p>
Once you are done you can do right click in a class or method and hit Go to declaration,
is the class is in an external assembly reflector will open up and navigate to the
given method showing the code in it. For example HttpContext.Cache().
</p>
        <p>
Very powerful.
</p>
        <div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:35d3add2-1e2b-4e92-9f8d-2608b6c04841" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">Technorati
Tags: <a href="http://technorati.com/tags/Reflector" rel="tag">Reflector</a>,<a href="http://technorati.com/tags/Resharper" rel="tag">Resharper</a>,<a href="http://technorati.com/tags/Debug" rel="tag">Debug</a>,<a href="http://technorati.com/tags/Code+inspection" rel="tag">Code
inspection</a></div>
        <img width="0" height="0" src="http://blog.dynamicprogrammer.com/aggbug.ashx?id=16dfc370-a34f-47ad-8a10-bb62256f05dd" />
      <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/TheDynamicProgrammer/~4/488174538" height="1" width="1" /></body>
      <title>Scout plug in for Resharper to navigate your code.</title>
      <guid isPermaLink="false">http://blog.dynamicprogrammer.com/PermaLink,guid,16dfc370-a34f-47ad-8a10-bb62256f05dd.aspx</guid>
      <link>http://feeds.feedburner.com/~r/TheDynamicProgrammer/~3/488174538/ScoutPlugInForResharperToNavigateYourCode.aspx</link>
      <pubDate>Thu, 18 Dec 2008 11:24:00 GMT</pubDate>
      <description>&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;p&gt;
This is a plug-in for Resharper that allows you to use Reflector and and the .Net
framework source code to navigate your code.
&lt;/p&gt;
&lt;p&gt;
You can download it from the &lt;a href="http://code.google.com/p/scoutplugin/" target="_blank"&gt;Google
code project page&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Install it is a non issue. Once installed open VS and the Resharper options page.
Under environment go to Search and Navigation-&amp;gt; Scout
&lt;/p&gt;
&lt;p&gt;
Clicking into it will ask you if you want to download Reflector, click Yes if you
haven’t done this before. Since I already have Reflector I just browse to the exe
file. You can them can set some configuration options like using the same instance
of Reflector each time or set some configuration per solution or custom.
&lt;/p&gt;
&lt;p&gt;
To configure the MS server reference follow &lt;a href="http://weblogs.asp.net/scottgu/archive/2007/10/03/releasing-the-source-code-for-the-net-framework-libraries.aspx" target="_blank"&gt;the
instructions on Scott Gu site&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Once you are done you can do right click in a class or method and hit Go to declaration,
is the class is in an external assembly reflector will open up and navigate to the
given method showing the code in it. For example HttpContext.Cache().
&lt;/p&gt;
&lt;p&gt;
Very powerful.
&lt;/p&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:35d3add2-1e2b-4e92-9f8d-2608b6c04841" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati
Tags: &lt;a href="http://technorati.com/tags/Reflector" rel="tag"&gt;Reflector&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Resharper" rel="tag"&gt;Resharper&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Debug" rel="tag"&gt;Debug&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Code+inspection" rel="tag"&gt;Code
inspection&lt;/a&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://blog.dynamicprogrammer.com/aggbug.ashx?id=16dfc370-a34f-47ad-8a10-bb62256f05dd" /&gt;</description>
      <comments>http://blog.dynamicprogrammer.com/CommentView,guid,16dfc370-a34f-47ad-8a10-bb62256f05dd.aspx</comments>
      <category>Tools</category>
    <feedburner:origLink>http://blog.dynamicprogrammer.com/2008/12/18/ScoutPlugInForResharperToNavigateYourCode.aspx</feedburner:origLink></item>
  </channel>
</rss>
