<?xml version="1.0" encoding="utf-8"?>
<feed xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom">
  <title>Code Smart Not Hard</title>
  <link rel="alternate" type="text/html" href="http://codesmartnothard.com/" />
  <link rel="self" href="http://codesmartnothard.com/SyndicationService.asmx/GetAtom" />
  <icon>favicon.ico</icon>
  <updated>2008-12-26T07:26:23.255375-06:00</updated>
  <author>
    <name>Michael Douglas</name>
  </author>
  <subtitle>Frameworks, Code Generation, and Team Foundation Server</subtitle>
  <id>http://codesmartnothard.com/</id>
  <generator uri="http://www.dasblog.net" version="1.9.6264.0">DasBlog</generator>
  <entry>
    <title>Continuous Generation – Generating the code during every build using TFS and CodeSmith Tools</title>
    <link rel="alternate" type="text/html" href="http://codesmartnothard.com/PermaLink,guid,d2220e5c-0e71-4fa9-8029-e9d1dc1a6b29.aspx" />
    <id>http://codesmartnothard.com/PermaLink,guid,d2220e5c-0e71-4fa9-8029-e9d1dc1a6b29.aspx</id>
    <published>2008-12-20T22:49:44.943-06:00</published>
    <updated>2008-12-26T07:26:23.255375-06:00</updated>
    <category term="Code Generation" label="Code Generation" scheme="http://codesmartnothard.com/CategoryView,category,Code%2BGeneration.aspx" />
    <category term="Team Build" label="Team Build" scheme="http://codesmartnothard.com/CategoryView,category,Team%2BBuild.aspx" />
    <category term="Team Foundation Server" label="Team Foundation Server" scheme="http://codesmartnothard.com/CategoryView,category,Team%2BFoundation%2BServer.aspx" />
    <content type="html">&lt;p&gt;
&lt;span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;Doing
builds and running unit tests after every check-in has become a standard practice
in Agile and non-Agile development teams.&amp;nbsp; Continuous Integration is the term
that describes this process and helps ensure that that nothing has been broken since
the last check-in.&amp;nbsp;&amp;nbsp;&amp;nbsp; One area that is sometimes overlooked is the
code generation.&amp;nbsp;&amp;nbsp;&amp;nbsp; Continuous Generation, the re-generating of code
/ stored procedures for every check-in and build, should be considered for your TFS
builds.&amp;nbsp; I believe there is a lot of benefit to generating the code with every
build.&amp;nbsp; There are several benefits:&lt;/span&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;Table
schema and stored procedure parameters can change.&amp;nbsp; How do you know that your
generated objects are up to date and match the database?&lt;/span&gt; 
&lt;li&gt;
&lt;span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;It
keeps everyone honest so they don’t break the golden rule of never editing generated
code.&amp;nbsp; If the build is going to re-generate the code there’s no way to sneak
the semicolon or curly bracket that you manually fix each time after generation.&lt;/span&gt; 
&lt;li&gt;
&lt;span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;Sometimes
we generate just the class we are working on and keep the rest checked in so it doesn’t
overwrite the current object.&amp;nbsp; If any changes are made to the template only this
new class will have them.&amp;nbsp; The other classes will be based on the older version.&lt;/span&gt; 
&lt;li&gt;
&lt;span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;It
gives more credibility to the generation process.&amp;nbsp; There is sometimes a feeling
of nervousness when generating all of the objects.&amp;nbsp; Since generated code is never
edited, you can generate the code as often as you wish.&lt;/span&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;a href="http://www.codesmithtools.com/"&gt;CodeSmith
Tools&lt;/a&gt; is the code generation tool that we use.&amp;nbsp; It offers an easy way to
accomplish this from your Team Foundation Builds.&amp;nbsp;&amp;nbsp; With version 3.2 and
newer there is a custom build task included with the Professional edition.&amp;nbsp; &lt;a href="http://www.codesmithtools.com/help/Default.aspx##CodeSmith.chm/Using_a_CodeSmith_Project_from_MSBuild.html?__versionId=edcf773c-5899-42dc-b0e1-4f84ff93687e&amp;amp;__versionId=edcf773c-5899-42dc-b0e1-4f84ff93687e"&gt;Here&lt;/a&gt; is
the online help with some information about it.&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;There
are a couple things to consider.&amp;nbsp; The generated classes will be checked-in to
source control.&amp;nbsp; You will need to check them out before you call the task and
then check them back in afterwards. Also, the user guide instructions do not work
quite right in the link above.&amp;nbsp; The guide explains how to use it within your
visual studio project.&amp;nbsp; However, the task needs to be called from Team Build.&amp;nbsp;
Here’s the basic steps and changes for your CI tfsbuild.proj file.&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;Step
1: Install CodeSmith Professional on your TFS build server.&amp;nbsp; This will install
the MSBuild task and Targets file.&amp;nbsp;&amp;nbsp; I contacted CodeSmith Tool’s sales
department and this does require an additional license for the server.&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;Step
2: Import the CodeSmith Targets file.&amp;nbsp; Add the following line just below the
import element below the &amp;lt;!-- Do not edit this --&amp;gt; comment. &lt;/span&gt;
&lt;/p&gt;
&lt;span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt; 
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&amp;lt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;Import&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;Project&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;=&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;"&lt;span style="COLOR: blue"&gt;$(MSBuildExtensionsPath)\CodeSmith\CodeSmith.targets&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Step 3:&amp;nbsp; Add TF property in the PropertyGroup element specifying the tf.exe location
to be used throughout the process.
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&amp;lt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;PropertyGroup&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&amp;gt;&lt;br&gt;
&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;TF&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&amp;gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&amp;amp;quot;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;$(TeamBuildRefPath)\..\tf.exe&lt;span style="COLOR: red"&gt;&amp;amp;quot;&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;TF&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;br&gt;
&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;PropertyGroup&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Step 4:&amp;nbsp; Override the AfterGet target to check out the generated file(s).&amp;nbsp;
This must be called before the CodeSmith task or it will return an access denied error.&amp;nbsp;
This example demonstrates one file but you can use a subfolder or naming prefix for
the generated files and recursively check out all of the necessary files.
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&amp;lt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;Target&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;Name&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;=&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;"&lt;span style="COLOR: blue"&gt;AfterGet&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;Exec&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;WorkingDirectory&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;=&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;"&lt;span style="COLOR: blue"&gt;$(SolutionRoot)\Main\TestCodeSmithMSBuild\&lt;/span&gt;"&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;Command&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;=&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;"&lt;span style="COLOR: blue"&gt;$(TF)
checkout Measure.cs&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'"&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;
Step 5:&amp;nbsp; Call the CodeSmith task to execute the CodeSmith project(s) in your
solution.&amp;nbsp; This will also be called in the AfterGet target.&amp;nbsp; Currently the
example in the documentation incorrectly shows the CodeSmith task using the ProjectFile
attribute.&amp;nbsp; As the usage description shows, the attribute is actually ProjectFiles.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&amp;lt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;CodeSmith&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;ProjectFiles&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;=&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;"&lt;span style="COLOR: blue"&gt;$(SolutionRoot)\Main\TestCodeSmithMSBuild\Test.csp&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Step 6:&amp;nbsp; Override the AfterCompile target to check in the updated generated files.&amp;nbsp;
Fortunately TFS will only check in the file if there is a change.&amp;nbsp; This is good
because most of the time re-generating the code should generate the same thing each
time.&amp;nbsp; However, tf.exe returns a code of 1 instead of 0 and results in a partial
success of the build.&amp;nbsp; Use the IgnoreExitCode=”true” to ignore this.&amp;nbsp; You
could additionally update this to create a work item for any other return code.&amp;nbsp;
Here’s a &lt;a href="http://social.msdn.microsoft.com/forums/en-US/tfsbuild/thread/441916a0-58d7-4b81-991c-bbe8cb5a5bd5"&gt;post&lt;/a&gt; with
a good example of this. 
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&amp;lt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;Target&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;Name&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;=&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;"&lt;span style="COLOR: blue"&gt;AfterCompile&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;Condition&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;'$(IsDesktopBuild)'!='true'&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;Exec&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;WorkingDirectory&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;=&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;"&lt;span style="COLOR: blue"&gt;$(SolutionRoot)\Main\TestCodeSmithMSBuild&lt;/span&gt;"&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;IgnoreExitCode&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;=&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;"&lt;span style="COLOR: blue"&gt;true&lt;/span&gt;"&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;Command&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;=&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;"&lt;span style="COLOR: blue"&gt;$(TF)
checkin /comment:&lt;/span&gt;&lt;span style="COLOR: red"&gt;&amp;amp;quot;&lt;/span&gt;&lt;span style="COLOR: blue"&gt;***NO_CI***Auto-Generate&lt;/span&gt;&lt;span style="COLOR: red"&gt;&amp;amp;quot;&lt;/span&gt;&lt;span style="COLOR: blue"&gt; /noprompt
/override:&lt;/span&gt;&lt;span style="COLOR: red"&gt;&amp;amp;quot;&lt;/span&gt;&lt;span style="COLOR: blue"&gt;Auto
Generate&lt;/span&gt;&lt;span style="COLOR: red"&gt;&amp;amp;quot;&lt;/span&gt;&lt;span style="COLOR: blue"&gt; measure.cs &lt;/span&gt;"&lt;span style="COLOR: blue"&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&amp;lt;/&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;Target&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&amp;gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'"&gt; &lt;/span&gt;
&lt;/span&gt;&gt;
&lt;p&gt;
Step 7:&amp;nbsp; Undo the check out if the build fails by overriding the BeforeOnBuildBreak.
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&amp;lt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;Target&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;Name&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;=&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;font color=#000000&gt;"&lt;/font&gt;&lt;span style="COLOR: blue"&gt;BeforeOnBuildBreak&lt;/span&gt;&lt;font color=#000000&gt;"&lt;/font&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;Condition&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;&lt;font color=#000000&gt;"&lt;/font&gt;&lt;span style="COLOR: blue"&gt;'$(IsDesktopBuild)'!='true'&lt;/span&gt;&lt;font color=#000000&gt;"&lt;/font&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;Exec&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;WorkingDirectory&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;=&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;font color=#000000&gt;"&lt;/font&gt;&lt;span style="COLOR: blue"&gt;$(SolutionRoot)\Main\TestCodeSmithMSBuild&lt;/span&gt;&lt;font color=#000000&gt;"&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;Command&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;=&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;font color=#000000&gt;"&lt;/font&gt;&lt;span style="COLOR: blue"&gt;$(TF)
undo /noprompt measure.cs&lt;/span&gt;&lt;font color=#000000&gt;"&lt;/font&gt;&lt;span style="COLOR: blue"&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&amp;lt;/&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #a31515; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;Target&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;font face=Verdana color=#003300&gt;That
is it.&amp;nbsp; Enjoy!&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;font face=Verdana color=#003300&gt;Mike&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://codesmartnothard.com/aggbug.ashx?id=d2220e5c-0e71-4fa9-8029-e9d1dc1a6b29" /&gt;</content>
  </entry>
  <entry>
    <title>Csla 3.6 packed with goodies</title>
    <link rel="alternate" type="text/html" href="http://codesmartnothard.com/PermaLink,guid,41f2f309-8588-413d-89b6-bcd550a3958e.aspx" />
    <id>http://codesmartnothard.com/PermaLink,guid,41f2f309-8588-413d-89b6-bcd550a3958e.aspx</id>
    <published>2008-12-07T18:17:28.202-06:00</published>
    <updated>2008-12-07T18:17:28.202625-06:00</updated>
    <category term="CSLA.NET" label="CSLA.NET" scheme="http://codesmartnothard.com/CategoryView,category,CSLA.NET.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I admit that while I have been keeping up with Csla information, I haven't had the
opportunity to use the newer versions of Csla.  We have an opportunity to use
Csla with a client so I'm using this chance to catch up on it and get some practical
experience with 3.6.  I downloaded the framework and samples downloads. You can
download the latest framework at <a href="http://www.lhotka.net/cslanet/Download.aspx">http://www.lhotka.net/cslanet/Download.aspx</a></p>
        <p>
I was excited by how much is included in both.  The framework includes snippets,
visual studio templates, and a deployment package.  Here's some highlights.
</p>
        <p>
          <font size="3">
            <strong>Snippets</strong>
          </font>
          <br />
There are several snippets included. With the new way to do properties in Csla, the
editable and readonly property snippets will come in handy.  Here's the results
of the "cslaprop" snippet.<br /><font color="#0000ff" size="2"><font color="#0000ff" size="2"></font></font></p>
        <p>
private<font color="#000000" size="2"></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">static</font></font><font color="#000000" size="2"></font><font color="#2b91af" size="2"><font color="#2b91af" size="2">PropertyInfo</font></font><font color="#000000" size="2">&lt;</font><font color="#0000ff" size="2"><font color="#0000ff" size="2">int</font></font><font color="#000000" size="2">&gt;
NameProperty = RegisterProperty(</font><font color="#0000ff" size="2"><font color="#0000ff" size="2">new</font></font><font color="#000000" size="2"></font><font color="#2b91af" size="2"><font color="#2b91af" size="2">PropertyInfo</font></font><font color="#000000" size="2">&lt;</font><font color="#0000ff" size="2"><font color="#0000ff" size="2">int</font></font><font color="#000000" size="2">&gt;(</font><font color="#a31515" size="2"><font color="#a31515" size="2">"Name"</font></font><font color="#000000" size="2">, </font><font color="#a31515" size="2"><font color="#a31515" size="2">"Name"</font></font><font size="2"><font color="#000000">));</font></font></p>
        <font color="#0000ff" size="2">
          <font color="#0000ff" size="2">
            <p>
public
</p>
          </font>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">
          <font color="#0000ff" size="2">int</font>
        </font>
        <font size="2">
          <font color="#000000"> Name<br /></font>{<br /></font>
        <font color="#0000ff" size="2">
          <font color="#0000ff" size="2">   get</font>
        </font>
        <font color="#000000" size="2"> { </font>
        <font color="#0000ff" size="2">
          <font color="#0000ff" size="2">return</font>
        </font>
        <font size="2">
          <font color="#000000"> GetProperty(NameProperty);
}<br /></font>
        </font>
        <font color="#0000ff" size="2">
          <font color="#0000ff" size="2">   set</font>
        </font>
        <font color="#000000" size="2"> {
SetProperty(NameProperty, </font>
        <font color="#0000ff" size="2">
          <font color="#0000ff" size="2">value</font>
        </font>
        <font size="2">
          <font color="#000000">);
}<br /></font>}
</font>
        <p>
          <font size="3">
            <strong>Item Templates<br /></strong>
          </font>When you install the VSI, it installs 14 templates for almost all
common Csla usages and objects.  Like the rest of the framework, the full source
for the templates are included.  So customizing the templates to fit your projects
needs is easy.<br /><img style="WIDTH: 683px; HEIGHT: 373px" height="278" src="http://codesmartnothard.com/content/binary/CslaItemTemplates.jpg" width="551" border="0" /></p>
        <p>
          <font size="3">
            <strong>
            </strong>
          </font> 
</p>
        <p>
          <font size="3">
            <strong>Csla Samples</strong>
          </font>
          <font size="3">
            <br />
          </font>I downloaded the samples project expecting to just see the Project Tracker
example.  The Project Tracker is still the main example but it has been expanded
to include examples for every configuration that Csla supports including WCF, Web
Services, WPF, winforms, Webforms, Silverlight (requires additional Csla for Silverlight
download), LINQ, DTO, Entity Framework, Workflow, etc.
</p>
        <p>
In addition to the Project Tracker, there are examples for doing WPF design time support,
Deep loading and saving of data, and establishing parent-child-grandchild relationships
in Csla.  
</p>
        <p>
I am looking forward to working through all of these examples to see Rocky's recommendations
in the 3.6 version of his framework.
</p>
        <p>
Mike<br />
 
</p>
        <img width="0" height="0" src="http://codesmartnothard.com/aggbug.ashx?id=41f2f309-8588-413d-89b6-bcd550a3958e" />
      </div>
    </content>
  </entry>
  <entry>
    <title>New Chapter</title>
    <link rel="alternate" type="text/html" href="http://codesmartnothard.com/PermaLink,guid,52ad2253-8c54-420d-8933-3478c2d93959.aspx" />
    <id>http://codesmartnothard.com/PermaLink,guid,52ad2253-8c54-420d-8933-3478c2d93959.aspx</id>
    <published>2008-12-07T08:29:11.671-06:00</published>
    <updated>2008-12-07T08:29:11.671375-06:00</updated>
    <category term="General" label="General" scheme="http://codesmartnothard.com/CategoryView,category,General.aspx" />
    <category term="Team Foundation Server" label="Team Foundation Server" scheme="http://codesmartnothard.com/CategoryView,category,Team%2BFoundation%2BServer.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <br />
A couple weeks ago I started a new and exciting chapter of my career.  After
8 great years at Farm Credit Services of America as a developer and lead developer,
I took a new job as a solution consultant with a small, yet proven and experienced consultanting
company called <a href="http://www.deliveron.com/">Deliveron Consulting Services</a>.  
I have no complaints about FCSAmerica and appreciate all of the oportunities that
I received while I was there.  It was a great place to work and leaving was one
of the hardest decisions I have had to make. I'm going to miss working with all of
the great people I have gotten to know.  I felt this was the right opporturnity
at the right time for me.  I'm excited to leverage all of my experiences in Team
Foundation Server, CSLA.NET, code generation, configuration management, Agile, Biztalk,
etc along with the leadership skills in a new environment.  In fact, I have already
begun helping one of our clients convert a projects to TFS.  I'm also utilizing <a href="http://www.codeplex.com/teamdeploy">Team
Deploy</a> to automate their build and deploy process.  I am excited to work
with more companies on implementing or improving their implementation of Team Foundation
Server.
</p>
        <p>
So this begins a new chapter and I am excited!
</p>
        <p>
Mike
</p>
        <img width="0" height="0" src="http://codesmartnothard.com/aggbug.ashx?id=52ad2253-8c54-420d-8933-3478c2d93959" />
      </div>
    </content>
  </entry>
  <entry>
    <title>New Team Deploy 1.5 Release</title>
    <link rel="alternate" type="text/html" href="http://codesmartnothard.com/PermaLink,guid,d3984597-ca10-4dbb-a5ca-32f96fc40ddf.aspx" />
    <id>http://codesmartnothard.com/PermaLink,guid,d3984597-ca10-4dbb-a5ca-32f96fc40ddf.aspx</id>
    <published>2008-11-12T22:36:56.177-06:00</published>
    <updated>2008-11-12T22:36:56.177125-06:00</updated>
    <category term="Team Foundation Server" label="Team Foundation Server" scheme="http://codesmartnothard.com/CategoryView,category,Team%2BFoundation%2BServer.aspx" />
    <category term="Team Build" label="Team Build" scheme="http://codesmartnothard.com/CategoryView,category,Team%2BBuild.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">Last week I released some minor updates
to Team Deploy.  When you use Team Deploy to deploy your MSIs, it will update
the build steps and show that it is deploying.  The second feature will now write
any non-zero return code to the build log.  Before this, these return codes were
being lost.  In the next release of Team Deploy I will build upon this and allow
you to pass in an XML file contain return codes.  If they are an error, warning
or information.  For errors, I will make it so it will actually fail the build.<br /><br />
Here's the release<br /><a href="http://www.codeplex.com/teamdeploy">http://www.codeplex.com/teamdeploy</a><br /><br />
Mike<br /><p></p><img width="0" height="0" src="http://codesmartnothard.com/aggbug.ashx?id=d3984597-ca10-4dbb-a5ca-32f96fc40ddf" /></div>
    </content>
  </entry>
  <entry>
    <title>2008 Microsoft PDC sessions available online</title>
    <link rel="alternate" type="text/html" href="http://codesmartnothard.com/PermaLink,guid,7ee89f81-9eb6-4361-9432-b5cff59c54ea.aspx" />
    <id>http://codesmartnothard.com/PermaLink,guid,7ee89f81-9eb6-4361-9432-b5cff59c54ea.aspx</id>
    <published>2008-10-28T22:11:58.55-05:00</published>
    <updated>2008-10-28T22:11:58.55025-05:00</updated>
    <category term="General" label="General" scheme="http://codesmartnothard.com/CategoryView,category,General.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
If you are like me and couldn't make it to PDC this year, all of the sessions are
going to be made available on Channel 9.  I'm excited for a lot of new features
in VSTS 2010.  Windows Azure looks cool too.  It will be interesting to
see what and how they price it.
</p>
        <p>
          <a href="https://sessions.microsoftpdc.com/public/timeline.aspx">https://sessions.microsoftpdc.com/public/timeline.aspx</a>
        </p>
        <p>
Mike
</p>
        <img width="0" height="0" src="http://codesmartnothard.com/aggbug.ashx?id=7ee89f81-9eb6-4361-9432-b5cff59c54ea" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Skyfire - The Best Mobile Web Browser</title>
    <link rel="alternate" type="text/html" href="http://codesmartnothard.com/PermaLink,guid,b5b49e0f-eab4-4d29-bca7-97f4c43d1076.aspx" />
    <id>http://codesmartnothard.com/PermaLink,guid,b5b49e0f-eab4-4d29-bca7-97f4c43d1076.aspx</id>
    <published>2008-08-28T23:09:21.009-05:00</published>
    <updated>2008-08-28T23:23:19.509875-05:00</updated>
    <category term="Gadgets" label="Gadgets" scheme="http://codesmartnothard.com/CategoryView,category,Gadgets.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
My only complaint about my Sprint HTC Mogul has been the web browser.  I upgraded
to Windows Mobile 6.1 and the browser is basically the same.  I saw a blog post
a few weeks ago about a new web browser in private beta called <a href="http://www.skyfire.com">Skyfire</a>. 
In the post was a link to a video of a phone playing some Silverlight video of the
Olympics on it.  I couldn't believe that it was on a smart phone!  I signed
up and actually forgot about it.  Tonight I received the text message from
them to sign up.  Once I ran it, I was blown away by the clean interface, speed
of the rendering of the pages, and navigation options.  I watched some Flash
videos and some live video from Fox News.  It was amazing.  It only took
me a few minutes to get the hang of the zooming and moving.  I could tell the
pages were loading fast but I didn't realize how much faster they load then the other
mobile browsers.  Take a look at the head to head <a href="http://blog.laptopmag.com/mobile-browser-showdown-iphone-3g-vs-opera-mobile-and-skyfire">review
of Safari, Opera, and Skyfire</a>.  The load time of the pages are 1/10th
of the other browsers!  Now you can watch YouTube videos, sign in to Exchange
Webmail, watch live TV, and basically anything else you can do with your computer's
browser.   The only two downsides I have found are not Skyfire's fault. 
One the screen is small.  Not much you can do about that on a smart phone. 
The other is the battery won't last forever.  Between watching some Sprint TV
and this I was able to drain my battery.  My final test was to see how a some
2.5d Silverlight would look.  Microsoft's <a href="http://www.mojaveexperiment.com">Mojave
Experiment</a> was just redone in Silverlight.  It was funny that it was originally
done in Flash.  If you haven't seen it yet, it is a cool looking Silverlight
page.  In addition it is a funny concept.  Microsoft told a bunch of Vista
haters that they were about to see the new version of Windows.  Then when they
turned out to love it, they told them that it was really Vista.  Anyway, back
to my test.  I pulled it up on my phone in Skyfire and it worked perfectly. 
The animation was smooth.  The videos were crisp and loaded fast.  The only
thing I couldn't really do was the forward and backward zooming through the website. 
I could click on the zoom button on the page and it worked but not as smooth as the
scroll wheel on my mouse.  
</p>
        <p>
Skyfire is not only the best web browser for mobile phones, it is the best application
I have seen.  Up until now, I thought <a href="http://www.orb.com">Orb</a> was
the best.  Signup for the private beta.  Hopefully you won't have to wait
as long as I did.
</p>
        <p>
Mike
</p>
        <img width="0" height="0" src="http://codesmartnothard.com/aggbug.ashx?id=b5b49e0f-eab4-4d29-bca7-97f4c43d1076" />
      </div>
    </content>
  </entry>
  <entry>
    <title>2008 ESRI User Conference - Presentation and SAG Award</title>
    <link rel="alternate" type="text/html" href="http://codesmartnothard.com/PermaLink,guid,f8502493-460c-4e89-a67c-6ef0e4c3e860.aspx" />
    <id>http://codesmartnothard.com/PermaLink,guid,f8502493-460c-4e89-a67c-6ef0e4c3e860.aspx</id>
    <published>2008-08-01T22:26:12.234-05:00</published>
    <updated>2008-08-02T21:42:03.14025-05:00</updated>
    <category term="GIS" label="GIS" scheme="http://codesmartnothard.com/CategoryView,category,GIS.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Next week I get to attend my second ESRI User conference.  I'm really looking
forward to this.  This time I will be presenting and we are receiving a Special
Achievement in GIS award.   It will be my first opportunity to speak at
a national (actually international) event. 
</p>
        <p>
Here's our presentation:
</p>
        <p>
Utilizing Image Server/ArcGIS Engine/SDE for Offline/Online Enterprise Appraisal System<br /><a href="http://events.esri.com/uc/2008/infoweb/OnlineAgenda/index.cfm?fa=ofg_details_form&amp;ScheduleID=532">http://events.esri.com/uc/2008/infoweb/OnlineAgenda/index.cfm?fa=ofg_details_form&amp;ScheduleID=532</a></p>
        <p>
If you attending, stop by the session.  See you in San Diego.
</p>
        <p>
Mike 
</p>
        <img width="0" height="0" src="http://codesmartnothard.com/aggbug.ashx?id=f8502493-460c-4e89-a67c-6ef0e4c3e860" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Fix Broken Tests Instead of Fixing Bugs</title>
    <link rel="alternate" type="text/html" href="http://codesmartnothard.com/PermaLink,guid,47448a0f-899d-4cc5-84fa-2a2d48d3f9e1.aspx" />
    <id>http://codesmartnothard.com/PermaLink,guid,47448a0f-899d-4cc5-84fa-2a2d48d3f9e1.aspx</id>
    <published>2008-07-18T23:28:44.999-05:00</published>
    <updated>2008-07-18T23:28:44.999875-05:00</updated>
    <category term="Agile" label="Agile" scheme="http://codesmartnothard.com/CategoryView,category,Agile.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Our project team supports a couple large enterprise applications. We often find
ourselves spending time troubleshooting production support issues.  These tasks
end up taking a significant portion of time away from development.  We often
put in a quick fix that satisfies the one particular condition that is causing the
error.  More than we would like to admit, we unknowingly break another feature
or another condition of that feature.  
<br /><br />
Our team is working on a changing the way we fix these bugs.  Instead of fixing
the bugs directly in code and then manually testing them, we are creating a test (either
unit test or automated GUI test) that represents the failing condition.  This
test is intended to initially fail.  Then it is the developer’s job to fix the
broken test.  This is helpful for a couple reasons.  One, by being able
to create a test that fails, this is good evidence that the real issue has been identified
.  This should eliminate times where we "think" we see the problem and end up
not fixing anything.  Secondly, the developer (and entire team if using a CI
build notification process like Team Deploy) will know exactly when this is fixed. 
Lastly, by adding these as tests, this condition will be tested forever, every time
the tests run.  This will ensure that other fixes down the road won't break this
condition of the feature.  
<br /><br />
In addition to the benefits, this supports Agile and Test Driven Development. 
Just like TDD, this starts with a broken test that the developer will fix.  The
TDD term is "Red, Green, Refactor". 
<br />
This isn't always an easy process.  Everyone thinks it is a good idea, but when
it comes to doing it, it takes longer and the tests are often hard to create. 
However, I believe the long term benefits greatly outweigh the challenges.  Let
me know if works for you.<br /></p>
        <p>
Code Smart Not Had<br /><br />
Mike
</p>
        <img width="0" height="0" src="http://codesmartnothard.com/aggbug.ashx?id=47448a0f-899d-4cc5-84fa-2a2d48d3f9e1" />
      </div>
    </content>
  </entry>
  <entry>
    <title>ASP.NET CSS Templates based on Stylin with CSS Book</title>
    <link rel="alternate" type="text/html" href="http://codesmartnothard.com/PermaLink,guid,8d6e3cfe-9430-4d6b-a754-0903cde89aee.aspx" />
    <id>http://codesmartnothard.com/PermaLink,guid,8d6e3cfe-9430-4d6b-a754-0903cde89aee.aspx</id>
    <published>2008-07-06T22:16:35.017-05:00</published>
    <updated>2008-07-20T18:27:55.843625-05:00</updated>
    <category term="CSS" label="CSS" scheme="http://codesmartnothard.com/CategoryView,category,CSS.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I have begun to rewrite my website, <a href="http://www.doitconsultants.com">www.doitconsultants.com</a> (It
really needs it as you can see) using CSS.  I found some 
</p>
        <p>
examples and was able to start.  Then, I couldn't figure out why the columns
were not lining when I realized I needed to know 
</p>
        <p>
more than just hack my way around in CSS.  I went to the book store to find a
book on CSS.  I didn't need one that explained 
</p>
        <p>
web development or assumed I knew nothing.  I was looking for some specifics
between two and three column layouts.  I figured 
</p>
        <p>
it would be a hard book to find.  I grabbed 3 CSS books from the shelf and
started flipping through them.   One was too basic 
</p>
        <p>
and another was more like a glossary.  Then, I came across <a href="http://www.stylinwithcss.com/">Stylin
with CSS</a> by Charles Wyke-Smith.  This book immediately 
</p>
        <p>
caught my eye by full color pages and a lot of examples.  The book was more than
just eye candy though.  The book had a 
</p>
        <p>
chapter of exactly what I was looking for.  He clearly explains multiple layouts,
liquid flow, etc.  Like any good 
</p>
        <p>
book, you can download all of the examples from his book.  The best part is his
examples include a css library he created 
</p>
        <p>
that he gives you for free.  Great book, I highly recommend this book for
all web developers.
</p>
        <p>
          <iframe style="WIDTH: 120px; HEIGHT: 240px" marginwidth="0" marginheight="0" src="http://rcm.amazon.com/e/cm?t=codesmartnothard-20&amp;o=1&amp;p=8&amp;l=as1&amp;asins=0321525566&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;lc1=0000FF&amp;bc1=000000&amp;bg1=FFFFFF&amp;f=ifr" frameborder="0" scrolling="no">
          </iframe>
        </p>
        <p>
As a design challenged ASP.NET developer, most templates available from websites such
as <a href="http://www.freecsstemplates.org/">http://www.freecsstemplates.org/</a> have 
</p>
        <p>
great examples we can use, however these require some modifications to work with ASP.NET. 
This book refers to Dreamweaver 
</p>
        <p>
but doesn't require any specific IDE.  Before I continued with my website design,
I wanted to do an exercise to help me understand the examples.  So I decided
to create some basic ASP.NET project templates.  I created three templates to
reflect the 3 usual layouts.  Each of the templates also include a cool feature
I learned from the book to round the corners using Nifty Corners at <a href="http://www.html.it/articoli/nifty/index.html">http://www.html.it/articoli/nifty/index.html</a>. 
The also include ASP.NET best practices like Master Pages, Site Maps, and Menu controls.
</p>
        <p>
          <br />
 1.  Three Column - Rounded Corners with Left Navigation, main center content,
and a right promo area.
</p>
        <p>
          <img src="http://codesmartnothard.com/content/binary/ThreeColumnTemplate.jpg" border="0" />
          <br />
          <a href="http://codesmartnothard.com/content/binary/ThreeColumn.vsi.zip">ThreeColumn.vsi.zip
(24.52 KB) (Remove the .zip to install)</a>
        </p>
        <p>
          <br />
 2.  Two Column - Rounded corners with left navigation and main content.<br /></p>
        <p>
          <img src="http://codesmartnothard.com/content/binary/TwoColumnTemplate.jpg" border="0" />
          <br />
          <a href="http://codesmartnothard.com/content/binary/TwoColumn.vsi.zip">TwoColumn.vsi.zip
(23.84 KB) (Remove the .zip to install) </a>
        </p>
        <p>
 
</p>
        <p>
 3.  Two column with Top Navigation - Rounded corners with top navigation,
left side links and main content.
</p>
        <p>
          <img src="http://codesmartnothard.com/content/binary/TwoColumnLeftNavTemplate.jpg" border="0" />
          <br />
          <a href="http://codesmartnothard.com/content/binary/TwoColumnTopNav.vsi.zip">TwoColumnTopNav.vsi.zip
(24.11 KB) (Remove the .zip to install)</a>
        </p>
        <p>
 
</p>
        <p>
All of the templates come with multiple CSS layouts.
</p>
        <p>
Feel Free to download these and use them for your projects.  Send me any updates
or problems.  I tested them in IE7 and Firefox 3.0 and they look good in both. 
Not sure about the others.  
</p>
        <p>
Code Smart Not Hard
</p>
        <p>
Mike
</p>
        <img width="0" height="0" src="http://codesmartnothard.com/aggbug.ashx?id=8d6e3cfe-9430-4d6b-a754-0903cde89aee" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Slides from TFS Build Automation and Team Deploy Presentation</title>
    <link rel="alternate" type="text/html" href="http://codesmartnothard.com/PermaLink,guid,8a050f4f-15c5-4297-9d2f-3a7224822171.aspx" />
    <id>http://codesmartnothard.com/PermaLink,guid,8a050f4f-15c5-4297-9d2f-3a7224822171.aspx</id>
    <published>2008-05-27T22:02:56.884-05:00</published>
    <updated>2008-05-27T22:02:56.884875-05:00</updated>
    <category term="Team Foundation Server" label="Team Foundation Server" scheme="http://codesmartnothard.com/CategoryView,category,Team%2BFoundation%2BServer.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Thanks to everyone that attended tonight's Omaha Team System User Group meeting. 
I thought it went very well.  It was a good turnout and there were a lot of good
questions asked.
</p>
        <p>
Here are the slides from the presentation.  
</p>
        <p>
          <a href="http://codesmartnothard.com/content/binary/TFS_Build_Automation.zip">TFS_Build_Automation.zip
(260.07 KB)</a>
        </p>
        <p>
Mike
</p>
        <img width="0" height="0" src="http://codesmartnothard.com/aggbug.ashx?id=8a050f4f-15c5-4297-9d2f-3a7224822171" />
      </div>
    </content>
  </entry>
</feed>