<?xml version="1.0" encoding="utf-8"?>
<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:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>ProgramGood.Net - Git</title>
    <link>http://www.programgood.net/</link>
    <description>The journey to becoming a great programmer</description>
    <language>en-us</language>
    <copyright>Dave Mateer</copyright>
    <lastBuildDate>Tue, 05 Jun 2012 16:50:27 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.2.8279.16125</generator>
    <managingEditor>davemateer@gmail.com</managingEditor>
    <webMaster>davemateer@gmail.com</webMaster>
    <item>
      <trackback:ping>http://www.programgood.net/Trackback.aspx?guid=ae7c86f3-dfe8-48cb-9dcc-d0800b337ce0</trackback:ping>
      <pingback:server>http://www.programgood.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.programgood.net/PermaLink,guid,ae7c86f3-dfe8-48cb-9dcc-d0800b337ce0.aspx</pingback:target>
      <dc:creator>Dave Mateer</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Am trying out using git now on every project - mainly so I can easily revert if I
mess things up.  Good practice.
</p>
        <p>
git init
</p>
        <p>
git add .
</p>
        <p>
git commit -m "first commit of Euler 15"
</p>
        <p>
git checkout -b firsttry
</p>
        <p>
git branch (to see branches)
</p>
        <p>
gitgui
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/Windows-Live-Writer/Euler-15_7C79/image_2.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/Euler-15_7C79/image_thumb.png" width="277" height="140" />
          </a>
        </p>
        <p>
R# – Move to another file with same name
</p>
        <h2>Forumla
</h2>
        <p>
          <a href="http://locationcube.blogspot.co.uk/2010/12/project-eulerproblem-15.html">http://locationcube.blogspot.co.uk/2010/12/project-eulerproblem-15.html</a>
        </p>
        <p>
The formula is n! / r! (n-r)!
</p>
        <p>
Where n is 40 and r is 20…  so 40!/(20! * 20!)
</p>
        <p>
Which gives us:    137846528820 ways to get there!
</p>
        <p>
In fact Google’s online calculator can do this for you….
</p>
        <p>
Just type 40 choose 20 into Google!!
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/Windows-Live-Writer/Euler-15_7C79/image_4.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/Euler-15_7C79/image_thumb_1.png" width="553" height="404" />
          </a>
        </p>
        <h2>
          <em>Discrete Mathematics</em>
        </h2>
        <p>
– on a 2*2 square it takes 4 steps to reach the end. So on a 20*20 square it takes
40 steps.
</p>
        <p>
20 increases in x and 20 increases in y
</p>
        <p>
how many different ways can you choose 20 elements out of a set of 40 elements.
</p>
        <p>
We can use a formula to solve this. “n choose r formula”: N!/r!(n-r)
</p>
        <p>
40!/((20!)(40-20)!)
</p>
        <p>
N = number of elements (40)
</p>
        <p>
r = how many we want to choose
</p>
        <p>
137,846,528,820
</p>
        <h3>Dynamic Programming
</h3>
        <p>
How many routes are there through a 20×20 grid? or.. total number of ways to arrive
at a node?
</p>
        <p>
          <b>dynamic programming</b> is a method for solving complex problems by breaking them
down into simpler subproblems
</p>
        <p>
We find the total number of ways to arrive at a node:
</p>
        <p>
“Sum of the count from above and to the left”
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:cd2574f5-bbac-4abf-9a13-d0e73e7f9fc1" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #ffffff; max-height: 400px; overflow: auto; padding: 2px 5px;">[<span style="color:#2b91af">TestFixture</span>]<br /><span style="color:#0000ff">public</span><span style="color:#0000ff">class</span><span style="color:#2b91af">DynamicProgrammingTests</span><br />
{<br /><span style="color:#0000ff">private</span><span style="color:#2b91af">DynamicProgramming</span> dynamicProgramming;<br /><br />
[<span style="color:#2b91af">SetUp</span>]<br /><span style="color:#0000ff">public</span><span style="color:#0000ff">void</span> DoFirst()<br />
{<br /><span style="color:#0000ff">this</span>.dynamicProgramming = <span style="color:#0000ff">new</span><span style="color:#2b91af">DynamicProgramming</span>();<br />
}<br /><br />
[<span style="color:#2b91af">Test</span>]<br /><span style="color:#0000ff">public</span><span style="color:#0000ff">void</span> Four_DynamicProgrammingSolver_GivesAnswerOf70()<br />
{<br /><span style="color:#0000ff">var</span> result = dynamicProgramming.Solve(4);<br /><span style="color:#2b91af">Assert</span>.AreEqual(70, result);<br />
}<br /><br />
[<span style="color:#2b91af">Test</span>]<br /><span style="color:#0000ff">public</span><span style="color:#0000ff">void</span> Five_DynamicProgrammingSolver_GivesAnswerOf252()<br />
{<br /><span style="color:#0000ff">var</span> result = dynamicProgramming.Solve(5);<br /><span style="color:#2b91af">Assert</span>.AreEqual(252, result);<br />
}<br /><br />
[<span style="color:#2b91af">Test</span>]<br /><span style="color:#0000ff">public</span><span style="color:#0000ff">void</span> Twenty_DynamicProgrammingSolver_GivesAnswerOf252()<br />
{<br /><span style="color:#0000ff">var</span> result = dynamicProgramming.Solve(20);<br /><span style="color:#008000">//137,846,528,820</span><br /><span style="color:#2b91af">Assert</span>.AreEqual(137846528820, result);<br />
}<br />
}<br /><br /><span style="color:#008000">//using property of problem that</span><br /><span style="color:#008000">//total number of ways to arrive at a node</span><br /><span style="color:#008000">//is count from left and above</span><br /><span style="color:#008000">//so we build an array with total number of ways to arrive
at a node</span><br /><span style="color:#0000ff">public</span><span style="color:#0000ff">class</span><span style="color:#2b91af">DynamicProgramming</span><br />
{<br /><span style="color:#0000ff">public</span><span style="color:#0000ff">double</span> Solve(<span style="color:#0000ff">int</span> sizeOfGrid)<br />
{<br /><span style="color:#0000ff">var</span> array = <span style="color:#0000ff">new</span><span style="color:#0000ff">double</span>[sizeOfGrid+2,
sizeOfGrid+2];<br /><br /><span style="color:#0000ff">int</span> i, j;<br />
array[1, 1] = 1;<br /><span style="color:#0000ff">for</span> (i = 1; i &lt;= sizeOfGrid+1; i++)<br />
{<br /><span style="color:#0000ff">for</span> (j = 1; j &lt;= sizeOfGrid+1; j++)<br />
{<br /><span style="color:#008000">//count from left, then count from above</span><br />
array[i, j] += array[i - 1, j] + array[i, j - 1];<br />
}<br />
}<br /><span style="color:#0000ff">double</span> result = array[sizeOfGrid+1, sizeOfGrid+1];<br /><span style="color:#0000ff">return</span> result;<br />
}<br />
}
</div>
          </div>
        </div>
        <p>
put in photo here of array with answers in it.
</p>
        <h3>Brute Force – Recursive
</h3>
        <p>
        </p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:8f5587bc-8ccf-4ef2-a8d1-a55b0db13040" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #ffffff; max-height: 500px; overflow: auto; padding: 2px 5px;">[<span style="color:#2b91af">TestFixture</span>]<br /><span style="color:#0000ff">public</span><span style="color:#0000ff">class</span><span style="color:#2b91af">SolverTests</span><br />
{<br /><span style="color:#0000ff">private</span><span style="color:#2b91af">BruteForceRecursionSolver</span> bruteForceRecursionSolver;<br />
[<span style="color:#2b91af">SetUp</span>]<br /><span style="color:#0000ff">public</span><span style="color:#0000ff">void</span> DoThisAtStart()<br />
{<br /><span style="color:#0000ff">this</span>.bruteForceRecursionSolver = <span style="color:#0000ff">new</span><span style="color:#2b91af">BruteForceRecursionSolver</span>();<br />
}<br />
[<span style="color:#2b91af">Test</span>]<br /><span style="color:#0000ff">public</span><span style="color:#0000ff">void</span> TwoGivesAnswerOf6()<br />
{<br />
bruteForceRecursionSolver.gridSize = 2;<br /><span style="color:#0000ff">var</span> result = bruteForceRecursionSolver.Progress(0,
0);<br /><span style="color:#2b91af">Assert</span>.AreEqual(6, result);<br />
}<br /><br />
[<span style="color:#2b91af">Test</span>]<br /><span style="color:#0000ff">public</span><span style="color:#0000ff">void</span> ThreeGivesAnswerOf20()<br />
{<br />
bruteForceRecursionSolver.gridSize = 3;<br /><span style="color:#0000ff">var</span> result = bruteForceRecursionSolver.Progress(0,
0);<br /><span style="color:#2b91af">Assert</span>.AreEqual(20, result);<br />
}<br /><br />
[<span style="color:#2b91af">Test</span>]<br /><span style="color:#0000ff">public</span><span style="color:#0000ff">void</span> FourGivesAnswerOf70()<br />
{<br />
bruteForceRecursionSolver.gridSize = 4;<br /><span style="color:#0000ff">var</span> result = bruteForceRecursionSolver.Progress(0,
0);<br /><span style="color:#2b91af">Assert</span>.AreEqual(70, result);<br />
}<br /><br />
[<span style="color:#2b91af">Test</span>]<br /><span style="color:#0000ff">public</span><span style="color:#0000ff">void</span> FiveGivesAnswerOf252()<br />
{<br />
bruteForceRecursionSolver.gridSize = 5;<br /><span style="color:#0000ff">var</span> result = bruteForceRecursionSolver.Progress(0,
0);<br /><span style="color:#2b91af">Assert</span>.AreEqual(252, result);<br />
}<br /><br />
[<span style="color:#2b91af">Test</span>]<br /><span style="color:#0000ff">public</span><span style="color:#0000ff">void</span> TenGivesAnswerOf184756()<br />
{<br />
bruteForceRecursionSolver.gridSize = 10;<br /><span style="color:#0000ff">var</span> result = bruteForceRecursionSolver.Progress(0,
0);<br /><span style="color:#2b91af">Assert</span>.AreEqual(184756, result);<br />
}<br /><br />
[<span style="color:#2b91af">Test</span>]<br /><span style="color:#0000ff">public</span><span style="color:#0000ff">void</span> ElevenGivesAnswerOf705432()<br />
{<br />
bruteForceRecursionSolver.gridSize = 11;<br /><span style="color:#0000ff">var</span> result = bruteForceRecursionSolver.Progress(0,
0);<br /><span style="color:#2b91af">Assert</span>.AreEqual(705432, result);<br />
}<br />
}<br /><br /><span style="color:#008000">//http://stackoverflow.com/questions/2200236/project-euler-15</span><br /><span style="color:#0000ff">public</span><span style="color:#0000ff">class</span><span style="color:#2b91af">BruteForceRecursionSolver</span><br />
{<br /><span style="color:#0000ff">public</span><span style="color:#0000ff">int</span> gridSize;<br /><br /><span style="color:#008000">// top left is 0,0</span><br /><span style="color:#0000ff">public</span><span style="color:#0000ff">int</span> Progress(<span style="color:#0000ff">int</span> x, <span style="color:#0000ff">int</span> y)<br />
{<br /><span style="color:#0000ff">int</span> i = 0;<br /><br /><span style="color:#0000ff">if</span> (x &lt; gridSize)<br /><span style="color:#008000">//favours going right</span><br />
i += Progress(x + 1, y);<br /><span style="color:#0000ff">if</span> (y &lt; gridSize)<br />
i += Progress(x, y + 1);<br /><br /><span style="color:#008000">//reached bottom right</span><br /><span style="color:#0000ff">if</span> (x == gridSize &amp;&amp; y == gridSize)<br /><span style="color:#0000ff">return</span> 1;<br /><span style="color:#0000ff">return</span> i;<br />
}<br />
}
</div>
          </div>
        </div>
        <p>
This is very much brute force..
</p>
        <p>
This took about 1.5 hours:
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:7b0cb8d5-7827-4f17-baf4-6ddfa17a5f4b" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #ffffff; max-height: 400px; overflow: auto; padding: 2px 5px;">
              <span style="color:#0000ff">public</span>
              <span style="color:#0000ff">class</span>
              <span style="color:#2b91af">SolveRecursion</span>
              <br />
{<br /><span style="color:#0000ff">public</span><span style="color:#0000ff">long</span> Combination
= 0;<br /><span style="color:#0000ff">public</span><span style="color:#0000ff">int</span> GridSize;<br /><br /><span style="color:#0000ff">public</span><span style="color:#0000ff">void</span> CalculateCombination(<span style="color:#0000ff">int</span> x
= 0, <span style="color:#0000ff">int</span> y = 0)<br />
{<br /><span style="color:#0000ff">if</span> (x &lt; GridSize)<br />
{<br />
CalculateCombination(x + 1, y);<br />
}<br /><span style="color:#0000ff">if</span> (y &lt; GridSize)<br />
{<br />
CalculateCombination(x, y + 1);<br />
}<br /><span style="color:#0000ff">if</span> (x == GridSize &amp;&amp; y == GridSize)<br />
Combination++;<br />
}<br />
}
</div>
          </div>
        </div>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:4f1711d3-d5ff-4f9e-bdce-fa327a1986dc" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #ffffff; max-height: 500px; overflow: auto; padding: 2px 5px;">
              <span style="color:#0000ff">static</span>
              <span style="color:#0000ff">void</span> Main(<span style="color:#0000ff">string</span>[]
args)<br />
{<br /><span style="color:#008000">//gives correct answer: 137,846,528,820</span><br /><span style="color:#2b91af">Console</span>.WriteLine(<span style="color:#a31515">"starting"</span>);<br /><span style="color:#2b91af">Stopwatch</span> stopWatch = <span style="color:#0000ff">new</span><span style="color:#2b91af">Stopwatch</span>();<br />
stopWatch.Start();<br /><span style="color:#0000ff">var</span> solveRecursion2 = <span style="color:#0000ff">new</span><span style="color:#2b91af">SolveRecursion</span> {
GridSize = 20 };<br />
solveRecursion2.CalculateCombination();<br /><span style="color:#0000ff">var</span> result = solveRecursion2.Combination;<br />
stopWatch.Stop();<br /><span style="color:#2b91af">TimeSpan</span> ts = stopWatch.Elapsed;<br /><span style="color:#2b91af">Console</span>.WriteLine(<span style="color:#a31515">"Result
is: {</span><span style="color:#3cb371">0}</span><span style="color:#a31515">, time
was {</span><span style="color:#3cb371">1}</span><span style="color:#a31515"> seconds"</span>,
result, ts.ToString());<br />
}
</div>
          </div>
        </div>
        <p>
and non recursive thoughts on:
</p>
        <p>
          <a href="http://stackoverflow.com/questions/10890516/rewrite-recursive-algorithm-more-simply-euler-15">http://stackoverflow.com/questions/10890516/rewrite-recursive-algorithm-more-simply-euler-15</a>
        </p>
        <img width="0" height="0" src="http://www.programgood.net/aggbug.ashx?id=ae7c86f3-dfe8-48cb-9dcc-d0800b337ce0" />
      </body>
      <title>Euler 15–How Many Routes in a 20 by 20 Grid</title>
      <guid isPermaLink="false">http://www.programgood.net/PermaLink,guid,ae7c86f3-dfe8-48cb-9dcc-d0800b337ce0.aspx</guid>
      <link>http://www.programgood.net/2012/06/05/Euler15HowManyRoutesInA20By20Grid.aspx</link>
      <pubDate>Tue, 05 Jun 2012 16:50:27 GMT</pubDate>
      <description>&lt;p&gt;
Am trying out using git now on every project - mainly so I can easily revert if I
mess things up.&amp;#160; Good practice.
&lt;/p&gt;
&lt;p&gt;
git init
&lt;/p&gt;
&lt;p&gt;
git add .
&lt;/p&gt;
&lt;p&gt;
git commit -m &amp;quot;first commit of Euler 15&amp;quot;
&lt;/p&gt;
&lt;p&gt;
git checkout -b firsttry
&lt;/p&gt;
&lt;p&gt;
git branch (to see branches)
&lt;/p&gt;
&lt;p&gt;
gitgui
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/Windows-Live-Writer/Euler-15_7C79/image_2.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/Euler-15_7C79/image_thumb.png" width="277" height="140" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
R# – Move to another file with same name
&lt;/p&gt;
&lt;h2&gt;Forumla
&lt;/h2&gt;
&lt;p&gt;
&lt;a href="http://locationcube.blogspot.co.uk/2010/12/project-eulerproblem-15.html"&gt;http://locationcube.blogspot.co.uk/2010/12/project-eulerproblem-15.html&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
The formula is n! / r! (n-r)!
&lt;/p&gt;
&lt;p&gt;
Where n is 40 and r is 20…&amp;#160; so 40!/(20! * 20!)
&lt;/p&gt;
&lt;p&gt;
Which gives us:&amp;#160;&amp;#160;&amp;#160; 137846528820 ways to get there!
&lt;/p&gt;
&lt;p&gt;
In fact Google’s online calculator can do this for you….
&lt;/p&gt;
&lt;p&gt;
Just type 40 choose 20 into Google!!
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/Windows-Live-Writer/Euler-15_7C79/image_4.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/Euler-15_7C79/image_thumb_1.png" width="553" height="404" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;h2&gt;&lt;em&gt;Discrete Mathematics&lt;/em&gt; 
&lt;/h2&gt;
&lt;p&gt;
– on a 2*2 square it takes 4 steps to reach the end. So on a 20*20 square it takes
40 steps.
&lt;/p&gt;
&lt;p&gt;
20 increases in x and 20 increases in y
&lt;/p&gt;
&lt;p&gt;
how many different ways can you choose 20 elements out of a set of 40 elements.
&lt;/p&gt;
&lt;p&gt;
We can use a formula to solve this. “n choose r formula”: N!/r!(n-r)
&lt;/p&gt;
&lt;p&gt;
40!/((20!)(40-20)!)
&lt;/p&gt;
&lt;p&gt;
N = number of elements (40)
&lt;/p&gt;
&lt;p&gt;
r = how many we want to choose
&lt;/p&gt;
&lt;p&gt;
137,846,528,820
&lt;/p&gt;
&lt;h3&gt;Dynamic Programming
&lt;/h3&gt;
&lt;p&gt;
How many routes are there through a 20×20 grid? or.. total number of ways to arrive
at a node?
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;dynamic programming&lt;/b&gt; is a method for solving complex problems by breaking them
down into simpler subproblems
&lt;/p&gt;
&lt;p&gt;
We find the total number of ways to arrive at a node:
&lt;/p&gt;
&lt;p&gt;
“Sum of the count from above and to the left”
&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:cd2574f5-bbac-4abf-9a13-d0e73e7f9fc1" class="wlWriterEditableSmartContent"&gt;
&lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt;
&lt;div style="background-color: #ffffff; max-height: 400px; overflow: auto; padding: 2px 5px;"&gt;[&lt;span style="color:#2b91af"&gt;TestFixture&lt;/span&gt;]&lt;br&gt;
&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af"&gt;DynamicProgrammingTests&lt;/span&gt;
&lt;br&gt;
{&lt;br&gt;
&lt;span style="color:#0000ff"&gt;private&lt;/span&gt; &lt;span style="color:#2b91af"&gt;DynamicProgramming&lt;/span&gt; dynamicProgramming;&lt;br&gt;
&lt;br&gt;
[&lt;span style="color:#2b91af"&gt;SetUp&lt;/span&gt;]&lt;br&gt;
&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;void&lt;/span&gt; DoFirst()&lt;br&gt;
{&lt;br&gt;
&lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.dynamicProgramming = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af"&gt;DynamicProgramming&lt;/span&gt;();&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
[&lt;span style="color:#2b91af"&gt;Test&lt;/span&gt;]&lt;br&gt;
&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;void&lt;/span&gt; Four_DynamicProgrammingSolver_GivesAnswerOf70()&lt;br&gt;
{&lt;br&gt;
&lt;span style="color:#0000ff"&gt;var&lt;/span&gt; result = dynamicProgramming.Solve(4);&lt;br&gt;
&lt;span style="color:#2b91af"&gt;Assert&lt;/span&gt;.AreEqual(70, result);&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
[&lt;span style="color:#2b91af"&gt;Test&lt;/span&gt;]&lt;br&gt;
&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;void&lt;/span&gt; Five_DynamicProgrammingSolver_GivesAnswerOf252()&lt;br&gt;
{&lt;br&gt;
&lt;span style="color:#0000ff"&gt;var&lt;/span&gt; result = dynamicProgramming.Solve(5);&lt;br&gt;
&lt;span style="color:#2b91af"&gt;Assert&lt;/span&gt;.AreEqual(252, result);&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
[&lt;span style="color:#2b91af"&gt;Test&lt;/span&gt;]&lt;br&gt;
&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;void&lt;/span&gt; Twenty_DynamicProgrammingSolver_GivesAnswerOf252()&lt;br&gt;
{&lt;br&gt;
&lt;span style="color:#0000ff"&gt;var&lt;/span&gt; result = dynamicProgramming.Solve(20);&lt;br&gt;
&lt;span style="color:#008000"&gt;//137,846,528,820&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#2b91af"&gt;Assert&lt;/span&gt;.AreEqual(137846528820, result);&lt;br&gt;
}&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
&lt;span style="color:#008000"&gt;//using property of problem that&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#008000"&gt;//total number of ways to arrive at a node&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#008000"&gt;//is count from left and above&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#008000"&gt;//so we build an array with total number of ways to arrive
at a node&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af"&gt;DynamicProgramming&lt;/span&gt;
&lt;br&gt;
{&lt;br&gt;
&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;double&lt;/span&gt; Solve(&lt;span style="color:#0000ff"&gt;int&lt;/span&gt; sizeOfGrid)&lt;br&gt;
{&lt;br&gt;
&lt;span style="color:#0000ff"&gt;var&lt;/span&gt; array = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; &lt;span style="color:#0000ff"&gt;double&lt;/span&gt;[sizeOfGrid+2,
sizeOfGrid+2];&lt;br&gt;
&lt;br&gt;
&lt;span style="color:#0000ff"&gt;int&lt;/span&gt; i, j;&lt;br&gt;
array[1, 1] = 1;&lt;br&gt;
&lt;span style="color:#0000ff"&gt;for&lt;/span&gt; (i = 1; i &amp;lt;= sizeOfGrid+1; i++)&lt;br&gt;
{&lt;br&gt;
&lt;span style="color:#0000ff"&gt;for&lt;/span&gt; (j = 1; j &amp;lt;= sizeOfGrid+1; j++)&lt;br&gt;
{&lt;br&gt;
&lt;span style="color:#008000"&gt;//count from left, then count from above&lt;/span&gt;
&lt;br&gt;
array[i, j] += array[i - 1, j] + array[i, j - 1];&lt;br&gt;
}&lt;br&gt;
}&lt;br&gt;
&lt;span style="color:#0000ff"&gt;double&lt;/span&gt; result = array[sizeOfGrid+1, sizeOfGrid+1];&lt;br&gt;
&lt;span style="color:#0000ff"&gt;return&lt;/span&gt; result;&lt;br&gt;
}&lt;br&gt;
}
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
put in photo here of array with answers in it.
&lt;/p&gt;
&lt;h3&gt;Brute Force – Recursive
&lt;/h3&gt;
&lt;p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:8f5587bc-8ccf-4ef2-a8d1-a55b0db13040" class="wlWriterEditableSmartContent"&gt;
&lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt;
&lt;div style="background-color: #ffffff; max-height: 500px; overflow: auto; padding: 2px 5px;"&gt;[&lt;span style="color:#2b91af"&gt;TestFixture&lt;/span&gt;]&lt;br&gt;
&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af"&gt;SolverTests&lt;/span&gt;
&lt;br&gt;
{&lt;br&gt;
&lt;span style="color:#0000ff"&gt;private&lt;/span&gt; &lt;span style="color:#2b91af"&gt;BruteForceRecursionSolver&lt;/span&gt; bruteForceRecursionSolver;&lt;br&gt;
[&lt;span style="color:#2b91af"&gt;SetUp&lt;/span&gt;]&lt;br&gt;
&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;void&lt;/span&gt; DoThisAtStart()&lt;br&gt;
{&lt;br&gt;
&lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.bruteForceRecursionSolver = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af"&gt;BruteForceRecursionSolver&lt;/span&gt;();&lt;br&gt;
}&lt;br&gt;
[&lt;span style="color:#2b91af"&gt;Test&lt;/span&gt;]&lt;br&gt;
&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;void&lt;/span&gt; TwoGivesAnswerOf6()&lt;br&gt;
{&lt;br&gt;
bruteForceRecursionSolver.gridSize = 2;&lt;br&gt;
&lt;span style="color:#0000ff"&gt;var&lt;/span&gt; result = bruteForceRecursionSolver.Progress(0,
0);&lt;br&gt;
&lt;span style="color:#2b91af"&gt;Assert&lt;/span&gt;.AreEqual(6, result);&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
[&lt;span style="color:#2b91af"&gt;Test&lt;/span&gt;]&lt;br&gt;
&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;void&lt;/span&gt; ThreeGivesAnswerOf20()&lt;br&gt;
{&lt;br&gt;
bruteForceRecursionSolver.gridSize = 3;&lt;br&gt;
&lt;span style="color:#0000ff"&gt;var&lt;/span&gt; result = bruteForceRecursionSolver.Progress(0,
0);&lt;br&gt;
&lt;span style="color:#2b91af"&gt;Assert&lt;/span&gt;.AreEqual(20, result);&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
[&lt;span style="color:#2b91af"&gt;Test&lt;/span&gt;]&lt;br&gt;
&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;void&lt;/span&gt; FourGivesAnswerOf70()&lt;br&gt;
{&lt;br&gt;
bruteForceRecursionSolver.gridSize = 4;&lt;br&gt;
&lt;span style="color:#0000ff"&gt;var&lt;/span&gt; result = bruteForceRecursionSolver.Progress(0,
0);&lt;br&gt;
&lt;span style="color:#2b91af"&gt;Assert&lt;/span&gt;.AreEqual(70, result);&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
[&lt;span style="color:#2b91af"&gt;Test&lt;/span&gt;]&lt;br&gt;
&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;void&lt;/span&gt; FiveGivesAnswerOf252()&lt;br&gt;
{&lt;br&gt;
bruteForceRecursionSolver.gridSize = 5;&lt;br&gt;
&lt;span style="color:#0000ff"&gt;var&lt;/span&gt; result = bruteForceRecursionSolver.Progress(0,
0);&lt;br&gt;
&lt;span style="color:#2b91af"&gt;Assert&lt;/span&gt;.AreEqual(252, result);&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
[&lt;span style="color:#2b91af"&gt;Test&lt;/span&gt;]&lt;br&gt;
&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;void&lt;/span&gt; TenGivesAnswerOf184756()&lt;br&gt;
{&lt;br&gt;
bruteForceRecursionSolver.gridSize = 10;&lt;br&gt;
&lt;span style="color:#0000ff"&gt;var&lt;/span&gt; result = bruteForceRecursionSolver.Progress(0,
0);&lt;br&gt;
&lt;span style="color:#2b91af"&gt;Assert&lt;/span&gt;.AreEqual(184756, result);&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
[&lt;span style="color:#2b91af"&gt;Test&lt;/span&gt;]&lt;br&gt;
&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;void&lt;/span&gt; ElevenGivesAnswerOf705432()&lt;br&gt;
{&lt;br&gt;
bruteForceRecursionSolver.gridSize = 11;&lt;br&gt;
&lt;span style="color:#0000ff"&gt;var&lt;/span&gt; result = bruteForceRecursionSolver.Progress(0,
0);&lt;br&gt;
&lt;span style="color:#2b91af"&gt;Assert&lt;/span&gt;.AreEqual(705432, result);&lt;br&gt;
}&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
&lt;span style="color:#008000"&gt;//http://stackoverflow.com/questions/2200236/project-euler-15&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af"&gt;BruteForceRecursionSolver&lt;/span&gt;
&lt;br&gt;
{&lt;br&gt;
&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;int&lt;/span&gt; gridSize;&lt;br&gt;
&lt;br&gt;
&lt;span style="color:#008000"&gt;// top left is 0,0&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;int&lt;/span&gt; Progress(&lt;span style="color:#0000ff"&gt;int&lt;/span&gt; x, &lt;span style="color:#0000ff"&gt;int&lt;/span&gt; y)&lt;br&gt;
{&lt;br&gt;
&lt;span style="color:#0000ff"&gt;int&lt;/span&gt; i = 0;&lt;br&gt;
&lt;br&gt;
&lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (x &amp;lt; gridSize)&lt;br&gt;
&lt;span style="color:#008000"&gt;//favours going right&lt;/span&gt;
&lt;br&gt;
i += Progress(x + 1, y);&lt;br&gt;
&lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (y &amp;lt; gridSize)&lt;br&gt;
i += Progress(x, y + 1);&lt;br&gt;
&lt;br&gt;
&lt;span style="color:#008000"&gt;//reached bottom right&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (x == gridSize &amp;amp;&amp;amp; y == gridSize)&lt;br&gt;
&lt;span style="color:#0000ff"&gt;return&lt;/span&gt; 1;&lt;br&gt;
&lt;span style="color:#0000ff"&gt;return&lt;/span&gt; i;&lt;br&gt;
}&lt;br&gt;
}
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&gt;
&lt;p&gt;
This is very much brute force..
&lt;/p&gt;
&lt;p&gt;
This took about 1.5 hours:
&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:7b0cb8d5-7827-4f17-baf4-6ddfa17a5f4b" class="wlWriterEditableSmartContent"&gt;
&lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt;
&lt;div style="background-color: #ffffff; max-height: 400px; overflow: auto; padding: 2px 5px;"&gt;&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af"&gt;SolveRecursion&lt;/span&gt;
&lt;br&gt;
{&lt;br&gt;
&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;long&lt;/span&gt; Combination
= 0;&lt;br&gt;
&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;int&lt;/span&gt; GridSize;&lt;br&gt;
&lt;br&gt;
&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;void&lt;/span&gt; CalculateCombination(&lt;span style="color:#0000ff"&gt;int&lt;/span&gt; x
= 0, &lt;span style="color:#0000ff"&gt;int&lt;/span&gt; y = 0)&lt;br&gt;
{&lt;br&gt;
&lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (x &amp;lt; GridSize)&lt;br&gt;
{&lt;br&gt;
CalculateCombination(x + 1, y);&lt;br&gt;
}&lt;br&gt;
&lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (y &amp;lt; GridSize)&lt;br&gt;
{&lt;br&gt;
CalculateCombination(x, y + 1);&lt;br&gt;
}&lt;br&gt;
&lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (x == GridSize &amp;amp;&amp;amp; y == GridSize)&lt;br&gt;
Combination++;&lt;br&gt;
}&lt;br&gt;
}
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:4f1711d3-d5ff-4f9e-bdce-fa327a1986dc" class="wlWriterEditableSmartContent"&gt;
&lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt;
&lt;div style="background-color: #ffffff; max-height: 500px; overflow: auto; padding: 2px 5px;"&gt;&lt;span style="color:#0000ff"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff"&gt;void&lt;/span&gt; Main(&lt;span style="color:#0000ff"&gt;string&lt;/span&gt;[]
args)&lt;br&gt;
{&lt;br&gt;
&lt;span style="color:#008000"&gt;//gives correct answer: 137,846,528,820&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color:#a31515"&gt;&amp;quot;starting&amp;quot;&lt;/span&gt;);&lt;br&gt;
&lt;span style="color:#2b91af"&gt;Stopwatch&lt;/span&gt; stopWatch = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Stopwatch&lt;/span&gt;();&lt;br&gt;
stopWatch.Start();&lt;br&gt;
&lt;span style="color:#0000ff"&gt;var&lt;/span&gt; solveRecursion2 = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af"&gt;SolveRecursion&lt;/span&gt; {
GridSize = 20 };&lt;br&gt;
solveRecursion2.CalculateCombination();&lt;br&gt;
&lt;span style="color:#0000ff"&gt;var&lt;/span&gt; result = solveRecursion2.Combination;&lt;br&gt;
stopWatch.Stop();&lt;br&gt;
&lt;span style="color:#2b91af"&gt;TimeSpan&lt;/span&gt; ts = stopWatch.Elapsed;&lt;br&gt;
&lt;span style="color:#2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color:#a31515"&gt;&amp;quot;Result
is: {&lt;/span&gt;&lt;span style="color:#3cb371"&gt;0}&lt;/span&gt;&lt;span style="color:#a31515"&gt;, time
was {&lt;/span&gt;&lt;span style="color:#3cb371"&gt;1}&lt;/span&gt;&lt;span style="color:#a31515"&gt; seconds&amp;quot;&lt;/span&gt;,
result, ts.ToString());&lt;br&gt;
}
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
and non recursive thoughts on:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://stackoverflow.com/questions/10890516/rewrite-recursive-algorithm-more-simply-euler-15"&gt;http://stackoverflow.com/questions/10890516/rewrite-recursive-algorithm-more-simply-euler-15&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.programgood.net/aggbug.ashx?id=ae7c86f3-dfe8-48cb-9dcc-d0800b337ce0" /&gt;</description>
      <category>Euler</category>
      <category>Git</category>
      <category>Resharper</category>
    </item>
    <item>
      <trackback:ping>http://www.programgood.net/Trackback.aspx?guid=172a40d7-9749-48b1-a5ca-d77914a28082</trackback:ping>
      <pingback:server>http://www.programgood.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.programgood.net/PermaLink,guid,172a40d7-9749-48b1-a5ca-d77914a28082.aspx</pingback:target>
      <dc:creator>Dave Mateer</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.programgood.net/content/binary/Windows-Live-Writer/GitHubpermission-denied-public-key_93A5/image_2.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/GitHubpermission-denied-public-key_93A5/image_thumb.png" width="666" height="341" />
          </a>
        </p>
        <p>
hmmmm
</p>
        <p>
I did all this (using an existing repo)
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/Windows-Live-Writer/GitHubpermission-denied-public-key_93A5/image_4.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/GitHubpermission-denied-public-key_93A5/image_thumb_1.png" width="617" height="471" />
          </a>
        </p>
        <p>
follow instructions here!
</p>
        <p>
          <a href="http://help.github.com/win-set-up-git/">http://help.github.com/win-set-up-git/</a>
        </p>
        <img width="0" height="0" src="http://www.programgood.net/aggbug.ashx?id=172a40d7-9749-48b1-a5ca-d77914a28082" />
      </body>
      <title>GitHub–permission denied publickey</title>
      <guid isPermaLink="false">http://www.programgood.net/PermaLink,guid,172a40d7-9749-48b1-a5ca-d77914a28082.aspx</guid>
      <link>http://www.programgood.net/2011/10/25/GitHubpermissionDeniedPublickey.aspx</link>
      <pubDate>Tue, 25 Oct 2011 22:26:51 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/Windows-Live-Writer/GitHubpermission-denied-public-key_93A5/image_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/GitHubpermission-denied-public-key_93A5/image_thumb.png" width="666" height="341" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
hmmmm
&lt;/p&gt;
&lt;p&gt;
I did all this (using an existing repo)
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/Windows-Live-Writer/GitHubpermission-denied-public-key_93A5/image_4.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/GitHubpermission-denied-public-key_93A5/image_thumb_1.png" width="617" height="471" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
follow instructions here!
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://help.github.com/win-set-up-git/"&gt;http://help.github.com/win-set-up-git/&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.programgood.net/aggbug.ashx?id=172a40d7-9749-48b1-a5ca-d77914a28082" /&gt;</description>
      <category>Git</category>
    </item>
    <item>
      <trackback:ping>http://www.programgood.net/Trackback.aspx?guid=483b1bd2-1673-4da3-b52e-4d06e7ca4ee4</trackback:ping>
      <pingback:server>http://www.programgood.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.programgood.net/PermaLink,guid,483b1bd2-1673-4da3-b52e-4d06e7ca4ee4.aspx</pingback:target>
      <dc:creator>Dave Mateer</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Custom Membership..forms.
</p>
        <p>
Don’t advocate roll own membership
</p>
        <p>
ASP.NET Membership works if 
</p>
        <ul>
          <li>
SQL Server forever 
</li>
          <li>
Forms auth 
</li>
          <li>
Can login multiple times 
</li>
        </ul>
        <p>
OpenID
</p>
        <p>
TDD/BDD do this.
</p>
        <ul>
          <li>
NUnit 
</li>
          <li>
TestDriven.net 
</li>
        </ul>
        <h3>Code Snippets
</h3>
        <p>
To help with mundane writing code in unit tests.
</p>
        <blockquote>
          <p>
Ctrl K Ctrl B
</p>
        </blockquote>
        <p>
          <a href="http://weblogs.asp.net/kdente/archive/2005/05/05/405843.aspx">http://weblogs.asp.net/kdente/archive/2005/05/05/405843.aspx</a> 
Kevin Dentes Blogs and nunit snippets **not imported yet as wasn’t in .snippet format
</p>
        <p>
Libraries\Documents\Visual Studio 2010\Code Snippets\Visual C#\My Code Snippets
</p>
        <h3>Git console in VS
</h3>
        <p>
Tools/External menu.
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/Windows-Live-Writer/VidPubRemove_CA30/image_4.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/VidPubRemove_CA30/image_thumb_1.png" width="468" height="456" />
          </a>
        </p>
        <p>
which then appears in the Tools menu as git.  Change to &amp;g for keyboard accelerator.
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/Windows-Live-Writer/VidPubRemove_CA30/image_6.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/VidPubRemove_CA30/image_thumb_2.png" width="665" height="319" />
          </a>
        </p>
        <h3>Feature branch in Git
</h3>
        <p>
Master is for finalised and deployed (?) code
</p>
        <p>
git branch (to see current branches)
</p>
        <p>
git checkout –b membership
</p>
        <p>
.gitignore
</p>
        <blockquote>
          <pre>
            <p>
*resharper.user
</p>
            <p>
[Dd]ebug/
</p>
            <p>
[Rr]elease/
</p>
            <p>
build/
</p>
            <p>
[Bb]in/
</p>
            <p>
[Oo]bj/
</p>
            <p>
*.suo
</p>
            <p>
*.sln.cache
</p>
            <p>
_ReSharper.*/
</p>
            <p>
*.user
</p>
          </pre>
        </blockquote>
        <p>
git add .
</p>
        <h3>Global GitIgnore
</h3>
        <p>
          <a href="http://jqr.github.com/2009/02/03/global-git-ignore.html">http://jqr.github.com/2009/02/03/global-git-ignore.html</a>
        </p>
        <p>
git config –global core.excludesfile c:/dev/Global.gitignore
</p>
        <h3>Test 1 – Not Accept Email with &lt; 6 Chars
</h3>
        <p>
From <a href="http://weblogs.asp.net/nunitaddin/">http://weblogs.asp.net/nunitaddin/</a></p>
        <p>
Alt + T  reassigned for run tests in TestDriven.Net
</p>
        <p>
Alt + D run tests in debug
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:11b4e7bb-e8f1-4f8e-8a7d-85067b4667f5" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px">Code
Snippet
</div>
            <div style="background-color: #000000; max-height: 300px; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">TestBase</span>
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> Describes(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> description)
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Console</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WriteLine(</span>
              <span style="color:#ec7600">"-------------------------------"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Console</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WriteLine(description);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Console</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WriteLine(</span>
              <span style="color:#ec7600">"-------------------------------"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> isPending()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Console</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WriteLine(GetCaller() </span>
              <span style="color:#e8e2b7">+</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"
-- PENDING --"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Inconclusive();</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> GetCaller()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">StackTrace</span>
              <span style="color:#f1f2f3"> stack </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">StackTrace</span>
              <span style="color:#f1f2f3">();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> stack</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetFrame(</span>
              <span style="color:#ffcd22">2</span>
              <span style="color:#f1f2f3">)</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetMethod()</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Name</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Replace(</span>
              <span style="color:#ec7600">"_"</span>
              <span style="color:#f1f2f3">, </span>
              <span style="color:#ec7600">"
"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
            </div>
          </div>
        </div>
        <p>
So can get a bit of nice debug in output window:
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/Windows-Live-Writer/VidPubRemove_CA30/image_8.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/VidPubRemove_CA30/image_thumb.png" width="632" height="144" />
          </a>
        </p>
        <p>
YAGNI – writing smallest amount of code to make test pass.. weird but good.
</p>
        <p>
 
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:9a758e9b-c63d-47a9-9cc1-35d1c73924ed" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px">Code
Snippet
</div>
            <div style="background-color: #000000; max-height: 300px; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#f1f2f3">[</span>
              <span style="color:#678cb1">TestFixture</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">MembershipSpecs</span>
              <span style="color:#f1f2f3"> : </span>
              <span style="color:#678cb1">TestBase{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3"> MembershipSpecs()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">this</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Describes(</span>
              <span style="color:#ec7600">"User
Registration"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> registration_should_not_accept_email_with_lt_6_chars()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> membership </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Membership</span>
              <span style="color:#f1f2f3">();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> result </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> membership</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Register(</span>
              <span style="color:#ec7600">"test@test.com"</span>
              <span style="color:#f1f2f3">, </span>
              <span style="color:#ec7600">"password"</span>
              <span style="color:#f1f2f3">, </span>
              <span style="color:#ec7600">"password"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">False(result</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Success);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
            </div>
          </div>
        </div>
        <p>
and simplest possible implementation (not really, but Rob has an end in mind)
</p>
        <p>
used Ctrl . in VS to make Membership class and file, and method.
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:01a3f2e2-e33e-44fe-8f37-62509dfbfaa9" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px">Code
Snippet
</div>
            <div style="background-color: #000000; max-height: 300px; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Membership</span>
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">dynamic</span>
              <span style="color:#f1f2f3"> Register(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> email, </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> password, </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> confirm)
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">dynamic</span>
              <span style="color:#f1f2f3"> result </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">ExpandoObject</span>
              <span style="color:#f1f2f3">();</span>
              <br />
              <span style="color:#f1f2f3"> result</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Success </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">false</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> result;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
            </div>
          </div>
        </div>
        <p>
 
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:0a79ddcc-5616-4154-aa6e-2c11ff1d7f36" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px">Code
Snippet
</div>
            <div style="background-color: #000000; max-height: 300px; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#f1f2f3">[</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> registration_should_not_accept_email_with_lt_6_chars()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> result </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> _membership</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Register(</span>
              <span style="color:#ec7600">"e"</span>
              <span style="color:#f1f2f3">, </span>
              <span style="color:#ec7600">"password"</span>
              <span style="color:#f1f2f3">, </span>
              <span style="color:#ec7600">"password"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">False(result</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Success);</span>
              <br />
              <span style="color:#f1f2f3">}</span>
              <br />
              <br />
              <span style="color:#f1f2f3">[</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> registration_should_not_accept_password_with_lt_6_chars()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> result </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> _membership</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Register(</span>
              <span style="color:#ec7600">"test@test.com"</span>
              <span style="color:#f1f2f3">, </span>
              <span style="color:#ec7600">"x"</span>
              <span style="color:#f1f2f3">, </span>
              <span style="color:#ec7600">"x"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">False(result</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Success);</span>
              <br />
              <span style="color:#f1f2f3">}</span>
              <br />
              <br />
              <span style="color:#f1f2f3">[</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> registration_should_not_accept_mismatched_passwords()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> result </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> _membership</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Register(</span>
              <span style="color:#ec7600">"test@test.com"</span>
              <span style="color:#f1f2f3">, </span>
              <span style="color:#ec7600">"password1"</span>
              <span style="color:#f1f2f3">, </span>
              <span style="color:#ec7600">"password2"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">False(result</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Success);</span>
              <br />
              <span style="color:#f1f2f3">}</span>
            </div>
          </div>
        </div>
        <p>
testing the False cases
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:912dac3f-8400-4ca2-811a-7bfe3f4bda46" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px">Code
Snippet
</div>
            <div style="background-color: #000000; max-height: 300px; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">dynamic</span>
              <span style="color:#f1f2f3"> Register(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> email, </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> password, </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> confirm)
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">dynamic</span>
              <span style="color:#f1f2f3"> result </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">ExpandoObject</span>
              <span style="color:#f1f2f3">();</span>
              <br />
              <span style="color:#f1f2f3">result</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Success </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">false</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (email</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Length </span>
              <span style="color:#e8e2b7">&gt;=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">6</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#e8e2b7">&amp;&amp;</span>
              <span style="color:#f1f2f3"> password</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Length </span>
              <span style="color:#e8e2b7">&gt;=</span>
              <span style="color:#ffcd22">6</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#e8e2b7">&amp;&amp;</span>
              <span style="color:#f1f2f3"> password</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Equals(confirm))</span>
              <br />
              <span style="color:#f1f2f3">result</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Success </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">true</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> result;</span>
              <br />
              <span style="color:#f1f2f3">}</span>
            </div>
          </div>
        </div>
        <h3>Persist Information to DB – Massive
</h3>
        <p>
          <a href="http://blog.wekeroad.com/helpy-stuff/and-i-shall-call-it-massive">http://blog.wekeroad.com/helpy-stuff/and-i-shall-call-it-massive</a>
        </p>
        <p>
Rails doesn’t matter to goto db..can be fast enough.
</p>
        <p>
SQL CE4 in App_Data in Test project.  **This didn’t work.. am using SQL Server**
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/Windows-Live-Writer/VidPubRemove_CA30/image_10.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/VidPubRemove_CA30/image_thumb_3.png" width="644" height="227" />
          </a>
        </p>
        <p>
Seed on ID the PK.  getdate() on 3 date fields as default.
</p>
        <p>
How to persist data?  Simplest possible for now is Massive.. a Dynamic ORM in
500lines or do.
</p>
        <p>
          <a href="https://github.com/robconery/massive">https://github.com/robconery/massive</a>
        </p>
        <p>
 
</p>
        <h3>Test 2 – Registration Should Not Accept Duplicate Emails
</h3>
        <p>
Test is something like:
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:cc6c40ad-56cc-44fa-b368-70817783abef" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #000000; max-height: 400px; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#f1f2f3">[</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> registration_should_not_accept_duplicate_emails()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> result </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> _membership</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Register(</span>
              <span style="color:#ec7600">"test@test.com"</span>
              <span style="color:#f1f2f3">, </span>
              <span style="color:#ec7600">"password"</span>
              <span style="color:#f1f2f3">, </span>
              <span style="color:#ec7600">"password"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> result2 </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> _membership</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Register(</span>
              <span style="color:#ec7600">"test@test.com"</span>
              <span style="color:#f1f2f3">, </span>
              <span style="color:#ec7600">"password"</span>
              <span style="color:#f1f2f3">, </span>
              <span style="color:#ec7600">"password"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">False(result2</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Success);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
            </div>
          </div>
        </div>
        <p>
so need persistence to test this:
</p>
        <p>
Going to clean the db before each test!
</p>
        <p>
Massive works by translating the properties of the anonymous object into column names:
</p>
        <p>
Problem:  Couldn’t get Massive to connect to SQLServerCompact4.0 database with
connection string:
</p>
        <pre>&lt;?xml version="1.0" encoding="utf-8" ?&gt;
&lt;configuration&gt;   &lt;connectionStrings&gt;     &lt;add name="Membership"      connectionString="Data Source=C:\Dev\VidPub\Source\VidPub.Tests\App_Data\Membership_Test.sdf"      providerName="System.Data.SqlServerCE.4.0" /&gt;   &lt;/connectionStrings&gt;
&lt;/configuration&gt;</pre>
        <p>
installed classic 2000 Northwind sample:
</p>
        <p>
          <a href="http://www.microsoft.com/download/en/confirmation.aspx?id=23654">http://www.microsoft.com/download/en/confirmation.aspx?id=23654</a>  
then look in C:\SQL Server 2000 Sample Databases
</p>
        <p>
          <a href="http://ndc2011.macsimum.no/mp4/Day2%20Thursday/Track1%201140-1240.mp4">http://ndc2011.macsimum.no/mp4/Day2%20Thursday/Track1%201140-1240.mp4</a> –
Interesting talk from Norway on Data access history.
</p>
        <p>
Now I can get a console App to talk to SQL Server Compact 4.0 :
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:072d8afe-1356-407f-b003-19a497b977f8" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #000000; max-height: 300px; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> connectionString </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">ConfigurationManager</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">ConnectionStrings[</span>
              <span style="color:#ec7600">"southwind"</span>
              <span style="color:#f1f2f3">]</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">ConnectionString;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//SqlCeConnection
connection = new SqlCeConnection(@"Data Source=SouthWind.sdf");</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">SqlCeConnection</span>
              <span style="color:#f1f2f3"> connection </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">SqlCeConnection</span>
              <span style="color:#f1f2f3">(connectionString);</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">SqlCeCommand</span>
              <span style="color:#f1f2f3"> command </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">SqlCeCommand</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ec7600">"SELECT
* FROM People"</span>
              <span style="color:#f1f2f3">, connection);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">SqlCeDataAdapter</span>
              <span style="color:#f1f2f3"> dataAdapter </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">SqlCeDataAdapter</span>
              <span style="color:#f1f2f3">(command);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">DataSet</span>
              <span style="color:#f1f2f3"> ds </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">DataSet</span>
              <span style="color:#f1f2f3">();</span>
              <br />
              <span style="color:#f1f2f3"> dataAdapter</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Fill(ds);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Console</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WriteLine(ds</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetXml());</span>
            </div>
          </div>
        </div>
        <p>
now I need to get Massive talking to that db.
</p>
        <p>
I can kind of get it working by changing the _providerName to 
</p>
        <pre>            var _providerName = "System.Data.SqlServerCE.4.0";</pre>
        <p>
          <a href="https://github.com/robconery/massive/pull/65">https://github.com/robconery/massive/pull/65</a> here
is a fix by pulling from the App.config.
</p>
        <p>
Getting strange errors!
</p>
        <p>
Reverting to SQL Server
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:4f872883-5bfe-4bc5-ae1c-461aaffcf737" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #000000; max-height: 300px; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#f1f2f3">&lt;</span>
              <span style="color:#93c763">configuration</span>
              <span style="color:#f1f2f3">&gt;</span>
              <br />
              <span style="color:#f1f2f3"> &lt;</span>
              <span style="color:#93c763">connectionStrings</span>
              <span style="color:#f1f2f3">&gt;</span>
              <br />
              <span style="color:#f1f2f3"> &lt;!--</span>
              <span style="color:#66747b">&lt;add name="Membership"
providerName="System.Data.SqlServerCE.4.0" connectionString="Data Source=C:\Dev\VidPub\Source\VidPub.Tests\Membership_Test.sdf"
/&gt;</span>
              <span style="color:#f1f2f3">--&gt;</span>
              <br />
              <span style="color:#f1f2f3"> &lt;</span>
              <span style="color:#93c763">add</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">name</span>
              <span style="color:#f1f2f3">=</span>"<span style="color:#ec7600">Membership</span>"<span style="color:#f1f2f3"></span><span style="color:#678cb1">providerName</span><span style="color:#f1f2f3">=</span>"<span style="color:#ec7600">System.Data.SqlClient</span>"<span style="color:#f1f2f3"></span><span style="color:#678cb1">connectionString</span><span style="color:#f1f2f3">=</span>"<span style="color:#ec7600">Data
Source=.\;Initial Catalog=Membership_Test;Integrated Security=SSPI;</span>"<span style="color:#f1f2f3"> /&gt;</span><br /><span style="color:#f1f2f3"> &lt;/</span><span style="color:#93c763">connectionStrings</span><span style="color:#f1f2f3">&gt;</span><br /><span style="color:#f1f2f3">&lt;/</span><span style="color:#93c763">configuration</span><span style="color:#f1f2f3">&gt;</span></div>
          </div>
        </div>
        <p>
and change provider name back to:
</p>
        <pre>var _providerName = "System.Data.SqlClient";</pre>
        <pre>
          <font face="Arial">and to put a unique constrant on SQL Server column: <a href="http://stackoverflow.com/questions/64981/sql-server-2005-how-create-a-unique-constraint">http://stackoverflow.com/questions/64981/sql-server-2005-how-create-a-unique-constraint</a></font>
        </pre>
        <h3>Code Snippets
</h3>
        <p>
          <a href="http://www.programgood.net/content/binary/Windows-Live-Writer/VidPubRemove_CA30/image_12.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/VidPubRemove_CA30/image_thumb_4.png" width="628" height="466" />
          </a>
        </p>
        <p>
testn is setup for me to produce:
</p>
        <pre> [Test]         public void MyTestMethod() {                      }</pre>
        <img width="0" height="0" src="http://www.programgood.net/aggbug.ashx?id=483b1bd2-1673-4da3-b52e-4d06e7ca4ee4" />
      </body>
      <title>VidPub 2 – Remove ASP.NET Membership, Massive test against DB</title>
      <guid isPermaLink="false">http://www.programgood.net/PermaLink,guid,483b1bd2-1673-4da3-b52e-4d06e7ca4ee4.aspx</guid>
      <link>http://www.programgood.net/2011/09/21/VidPub2RemoveASPNETMembershipMassiveTestAgainstDB.aspx</link>
      <pubDate>Wed, 21 Sep 2011 04:16:27 GMT</pubDate>
      <description>&lt;p&gt;
Custom Membership..forms.
&lt;/p&gt;
&lt;p&gt;
Don’t advocate roll own membership
&lt;/p&gt;
&lt;p&gt;
ASP.NET Membership works if 
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
SQL Server forever 
&lt;/li&gt;
&lt;li&gt;
Forms auth 
&lt;/li&gt;
&lt;li&gt;
Can login multiple times 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
OpenID
&lt;/p&gt;
&lt;p&gt;
TDD/BDD do this.
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
NUnit 
&lt;/li&gt;
&lt;li&gt;
TestDriven.net 
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Code Snippets
&lt;/h3&gt;
&lt;p&gt;
To help with mundane writing code in unit tests.
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
Ctrl K Ctrl B
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
&lt;a href="http://weblogs.asp.net/kdente/archive/2005/05/05/405843.aspx"&gt;http://weblogs.asp.net/kdente/archive/2005/05/05/405843.aspx&lt;/a&gt;&amp;#160;
Kevin Dentes Blogs and nunit snippets **not imported yet as wasn’t in .snippet format
&lt;/p&gt;
&lt;p&gt;
Libraries\Documents\Visual Studio 2010\Code Snippets\Visual C#\My Code Snippets
&lt;/p&gt;
&lt;h3&gt;Git console in VS
&lt;/h3&gt;
&lt;p&gt;
Tools/External menu.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/Windows-Live-Writer/VidPubRemove_CA30/image_4.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/VidPubRemove_CA30/image_thumb_1.png" width="468" height="456" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
which then appears in the Tools menu as git.&amp;#160; Change to &amp;amp;g for keyboard accelerator.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/Windows-Live-Writer/VidPubRemove_CA30/image_6.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/VidPubRemove_CA30/image_thumb_2.png" width="665" height="319" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;h3&gt;Feature branch in Git
&lt;/h3&gt;
&lt;p&gt;
Master is for finalised and deployed (?) code
&lt;/p&gt;
&lt;p&gt;
git branch (to see current branches)
&lt;/p&gt;
&lt;p&gt;
git checkout –b membership
&lt;/p&gt;
&lt;p&gt;
.gitignore
&lt;/p&gt;
&lt;blockquote&gt; &lt;pre&gt;
&lt;p&gt;
*resharper.user
&lt;/p&gt;
&lt;p&gt;
[Dd]ebug/
&lt;/p&gt;
&lt;p&gt;
[Rr]elease/
&lt;/p&gt;
&lt;p&gt;
build/
&lt;/p&gt;
&lt;p&gt;
[Bb]in/
&lt;/p&gt;
&lt;p&gt;
[Oo]bj/
&lt;/p&gt;
&lt;p&gt;
*.suo
&lt;/p&gt;
&lt;p&gt;
*.sln.cache
&lt;/p&gt;
&lt;p&gt;
_ReSharper.*/
&lt;/p&gt;
&lt;p&gt;
*.user
&lt;/p&gt;
&lt;/pre&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
git add .
&lt;/p&gt;
&lt;h3&gt;Global GitIgnore
&lt;/h3&gt;
&lt;p&gt;
&lt;a href="http://jqr.github.com/2009/02/03/global-git-ignore.html"&gt;http://jqr.github.com/2009/02/03/global-git-ignore.html&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
git config –global core.excludesfile c:/dev/Global.gitignore
&lt;/p&gt;
&lt;h3&gt;Test 1 – Not Accept Email with &amp;lt; 6 Chars
&lt;/h3&gt;
&lt;p&gt;
From &lt;a href="http://weblogs.asp.net/nunitaddin/"&gt;http://weblogs.asp.net/nunitaddin/&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Alt + T&amp;#160; reassigned for run tests in TestDriven.Net
&lt;/p&gt;
&lt;p&gt;
Alt + D run tests in debug
&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:11b4e7bb-e8f1-4f8e-8a7d-85067b4667f5" class="wlWriterEditableSmartContent"&gt;
&lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt;
&lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;Code
Snippet
&lt;/div&gt;
&lt;div style="background-color: #000000; max-height: 300px; overflow: auto; padding: 2px 5px; white-space: nowrap"&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;public&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;class&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;TestBase&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; {&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;public&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;void&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; Describes(&lt;/span&gt;&lt;span style="color:#93c763"&gt;string&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; description)
{&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;Console&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;WriteLine(&lt;/span&gt;&lt;span style="color:#ec7600"&gt;&amp;quot;-------------------------------&amp;quot;&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;);&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;Console&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;WriteLine(description);&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;Console&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;WriteLine(&lt;/span&gt;&lt;span style="color:#ec7600"&gt;&amp;quot;-------------------------------&amp;quot;&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;);&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; }&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;public&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;void&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; isPending()
{&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;Console&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;WriteLine(GetCaller() &lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;+&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#ec7600"&gt;&amp;quot;
-- PENDING --&amp;quot;&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;);&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;Assert&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;Inconclusive();&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; }&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;public&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;string&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; GetCaller()
{&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;StackTrace&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; stack &lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;=&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;new&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;StackTrace&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;();&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;return&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; stack&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;GetFrame(&lt;/span&gt;&lt;span style="color:#ffcd22"&gt;2&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;)&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;GetMethod()&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;Name&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;Replace(&lt;/span&gt;&lt;span style="color:#ec7600"&gt;&amp;quot;_&amp;quot;&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;, &lt;/span&gt;&lt;span style="color:#ec7600"&gt;&amp;quot;
&amp;quot;&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;);&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; }&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; }&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
So can get a bit of nice debug in output window:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/Windows-Live-Writer/VidPubRemove_CA30/image_8.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/VidPubRemove_CA30/image_thumb.png" width="632" height="144" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
YAGNI – writing smallest amount of code to make test pass.. weird but good.
&lt;/p&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:9a758e9b-c63d-47a9-9cc1-35d1c73924ed" class="wlWriterEditableSmartContent"&gt;
&lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt;
&lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;Code
Snippet
&lt;/div&gt;
&lt;div style="background-color: #000000; max-height: 300px; overflow: auto; padding: 2px 5px; white-space: nowrap"&gt;&lt;span style="color:#f1f2f3"&gt;[&lt;/span&gt;&lt;span style="color:#678cb1"&gt;TestFixture&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;]&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;public&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;class&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;MembershipSpecs&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; : &lt;/span&gt;&lt;span style="color:#678cb1"&gt;TestBase{&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;public&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; MembershipSpecs()
{&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;this&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;Describes(&lt;/span&gt;&lt;span style="color:#ec7600"&gt;&amp;quot;User
Registration&amp;quot;&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;);&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; }&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; [&lt;/span&gt;&lt;span style="color:#678cb1"&gt;Test&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;]&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;public&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;void&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; registration_should_not_accept_email_with_lt_6_chars()
{&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;var&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; membership &lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;=&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;new&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;Membership&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;();&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;var&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; result &lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;=&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; membership&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;Register(&lt;/span&gt;&lt;span style="color:#ec7600"&gt;&amp;quot;test@test.com&amp;quot;&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;, &lt;/span&gt;&lt;span style="color:#ec7600"&gt;&amp;quot;password&amp;quot;&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;, &lt;/span&gt;&lt;span style="color:#ec7600"&gt;&amp;quot;password&amp;quot;&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;);&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;Assert&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;False(result&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;Success);&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; }&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; }&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
and simplest possible implementation (not really, but Rob has an end in mind)
&lt;/p&gt;
&lt;p&gt;
used Ctrl . in VS to make Membership class and file, and method.
&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:01a3f2e2-e33e-44fe-8f37-62509dfbfaa9" class="wlWriterEditableSmartContent"&gt;
&lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt;
&lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;Code
Snippet
&lt;/div&gt;
&lt;div style="background-color: #000000; max-height: 300px; overflow: auto; padding: 2px 5px; white-space: nowrap"&gt;&lt;span style="color:#93c763"&gt;public&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;class&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;Membership&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; {&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;public&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;dynamic&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; Register(&lt;/span&gt;&lt;span style="color:#93c763"&gt;string&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; email, &lt;/span&gt;&lt;span style="color:#93c763"&gt;string&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; password, &lt;/span&gt;&lt;span style="color:#93c763"&gt;string&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; confirm)
{&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;dynamic&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; result &lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;=&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;new&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;ExpandoObject&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;();&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; result&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;Success &lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;=&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;false&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;return&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; result;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; }&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; }&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:0a79ddcc-5616-4154-aa6e-2c11ff1d7f36" class="wlWriterEditableSmartContent"&gt;
&lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt;
&lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;Code
Snippet
&lt;/div&gt;
&lt;div style="background-color: #000000; max-height: 300px; overflow: auto; padding: 2px 5px; white-space: nowrap"&gt;&lt;span style="color:#f1f2f3"&gt;[&lt;/span&gt;&lt;span style="color:#678cb1"&gt;Test&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;]&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt;&lt;/span&gt;&lt;span style="color:#93c763"&gt;public&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;void&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; registration_should_not_accept_email_with_lt_6_chars()
{&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt;&lt;/span&gt;&lt;span style="color:#93c763"&gt;var&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; result &lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;=&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; _membership&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;Register(&lt;/span&gt;&lt;span style="color:#ec7600"&gt;&amp;quot;e&amp;quot;&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;, &lt;/span&gt;&lt;span style="color:#ec7600"&gt;&amp;quot;password&amp;quot;&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;, &lt;/span&gt;&lt;span style="color:#ec7600"&gt;&amp;quot;password&amp;quot;&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;);&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt;&lt;/span&gt;&lt;span style="color:#678cb1"&gt;Assert&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;False(result&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;Success);&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt;}&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt;[&lt;/span&gt;&lt;span style="color:#678cb1"&gt;Test&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;]&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt;&lt;/span&gt;&lt;span style="color:#93c763"&gt;public&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;void&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; registration_should_not_accept_password_with_lt_6_chars()
{&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt;&lt;/span&gt;&lt;span style="color:#93c763"&gt;var&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; result &lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;=&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; _membership&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;Register(&lt;/span&gt;&lt;span style="color:#ec7600"&gt;&amp;quot;test@test.com&amp;quot;&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;, &lt;/span&gt;&lt;span style="color:#ec7600"&gt;&amp;quot;x&amp;quot;&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;, &lt;/span&gt;&lt;span style="color:#ec7600"&gt;&amp;quot;x&amp;quot;&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;);&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt;&lt;/span&gt;&lt;span style="color:#678cb1"&gt;Assert&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;False(result&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;Success);&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt;}&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt;[&lt;/span&gt;&lt;span style="color:#678cb1"&gt;Test&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;]&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt;&lt;/span&gt;&lt;span style="color:#93c763"&gt;public&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;void&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; registration_should_not_accept_mismatched_passwords()
{&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt;&lt;/span&gt;&lt;span style="color:#93c763"&gt;var&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; result &lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;=&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; _membership&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;Register(&lt;/span&gt;&lt;span style="color:#ec7600"&gt;&amp;quot;test@test.com&amp;quot;&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;, &lt;/span&gt;&lt;span style="color:#ec7600"&gt;&amp;quot;password1&amp;quot;&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;, &lt;/span&gt;&lt;span style="color:#ec7600"&gt;&amp;quot;password2&amp;quot;&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;);&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt;&lt;/span&gt;&lt;span style="color:#678cb1"&gt;Assert&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;False(result&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;Success);&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt;}&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
testing the False cases
&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:912dac3f-8400-4ca2-811a-7bfe3f4bda46" class="wlWriterEditableSmartContent"&gt;
&lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt;
&lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;Code
Snippet
&lt;/div&gt;
&lt;div style="background-color: #000000; max-height: 300px; overflow: auto; padding: 2px 5px; white-space: nowrap"&gt;&lt;span style="color:#93c763"&gt;public&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;dynamic&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; Register(&lt;/span&gt;&lt;span style="color:#93c763"&gt;string&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; email, &lt;/span&gt;&lt;span style="color:#93c763"&gt;string&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; password, &lt;/span&gt;&lt;span style="color:#93c763"&gt;string&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; confirm)
{&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt;&lt;/span&gt;&lt;span style="color:#93c763"&gt;dynamic&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; result &lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;=&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;new&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;ExpandoObject&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;();&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt;result&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;Success &lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;=&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;false&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt;&lt;/span&gt;&lt;span style="color:#93c763"&gt;if&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; (email&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;Length &lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;&amp;gt;=&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#ffcd22"&gt;6&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; password&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;Length &lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;&amp;gt;=&lt;/span&gt;&lt;span style="color:#ffcd22"&gt;6&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; password&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;Equals(confirm))&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt;result&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;Success &lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;=&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;true&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt;&lt;/span&gt;&lt;span style="color:#93c763"&gt;return&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; result;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt;}&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Persist Information to DB – Massive
&lt;/h3&gt;
&lt;p&gt;
&lt;a href="http://blog.wekeroad.com/helpy-stuff/and-i-shall-call-it-massive"&gt;http://blog.wekeroad.com/helpy-stuff/and-i-shall-call-it-massive&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Rails doesn’t matter to goto db..can be fast enough.
&lt;/p&gt;
&lt;p&gt;
SQL CE4 in App_Data in Test project.&amp;#160; **This didn’t work.. am using SQL Server**
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/Windows-Live-Writer/VidPubRemove_CA30/image_10.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/VidPubRemove_CA30/image_thumb_3.png" width="644" height="227" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Seed on ID the PK.&amp;#160; getdate() on 3 date fields as default.
&lt;/p&gt;
&lt;p&gt;
How to persist data?&amp;#160; Simplest possible for now is Massive.. a Dynamic ORM in
500lines or do.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="https://github.com/robconery/massive"&gt;https://github.com/robconery/massive&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;h3&gt;Test 2 – Registration Should Not Accept Duplicate Emails
&lt;/h3&gt;
&lt;p&gt;
Test is something like:
&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:cc6c40ad-56cc-44fa-b368-70817783abef" class="wlWriterEditableSmartContent"&gt;
&lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt;
&lt;div style="background-color: #000000; max-height: 400px; overflow: auto; padding: 2px 5px; white-space: nowrap"&gt;&lt;span style="color:#f1f2f3"&gt;[&lt;/span&gt;&lt;span style="color:#678cb1"&gt;Test&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;]&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;public&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;void&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; registration_should_not_accept_duplicate_emails()
{&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;var&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; result &lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;=&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; _membership&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;Register(&lt;/span&gt;&lt;span style="color:#ec7600"&gt;&amp;quot;test@test.com&amp;quot;&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;, &lt;/span&gt;&lt;span style="color:#ec7600"&gt;&amp;quot;password&amp;quot;&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;, &lt;/span&gt;&lt;span style="color:#ec7600"&gt;&amp;quot;password&amp;quot;&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;);&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;var&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; result2 &lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;=&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; _membership&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;Register(&lt;/span&gt;&lt;span style="color:#ec7600"&gt;&amp;quot;test@test.com&amp;quot;&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;, &lt;/span&gt;&lt;span style="color:#ec7600"&gt;&amp;quot;password&amp;quot;&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;, &lt;/span&gt;&lt;span style="color:#ec7600"&gt;&amp;quot;password&amp;quot;&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;);&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;Assert&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;False(result2&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;Success);&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; }&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
so need persistence to test this:
&lt;/p&gt;
&lt;p&gt;
Going to clean the db before each test!
&lt;/p&gt;
&lt;p&gt;
Massive works by translating the properties of the anonymous object into column names:
&lt;/p&gt;
&lt;p&gt;
Problem:&amp;#160; Couldn’t get Massive to connect to SQLServerCompact4.0 database with
connection string:
&lt;/p&gt;
&lt;pre&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;
&amp;lt;configuration&amp;gt;&amp;#160;&amp;#160; &amp;lt;connectionStrings&amp;gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;add name=&amp;quot;Membership&amp;quot;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; connectionString=&amp;quot;Data Source=C:\Dev\VidPub\Source\VidPub.Tests\App_Data\Membership_Test.sdf&amp;quot;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; providerName=&amp;quot;System.Data.SqlServerCE.4.0&amp;quot; /&amp;gt;&amp;#160;&amp;#160; &amp;lt;/connectionStrings&amp;gt;
&amp;lt;/configuration&amp;gt;&lt;/pre&gt;
&lt;p&gt;
installed classic 2000 Northwind sample:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.microsoft.com/download/en/confirmation.aspx?id=23654"&gt;http://www.microsoft.com/download/en/confirmation.aspx?id=23654&lt;/a&gt;&amp;#160;&amp;#160;
then look in C:\SQL Server 2000 Sample Databases
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://ndc2011.macsimum.no/mp4/Day2%20Thursday/Track1%201140-1240.mp4"&gt;http://ndc2011.macsimum.no/mp4/Day2%20Thursday/Track1%201140-1240.mp4&lt;/a&gt; –
Interesting talk from Norway on Data access history.
&lt;/p&gt;
&lt;p&gt;
Now I can get a console App to talk to SQL Server Compact 4.0 :
&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:072d8afe-1356-407f-b003-19a497b977f8" class="wlWriterEditableSmartContent"&gt;
&lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt;
&lt;div style="background-color: #000000; max-height: 300px; overflow: auto; padding: 2px 5px; white-space: nowrap"&gt;&lt;span style="color:#93c763"&gt;string&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; connectionString &lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;=&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;ConfigurationManager&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;ConnectionStrings[&lt;/span&gt;&lt;span style="color:#ec7600"&gt;&amp;quot;southwind&amp;quot;&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;]&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;ConnectionString;&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#66747b"&gt;//SqlCeConnection
connection = new SqlCeConnection(@&amp;quot;Data Source=SouthWind.sdf&amp;quot;);&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;SqlCeConnection&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; connection &lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;=&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;new&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;SqlCeConnection&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;(connectionString);&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;SqlCeCommand&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; command &lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;=&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;new&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;SqlCeCommand&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;(&lt;/span&gt;&lt;span style="color:#ec7600"&gt;&amp;quot;SELECT
* FROM People&amp;quot;&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;, connection);&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;SqlCeDataAdapter&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; dataAdapter &lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;=&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;new&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;SqlCeDataAdapter&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;(command);&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;DataSet&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; ds &lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;=&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;new&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;DataSet&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;();&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; dataAdapter&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;Fill(ds);&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;Console&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;WriteLine(ds&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;GetXml());&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
now I need to get Massive talking to that db.
&lt;/p&gt;
&lt;p&gt;
I can kind of get it working by changing the _providerName to 
&lt;/p&gt;
&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var _providerName = &amp;quot;System.Data.SqlServerCE.4.0&amp;quot;;&lt;/pre&gt;
&lt;p&gt;
&lt;a href="https://github.com/robconery/massive/pull/65"&gt;https://github.com/robconery/massive/pull/65&lt;/a&gt; here
is a fix by pulling from the App.config.
&lt;/p&gt;
&lt;p&gt;
Getting strange errors!
&lt;/p&gt;
&lt;p&gt;
Reverting to SQL Server
&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:4f872883-5bfe-4bc5-ae1c-461aaffcf737" class="wlWriterEditableSmartContent"&gt;
&lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt;
&lt;div style="background-color: #000000; max-height: 300px; overflow: auto; padding: 2px 5px; white-space: nowrap"&gt;&lt;span style="color:#f1f2f3"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#93c763"&gt;configuration&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &amp;lt;&lt;/span&gt;&lt;span style="color:#93c763"&gt;connectionStrings&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &amp;lt;!--&lt;/span&gt;&lt;span style="color:#66747b"&gt;&amp;lt;add name=&amp;quot;Membership&amp;quot;
providerName=&amp;quot;System.Data.SqlServerCE.4.0&amp;quot; connectionString=&amp;quot;Data Source=C:&amp;#92;Dev&amp;#92;VidPub&amp;#92;Source&amp;#92;VidPub.Tests&amp;#92;Membership_Test.sdf&amp;quot;
/&amp;gt;&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;--&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &amp;lt;&lt;/span&gt;&lt;span style="color:#93c763"&gt;add&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;name&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#ec7600"&gt;Membership&lt;/span&gt;&amp;quot;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;providerName&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#ec7600"&gt;System.Data.SqlClient&lt;/span&gt;&amp;quot;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;connectionString&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#ec7600"&gt;Data
Source=.&amp;#92;;Initial Catalog=Membership_Test;Integrated Security=SSPI;&lt;/span&gt;&amp;quot;&lt;span style="color:#f1f2f3"&gt; /&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &amp;lt;/&lt;/span&gt;&lt;span style="color:#93c763"&gt;connectionStrings&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#93c763"&gt;configuration&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;&amp;gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
and change provider name back to:
&lt;/p&gt;
&lt;pre&gt;var _providerName = &amp;quot;System.Data.SqlClient&amp;quot;;&lt;/pre&gt;
&lt;pre&gt;&lt;font face="Arial"&gt;and to put a unique constrant on SQL Server column: &lt;a href="http://stackoverflow.com/questions/64981/sql-server-2005-how-create-a-unique-constraint"&gt;http://stackoverflow.com/questions/64981/sql-server-2005-how-create-a-unique-constraint&lt;/a&gt;&lt;/font&gt;&lt;/pre&gt;
&lt;h3&gt;Code Snippets
&lt;/h3&gt;
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/Windows-Live-Writer/VidPubRemove_CA30/image_12.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/VidPubRemove_CA30/image_thumb_4.png" width="628" height="466" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
testn is setup for me to produce:
&lt;/p&gt;
&lt;pre&gt; [Test]&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public void MyTestMethod() {&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;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/pre&gt;&lt;img width="0" height="0" src="http://www.programgood.net/aggbug.ashx?id=483b1bd2-1673-4da3-b52e-4d06e7ca4ee4" /&gt;</description>
      <category>Code Snippets</category>
      <category>Git</category>
      <category>TekPub</category>
      <category>VidPub</category>
    </item>
    <item>
      <trackback:ping>http://www.programgood.net/Trackback.aspx?guid=63ed5dd5-5389-4a06-bfa2-93ed32cfcb06</trackback:ping>
      <pingback:server>http://www.programgood.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.programgood.net/PermaLink,guid,63ed5dd5-5389-4a06-bfa2-93ed32cfcb06.aspx</pingback:target>
      <dc:creator>Dave Mateer</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Notes from TekPub ASP.NET MVC3 series of tutorials.
</p>
        <ul>
          <li>
Startup – big idea.. charge people money for</li>
          <li>
Good idea, well executed</li>
          <li>
Get site out there and pay the bills!</li>
        </ul>
        <h3>Why MVC3 in this Fast Paced Startup?
</h3>
        <ul>
          <li>
Good stable version of MVC</li>
          <li>
I know C#</li>
        </ul>
        <h3>What are we doing (Elevator pitch) and when are we going to do it?
</h3>
        <p>
1 sentence!
</p>
        <h3>Platform and Tools
</h3>
        <p>
MVC3
</p>
        <p>
Unfuddle for project mgt
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/Windows-Live-Writer/VidPubSetting-up-Solution_9C64/image_14.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/VidPubSetting-up-Solution_9C64/image_thumb_6.png" width="244" height="167" />
          </a>
        </p>
        <p>
or agilezen (kanban)
</p>
        <p>
Source is on <a href="http://github.com/tekpub/mvc3">http://github.com/tekpub/mvc3</a></p>
        <p>
Setup a new MVC3 solution called VidPub.Web
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/Windows-Live-Writer/VidPubSetting-up-Solution_9C64/image_2.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/VidPubSetting-up-Solution_9C64/image_thumb.png" width="224" height="344" />
          </a>
        </p>
        <p>
Lib is for external dlls.  Docs are for docs.  Everything is under git
</p>
        <p>
git init in \dev\VidPub
</p>
        <p>
git add .
</p>
        <p>
git commit –am “Initial load”
</p>
        <h3>DropBox
</h3>
        <p>
mkdir e:\dropbox\repositories\vpub
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/Windows-Live-Writer/VidPubSetting-up-Solution_9C64/image_4.png">
            <img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/VidPubSetting-up-Solution_9C64/image_thumb_1.png" width="159" height="244" />
          </a>
        </p>
        <p>
in e:\dropbox\repositories\vpub
</p>
        <p>
git init –bare
</p>
        <p>
from \dev folder  git push origin master
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/Windows-Live-Writer/VidPubSetting-up-Solution_9C64/image_6.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/VidPubSetting-up-Solution_9C64/image_thumb_2.png" width="532" height="405" />
          </a>
        </p>
        <p>
So other people can then pull from that repository… it is the whole repo up there,
not just source.
</p>
        <h3>Test Project
</h3>
        <p>
Have just created a container.
</p>
        <h3>Authentication
</h3>
        <p>
Don’t want concurrent authentcation.. ie users sharing accounts.  Could use token
based.
</p>
        <p>
Now, 1 Year, 3 Years
</p>
        <p>
ASP.NET Membership – complicated..
</p>
        <h3>Consistency of FileNames
</h3>
        <p>
Public\javscripts
</p>
        <p>
Public\stylesheets
</p>
        <p>
no more content directory
</p>
        <p>
Model\AccountModels.cs to AccountModel
</p>
        <p>
change CSS path in _Layout.cshtml
</p>
        <h3>CDN
</h3>
        <p>
          <a href="http://code.google.com/apis/libraries/devguide.html#jquery">http://code.google.com/apis/libraries/devguide.html#jquery</a>
        </p>
        <p>
          <a href="http://www.programgood.net/content/binary/Windows-Live-Writer/VidPubSetting-up-Solution_9C64/image_8.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/VidPubSetting-up-Solution_9C64/image_thumb_3.png" width="644" height="243" />
          </a>
        </p>
        <p>
make faster for user as they may have this cached in their browser.  Also save
us a bit of bandwidth.  Cache up to a year.
</p>
        <p>
If using Azure to host <a href="http://www.microsoft.com/windowsazure/msdn-benefits/">http://www.microsoft.com/windowsazure/msdn-benefits/</a> MSDN
have got some benefits.
</p>
        <h3>Logging
</h3>
        <p>
NLog using NuGet
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:814e3273-9bb2-4d27-9dfb-d87bb3b31939" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px">Code
Snippet
</div>
            <div style="background-color: #000000; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#f1f2f3">&lt;</span>
              <span style="color:#93c763">nlog</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">xmlns</span>
              <span style="color:#f1f2f3">=</span>"<span style="color:#ec7600">http://www.nlog-project.org/schemas/NLog.xsd</span>"<span style="color:#f1f2f3"></span><span style="color:#678cb1">xmlns:xsi</span><span style="color:#f1f2f3">=</span>"<span style="color:#ec7600">http://www.w3.org/2001/XMLSchema-instance</span>"<span style="color:#f1f2f3"> &gt;</span><br /><br /><span style="color:#f1f2f3"> &lt;</span><span style="color:#93c763">targets</span><span style="color:#f1f2f3">&gt;</span><br /><span style="color:#f1f2f3"> &lt;!--</span><span style="color:#66747b">Useful for
debugging</span><span style="color:#f1f2f3">--&gt;</span><br /><span style="color:#f1f2f3"> &lt;</span><span style="color:#93c763">target</span><span style="color:#f1f2f3"></span><span style="color:#678cb1">name</span><span style="color:#f1f2f3">=</span>"<span style="color:#ec7600">console</span>"<span style="color:#f1f2f3"></span><span style="color:#678cb1">xsi:type</span><span style="color:#f1f2f3">=</span>"<span style="color:#ec7600">ColoredConsole</span>"<br /><span style="color:#f1f2f3"></span><span style="color:#678cb1">layout</span><span style="color:#f1f2f3">=</span>"<span style="color:#ec7600">${date:format=HH\:mm\:ss}|${level}|${stacktrace}|${message}</span>"<span style="color:#f1f2f3"> /&gt;</span><br /><br /><span style="color:#f1f2f3"> &lt;</span><span style="color:#93c763">target</span><span style="color:#f1f2f3"></span><span style="color:#678cb1">name</span><span style="color:#f1f2f3">=</span>"<span style="color:#ec7600">file</span>"<span style="color:#f1f2f3"></span><span style="color:#678cb1">xsi:type</span><span style="color:#f1f2f3">=</span>"<span style="color:#ec7600">File</span>"<span style="color:#f1f2f3"></span><span style="color:#678cb1">fileName</span><span style="color:#f1f2f3">=</span>"<span style="color:#ec7600">${basedir}/App_Data//logs/site.log</span>"<br /><span style="color:#f1f2f3"></span><span style="color:#678cb1">layout</span><span style="color:#f1f2f3">=</span>"<span style="color:#ec7600">${date}:
${message}</span>"<span style="color:#f1f2f3"> /&gt;</span><br /><br /><span style="color:#f1f2f3"> &lt;</span><span style="color:#93c763">target</span><span style="color:#f1f2f3"></span><span style="color:#678cb1">name</span><span style="color:#f1f2f3">=</span>"<span style="color:#ec7600">eventlog</span>"<span style="color:#f1f2f3"></span><span style="color:#678cb1">xsi:type</span><span style="color:#f1f2f3">=</span>"<span style="color:#ec7600">EventLog</span>"<span style="color:#f1f2f3"></span><span style="color:#678cb1">source</span><span style="color:#f1f2f3">=</span>"<span style="color:#ec7600">My
App</span>"<span style="color:#f1f2f3"></span><span style="color:#678cb1">log</span><span style="color:#f1f2f3">=</span>"<span style="color:#ec7600">Application</span>"<br /><span style="color:#f1f2f3"></span><span style="color:#678cb1">layout</span><span style="color:#f1f2f3">=</span>"<span style="color:#ec7600">${date}:
${message} ${stacktrace}</span>"<span style="color:#f1f2f3"> /&gt;</span><br /><br /><span style="color:#f1f2f3"> &lt;/</span><span style="color:#93c763">targets</span><span style="color:#f1f2f3">&gt;</span><br /><br /><span style="color:#f1f2f3"> &lt;</span><span style="color:#93c763">rules</span><span style="color:#f1f2f3">&gt;</span><br /><br /><span style="color:#f1f2f3"> &lt;</span><span style="color:#93c763">logger</span><span style="color:#f1f2f3"></span><span style="color:#678cb1">name</span><span style="color:#f1f2f3">=</span>"<span style="color:#ec7600">*</span>"<span style="color:#f1f2f3"></span><span style="color:#678cb1">minlevel</span><span style="color:#f1f2f3">=</span>"<span style="color:#ec7600">Info</span>"<span style="color:#f1f2f3"></span><span style="color:#678cb1">writeTo</span><span style="color:#f1f2f3">=</span>"<span style="color:#ec7600">file</span>"<span style="color:#f1f2f3"> /&gt;</span><br /><span style="color:#f1f2f3"> &lt;</span><span style="color:#93c763">logger</span><span style="color:#f1f2f3"></span><span style="color:#678cb1">name</span><span style="color:#f1f2f3">=</span>"<span style="color:#ec7600">*</span>"<span style="color:#f1f2f3"></span><span style="color:#678cb1">minlevel</span><span style="color:#f1f2f3">=</span>"<span style="color:#ec7600">Fatal</span>"<span style="color:#f1f2f3"></span><span style="color:#678cb1">writeTo</span><span style="color:#f1f2f3">=</span>"<span style="color:#ec7600">eventlog</span>"<span style="color:#f1f2f3"> /&gt;</span><br /><br /><span style="color:#f1f2f3"> &lt;/</span><span style="color:#93c763">rules</span><span style="color:#f1f2f3">&gt;</span><br /><br /><span style="color:#f1f2f3">&lt;/</span><span style="color:#93c763">nlog</span><span style="color:#f1f2f3">&gt;</span></div>
          </div>
        </div>
        <p>
in dev we’re going to log everything to a file in App_Data/logs
</p>
        <p>
In \Infrastructure we’ve got some code to help us log with an interface extracted.
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:72766e4b-b82c-4e1e-bf65-06b162b2c662" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px">Code
Snippet
</div>
            <div style="background-color: #000000; max-height: 300px; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">NLogger</span>
              <span style="color:#f1f2f3"> :
VidPub</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Web</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Infrastructure</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Logging</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#8c8cb4">ILogger</span>
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Logger</span>
              <span style="color:#f1f2f3"> _logger;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3"> NLogger()
{</span>
              <br />
              <span style="color:#f1f2f3"> _logger </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">LogManager</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetCurrentClassLogger();</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> LogInfo(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> message)
{</span>
              <br />
              <span style="color:#f1f2f3"> _logger</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Info(message);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> LogWarning(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> message)
{</span>
              <br />
              <span style="color:#f1f2f3"> _logger</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Warn(message);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> LogDebug(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> message)
{</span>
              <br />
              <span style="color:#f1f2f3"> _logger</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Debug(message);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> LogError(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> message)
{</span>
              <br />
              <span style="color:#f1f2f3"> _logger</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Error(message);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> LogError(</span>
              <span style="color:#678cb1">Exception</span>
              <span style="color:#f1f2f3"> x)
{</span>
              <br />
              <span style="color:#f1f2f3"> LogError(BuildExceptionMessage(x));</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> LogFatal(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> message)
{</span>
              <br />
              <span style="color:#f1f2f3"> _logger</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Fatal(message);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> LogFatal(</span>
              <span style="color:#678cb1">Exception</span>
              <span style="color:#f1f2f3"> x)
{</span>
              <br />
              <span style="color:#f1f2f3"> LogFatal(BuildExceptionMessage(x));</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> BuildExceptionMessage(</span>
              <span style="color:#678cb1">Exception</span>
              <span style="color:#f1f2f3"> x)
{</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Exception</span>
              <span style="color:#f1f2f3"> logException </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> x;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (x</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">InnerException </span>
              <span style="color:#e8e2b7">!=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">null</span>
              <span style="color:#f1f2f3">)</span>
              <br />
              <span style="color:#f1f2f3"> logException </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> x</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">InnerException;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> strErrorMsg </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Environment</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">NewLine </span>
              <span style="color:#e8e2b7">+</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"Error
in Path :"</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#e8e2b7">+</span>
              <span style="color:#f1f2f3"> System</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Web</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#678cb1">HttpContext</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Current</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Request</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Path;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">// Get the QueryString
along with the Virtual Path</span>
              <br />
              <span style="color:#f1f2f3"> strErrorMsg </span>
              <span style="color:#e8e2b7">+=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Environment</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">NewLine </span>
              <span style="color:#e8e2b7">+</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"Raw
Url :"</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#e8e2b7">+</span>
              <span style="color:#f1f2f3"> System</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Web</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#678cb1">HttpContext</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Current</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Request</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">RawUrl;</span>
              <br />
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">// Get the error message</span>
              <br />
              <span style="color:#f1f2f3"> strErrorMsg </span>
              <span style="color:#e8e2b7">+=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Environment</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">NewLine </span>
              <span style="color:#e8e2b7">+</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"Message
:"</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#e8e2b7">+</span>
              <span style="color:#f1f2f3"> logException</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Message;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">// Source of the message</span>
              <br />
              <span style="color:#f1f2f3"> strErrorMsg </span>
              <span style="color:#e8e2b7">+=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Environment</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">NewLine </span>
              <span style="color:#e8e2b7">+</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"Source
:"</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#e8e2b7">+</span>
              <span style="color:#f1f2f3"> logException</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Source;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">// Stack Trace of
the error</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> strErrorMsg </span>
              <span style="color:#e8e2b7">+=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Environment</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">NewLine </span>
              <span style="color:#e8e2b7">+</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"Stack
Trace :"</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#e8e2b7">+</span>
              <span style="color:#f1f2f3"> logException</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">StackTrace;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">// Method where the
error occurred</span>
              <br />
              <span style="color:#f1f2f3"> strErrorMsg </span>
              <span style="color:#e8e2b7">+=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Environment</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">NewLine </span>
              <span style="color:#e8e2b7">+</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"TargetSite
:"</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#e8e2b7">+</span>
              <span style="color:#f1f2f3"> logException</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TargetSite;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> strErrorMsg;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
            </div>
          </div>
        </div>
        <h3>IoC
</h3>
        <p>
So we don’t have anything coupled tightly right from the start (eg logging which we’re
doing next).. lets use IoC 
</p>
        <p>
Ninject.MVC3
</p>
        <p>
Wire up in global.asax 
</p>
        <pre> public class MvcApplication : NinjectHttpApplication  {</pre>
        <p>
**NO this is not correct as in MVC3 it is bootstrapped, so just leave as:
</p>
        <pre>public class MvcApplication : System.Web.HttpApplication {</pre>
        <p>
Setting up logging in App_Start bootstrapper file.
</p>
        <p>
“Every time you see a request for ILogger interface in a controller, return a new
NLogger class”
</p>
        <p>
 
</p>
        <pre>kernel.Bind&lt;ILogger&gt;().To&lt;NLogger&gt;();</pre>
        <p>
added in Logs/Site.log into our project.
</p>
        <h3>Glimpse
</h3>
        <p>
Added in bookmarks into bar to turn on and off.
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/Windows-Live-Writer/VidPubSetting-up-Solution_9C64/image_10.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/VidPubSetting-up-Solution_9C64/image_thumb_4.png" width="644" height="447" />
          </a>
        </p>
        <p>
git add .
</p>
        <p>
git commit –am “Added logging, IoC and rearranged stuff”
</p>
        <p>
git push origin master (to save to dropbox)
</p>
        <p>
 
</p>
        <p>
current state of play of our filesystem.
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/Windows-Live-Writer/VidPubSetting-up-Solution_9C64/image_12.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/VidPubSetting-up-Solution_9C64/image_thumb_5.png" width="294" height="594" />
          </a>
        </p>
        <img width="0" height="0" src="http://www.programgood.net/aggbug.ashx?id=63ed5dd5-5389-4a06-bfa2-93ed32cfcb06" />
      </body>
      <title>VidPub1–Setting up Solution</title>
      <guid isPermaLink="false">http://www.programgood.net/PermaLink,guid,63ed5dd5-5389-4a06-bfa2-93ed32cfcb06.aspx</guid>
      <link>http://www.programgood.net/2011/09/20/VidPub1SettingUpSolution.aspx</link>
      <pubDate>Tue, 20 Sep 2011 01:30:54 GMT</pubDate>
      <description>&lt;p&gt;
Notes from TekPub ASP.NET MVC3 series of tutorials.
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Startup – big idea.. charge people money for&lt;/li&gt;
&lt;li&gt;
Good idea, well executed&lt;/li&gt;
&lt;li&gt;
Get site out there and pay the bills!&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Why MVC3 in this Fast Paced Startup?
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
Good stable version of MVC&lt;/li&gt;
&lt;li&gt;
I know C#&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;What are we doing (Elevator pitch) and when are we going to do it?
&lt;/h3&gt;
&lt;p&gt;
1 sentence!
&lt;/p&gt;
&lt;h3&gt;Platform and Tools
&lt;/h3&gt;
&lt;p&gt;
MVC3
&lt;/p&gt;
&lt;p&gt;
Unfuddle for project mgt
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/Windows-Live-Writer/VidPubSetting-up-Solution_9C64/image_14.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/VidPubSetting-up-Solution_9C64/image_thumb_6.png" width="244" height="167" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
or agilezen (kanban)
&lt;/p&gt;
&lt;p&gt;
Source is on &lt;a href="http://github.com/tekpub/mvc3"&gt;http://github.com/tekpub/mvc3&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Setup a new MVC3 solution called VidPub.Web
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/Windows-Live-Writer/VidPubSetting-up-Solution_9C64/image_2.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/VidPubSetting-up-Solution_9C64/image_thumb.png" width="224" height="344" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Lib is for external dlls.&amp;#160; Docs are for docs.&amp;#160; Everything is under git
&lt;/p&gt;
&lt;p&gt;
git init in \dev\VidPub
&lt;/p&gt;
&lt;p&gt;
git add .
&lt;/p&gt;
&lt;p&gt;
git commit –am “Initial load”
&lt;/p&gt;
&lt;h3&gt;DropBox
&lt;/h3&gt;
&lt;p&gt;
mkdir e:\dropbox\repositories\vpub
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/Windows-Live-Writer/VidPubSetting-up-Solution_9C64/image_4.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/VidPubSetting-up-Solution_9C64/image_thumb_1.png" width="159" height="244" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
in e:\dropbox\repositories\vpub
&lt;/p&gt;
&lt;p&gt;
git init –bare
&lt;/p&gt;
&lt;p&gt;
from \dev folder&amp;#160; git push origin master
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/Windows-Live-Writer/VidPubSetting-up-Solution_9C64/image_6.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/VidPubSetting-up-Solution_9C64/image_thumb_2.png" width="532" height="405" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
So other people can then pull from that repository… it is the whole repo up there,
not just source.
&lt;/p&gt;
&lt;h3&gt;Test Project
&lt;/h3&gt;
&lt;p&gt;
Have just created a container.
&lt;/p&gt;
&lt;h3&gt;Authentication
&lt;/h3&gt;
&lt;p&gt;
Don’t want concurrent authentcation.. ie users sharing accounts.&amp;#160; Could use token
based.
&lt;/p&gt;
&lt;p&gt;
Now, 1 Year, 3 Years
&lt;/p&gt;
&lt;p&gt;
ASP.NET Membership – complicated..
&lt;/p&gt;
&lt;h3&gt;Consistency of FileNames
&lt;/h3&gt;
&lt;p&gt;
Public\javscripts
&lt;/p&gt;
&lt;p&gt;
Public\stylesheets
&lt;/p&gt;
&lt;p&gt;
no more content directory
&lt;/p&gt;
&lt;p&gt;
Model\AccountModels.cs to AccountModel
&lt;/p&gt;
&lt;p&gt;
change CSS path in _Layout.cshtml
&lt;/p&gt;
&lt;h3&gt;CDN
&lt;/h3&gt;
&lt;p&gt;
&lt;a href="http://code.google.com/apis/libraries/devguide.html#jquery"&gt;http://code.google.com/apis/libraries/devguide.html#jquery&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/Windows-Live-Writer/VidPubSetting-up-Solution_9C64/image_8.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/VidPubSetting-up-Solution_9C64/image_thumb_3.png" width="644" height="243" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
make faster for user as they may have this cached in their browser.&amp;#160; Also save
us a bit of bandwidth.&amp;#160; Cache up to a year.
&lt;/p&gt;
&lt;p&gt;
If using Azure to host &lt;a href="http://www.microsoft.com/windowsazure/msdn-benefits/"&gt;http://www.microsoft.com/windowsazure/msdn-benefits/&lt;/a&gt; MSDN
have got some benefits.
&lt;/p&gt;
&lt;h3&gt;Logging
&lt;/h3&gt;
&lt;p&gt;
NLog using NuGet
&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:814e3273-9bb2-4d27-9dfb-d87bb3b31939" class="wlWriterEditableSmartContent"&gt;
&lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt;
&lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;Code
Snippet
&lt;/div&gt;
&lt;div style="background-color: #000000; overflow: auto; padding: 2px 5px; white-space: nowrap"&gt;&lt;span style="color:#f1f2f3"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#93c763"&gt;nlog&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;xmlns&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#ec7600"&gt;http://www.nlog-project.org/schemas/NLog.xsd&lt;/span&gt;&amp;quot;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;xmlns:xsi&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#ec7600"&gt;http://www.w3.org/2001/XMLSchema-instance&lt;/span&gt;&amp;quot;&lt;span style="color:#f1f2f3"&gt; &amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &amp;lt;&lt;/span&gt;&lt;span style="color:#93c763"&gt;targets&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &amp;lt;!--&lt;/span&gt;&lt;span style="color:#66747b"&gt;Useful for
debugging&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;--&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &amp;lt;&lt;/span&gt;&lt;span style="color:#93c763"&gt;target&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;name&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#ec7600"&gt;console&lt;/span&gt;&amp;quot;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;xsi:type&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#ec7600"&gt;ColoredConsole&lt;/span&gt;&amp;quot;&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;layout&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#ec7600"&gt;${date:format=HH&amp;#92;:mm&amp;#92;:ss}|${level}|${stacktrace}|${message}&lt;/span&gt;&amp;quot;&lt;span style="color:#f1f2f3"&gt; /&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &amp;lt;&lt;/span&gt;&lt;span style="color:#93c763"&gt;target&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;name&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#ec7600"&gt;file&lt;/span&gt;&amp;quot;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;xsi:type&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#ec7600"&gt;File&lt;/span&gt;&amp;quot;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;fileName&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#ec7600"&gt;${basedir}/App_Data//logs/site.log&lt;/span&gt;&amp;quot;&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;layout&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#ec7600"&gt;${date}:
${message}&lt;/span&gt;&amp;quot;&lt;span style="color:#f1f2f3"&gt; /&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &amp;lt;&lt;/span&gt;&lt;span style="color:#93c763"&gt;target&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;name&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#ec7600"&gt;eventlog&lt;/span&gt;&amp;quot;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;xsi:type&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#ec7600"&gt;EventLog&lt;/span&gt;&amp;quot;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;source&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#ec7600"&gt;My
App&lt;/span&gt;&amp;quot;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;log&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#ec7600"&gt;Application&lt;/span&gt;&amp;quot;&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;layout&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#ec7600"&gt;${date}:
${message} ${stacktrace}&lt;/span&gt;&amp;quot;&lt;span style="color:#f1f2f3"&gt; /&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &amp;lt;/&lt;/span&gt;&lt;span style="color:#93c763"&gt;targets&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &amp;lt;&lt;/span&gt;&lt;span style="color:#93c763"&gt;rules&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &amp;lt;&lt;/span&gt;&lt;span style="color:#93c763"&gt;logger&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;name&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#ec7600"&gt;*&lt;/span&gt;&amp;quot;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;minlevel&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#ec7600"&gt;Info&lt;/span&gt;&amp;quot;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;writeTo&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#ec7600"&gt;file&lt;/span&gt;&amp;quot;&lt;span style="color:#f1f2f3"&gt; /&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &amp;lt;&lt;/span&gt;&lt;span style="color:#93c763"&gt;logger&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;name&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#ec7600"&gt;*&lt;/span&gt;&amp;quot;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;minlevel&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#ec7600"&gt;Fatal&lt;/span&gt;&amp;quot;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;writeTo&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#ec7600"&gt;eventlog&lt;/span&gt;&amp;quot;&lt;span style="color:#f1f2f3"&gt; /&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &amp;lt;/&lt;/span&gt;&lt;span style="color:#93c763"&gt;rules&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#93c763"&gt;nlog&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;&amp;gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
in dev we’re going to log everything to a file in App_Data/logs
&lt;/p&gt;
&lt;p&gt;
In \Infrastructure we’ve got some code to help us log with an interface extracted.
&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:72766e4b-b82c-4e1e-bf65-06b162b2c662" class="wlWriterEditableSmartContent"&gt;
&lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt;
&lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;Code
Snippet
&lt;/div&gt;
&lt;div style="background-color: #000000; max-height: 300px; overflow: auto; padding: 2px 5px; white-space: nowrap"&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;public&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;class&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;NLogger&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; :
VidPub&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;Web&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;Infrastructure&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;Logging&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#8c8cb4"&gt;ILogger&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; {&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;Logger&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; _logger;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;public&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; NLogger()
{&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; _logger &lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;=&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;LogManager&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;GetCurrentClassLogger();&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; }&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;public&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;void&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; LogInfo(&lt;/span&gt;&lt;span style="color:#93c763"&gt;string&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; message)
{&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; _logger&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;Info(message);&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; }&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;public&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;void&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; LogWarning(&lt;/span&gt;&lt;span style="color:#93c763"&gt;string&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; message)
{&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; _logger&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;Warn(message);&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; }&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;public&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;void&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; LogDebug(&lt;/span&gt;&lt;span style="color:#93c763"&gt;string&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; message)
{&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; _logger&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;Debug(message);&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; }&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;public&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;void&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; LogError(&lt;/span&gt;&lt;span style="color:#93c763"&gt;string&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; message)
{&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; _logger&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;Error(message);&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; }&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;public&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;void&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; LogError(&lt;/span&gt;&lt;span style="color:#678cb1"&gt;Exception&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; x)
{&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; LogError(BuildExceptionMessage(x));&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; }&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;public&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;void&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; LogFatal(&lt;/span&gt;&lt;span style="color:#93c763"&gt;string&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; message)
{&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; _logger&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;Fatal(message);&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; }&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;public&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;void&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; LogFatal(&lt;/span&gt;&lt;span style="color:#678cb1"&gt;Exception&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; x)
{&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; LogFatal(BuildExceptionMessage(x));&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; }&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;string&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; BuildExceptionMessage(&lt;/span&gt;&lt;span style="color:#678cb1"&gt;Exception&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; x)
{&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;Exception&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; logException &lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;=&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; x;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;if&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; (x&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;InnerException &lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;!=&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;null&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;)&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; logException &lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;=&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; x&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;InnerException;&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;string&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; strErrorMsg &lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;=&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;Environment&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;NewLine &lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;+&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#ec7600"&gt;&amp;quot;Error
in Path :&amp;quot;&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;+&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; System&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;Web&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#678cb1"&gt;HttpContext&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;Current&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;Request&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;Path;&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#66747b"&gt;// Get the QueryString
along with the Virtual Path&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; strErrorMsg &lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;+=&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;Environment&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;NewLine &lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;+&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#ec7600"&gt;&amp;quot;Raw
Url :&amp;quot;&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;+&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; System&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;Web&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#678cb1"&gt;HttpContext&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;Current&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;Request&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;RawUrl;&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#66747b"&gt;// Get the error message&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; strErrorMsg &lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;+=&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;Environment&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;NewLine &lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;+&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#ec7600"&gt;&amp;quot;Message
:&amp;quot;&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;+&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; logException&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;Message;&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#66747b"&gt;// Source of the message&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; strErrorMsg &lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;+=&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;Environment&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;NewLine &lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;+&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#ec7600"&gt;&amp;quot;Source
:&amp;quot;&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;+&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; logException&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;Source;&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#66747b"&gt;// Stack Trace of
the error&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; strErrorMsg &lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;+=&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;Environment&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;NewLine &lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;+&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#ec7600"&gt;&amp;quot;Stack
Trace :&amp;quot;&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;+&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; logException&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;StackTrace;&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#66747b"&gt;// Method where the
error occurred&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; strErrorMsg &lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;+=&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#678cb1"&gt;Environment&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;NewLine &lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;+&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#ec7600"&gt;&amp;quot;TargetSite
:&amp;quot;&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;+&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; logException&lt;/span&gt;&lt;span style="color:#e8e2b7"&gt;.&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt;TargetSite;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; &lt;/span&gt;&lt;span style="color:#93c763"&gt;return&lt;/span&gt;&lt;span style="color:#f1f2f3"&gt; strErrorMsg;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; }&lt;/span&gt;
&lt;br&gt;
&lt;span style="color:#f1f2f3"&gt; }&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;IoC
&lt;/h3&gt;
&lt;p&gt;
So we don’t have anything coupled tightly right from the start (eg logging which we’re
doing next).. lets use IoC 
&lt;/p&gt;
&lt;p&gt;
Ninject.MVC3
&lt;/p&gt;
&lt;p&gt;
Wire up in global.asax 
&lt;/p&gt;
&lt;pre&gt; public class MvcApplication : NinjectHttpApplication&amp;#160; {&lt;/pre&gt;
&lt;p&gt;
**NO this is not correct as in MVC3 it is bootstrapped, so just leave as:
&lt;/p&gt;
&lt;pre&gt;public class MvcApplication : System.Web.HttpApplication {&lt;/pre&gt;
&lt;p&gt;
Setting up logging in App_Start bootstrapper file.
&lt;/p&gt;
&lt;p&gt;
“Every time you see a request for ILogger interface in a controller, return a new
NLogger class”
&lt;/p&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;pre&gt;kernel.Bind&amp;lt;ILogger&amp;gt;().To&amp;lt;NLogger&amp;gt;();&lt;/pre&gt;
&lt;p&gt;
added in Logs/Site.log into our project.
&lt;/p&gt;
&lt;h3&gt;Glimpse
&lt;/h3&gt;
&lt;p&gt;
Added in bookmarks into bar to turn on and off.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/Windows-Live-Writer/VidPubSetting-up-Solution_9C64/image_10.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/VidPubSetting-up-Solution_9C64/image_thumb_4.png" width="644" height="447" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
git add .
&lt;/p&gt;
&lt;p&gt;
git commit –am “Added logging, IoC and rearranged stuff”
&lt;/p&gt;
&lt;p&gt;
git push origin master (to save to dropbox)
&lt;/p&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;p&gt;
current state of play of our filesystem.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/Windows-Live-Writer/VidPubSetting-up-Solution_9C64/image_12.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/VidPubSetting-up-Solution_9C64/image_thumb_5.png" width="294" height="594" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.programgood.net/aggbug.ashx?id=63ed5dd5-5389-4a06-bfa2-93ed32cfcb06" /&gt;</description>
      <category>Git</category>
      <category>Glimpse</category>
      <category>MVC</category>
      <category>Ninject</category>
      <category>NLog</category>
      <category>VidPub</category>
    </item>
  </channel>
</rss>