<?xml version="1.0" encoding="utf-8"?>
<feed xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom">
  <title>Human-Debugger.net</title>
  <link rel="alternate" type="text/html" href="http://www.human-debugger.net/blog/" />
  <link rel="self" href="http://www.human-debugger.net/blog/SyndicationService.asmx/GetAtom" />
  <icon>favicon.ico</icon>
  <updated>2010-02-13T12:44:23.7875529-07:00</updated>
  <author>
    <name>Shani Raba</name>
  </author>
  <subtitle>Raba - Defend your code</subtitle>
  <id>http://www.human-debugger.net/blog/</id>
  <generator uri="http://dasblog.info/" version="2.3.9074.18820">DasBlog</generator>
  <entry>
    <title>Dasblog 2.3 | GoDaddy.com</title>
    <link rel="alternate" type="text/html" href="http://www.human-debugger.net/blog/2010/02/13/Dasblog23GoDaddycom.aspx" />
    <id>http://www.human-debugger.net/blog/PermaLink,guid,f252d9cb-8565-4e0e-82e6-d06f5810db12.aspx</id>
    <published>2010-02-13T05:49:30.4049487-07:00</published>
    <updated>2010-02-13T12:44:23.7875529-07:00</updated>
    <category term="My Site" label="My Site" scheme="http://www.human-debugger.net/blog/CategoryView,category,MySite.aspx" />
    <author>
      <name>Shani Raba</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Finally, after a long time I find time to upgrade my blog to the newly 2.3 version.
</p>
        <p>
I had many problems installing this version Go-daddy, Monorail and SecurityException.<br />
The last one was also the funny one, after Google-ing a little bit, I found this <a href="http://www.tomergabel.com/dasBlog23UpdateWoesDealingWithSecurityException.aspx">post</a> by
Gabel one of my co-workers.
</p>
        <p>
          <strong>What’s new?</strong>
        </p>
        <p>
So first I created my self a new homepage which you can see <a href="http://www.human-debugger.net/welcome.html">here</a>.<br />
Second, you can track my reading-list, my twitter statuses and my projects (will be
published later).
</p>
        <p>
          <a title="homepage" href="http://www.human-debugger.net/welcome.html">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="homepage" border="0" alt="homepage" src="http://www.human-debugger.net/blog/content/binary/WindowsLiveWriter/Dasblog2.3GoDaddy.com_D07E/homepage%5B1%5D_5.png" width="244" height="150" />
          </a>  <a title="reading-list" href="http://www.human-debugger.net/Books.html"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="readinglist" border="0" alt="readinglist" src="http://www.human-debugger.net/blog/content/binary/WindowsLiveWriter/Dasblog2.3GoDaddy.com_D07E/readinglist%5B1%5D_3.png" width="244" height="153" /></a></p>
        <p>
        </p>
        <p>
        </p>
        <p>
Have fun.
</p>
        <img width="0" height="0" src="http://www.human-debugger.net/blog/aggbug.ashx?id=f252d9cb-8565-4e0e-82e6-d06f5810db12" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Parameterize Tests - [TestCaseAttribute]</title>
    <link rel="alternate" type="text/html" href="http://www.human-debugger.net/blog/2009/08/01/ParameterizeTestsTestCaseAttribute.aspx" />
    <id>http://www.human-debugger.net/blog/PermaLink,guid,cf9c0d76-5b51-47f5-be1b-e78ef20d3364.aspx</id>
    <published>2009-07-31T21:20:12-07:00</published>
    <updated>2009-08-02T13:25:05.6609565-07:00</updated>
    <category term=".Net 3.5" label=".Net 3.5" scheme="http://www.human-debugger.net/blog/CategoryView,category,Net35.aspx" />
    <category term=".Net 3.5/C#3.0" label=".Net 3.5/C#3.0" scheme="http://www.human-debugger.net/blog/CategoryView,category,Net35C30.aspx" />
    <category term="TDD" label="TDD" scheme="http://www.human-debugger.net/blog/CategoryView,category,TDD.aspx" />
    <category term="TDD/NUnit" label="TDD/NUnit" scheme="http://www.human-debugger.net/blog/CategoryView,category,TDDNUnit.aspx" />
    <author>
      <name>Shani Raba</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Test methods must be written as production code.<br />
While writing your tests you must act the same methods you write for your production
code which means:
</p>
        <ol>
          <li>
human-readable (code standard, pattern etc.) 
</li>
          <li>
code re-use (copy paste is never acceptable) 
</li>
          <li>
etc...</li>
        </ol>
        <p>
This is a code you will probably find in your test projects
</p>
        <div>
          <div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 1:</span> [Test]</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 2:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">void</span> GetCommentsByQuery_LookFormHmmmText_FindAtLeaseOne()</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 3:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 4:</span> SvnLogParser
parser = <span style="color: #0000ff">new</span> SvnLogParser();</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 5:</span>
              <span style="color: #0000ff">string</span> textToSearch
= <span style="color: #006080">"Hmmm..."</span>;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 6:</span> var
results = parser.GetCommentsByQuery(comment =&gt; comment.Contains(textToSearch));</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 7:</span> CollectionAssertExtensions.IsNotEmpty(results);</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 8:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 9:</span>  </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 10:</span> [Test]</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 11:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">void</span> GetCommentsByQuery_LookFormBugText_FindAtLeastOne()</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 12:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 13:</span> SvnLogParser
parser = <span style="color: #0000ff">new</span> SvnLogParser();</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 14:</span>
              <span style="color: #0000ff">string</span> textToSearch
= <span style="color: #006080">"bug"</span>;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 15:</span> var
results = parser.GetCommentsByQuery(comment =&gt; comment.Contains(textToSearch));</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 16:</span> CollectionAssertExtensions.IsNotEmpty(results);</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 17:</span> }</pre>
          </div>
        </div>
        <p>
You can see that the two methods are pretty much the same, the only change is the
textToSearch variable.<br />
There are some excuses for such duplication:
</p>
        <ul>
          <li>
"We want two different names... to easily understand the failiure reason" 
</li>
          <li>
"we want it to be easy to read, without context switches..." (method calls and un-needed
inheritance complexity)</li>
        </ul>
        <p>
We, of course, can refactor this code, like this:
</p>
        <div>
          <div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 1:</span> [Test]</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 2:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">void</span> GetCommentsByQuery_LookFormBugText_FindAtLeastOne()</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 3:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 4:</span>
              <span style="color: #0000ff">string</span> textToSearch
= <span style="color: #006080">"bug"</span>;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 5:</span> GetCommentsByQuery_AssertAllItemsStartsWith(textToSearch);</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 6:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 7:</span>  </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 8:</span>  </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 9:</span> [Test]</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 10:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">void</span> GetCommnentsByQuery_LookForHmmmText_VerifyInsideComment()</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 11:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 12:</span>
              <span style="color: #0000ff">string</span> textToSearch
= <span style="color: #006080">"Hmmm..."</span>;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 13:</span> GetCommentsByQuery_AssertAllItemsStartsWith(textToSearch);</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 14:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 15:</span>  </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 16:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">void</span> GetCommentsByQuery_AssertAllItemsStartsWith(<span style="color: #0000ff">string</span> textToSearch)</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 17:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 18:</span> SvnLogParser
parser = <span style="color: #0000ff">new</span> SvnLogParser();</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 19:</span> var
results = parser.GetCommentsByQuery(comment =&gt; comment.StartsWith(textToSearch));</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 20:</span>  </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 21:</span> CollectionAssertExtensions.AllItemsSatisfy(results,
res =&gt; res.Comment.StartsWith(textToSearch));</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 22:</span> }</pre>
          </div>
        </div>
        <p>
This is better when you think of clone detection: less identical rows and the logic
was extracted to one method.<br />
But people might say that they can't see the AAA (Arrange, Act, Assert) and they want
it in one place,<br />
Moreover, in such code sample, it is harder to find all the input parameters, cause
they will be spread all over the TestFixture methods.
</p>
        <p>
 
</p>
        <p>
NUnit 2.5 added TestCaseAttribute, this can help us write tests that are:
</p>
        <ul>
          <li>
more readable 
</li>
          <li>
shorter test-fixture 
</li>
          <li>
all-in-one-place tests</li>
        </ul>
        <div>
          <div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 1:</span> [TestCase(<span style="color: #006080">"Hm..."</span>)]</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 2:</span> [TestCase(<span style="color: #006080">"bug"</span>)]</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060">2:</span> [TestCase(<span style="color: #006080">"bug"</span>)]</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 3:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">void</span> GetCommentsByQuery_LookForText_FindAtLeastOne(<span style="color: #0000ff">string</span> textToSearch)</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 4:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 5:</span> SvnLogParser
parser = <span style="color: #0000ff">new</span> SvnLogParser();</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 6:</span> var
results = parser.GetCommentsByQuery(comment =&gt; comment.Contains(textToSearch));</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 7:</span> CollectionAssertExtensions.IsNotEmpty(results);</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 8:</span> }</pre>
          </div>
        </div>
        <p>
Here you can avoid the duplication and you won't need to refactor your Tests to more
than one method, while you still see them running using the given parameter, 
<br />
for example when the second parameter will fail you will see this output:
</p>
        <div>
          <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: black; margin: 0em; padding-left: 0px; width: 98.93%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; height: 208px; color: yellow; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">------ Test started: Assembly: App.Tests.dll ------

TestCase 'App.Tests.NewFolder1.SvnLogParserTests.GetCommentsByQuery_LookForText_FindAtLeastOne("Hm...")'
failed: 
  Expected: True
  But was:  False
    C:\ShaniData\ProjectsByTitle\Delver\App.Tests\NewFolder1\SvnLogParserTests.cs(75,0): at App.Tests.NewFolder1.CollectionAssertExtensions.IsNotEmpty[T]
    C:\ShaniData\ProjectsByTitle\Delver\App.Tests\NewFolder1\SvnLogParserTests.cs(33,0): at App.Tests.NewFolder1.SvnLogParserTests.GetCommentsByQuery_LookForText_Find...


4 passed, 1 failed, 0 skipped, took 0.78 seconds (NUnit 2.5).


</pre>
        </div>
        <p>
The output will point the given method and the parameter used - which will ease finding
the error.<br />
You can extend reading about the usage <a href="http://nunit.com/blogs/?p=60">here</a></p>
        <img width="0" height="0" src="http://www.human-debugger.net/blog/aggbug.ashx?id=cf9c0d76-5b51-47f5-be1b-e78ef20d3364" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Refactoring and code reviews</title>
    <link rel="alternate" type="text/html" href="http://www.human-debugger.net/blog/2009/07/28/RefactoringAndCodeReviews.aspx" />
    <id>http://www.human-debugger.net/blog/PermaLink,guid,5f001a13-bcc2-4402-b303-5898fea1a612.aspx</id>
    <published>2009-07-27T23:05:03.713-07:00</published>
    <updated>2009-07-27T23:32:12.2555573-07:00</updated>
    <category term="Life" label="Life" scheme="http://www.human-debugger.net/blog/CategoryView,category,Life.aspx" />
    <category term="My Site" label="My Site" scheme="http://www.human-debugger.net/blog/CategoryView,category,MySite.aspx" />
    <category term="Software Development" label="Software Development" scheme="http://www.human-debugger.net/blog/CategoryView,category,SoftwareDevelopment.aspx" />
    <author>
      <name>Shani Raba</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://blogs.microsoft.co.il/blogs/yoavmichaeli/">Yoav</a> sent me this <a href="http://www.refactormycode.com/session">web
site</a>.
</p>
        <p>
I like the idea of sharing knowledge, 
<br />
I also like to read and learn from open sources.<br />
This is even better: daily -public- code review...
</p>
        <p>
          <br />
        </p>
        <img width="0" height="0" src="http://www.human-debugger.net/blog/aggbug.ashx?id=5f001a13-bcc2-4402-b303-5898fea1a612" />
      </div>
    </content>
  </entry>
  <entry>
    <title>StringTemplate Introduction</title>
    <link rel="alternate" type="text/html" href="http://www.human-debugger.net/blog/2009/07/08/StringTemplateIntroduction.aspx" />
    <id>http://www.human-debugger.net/blog/PermaLink,guid,c3f5c330-eef4-4a20-804c-e2a02c0183a3.aspx</id>
    <published>2009-07-08T00:13:57-07:00</published>
    <updated>2009-07-07T17:26:36.6294629-07:00</updated>
    <category term=".Net 3.5" label=".Net 3.5" scheme="http://www.human-debugger.net/blog/CategoryView,category,Net35.aspx" />
    <category term="Scripting Technology" label="Scripting Technology" scheme="http://www.human-debugger.net/blog/CategoryView,category,ScriptingTechnology.aspx" />
    <author>
      <name>Shani Raba</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
For more background about when we use this API you can read my last post about <a href="http://www.human-debugger.net/blog/2009/06/07/RenderingObjectsToHtml.aspx">Rendering
Objects to Html</a></p>
        <p>
          <strong>Simple Rendering of query:</strong>
        </p>
        <div>
          <div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 1:</span> var
query = <span style="color: #0000ff">new</span> StringTemplate(<span style="color: #006080">"SELECT
$column$ FROM $table$;"</span>);</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 2:</span> query.SetAttribute(<span style="color: #006080">"column"</span>, <span style="color: #006080">"name"</span>);</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 3:</span> query.SetAttribute(<span style="color: #006080">"table"</span>, <span style="color: #006080">"User"</span>);</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 4:</span> var
data = query.ToString();</pre>
          </div>
        </div>
        <div>We will refactor this sample to handle the queries from an outside source:
</div>
        <div>
          <div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 1:</span> var
group = <span style="color: #0000ff">new</span> StringTemplateGroup(<span style="color: #006080">"SimpleTemplates"</span>,<span style="color: #006080">@"C:\Templates\TemplateEngineTestCase"</span>);</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 2:</span> var
query = group.GetInstanceOf(<span style="color: #006080">"1_simple"</span>);</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 3:</span> query.SetAttribute(<span style="color: #006080">"column"</span>, <span style="color: #006080">"name"</span>);</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 4:</span> query.SetAttribute(<span style="color: #006080">"table"</span>, <span style="color: #006080">"User"</span>);</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 5:</span> var
data = query.ToString();</pre>
          </div>
        </div>
        <div>Rows 1,2 - loading the template data from a source file.  
</div>
        <div>Here is the Template (1_simple.st):
</div>
        <div>
          <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">//1_simple.st
SELECT $column$ FROM $table$;</pre>
        </div>
        <div> 
</div>
        <div>
          <br />
          <strong>Template Anonymous Type:</strong>
        </div>
        <p>
In the last template usage (1_simple.st) We bind the parameters using strings only.
but we also have a better options: let's assume we wrote down such template:
</p>
        <div>
          <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">//2_simpleObjects.st
Full Name: $Person.FirstName$ - $Person.LastName$</pre>
        </div>
        <p>
But let's assume that we don't have the Person class\instance, we can simply write
it using the anonymous types:
</p>
        <div>
          <div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 1:</span> var
user = <span style="color: #0000ff">new</span> {FirstName = <span style="color: #006080">"Shani"</span>,
LastName = <span style="color: #006080">"Raba"</span>};</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 2:</span> var
group = <span style="color: #0000ff">new</span> StringTemplateGroup(<span style="color: #006080">"OOTempaltes"</span>, <span style="color: #006080">@"C:\Templates\TemplateEngineTestCase"</span>);</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 3:</span> var
query = group.GetInstanceOf(<span style="color: #006080">"2_simpleObjects"</span>);</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 4:</span>  </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 5:</span> query.SetAttribute(<span style="color: #006080">"Person"</span>,
user);</pre>
          </div>
        </div>
        <div>You can also use this kind of bindings for setting template-attributes from each
one of the Person sub-classes.
</div>
        <div> 
</div>
        <div> 
</div>
        <div>
          <strong>Template list:</strong>
        </div>
        <p>
Till now it is all pretty simple to implement by yourself, but the real issue here
is the List binding feature.<br />
You can write such template:
</p>
        <div>
          <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">//3_simpleLoop.st
$items: {num1|
    <span style="color: #0000ff">&lt;</span><span style="color: #800000">li</span><span style="color: #0000ff">&gt;</span>$num1$<span style="color: #0000ff">&lt;/</span><span style="color: #800000">li</span><span style="color: #0000ff">&gt;</span> }$
$end$</pre>
        </div>
        <p>
and bind the list using this code:
</p>
        <div>
          <div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 1:</span> var
templateFolder = <span style="color: #0000ff">new</span> StringTemplateGroup(<span style="color: #006080">"SimpleLoopTemplates"</span>, <span style="color: #006080">@"C:\Tempaltes\TemplateEngineTestCase"</span>);</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 2:</span> var
template = templateFolder.GetInstanceOf(<span style="color: #006080">"3_simpleLoop"</span>);</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 3:</span>  </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 4:</span> template.SetAttribute(<span style="color: #006080">"items"</span>, <span style="color: #0000ff">new</span> List&lt;<span style="color: #0000ff">string</span>&gt;
{<span style="color: #006080">"Shani"</span>, <span style="color: #006080">"Doron"</span>, <span style="color: #006080">"Nati"</span>, <span style="color: #006080">"Yossi"</span>});</pre>
          </div>
        </div>
        <p>
          <strong>
          </strong> 
</p>
        <p>
          <strong>Conclusion:</strong>
        </p>
        <ul>
          <li>
The code is pretty simple, the templates engine implements good functionality and
is well documented. 
</li>
          <li>
The StringTemplate syntax is easy to learn and well documented. 
</li>
          <li>
I still don't like it when I need to learn a new language\syntax - it will sharpen
the newbie's curve. 
</li>
          <li>
StringTemplate is missing good Object2Template Designer. 
</li>
        </ul>
        <img width="0" height="0" src="http://www.human-debugger.net/blog/aggbug.ashx?id=c3f5c330-eef4-4a20-804c-e2a02c0183a3" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Israeli Scrum user group 2009 (15.07.09)</title>
    <link rel="alternate" type="text/html" href="http://www.human-debugger.net/blog/2009/06/14/IsraeliScrumUserGroup2009150709.aspx" />
    <id>http://www.human-debugger.net/blog/PermaLink,guid,c0238451-a762-4084-b45c-e01fc5ac0729.aspx</id>
    <published>2009-06-13T20:42:51-07:00</published>
    <updated>2009-06-14T13:44:59.3170788-07:00</updated>
    <category term="Software Development/Agile" label="Software Development/Agile" scheme="http://www.human-debugger.net/blog/CategoryView,category,SoftwareDevelopmentAgile.aspx" />
    <category term="Software Development/Agile/Scrum" label="Software Development/Agile/Scrum" scheme="http://www.human-debugger.net/blog/CategoryView,category,SoftwareDevelopmentAgileScrum.aspx" />
    <author>
      <name>Shani Raba</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Dr. Alistair Cockburn will be in Israel. 
<br />
I recommend you this user-group: <a href="http://72.249.86.225/Scrum-Event-150709">Scrum
Event</a>. come and learn from the best.
</p>
        <p>
See you there.
</p>
        <img width="0" height="0" src="http://www.human-debugger.net/blog/aggbug.ashx?id=c0238451-a762-4084-b45c-e01fc5ac0729" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Rendering Objects to Html</title>
    <link rel="alternate" type="text/html" href="http://www.human-debugger.net/blog/2009/06/07/RenderingObjectsToHtml.aspx" />
    <id>http://www.human-debugger.net/blog/PermaLink,guid,92c5a9aa-8278-4b78-ae36-53ee76732b6a.aspx</id>
    <published>2009-06-06T19:48:07-07:00</published>
    <updated>2009-06-08T12:51:00.0545682-07:00</updated>
    <category term=".Net 3.5" label=".Net 3.5" scheme="http://www.human-debugger.net/blog/CategoryView,category,Net35.aspx" />
    <category term="Software Development" label="Software Development" scheme="http://www.human-debugger.net/blog/CategoryView,category,SoftwareDevelopment.aspx" />
    <category term="Software Development/Design Patterns" label="Software Development/Design Patterns" scheme="http://www.human-debugger.net/blog/CategoryView,category,SoftwareDevelopmentDesignPatterns.aspx" />
    <author>
      <name>Shani Raba</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <strong>Background:</strong>
        </p>
        <p>
We are writing a new task for the ArcGis Explorer, this task needs to place images
on the globe using its X,Y coordinates.<br />
While for each instance on the globe we need to render its details as html.
</p>
        <p>
          <strong>Mission:</strong>
        </p>
        <p>
Rendering the objects to html, we are still didn't find the right place (on the server
or on the client), but let assume that they both need to do the same job.
</p>
        <p>
          <strong>Ideas:</strong>
        </p>
        <ol>
          <li>
            <strong>Render in code:</strong>
            <br />
This is the naive way of thinking. while you are first thinking about this  problem
you might think to add the object an <em>ToHtml()</em> method.<br />
Always think about the: <a href="http://www.objectmentor.com/resources/articles/srp.pdf">Single
Responsibility Principle (SRP)</a>.<br />
You can still think about Writing an <em>HtmlWriter</em> or <em>HtmlRenderer</em> class
that gets object and render the object using reflection or something else, but than
you will find yourself indenting you JavaScript\html\CSS in C#, for example you can
watch this code:<br /><br /><div><div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060"> 1:</span> var
items = <span style="color: #0000ff">new</span> List&lt;<span style="color: #0000ff">string</span>&gt;
{<span style="color: #006080">"Shani"</span>, <span style="color: #006080">"Doron"</span>, <span style="color: #006080">"Nati"</span>, <span style="color: #006080">"Yossi"</span>};</pre><pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060"> 2:</span> var
sb = <span style="color: #0000ff">new</span> StringBuilder();</pre><pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060"> 3:</span> items.ForEach(currentItem
=&gt; </pre><pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060"> 4:</span> sb.AppendFormat(<span style="color: #006080">"&lt;li&gt;{0}&lt;/li&gt;"</span>,
currentItem)</pre><pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060"> 5:</span> );</pre><pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060"> 6:</span><span style="color: #0000ff">string</span> data
= sb.ToString();</pre></div></div><div>Let's think about the time we will need to change the UI from <em>&lt;li&gt; </em>to
one with style or maybe even change the list to be styled as table...
</div><div> 
</div></li>
          <li>
            <strong>XSL - is pretty more dynamic than code, isn't it?<br /></strong>So we are now looking for something more dynamic, something that we can read
from a file so we can give it to our designer to play with the UI.<br />
This lead us to the second option: at my past all our reports were rendered using
XSL files, personally I don't like this option.<br />
But the main reason is that we will need to serialize our objects to XML, while in
most cases all you need is to render only few fields.<br /></li>
          <li>
            <strong>Let's found another Template Engine:</strong>
            <br />
The first one I can think of is the MVC Engine or Brail. after some searching reading
and Testing I found <a href="http://www.stringtemplate.org/">StringTemplate</a>.<u><br /></u>Here is a simple code for using the API:<br /><br /><div><div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060"> 1:</span> var
templateFolder = <span style="color: #0000ff">new</span> StringTemplateGroup(<span style="color: #006080">"SimpleLoopTemplate"</span>, <span style="color: #006080">@"\TemplateEngineTestCase\WinApp"</span>);</pre><pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060"> 2:</span> var
template = templateFolder.GetInstanceOf(<span style="color: #006080">"3_simpleLoop"</span>);</pre><pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060"> 3:</span><span style="color: #008000">//here
we are binding our list to the template</span></pre><pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060"> 4:</span> template.SetAttribute(<span style="color: #006080">"items"</span>, <span style="color: #0000ff">new</span> List&lt;<span style="color: #0000ff">string</span>&gt;
{<span style="color: #006080">"Shani"</span>, <span style="color: #006080">"Doron"</span>, <span style="color: #006080">"Nati"</span>, <span style="color: #006080">"Yossi"</span>});</pre><pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060"> 5:</span> var
data = template.ToString();</pre></div><br />
and here is the template (file name: <em>3_simpleLoop.st</em>):<br /></div><div><div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060"> 1:</span> $items:
{num1| </pre><pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060"> 2:</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">li</span><span style="color: #0000ff">&gt;</span>$num1$<span style="color: #0000ff">&lt;/</span><span style="color: #800000">li</span><span style="color: #0000ff">&gt;</span></pre><pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060"> 3:</span> }$</pre><pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060"> 4:</span> $end$</pre></div></div><div> 
</div></li>
        </ol>
        <p>
          <strong>Conclusion:</strong>
        </p>
        <div>The StringTemplate give us an API to solve our problem - and using such code
and template we can render our Models to different Views.
</div>
        <div>But is this API is easy or even stable?<br /><br /><em>In later posts we will see more samples using the StringTemplate.<br />
Hopefully samples for using Brail too.</em></div>
        <img width="0" height="0" src="http://www.human-debugger.net/blog/aggbug.ashx?id=92c5a9aa-8278-4b78-ae36-53ee76732b6a" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Writing Web-Resume</title>
    <link rel="alternate" type="text/html" href="http://www.human-debugger.net/blog/2009/04/11/WritingWebResume.aspx" />
    <id>http://www.human-debugger.net/blog/PermaLink,guid,52a1e744-e8eb-4443-9160-51a678a5d2f3.aspx</id>
    <published>2009-04-10T21:56:02-07:00</published>
    <updated>2009-04-11T14:54:42.0610583-07:00</updated>
    <category term="Life" label="Life" scheme="http://www.human-debugger.net/blog/CategoryView,category,Life.aspx" />
    <category term="Software Development" label="Software Development" scheme="http://www.human-debugger.net/blog/CategoryView,category,SoftwareDevelopment.aspx" />
    <author>
      <name>Shani Raba</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I've been looking around for samples and some good advices for writing resumes and
found this site: <a title="VisualCV" href="https://www.visualcv.com/">VisualCV</a></p>
        <p>
Mostly, I like this Engineer profile: <a title="http://www.visualcv.com/alex1" href="http://www.visualcv.com/alex1">http://www.visualcv.com/alex1</a><br />
The really good part is the "code sample" section on the top-right corner...
</p>
        <p>
Have fun...
</p>
        <img width="0" height="0" src="http://www.human-debugger.net/blog/aggbug.ashx?id=52a1e744-e8eb-4443-9160-51a678a5d2f3" />
      </div>
    </content>
  </entry>
  <entry>
    <title>NTS - Net Topology Suite</title>
    <link rel="alternate" type="text/html" href="http://www.human-debugger.net/blog/2009/04/10/NTSNetTopologySuite.aspx" />
    <id>http://www.human-debugger.net/blog/PermaLink,guid,551b8389-003e-4c1d-9ab3-7d9a226da666.aspx</id>
    <published>2009-04-10T14:15:45-07:00</published>
    <updated>2009-04-10T07:16:45.2531788-07:00</updated>
    <category term=".Net 3.5" label=".Net 3.5" scheme="http://www.human-debugger.net/blog/CategoryView,category,Net35.aspx" />
    <category term=".Net 3.5/C#3.0" label=".Net 3.5/C#3.0" scheme="http://www.human-debugger.net/blog/CategoryView,category,Net35C30.aspx" />
    <category term="GIS" label="GIS" scheme="http://www.human-debugger.net/blog/CategoryView,category,GIS.aspx" />
    <author>
      <name>Shani Raba</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Last month I've presented a simple newbie's tutorial about <a href="http://code.google.com/p/nettopologysuite/">NTS
- Net Topology Suite</a>.<br />
Here you can download the <strong><u><a title="NTS Code Sample" href="http://www.human-debugger.net/blog/SiteData/nts/NTS.zip">code
sample</a></u></strong> &amp; <strong><u><a href="http://www.human-debugger.net/blog/SiteData/nts/NTS-Tutorial.ppt">presentation</a></u></strong>.
</p>
        <p>
What is it NTS (Net Topology Suite)?
</p>
        <ul>
          <li>
implements geometry model defined in OpenGis Consortium (<a href="http://www.ogc.gov.uk/">OGC</a>) 
</li>
          <li>
implements  simple features inside the OpenGis Consortium (<a href="http://www.ogc.gov.uk/">OGC</a>)
as Geographic Data access 
</li>
          <li>
implements Some great OGC writers as: GmlWriter (Geographic markup language), WktWriter
(Well Known Text)</li>
        </ul>
        <p>
How do I know whether I need NTS:
</p>
        <ol>
          <li>
You are coding a GIS (Geographic Information Systems) applications 
</li>
          <li>
You want to use a known Convention for Point, Polygon, Polyline etc. 
</li>
          <li>
You want simple implementation for <a href="http://www.ogc.gov.uk/">OGC</a></li>
        </ol>
        <p>
3 times No - you don't need this<br />
3 times Yes - you <strong><u>must</u></strong> read this article and probably use
it.
</p>
        <p>
You can <a href="http://www.human-debugger.net/blog/2009/04/10/LinqToXMLAndLinq2KmlBonus.aspx">read
more about Kml &amp; C#3.0 - at my last post</a>.<br />
I will keep posting more samples in the near future. 
</p>
        <img width="0" height="0" src="http://www.human-debugger.net/blog/aggbug.ashx?id=551b8389-003e-4c1d-9ab3-7d9a226da666" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Linq to XML (and Linq2Kml Bonus)</title>
    <link rel="alternate" type="text/html" href="http://www.human-debugger.net/blog/2009/04/10/LinqToXMLAndLinq2KmlBonus.aspx" />
    <id>http://www.human-debugger.net/blog/PermaLink,guid,a723b5bf-eb8d-4b35-a717-2cdf1406b73f.aspx</id>
    <published>2009-04-10T14:03:14-07:00</published>
    <updated>2009-04-10T07:03:28.4980796-07:00</updated>
    <category term=".Net 3.5" label=".Net 3.5" scheme="http://www.human-debugger.net/blog/CategoryView,category,Net35.aspx" />
    <category term=".Net 3.5/C#3.0" label=".Net 3.5/C#3.0" scheme="http://www.human-debugger.net/blog/CategoryView,category,Net35C30.aspx" />
    <category term=".Net 3.5/LINQ" label=".Net 3.5/LINQ" scheme="http://www.human-debugger.net/blog/CategoryView,category,Net35LINQ.aspx" />
    <category term="GIS" label="GIS" scheme="http://www.human-debugger.net/blog/CategoryView,category,GIS.aspx" />
    <category term="GIS/AGX" label="GIS/AGX" scheme="http://www.human-debugger.net/blog/CategoryView,category,GISAGX.aspx" />
    <author>
      <name>Shani Raba</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <em>
            <font color="#808080">This post inspired by Gal Ochana.</font>
          </em>
        </p>
        <p>
Gal is a new gifted programmer at my team, she presented a great presentation about
Linq to XML - you can download code <strong><u><a title="Linq To Kml Demo" href="http://www.human-debugger.net/blog/SiteData/Linq2Xml/LinqToKmlDemo.zip">here</a></u></strong>.<br />
The great bonus at her presentation was the Linq to Kml Sample, I would like to share
this with you. 
</p>
        <p>
The kml itself is an XML file at our sample it looks like this:
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 1:</span>
              <span style="color: #0000ff">&lt;?</span>
              <span style="color: #800000">xml</span>
              <span style="color: #ff0000">version</span>
              <span style="color: #0000ff">="1.0"</span>
              <span style="color: #ff0000">encoding</span>
              <span style="color: #0000ff">="UTF-8"</span>?<span style="color: #0000ff">&gt;</span></pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">kml</span>
              <span style="color: #ff0000">xmlns</span>
              <span style="color: #0000ff">="http://www.opengis.net/kml/2.2"</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 3:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">Placemark</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">name</span>
              <span style="color: #ff0000">continent</span>
              <span style="color: #0000ff">="America"</span>
              <span style="color: #0000ff">&gt;</span>America<span style="color: #0000ff">&lt;/</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span></pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 5:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">description</span>
              <span style="color: #0000ff">&gt;</span>Attached
to the ground. Intelligently places itself at the height of the underlying terrain.<span style="color: #0000ff">&lt;/</span><span style="color: #800000">description</span><span style="color: #0000ff">&gt;</span></pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">Point</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 7:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">coordinates</span>
              <span style="color: #0000ff">&gt;</span>-100.0822035425683,37.42228990140251,0<span style="color: #0000ff">&lt;/</span><span style="color: #800000">coordinates</span><span style="color: #0000ff">&gt;</span></pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span>
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">Point</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 9:</span>
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">Placemark</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 10:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">Placemark</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 11:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">name</span>
              <span style="color: #ff0000">continent</span>
              <span style="color: #0000ff">="Africa"</span>
              <span style="color: #0000ff">&gt;</span>Africa<span style="color: #0000ff">&lt;/</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span></pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 12:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">description</span>
              <span style="color: #0000ff">&gt;</span>Attached
to the ground. Intelligently places itself at the height of the underlying terrain.<span style="color: #0000ff">&lt;/</span><span style="color: #800000">description</span><span style="color: #0000ff">&gt;</span></pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 13:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">Point</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 14:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">coordinates</span>
              <span style="color: #0000ff">&gt;</span>20.0822035425683,20.42228990140251,0<span style="color: #0000ff">&lt;/</span><span style="color: #800000">coordinates</span><span style="color: #0000ff">&gt;</span></pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 15:</span>
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">Point</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 16:</span>
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">Placemark</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 17:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">Placemark</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 18:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">name</span>
              <span style="color: #ff0000">continent</span>
              <span style="color: #0000ff">="Asia"</span>
              <span style="color: #0000ff">&gt;</span>Asia<span style="color: #0000ff">&lt;/</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span></pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 19:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">description</span>
              <span style="color: #0000ff">&gt;</span>Attached
to the ground. Intelligently places itself at the height of the underlying terrain.<span style="color: #0000ff">&lt;/</span><span style="color: #800000">description</span><span style="color: #0000ff">&gt;</span></pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 20:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">Point</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 21:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">coordinates</span>
              <span style="color: #0000ff">&gt;</span>42.0822035425683,33.42228990140251,0<span style="color: #0000ff">&lt;/</span><span style="color: #800000">coordinates</span><span style="color: #0000ff">&gt;</span></pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 22:</span>
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">Point</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 23:</span>
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">Placemark</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 24:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">Placemark</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 25:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">name</span>
              <span style="color: #ff0000">continent</span>
              <span style="color: #0000ff">="Europe"</span>
              <span style="color: #0000ff">&gt;</span>Europe<span style="color: #0000ff">&lt;/</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span></pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 26:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">description</span>
              <span style="color: #0000ff">&gt;</span>Europe<span style="color: #0000ff">&lt;/</span><span style="color: #800000">description</span><span style="color: #0000ff">&gt;</span></pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 27:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">Point</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 28:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">coordinates</span>
              <span style="color: #0000ff">&gt;</span>100.0822035425683,62.42228990140251,0<span style="color: #0000ff">&lt;/</span><span style="color: #800000">coordinates</span><span style="color: #0000ff">&gt;</span></pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 29:</span>
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">Point</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 30:</span>
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">Placemark</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 31:</span>
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">kml</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
          </div>
        </div>
        <p>
          <br />
You can read <a href="http://en.wikipedia.org/wiki/KML">more about Kml here</a>.
</p>
        <p>
          <br />
Screen-shot of the above kml in the ArcGis-Explorer:<br /><img src="http://www.human-debugger.net/blog/SiteData/Linq2Xml/KmlWithAllContinents.JPG" /></p>
        <p>
You can see in the above Kml file sample the continents represented as a simple points,
of course you can extend it to include polygons, poly-lines or anything else that
valid within <a href="http://www.opengeospatial.org/standards/kml/">KML standard</a>.<br />
The only things that differs Kml from the known Xml file is the namespace that we
will need to handle in our code, let's see the query itself:
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 1:</span> XNamespace
ns = <span style="color: #006080">"http://www.opengis.net/kml/2.2"</span>; </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 3:</span> XDocument
kmlDoc = XDocument.Load(InputKml);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 5:</span> var
result = from placemark <span style="color: #0000ff">in</span> kmlDoc.Descendants(ns
+ <span style="color: #006080">"Placemark"</span>)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span>
              <span style="color: #0000ff">where</span> (placemark.Element(ns
+ <span style="color: #006080">"name"</span>)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 7:</span> .Attribute(<span style="color: #006080">"continent"</span>).Value
== </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span> Continents.SelectedItem.ToString())</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 9:</span> select
placemark;</pre>
          </div>
        </div>
        <p>
 
</p>
        <p>
line 1: declare the full namespace that will be used for the attributes and Tags<br />
line 3: loading the kml input file<br />
line 5-9: run a simple query to select a single continent, pay attention to the namespace
that we concatenate for selecting the right node.
</p>
        <p>
Here you can see a screen-shot with the result of the above query using the "Asia"
continent as the selected item.<br /><img src="http://www.human-debugger.net/blog/SiteData/Linq2Xml/KmlWithAsiaOnly.JPG" /></p>
        <p>
Enjoy. 
</p>
        <img width="0" height="0" src="http://www.human-debugger.net/blog/aggbug.ashx?id=a723b5bf-eb8d-4b35-a717-2cdf1406b73f" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Alt.Net Israel #2</title>
    <link rel="alternate" type="text/html" href="http://www.human-debugger.net/blog/2009/03/26/AltNetIsrael2.aspx" />
    <id>http://www.human-debugger.net/blog/PermaLink,guid,7cf8a000-3915-4c92-bb47-877f56abf92d.aspx</id>
    <published>2009-03-26T04:50:24-07:00</published>
    <updated>2009-03-25T21:51:23.2469763-07:00</updated>
    <category term="alt-net-israel" label="alt-net-israel" scheme="http://www.human-debugger.net/blog/CategoryView,category,altnetisrael.aspx" />
    <author>
      <name>Shani Raba</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Next Friday (3.4.09) will be the second alt.net conference<br />
You can read more here <a title="about alt.net" href="http://altnetpedia.com/OverviewWhatIsIt.ashx">about
alt.net</a> 
</p>
        <p>
Registration to the <a href="http://www.facebook.com/event.php?eid=58042408643">event
at facebook</a></p>
        <p>
I'll be there.
</p>
        <img width="0" height="0" src="http://www.human-debugger.net/blog/aggbug.ashx?id=7cf8a000-3915-4c92-bb47-877f56abf92d" />
      </div>
    </content>
  </entry>
</feed>