<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>I Am Not Myself</title>
    <link>http://www.iamnotmyself.com/</link>
    <description>Bills.Pay(Developer.Skills).ShouldBeTrue()</description>
    <language>en-us</language>
    <copyright>Robert Johnson</copyright>
    <lastBuildDate>Fri, 30 Oct 2009 01:13:28 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.0.7226.0</generator>
    <managingEditor>bobby.johnson@gmail.com</managingEditor>
    <webMaster>bobby.johnson@gmail.com</webMaster>
    <geo:lat>47.027082</geo:lat><geo:long>-122.803595</geo:long><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/IAmNotMyself" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
      <trackback:ping>http://www.iamnotmyself.com/Trackback.aspx?guid=f311e69e-da6f-4826-b760-1f9652e2738d</trackback:ping>
      <pingback:server>http://www.iamnotmyself.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.iamnotmyself.com/PermaLink,guid,f311e69e-da6f-4826-b760-1f9652e2738d.aspx</pingback:target>
      <dc:creator>Bobby Johnson</dc:creator>
      <wfw:comment>http://www.iamnotmyself.com/CommentView,guid,f311e69e-da6f-4826-b760-1f9652e2738d.aspx</wfw:comment>
      <wfw:commentRss>http://www.iamnotmyself.com/SyndicationService.asmx/GetEntryCommentsRss?guid=f311e69e-da6f-4826-b760-1f9652e2738d</wfw:commentRss>
      <slash:comments>2</slash:comments>
      
      <title>Vacation of Fluent NHibernate: Tuesday Conventions</title>
      <guid isPermaLink="false">http://www.iamnotmyself.com/PermaLink,guid,f311e69e-da6f-4826-b760-1f9652e2738d.aspx</guid>
      <link>http://feedproxy.google.com/~r/IAmNotMyself/~3/5goLVIIAl2s/VacationOfFluentNHibernateTuesdayConventions.aspx</link>
      <pubDate>Fri, 30 Oct 2009 01:13:28 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
Well here we are on Thursday and I am finally posting Tuesday’s video. When I started&#xD;
doing this I had no idea how long it would take to produce one of these videos. I&#xD;
have a pretty good idea now. ;)&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
In this installment I cover conventions, both ClassMap conventions and AutoMap conventions.&#xD;
I slowly convert the ClassMap implementation over to AutoMap by leaning on default&#xD;
convention and then adding my own as needed. This demonstration should give you a&#xD;
firm understanding of how conventions work in Fluent NHibernate.&#xD;
&lt;/p&gt;&#xD;
        &lt;object width="1067" height="600"&gt;&#xD;
          &lt;param name="allowfullscreen" value="true"&gt;&lt;/param&gt;&#xD;
          &lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&#xD;
          &lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=7339508&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1"&gt;&lt;/param&gt;&#xD;
          &lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=7339508&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="1067" height="600"&gt;&#xD;
          &lt;/embed&gt;&#xD;
        &lt;/object&gt;&#xD;
        &lt;img width="0" height="0" src="http://www.iamnotmyself.com/aggbug.ashx?id=f311e69e-da6f-4826-b760-1f9652e2738d"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/IAmNotMyself?a=5goLVIIAl2s:6hOV7yAVQBg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IAmNotMyself?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/IAmNotMyself?a=5goLVIIAl2s:6hOV7yAVQBg:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IAmNotMyself?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/IAmNotMyself?a=5goLVIIAl2s:6hOV7yAVQBg:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IAmNotMyself?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IAmNotMyself/~4/5goLVIIAl2s" height="1" width="1"/&gt;</description>
      <comments>http://www.iamnotmyself.com/CommentView,guid,f311e69e-da6f-4826-b760-1f9652e2738d.aspx</comments>
      <category>Development</category>
      <category>Fluent Interface</category>
      <category>NHibernate</category>
      <category>Tools</category>
    <feedburner:origLink>http://www.IAmNotMyself.com/2009/10/30/VacationOfFluentNHibernateTuesdayConventions.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://www.iamnotmyself.com/Trackback.aspx?guid=d71f0b77-0c48-4a3f-afad-6c01c0b445f1</trackback:ping>
      <pingback:server>http://www.iamnotmyself.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.iamnotmyself.com/PermaLink,guid,d71f0b77-0c48-4a3f-afad-6c01c0b445f1.aspx</pingback:target>
      <dc:creator>Bobby Johnson</dc:creator>
      <wfw:comment>http://www.iamnotmyself.com/CommentView,guid,d71f0b77-0c48-4a3f-afad-6c01c0b445f1.aspx</wfw:comment>
      <wfw:commentRss>http://www.iamnotmyself.com/SyndicationService.asmx/GetEntryCommentsRss?guid=d71f0b77-0c48-4a3f-afad-6c01c0b445f1</wfw:commentRss>
      <slash:comments>1</slash:comments>
      
      <title>Vacation of Fluent NHibernate: Monday ClassMaps</title>
      <guid isPermaLink="false">http://www.iamnotmyself.com/PermaLink,guid,d71f0b77-0c48-4a3f-afad-6c01c0b445f1.aspx</guid>
      <link>http://feedproxy.google.com/~r/IAmNotMyself/~3/AcMwZp2qMzU/VacationOfFluentNHibernateMondayClassMaps.aspx</link>
      <pubDate>Tue, 27 Oct 2009 22:32:02 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
Hello Tuesday! Wait a minute this is Monday’s video. That’s right I spent so much&#xD;
time on Monday producing the Introduction video and planning the ClassMaps video,&#xD;
I didn’t get around to making Monday’s until Tuesday. But hey I am on vacation what&#xD;
are you expecting from me really?&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
So, today I am covering the topic of ClassMaps in Fluent NHibernate. I used &lt;a href="http://summerofnhibernate.com/"&gt;Steve&#xD;
Bohlen’s Summer of NHibernate&lt;/a&gt; code from session 9 as a starting place. In this&#xD;
video you will see me get the code running on my machine, upgrade it to NHibernate&#xD;
2.1.0 GA and then convert it over to using ClassMaps. The video clocks in at just&#xD;
over 30 minutes. Enjoy.&#xD;
&lt;/p&gt;&#xD;
        &lt;object width="1067" height="600"&gt;&#xD;
          &lt;param name="allowfullscreen" value="true"&gt;&lt;/param&gt;&#xD;
          &lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&#xD;
          &lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=7297437&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1"&gt;&lt;/param&gt;&#xD;
          &lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=7297437&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="1067" height="600"&gt;&#xD;
          &lt;/embed&gt;&#xD;
        &lt;/object&gt;&#xD;
        &lt;img width="0" height="0" src="http://www.iamnotmyself.com/aggbug.ashx?id=d71f0b77-0c48-4a3f-afad-6c01c0b445f1"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/IAmNotMyself?a=AcMwZp2qMzU:TOqd_07zkK4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IAmNotMyself?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/IAmNotMyself?a=AcMwZp2qMzU:TOqd_07zkK4:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IAmNotMyself?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/IAmNotMyself?a=AcMwZp2qMzU:TOqd_07zkK4:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IAmNotMyself?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IAmNotMyself/~4/AcMwZp2qMzU" height="1" width="1"/&gt;</description>
      <comments>http://www.iamnotmyself.com/CommentView,guid,d71f0b77-0c48-4a3f-afad-6c01c0b445f1.aspx</comments>
      <category>Development</category>
      <category>Fluent Interface</category>
      <category>NHibernate</category>
      <category>Tools</category>
    <feedburner:origLink>http://www.IAmNotMyself.com/2009/10/27/VacationOfFluentNHibernateMondayClassMaps.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://www.iamnotmyself.com/Trackback.aspx?guid=9c919d17-8c0e-44cb-8a42-164e145be336</trackback:ping>
      <pingback:server>http://www.iamnotmyself.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.iamnotmyself.com/PermaLink,guid,9c919d17-8c0e-44cb-8a42-164e145be336.aspx</pingback:target>
      <dc:creator>Bobby Johnson</dc:creator>
      <wfw:comment>http://www.iamnotmyself.com/CommentView,guid,9c919d17-8c0e-44cb-8a42-164e145be336.aspx</wfw:comment>
      <wfw:commentRss>http://www.iamnotmyself.com/SyndicationService.asmx/GetEntryCommentsRss?guid=9c919d17-8c0e-44cb-8a42-164e145be336</wfw:commentRss>
      <slash:comments>2</slash:comments>
      
      <title>Vacation of Fluent NHibernate: Introduction</title>
      <guid isPermaLink="false">http://www.iamnotmyself.com/PermaLink,guid,9c919d17-8c0e-44cb-8a42-164e145be336.aspx</guid>
      <link>http://feedproxy.google.com/~r/IAmNotMyself/~3/5FdA30q7uZ8/VacationOfFluentNHibernateIntroduction.aspx</link>
      <pubDate>Mon, 26 Oct 2009 22:32:14 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
Inspired by Steve Bohlen’s Summer of NHibernate screencast series, I thought I would&#xD;
spend some of my vacation creating an addendum to it called Vacation of Fluent NHibernate.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;object width="1067" height="600"&gt;&#xD;
            &lt;param name="allowfullscreen" value="true"&gt;&lt;/param&gt;&#xD;
            &lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&#xD;
            &lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=7274194&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1"&gt;&lt;/param&gt;&#xD;
            &lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=7274194&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="1067" height="600"&gt;&#xD;
            &lt;/embed&gt;&#xD;
          &lt;/object&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Links from the Screencast:&#xD;
&lt;/p&gt;&#xD;
        &lt;ul&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;a href="http://www.summerofnhibernate.com/"&gt;Summer of NHibernate&lt;/a&gt;&#xD;
          &lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;a href="http://manning.com/kuate/"&gt;NHibernate in Action&lt;/a&gt;&#xD;
          &lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;a href="http://tekpub.com/preview/nhibernate"&gt;Mastering NHibernate&lt;/a&gt; on &lt;a href="http://tekpub.com/"&gt;Tekpub&lt;/a&gt;&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;a href="http://fluentnhibernate.org/"&gt;Fluent NHibernate&lt;/a&gt;&#xD;
          &lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;a href="http://sourceforge.net/projects/nhibernate/files/"&gt;Linq to NHibernate&lt;/a&gt;&#xD;
          &lt;/li&gt;&#xD;
        &lt;/ul&gt;&#xD;
        &lt;img width="0" height="0" src="http://www.iamnotmyself.com/aggbug.ashx?id=9c919d17-8c0e-44cb-8a42-164e145be336"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/IAmNotMyself?a=5FdA30q7uZ8:ouNs4XCQHUA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IAmNotMyself?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/IAmNotMyself?a=5FdA30q7uZ8:ouNs4XCQHUA:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IAmNotMyself?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/IAmNotMyself?a=5FdA30q7uZ8:ouNs4XCQHUA:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IAmNotMyself?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IAmNotMyself/~4/5FdA30q7uZ8" height="1" width="1"/&gt;</description>
      <comments>http://www.iamnotmyself.com/CommentView,guid,9c919d17-8c0e-44cb-8a42-164e145be336.aspx</comments>
      <category>Development</category>
      <category>Fluent Interface</category>
      <category>NHibernate</category>
      <category>Tools</category>
    <feedburner:origLink>http://www.IAmNotMyself.com/2009/10/26/VacationOfFluentNHibernateIntroduction.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://www.iamnotmyself.com/Trackback.aspx?guid=36fbd0f5-74d0-4f4e-b50c-73796c623137</trackback:ping>
      <pingback:server>http://www.iamnotmyself.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.iamnotmyself.com/PermaLink,guid,36fbd0f5-74d0-4f4e-b50c-73796c623137.aspx</pingback:target>
      <dc:creator>Bobby Johnson</dc:creator>
      <wfw:comment>http://www.iamnotmyself.com/CommentView,guid,36fbd0f5-74d0-4f4e-b50c-73796c623137.aspx</wfw:comment>
      <wfw:commentRss>http://www.iamnotmyself.com/SyndicationService.asmx/GetEntryCommentsRss?guid=36fbd0f5-74d0-4f4e-b50c-73796c623137</wfw:commentRss>
      <slash:comments>3</slash:comments>
      
      <title>TDD Kata Calculator Demonstration</title>
      <guid isPermaLink="false">http://www.iamnotmyself.com/PermaLink,guid,36fbd0f5-74d0-4f4e-b50c-73796c623137.aspx</guid>
      <link>http://feedproxy.google.com/~r/IAmNotMyself/~3/T36QhgH8PHk/TDDKataCalculatorDemonstration.aspx</link>
      <pubDate>Fri, 23 Oct 2009 00:04:18 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
While at &lt;a href="http://getaware.com"&gt;Alliance&lt;/a&gt;, a couple team members and I got&#xD;
the bug to do &lt;a href="http://codingdojo.org/"&gt;Code Katas&lt;/a&gt;. We picked up on &lt;a href="http://osherove.com/tdd-kata-1/"&gt;Roy&#xD;
Osherove’s TDD Kata&lt;/a&gt; and started doing it as a team every morning time boxing ourselves&#xD;
to half an hour. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
The three of us would hit a conference room and throw an IDE up on the wall with a&#xD;
projector. One person would write tests, another would implement and the third would&#xD;
be the “Business” representative by reading the requirements and making judgment calls&#xD;
on any questions we had. Every morning we switched positions.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
This worked out really well, one person would do something interesting one day and&#xD;
the others would pick up on it and start doing it as  well. For example, when&#xD;
creating a list of delimiters we all started out using a List&amp;lt;char&amp;gt;() because&#xD;
we couldn’t remember how to add a element to an array and didn’t want to take the&#xD;
time out of our thirty minutes to look it up. But then John, started using a string&#xD;
to hold our delimiters simply appending any extra ones on that were need. He then&#xD;
performed the split by using “delimiters.ToCharArray()”.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a href="http://www.tnthughes.net/blog/"&gt;Terry&lt;/a&gt;, sick of writing the same setup&#xD;
code for the unit tests for each test, implemented a extension method that wrapped&#xD;
it up nicely so that all our tests were a single clear line.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
This was a great way to practice TDD and to learn from my peers. I’ve moved on now&#xD;
from Alliance, but I am going to miss those guys. Hopefully, I’ll be able to get something&#xD;
similar going at the new gig. And, eventually recruit Terry and John… Just kidding,&#xD;
Craig. 8)&#xD;
&lt;/p&gt;&#xD;
        &lt;object width="1067" height="600"&gt;&#xD;
          &lt;param name="allowfullscreen" value="true"&gt;&lt;/param&gt;&#xD;
          &lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&#xD;
          &lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=7227759&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1"&gt;&lt;/param&gt;&#xD;
          &lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=7227759&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="1067" height="600"&gt;&#xD;
          &lt;/embed&gt;&#xD;
        &lt;/object&gt;&#xD;
        &lt;p&gt;&#xD;
This video is just me, but it represents all the things we came up with to improve&#xD;
the design of our earlier solutions. It is also a great demonstration of using &lt;a href="http://www.jetbrains.com/resharper/index.html"&gt;ReSharper&lt;/a&gt; and &lt;a href="http://xunit.codeplex.com/"&gt;xUnit&lt;/a&gt;.&#xD;
Be sure to watch it in full screen, so that you can actually see what is going on.&#xD;
Next time, I’ll try some thing bigger. Anyone have tips?&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
And before you ask, yes you can have &lt;a href="http://www.iamnotmyself.com/files/VSSettings.zip"&gt;my&#xD;
crazy color scheme&lt;/a&gt;. 8) Oh I used &lt;a href="http://www.techsmith.com/camtasia.asp"&gt;Camtasia&#xD;
Studio 6&lt;/a&gt; to produce the video. Great tool easy to use. Wish I had $300 to buy&#xD;
a license. 8) Well I’ll try to produce as many as I can in my 30 days.&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://www.iamnotmyself.com/aggbug.ashx?id=36fbd0f5-74d0-4f4e-b50c-73796c623137"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/IAmNotMyself?a=T36QhgH8PHk:C7IIOH-khQk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IAmNotMyself?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/IAmNotMyself?a=T36QhgH8PHk:C7IIOH-khQk:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IAmNotMyself?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/IAmNotMyself?a=T36QhgH8PHk:C7IIOH-khQk:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IAmNotMyself?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IAmNotMyself/~4/T36QhgH8PHk" height="1" width="1"/&gt;</description>
      <comments>http://www.iamnotmyself.com/CommentView,guid,36fbd0f5-74d0-4f4e-b50c-73796c623137.aspx</comments>
      <category>Development</category>
      <category>Unit Testing</category>
    <feedburner:origLink>http://www.IAmNotMyself.com/2009/10/23/TDDKataCalculatorDemonstration.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://www.iamnotmyself.com/Trackback.aspx?guid=85b7569d-81b9-483c-9f02-23e2868d8a3c</trackback:ping>
      <pingback:server>http://www.iamnotmyself.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.iamnotmyself.com/PermaLink,guid,85b7569d-81b9-483c-9f02-23e2868d8a3c.aspx</pingback:target>
      <dc:creator>Bobby Johnson</dc:creator>
      <wfw:comment>http://www.iamnotmyself.com/CommentView,guid,85b7569d-81b9-483c-9f02-23e2868d8a3c.aspx</wfw:comment>
      <wfw:commentRss>http://www.iamnotmyself.com/SyndicationService.asmx/GetEntryCommentsRss?guid=85b7569d-81b9-483c-9f02-23e2868d8a3c</wfw:commentRss>
      
      <title>Using MSpec to Solve Kata Potter Part 1: The Specifications</title>
      <guid isPermaLink="false">http://www.iamnotmyself.com/PermaLink,guid,85b7569d-81b9-483c-9f02-23e2868d8a3c.aspx</guid>
      <link>http://feedproxy.google.com/~r/IAmNotMyself/~3/3nY6yTQwYeA/UsingMSpecToSolveKataPotterPart1TheSpecifications.aspx</link>
      <pubDate>Tue, 20 Oct 2009 05:25:01 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a href="http://codingdojo.org/cgi-bin/wiki.pl?KataPotter"&gt;Kata Potter&lt;/a&gt; is an interesting&#xD;
problem intended to be used as a learning exercise in TDD. The problem is described&#xD;
like this:&#xD;
&lt;/p&gt;&#xD;
        &lt;blockquote&gt;&#xD;
          &lt;p&gt;&#xD;
Once upon a time there was a series of 5 books about a very English hero called Harry.&#xD;
(At least when this Kata was invented, there were only 5. Since then they have multiplied)&#xD;
Children all over the world thought he was fantastic, and, of course, so did the publisher.&#xD;
So in a gesture of immense generosity to mankind, (and to increase sales) they set&#xD;
up the following pricing model to take advantage of Harry's magical powers. &#xD;
&lt;/p&gt;&#xD;
          &lt;p&gt;&#xD;
One copy of any of the five books costs 8 EUR. If, however, you buy two different&#xD;
books from the series, you get a 5% discount on those two books. If you buy 3 different&#xD;
books, you get a 10% discount. With 4 different books, you get a 20% discount. If&#xD;
you go the whole hog, and buy all 5, you get a huge 25% discount. &#xD;
&lt;/p&gt;&#xD;
          &lt;p&gt;&#xD;
Note that if you buy, say, four books, of which 3 are different titles, you get a&#xD;
10% discount on the 3 that form part of a set, but the fourth book still costs 8 EUR. &#xD;
&lt;/p&gt;&#xD;
          &lt;p&gt;&#xD;
Potter mania is sweeping the country and parents of teenagers everywhere are queuing&#xD;
up with shopping baskets overflowing with Potter books. Your mission is to write a&#xD;
piece of code to calculate the price of any conceivable shopping basket, giving as&#xD;
big a discount as possible.&#xD;
&lt;/p&gt;&#xD;
        &lt;/blockquote&gt;&#xD;
        &lt;p&gt;&#xD;
I have been working on solving this kata over the last couple weeks. One goal I had&#xD;
was to understand how &lt;a href="http://github.com/machine/machine.specifications"&gt;Machine.Specifications&lt;/a&gt; (MSpec&#xD;
for short) fits in to the BDD development process. MSpec is a framework written by &lt;a href="http://codebetter.com/blogs/aaron.jensen/"&gt;Aaron&#xD;
Jensen&lt;/a&gt; that sits on top of your current unit testing framework (as long as you&#xD;
happen to be using NUnit or XUnit). You can read &lt;a href="http://codebetter.com/blogs/aaron.jensen/archive/2008/05/08/introducing-machine-specifications-or-mspec-for-short.aspx"&gt;Aaron’s&#xD;
introduction to MSpec here&lt;/a&gt; where he does a much finer job at explaining it that&#xD;
I can.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
My goal with MSpec was to be able to define the acceptance criteria for Kata Potter&#xD;
before writing a single line of implementation code. MSpec also has the added benefit&#xD;
of allowing me to execute my acceptance criteria on the code as it evolves and report&#xD;
back on my progress. With MSpec I can express what the system under test must do to&#xD;
satisfy all the requirements.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
So given MSpec’s utility I started out to write a set of requirements based on the&#xD;
Kata Potter description.&#xD;
&lt;/p&gt;&#xD;
        &lt;ul&gt;&#xD;
          &lt;li&gt;&#xD;
Given a cart containing a single book when the price is calculated it should return&#xD;
the full price of the book. &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Given a cart containing two different books when the price is calculated it should&#xD;
return the price of both books with a 5% discount applied. &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Given a cart containing three different books when the price is calculated it should&#xD;
return the price of all books with a 10% discount applied. &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Given a cart containing four different books when the price is calculated it should&#xD;
return the price of all books with a 20% discount applied. &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Given a cart containing five different books when the price is calculated it should&#xD;
return the price of all books with a 25% discount applied. &#xD;
&lt;/li&gt;&#xD;
        &lt;/ul&gt;&#xD;
        &lt;p&gt;&#xD;
This covers the full set of books, but the kata gives us another example:&#xD;
&lt;/p&gt;&#xD;
        &lt;ul&gt;&#xD;
          &lt;li&gt;&#xD;
Given a cart containing four books where two are the same title when the price is&#xD;
calculated it should return price of three books discounted by 10% and the full price&#xD;
of the fourth. &#xD;
&lt;/li&gt;&#xD;
        &lt;/ul&gt;&#xD;
        &lt;p&gt;&#xD;
Using MSpec I can express these requirements in an executable fashion like this:&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;pre class="c#" name="code"&gt;using Machine.Specifications;&#xD;
&#xD;
namespace Kata.Potter.CoreTests.Specifications&#xD;
{&#xD;
    [Subject("calculating discount prices")]&#xD;
    public class when_calculating_the_price_of_a_book&#xD;
    {&#xD;
        It should_return_the_full_price_of_the_book;&#xD;
    }&#xD;
&#xD;
    [Subject("calculating discount prices")]&#xD;
    public class when_calculating_the_price_of_two_different_books&#xD;
    {&#xD;
        It should_apply_a_five_percent_discount;&#xD;
    }&#xD;
&#xD;
    [Subject("calculating discount prices")]&#xD;
    public class when_calculating_the_price_of_three_different_books&#xD;
    {&#xD;
        It should_apply_a_ten_percent_discount;&#xD;
    }&#xD;
&#xD;
    [Subject("calculating discount prices")]&#xD;
    public class when_calculating_the_price_of_four_different_books&#xD;
    {&#xD;
        It should_apply_a_twenty_percent_discount;&#xD;
    }&#xD;
&#xD;
    [Subject("calculating discount prices")]&#xD;
    public class when_calculating_the_price_of_five_different_books&#xD;
    {&#xD;
        It should_apply_a_twenty_five_percent_discount;&#xD;
    }&#xD;
&#xD;
    [Subject("calculating discount prices")]&#xD;
    public class when_calculating_the_price_of_four_books_where_two_are_the_same&#xD;
    {&#xD;
        It should_apply_a_twenty_percent_discount_to_three_of_the_books;&#xD;
    }&#xD;
}&lt;/pre&gt;&#xD;
        &lt;p&gt;&#xD;
With out a single line of code implementing these specifications, I can even execute&#xD;
my tests. I get the following display in the ReSharper test runner:&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a href="http://www.iamnotmyself.com/content/binary/WindowsLiveWriter/UsingMSpectoSolveKataPotter_125B4/KataSpecs.png"&gt;&#xD;
            &lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="KataSpecs" border="0" alt="KataSpecs" src="http://www.iamnotmyself.com/content/binary/WindowsLiveWriter/UsingMSpectoSolveKataPotter_125B4/KataSpecs_thumb.png" width="744" height="377"&gt;&lt;/img&gt;&#xD;
          &lt;/a&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Notice that the runner ignores all my tests currently returning the message that the&#xD;
specifications are “Not implemented”. As I write code to satisfy the requirements,&#xD;
the tests will being to go red and then green as each specification is implemented.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
The next step in this process is to begin identifying collaborators in the system.&#xD;
Based on the requirements I know that I need objects that represent a Book, a Shopping&#xD;
Cart and a Calculator that calculates the price of all the books in the cart. I’ll&#xD;
begin by creating shell classes that I can use to wire up my specifications to implementation&#xD;
code.&#xD;
&lt;/p&gt;&#xD;
        &lt;pre class="c#" name="code"&gt;public class Book&#xD;
    {&#xD;
        public Book(string title, decimal price)&#xD;
        {&#xD;
            Title = title;&#xD;
            Price = price;&#xD;
            IsDiscounted = false;&#xD;
        }&#xD;
&#xD;
        public string Title { get; private set; }&#xD;
        public decimal Price { get; set; }&#xD;
        public bool IsDiscounted { get; set; }&#xD;
    }&#xD;
&#xD;
    public class Cart&#xD;
    {&#xD;
        public Cart()&#xD;
        {&#xD;
            Books = new List&amp;lt;Book&amp;gt;();&#xD;
        }&#xD;
&#xD;
        public IList&amp;lt;Book&amp;gt; Books { get; private set; }&#xD;
&#xD;
        public void AddBook(Book book)&#xD;
        {&#xD;
            Books.Add(book);&#xD;
        }&#xD;
    }&#xD;
&#xD;
    public class PriceCalculator&#xD;
    {&#xD;
        public decimal CalculatePriceFor(Cart cart)&#xD;
        {&#xD;
            return 0;&#xD;
        }&#xD;
    }&lt;/pre&gt;&#xD;
        &lt;p&gt;&#xD;
With this simple implementation, I can now modify my MSpec specifications to exercise&#xD;
these objects. I’ll start with the first one to give you the feel of what it looks&#xD;
like.&#xD;
&lt;/p&gt;&#xD;
        &lt;pre class="c#" name="code"&gt;[Subject("calculating discount prices")]&#xD;
    public class when_calculating_the_price_of_a_book&#xD;
    {&#xD;
        private static Cart cart;&#xD;
        private static PriceCalculator calculator;&#xD;
        private static decimal price;&#xD;
&#xD;
        Establish context = () =&amp;gt;&#xD;
                                {&#xD;
                                    cart = new Cart();&#xD;
                                    cart.AddBook(new Book("Book 1", 8M));&#xD;
                                    calculator = new PriceCalculator();&#xD;
                                };&#xD;
        Because of = () =&amp;gt; price = calculator.CalculatePriceFor(cart);               &#xD;
&#xD;
        It should_return_the_full_price_of_the_book = () =&amp;gt; price.ShouldEqual(8);&#xD;
    }&lt;/pre&gt;&#xD;
        &lt;p&gt;&#xD;
First, I establish my specification’s context by newing up my Cart and PriceCalculator&#xD;
classes and adding a single book to the cart. This establishes the environment that&#xD;
the test will run in which matches the name of the class pretty closely. I am calculating&#xD;
the price of a single book. Next, I clearly call out what action is performed to test&#xD;
against. I tell the calculator to calculate the price for the given cart. Finally,&#xD;
I make assertions on the state of my context objects. For this specification, all&#xD;
I need to do is validate that the calculated price is equal to the price of the book.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
If I execute my specifications now, this spec will turn from ignored to red. I have&#xD;
now implemented the collaborators and weaved them into specifications to be validated.&#xD;
Here is what shows up in the ReSharper runner:&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a href="http://www.iamnotmyself.com/content/binary/WindowsLiveWriter/UsingMSpectoSolveKataPotter_125B4/kataspecs2.png"&gt;&#xD;
            &lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="kataspecs2" border="0" alt="kataspecs2" src="http://www.iamnotmyself.com/content/binary/WindowsLiveWriter/UsingMSpectoSolveKataPotter_125B4/kataspecs2_thumb.png" width="956" height="306"&gt;&lt;/img&gt;&#xD;
          &lt;/a&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
The next thing we need to do is fill in the rest of the specifications and make them&#xD;
all turn red as well. If I do this following the pattern of the test we already have&#xD;
I am going to create a lot of duplicated code. Each specification class will have&#xD;
the same private members and most of the context as well. So first I am going to pull&#xD;
those elements out into a base class and refactor my first specification like so:&#xD;
&lt;/p&gt;&#xD;
        &lt;pre class="c#" name="code"&gt;    public class with_price_calculator&#xD;
    {&#xD;
        protected static Cart cart;&#xD;
        protected static PriceCalculator calculator;&#xD;
        protected static decimal price;&#xD;
        protected static decimal correctPrice;&#xD;
&#xD;
        Establish context = () =&amp;gt;&#xD;
                            {&#xD;
                                cart = new Cart();&#xD;
                                calculator = new PriceCalculator();&#xD;
                            };&#xD;
    }&#xD;
&#xD;
    [Subject("calculating discount prices")]&#xD;
    public class when_calculating_the_price_of_a_book : with_price_calculator&#xD;
    {&#xD;
        Establish context = () =&amp;gt;&#xD;
                                {&#xD;
                                    cart.AddBook(new Book("Book 1", 8M));&#xD;
                                };&#xD;
        Because of = () =&amp;gt; price = calculator.CalculatePriceFor(cart);               &#xD;
&#xD;
        It should_return_the_full_price_of_the_book = () =&amp;gt; price.ShouldEqual(8);&#xD;
    }&lt;/pre&gt;&#xD;
        &lt;p&gt;&#xD;
One of the cooler features of MSpec is the way it chains delegates together during&#xD;
execution. Notice that my base class has an Establish statement and my specifcation&#xD;
class has one as well. The specification class inherits from the base class but it&#xD;
does not override the Establish statement. Instead MSpec will execute all the Establish&#xD;
statements in the inheritance chain from the “base-ist” to the “descended-ist”. I&#xD;
can now implement the remaining specification quickly like this:&#xD;
&lt;/p&gt;&#xD;
        &lt;pre class="c#" name="code"&gt;    public class with_price_calculator&#xD;
    {&#xD;
        protected static Cart cart;&#xD;
        protected static PriceCalculator calculator;&#xD;
        protected static decimal price;&#xD;
        protected static decimal correctPrice;&#xD;
&#xD;
        Establish context = () =&amp;gt;&#xD;
                            {&#xD;
                                cart = new Cart();&#xD;
                                calculator = new PriceCalculator();&#xD;
                            };&#xD;
    }&#xD;
&#xD;
    [Subject("calculating discount prices")]&#xD;
    public class when_calculating_the_price_of_a_book : with_price_calculator&#xD;
    {&#xD;
        Establish context = () =&amp;gt;&#xD;
                                {&#xD;
                                    cart.AddBook(new Book("Book 1", 8M));&#xD;
                                };&#xD;
        Because of = () =&amp;gt; price = calculator.CalculatePriceFor(cart);               &#xD;
&#xD;
        It should_return_the_full_price_of_the_book = () =&amp;gt; price.ShouldEqual(8);&#xD;
    }&#xD;
&#xD;
    [Subject("calculating discount prices")]&#xD;
    public class when_calculating_the_price_of_two_different_books : with_price_calculator&#xD;
    {&#xD;
        Establish context = () =&amp;gt;&#xD;
        {&#xD;
            cart.AddBook(new Book("Book 1", 8M));&#xD;
            cart.AddBook(new Book("Book 2", 8M));&#xD;
            correctPrice = 8*2 - (8*2*.05M);&#xD;
        };&#xD;
&#xD;
        Because of = () =&amp;gt; price = calculator.CalculatePriceFor(cart);&#xD;
&#xD;
        It should_apply_a_five_percent_discount = () =&amp;gt; price.ShouldEqual(correctPrice);&#xD;
    }&#xD;
&#xD;
    [Subject("calculating discount prices")]&#xD;
    public class when_calculating_the_price_of_three_different_books : with_price_calculator&#xD;
    {&#xD;
        Establish context = () =&amp;gt;&#xD;
        {&#xD;
            cart.AddBook(new Book("Book 1", 8M));&#xD;
            cart.AddBook(new Book("Book 2", 8M));&#xD;
            cart.AddBook(new Book("Book 3", 8M));&#xD;
            correctPrice = 8 * 3 - (8 * 3 * .1M);&#xD;
        };&#xD;
&#xD;
        Because of = () =&amp;gt; price = calculator.CalculatePriceFor(cart);&#xD;
&#xD;
        It should_apply_a_ten_percent_discount = () =&amp;gt; price.ShouldEqual(correctPrice);&#xD;
    }&#xD;
&#xD;
    [Subject("calculating discount prices")]&#xD;
    public class when_calculating_the_price_of_four_different_books : with_price_calculator&#xD;
    {&#xD;
        Establish context = () =&amp;gt;&#xD;
        {&#xD;
            cart.AddBook(new Book("Book 1", 8M));&#xD;
            cart.AddBook(new Book("Book 2", 8M));&#xD;
            cart.AddBook(new Book("Book 3", 8M));&#xD;
            cart.AddBook(new Book("Book 4", 8M));&#xD;
            correctPrice = 8 * 4 - (8 * 4 * .2M);&#xD;
        };&#xD;
&#xD;
        Because of = () =&amp;gt; price = calculator.CalculatePriceFor(cart);&#xD;
        It should_apply_a_twenty_percent_discount = () =&amp;gt; price.ShouldEqual(correctPrice);&#xD;
    }&#xD;
&#xD;
    [Subject("calculating discount prices")]&#xD;
    public class when_calculating_the_price_of_five_different_books : with_price_calculator&#xD;
    {&#xD;
        Establish context = () =&amp;gt;&#xD;
        {&#xD;
            cart.AddBook(new Book("Book 1", 8M));&#xD;
            cart.AddBook(new Book("Book 2", 8M));&#xD;
            cart.AddBook(new Book("Book 3", 8M));&#xD;
            cart.AddBook(new Book("Book 4", 8M));&#xD;
            cart.AddBook(new Book("Book 5", 8M));&#xD;
            correctPrice = 8 * 5 - (8 * 5 * .25M);&#xD;
        };&#xD;
&#xD;
        Because of = () =&amp;gt; price = calculator.CalculatePriceFor(cart);&#xD;
&#xD;
        It should_apply_a_twenty_five_percent_discount = () =&amp;gt; price.ShouldEqual(correctPrice);&#xD;
    }&#xD;
&#xD;
    [Subject("calculating discount prices")]&#xD;
    public class when_calculating_the_price_of_four_books_where_two_are_the_same : with_price_calculator&#xD;
    {&#xD;
        Establish context = () =&amp;gt;&#xD;
        {&#xD;
            cart.AddBook(new Book("Book 1", 8M));&#xD;
            cart.AddBook(new Book("Book 2", 8M));&#xD;
            cart.AddBook(new Book("Book 3", 8M));&#xD;
            cart.AddBook(new Book("Book 3", 8M));&#xD;
            correctPrice = (8 * 3 - (8 * 3 * .1M)) + 8;&#xD;
        };&#xD;
&#xD;
        Because of = () =&amp;gt; price = calculator.CalculatePriceFor(cart);&#xD;
&#xD;
        It should_apply_a_ten_percent_discount_to_three_of_the_books = () =&amp;gt; price.ShouldEqual(correctPrice);&#xD;
    }&lt;/pre&gt;&#xD;
        &lt;p&gt;&#xD;
Note that I have added another member to the base class to capture what I think the&#xD;
correct price should be to then use as an assert later on. Executing my specifications&#xD;
now show all red. I can continue implementing functionality using traditional TDD&#xD;
or by writing more specifications for each collaborator using the same techniques.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Next time, I will cover the actual implementation that solves the kata potter that&#xD;
I arrived at through this process.&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://www.iamnotmyself.com/aggbug.ashx?id=85b7569d-81b9-483c-9f02-23e2868d8a3c"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/IAmNotMyself?a=3nY6yTQwYeA:fzWA2BSyWS8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IAmNotMyself?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/IAmNotMyself?a=3nY6yTQwYeA:fzWA2BSyWS8:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IAmNotMyself?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/IAmNotMyself?a=3nY6yTQwYeA:fzWA2BSyWS8:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IAmNotMyself?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IAmNotMyself/~4/3nY6yTQwYeA" height="1" width="1"/&gt;</description>
      <comments>http://www.iamnotmyself.com/CommentView,guid,85b7569d-81b9-483c-9f02-23e2868d8a3c.aspx</comments>
      <category>Development</category>
      <category>Tools</category>
      <category>Unit Testing</category>
    <feedburner:origLink>http://www.IAmNotMyself.com/2009/10/20/UsingMSpecToSolveKataPotterPart1TheSpecifications.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://www.iamnotmyself.com/Trackback.aspx?guid=6c5c76cc-b608-4097-bd50-a5128172b036</trackback:ping>
      <pingback:server>http://www.iamnotmyself.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.iamnotmyself.com/PermaLink,guid,6c5c76cc-b608-4097-bd50-a5128172b036.aspx</pingback:target>
      <dc:creator>Bobby Johnson</dc:creator>
      <wfw:comment>http://www.iamnotmyself.com/CommentView,guid,6c5c76cc-b608-4097-bd50-a5128172b036.aspx</wfw:comment>
      <wfw:commentRss>http://www.iamnotmyself.com/SyndicationService.asmx/GetEntryCommentsRss?guid=6c5c76cc-b608-4097-bd50-a5128172b036</wfw:commentRss>
      
      <title>SSDNUG Presents: Eric Lee on Anti-Patterns in Legacy Code November 12th</title>
      <guid isPermaLink="false">http://www.iamnotmyself.com/PermaLink,guid,6c5c76cc-b608-4097-bd50-a5128172b036.aspx</guid>
      <link>http://feedproxy.google.com/~r/IAmNotMyself/~3/YcDN38l3xDA/SSDNUGPresentsEricLeeOnAntiPatternsInLegacyCodeNovember12th.aspx</link>
      <pubDate>Fri, 16 Oct 2009 15:46:48 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
The South Sound .NET Users Group is pleased to present &lt;a href="http://blogs.msdn.com/elee/default.aspx" target="_blank"&gt;Microsoft’s&#xD;
Eric Lee&lt;/a&gt; on the evening of November 12th from 7:00 PM – 9:00PM at Olympia Center&#xD;
in downtown Olympia. This presentation promises to be an enlightening evening with&#xD;
not only an outstanding member of the .NET community offering sage advice, but also&#xD;
honest upfront discussion from a developer with over 15 years of experience working&#xD;
in the belly of Microsoft’s most successful divisions.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
About Eric’s presentation &lt;strong&gt;“Common Anti-Patterns in Legacy Code”&lt;/strong&gt;:&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
One of the most dreaded phrases in software engineering are the words “&lt;a href="http://en.wikipedia.org/wiki/Legacy_code" target="_blank"&gt;legacy&#xD;
code&lt;/a&gt;”.  You know what that means: old, nasty code that gives you ulcers and&#xD;
makes you tear our your hair.  In this presentation we’ll swap horror stories,&#xD;
discuss ways to make legacy code a little more manageable, and learn some principles&#xD;
that will help you avoid writing legacy code of your own.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;strong&gt;About Eric Lee:&lt;/strong&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
I’ve worked for Microsoft for over fifteen years as a developer of testing tools and&#xD;
other applications in the Office division and in Microsoft Game Studios.  I’ve&#xD;
inherited multiple legacy systems during my career and have had to suffer through&#xD;
the resulting pain.  I’m sad to say I’ve probably also written a legacy system&#xD;
or two.  As a result I have some opinions about the sorts of things that makes&#xD;
code either maintainable or a legacy nightmare.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
 &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;iframe height="350" marginheight="0" src="http://maps.google.com/maps?f=q&amp;amp;source=s_q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=222+Columbia+St+NW,+Olympia,+WA+98501&amp;amp;sll=37.0625,-95.677068&amp;amp;sspn=51.310143,79.013672&amp;amp;ie=UTF8&amp;amp;t=h&amp;amp;hq=&amp;amp;hnear=222+Columbia+St+NW,+Olympia,+Thurston,+Washington+98501&amp;amp;ll=47.046323,-122.902529&amp;amp;spn=0.005117,0.00912&amp;amp;z=16&amp;amp;iwloc=A&amp;amp;output=embed" frameborder="0" width="425" marginwidth="0" scrolling="no"&gt;&#xD;
          &lt;/iframe&gt;&#xD;
          &lt;br&gt;&#xD;
          &lt;small&gt;&#xD;
            &lt;a style="text-align: left; color: #0000ff" href="http://maps.google.com/maps?f=q&amp;amp;source=embed&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=222+Columbia+St+NW,+Olympia,+WA+98501&amp;amp;sll=37.0625,-95.677068&amp;amp;sspn=51.310143,79.013672&amp;amp;ie=UTF8&amp;amp;t=h&amp;amp;hq=&amp;amp;hnear=222+Columbia+St+NW,+Olympia,+Thurston,+Washington+98501&amp;amp;ll=47.046323,-122.902529&amp;amp;spn=0.005117,0.00912&amp;amp;z=16&amp;amp;iwloc=A"&gt;View&#xD;
Larger Map&lt;/a&gt;&#xD;
          &lt;/small&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://www.iamnotmyself.com/aggbug.ashx?id=6c5c76cc-b608-4097-bd50-a5128172b036"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/IAmNotMyself?a=YcDN38l3xDA:Dzf0JahXqEo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IAmNotMyself?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/IAmNotMyself?a=YcDN38l3xDA:Dzf0JahXqEo:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IAmNotMyself?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/IAmNotMyself?a=YcDN38l3xDA:Dzf0JahXqEo:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IAmNotMyself?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IAmNotMyself/~4/YcDN38l3xDA" height="1" width="1"/&gt;</description>
      <comments>http://www.iamnotmyself.com/CommentView,guid,6c5c76cc-b608-4097-bd50-a5128172b036.aspx</comments>
      <category>Development</category>
      <category>Events</category>
      <category>Local</category>
    <feedburner:origLink>http://www.IAmNotMyself.com/2009/10/16/SSDNUGPresentsEricLeeOnAntiPatternsInLegacyCodeNovember12th.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://www.iamnotmyself.com/Trackback.aspx?guid=9e141d6c-ffb3-4209-a918-9f582e9ff37e</trackback:ping>
      <pingback:server>http://www.iamnotmyself.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.iamnotmyself.com/PermaLink,guid,9e141d6c-ffb3-4209-a918-9f582e9ff37e.aspx</pingback:target>
      <dc:creator>Bobby Johnson</dc:creator>
      <wfw:comment>http://www.iamnotmyself.com/CommentView,guid,9e141d6c-ffb3-4209-a918-9f582e9ff37e.aspx</wfw:comment>
      <wfw:commentRss>http://www.iamnotmyself.com/SyndicationService.asmx/GetEntryCommentsRss?guid=9e141d6c-ffb3-4209-a918-9f582e9ff37e</wfw:commentRss>
      
      <title>South Sound .NET Users Group Schedule Filling Up With Pure Awesomeness!</title>
      <guid isPermaLink="false">http://www.iamnotmyself.com/PermaLink,guid,9e141d6c-ffb3-4209-a918-9f582e9ff37e.aspx</guid>
      <link>http://feedproxy.google.com/~r/IAmNotMyself/~3/_7wLqB-2z1k/SouthSoundNETUsersGroupScheduleFillingUpWithPureAwesomeness.aspx</link>
      <pubDate>Fri, 04 Sep 2009 15:32:35 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
So last week &lt;a href="http://www.IAmNotMyself.com/2009/08/26/SouthSoundNETUsersGroupCallForSpeakers.aspx" target="_blank"&gt;I&#xD;
threw up the bat signal&lt;/a&gt; to the internets in an effort to help my local user group&#xD;
find some speakers for the coming months. The response has been great and I have successfully&#xD;
booked some great speakers. I set a goal to book six months of “no wizard based demo”&#xD;
speakers and I am quickly achieving that goal.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Here is a sample of what is coming in the next few months. I have made up titles for&#xD;
the presentations based on discussions with the presenters, so they are subject to&#xD;
change once then have finalized their presentations. But you get the idea. This stuff&#xD;
is going to be a code monkeys dream come true.&#xD;
&lt;/p&gt;&#xD;
        &lt;table border="1" cellspacing="0" cellpadding="0" width="725"&gt;&#xD;
          &lt;tbody&gt;&#xD;
            &lt;tr&gt;&#xD;
              &lt;td width="151"&gt;&#xD;
October 8th&lt;/td&gt;&#xD;
              &lt;td width="153"&gt;&#xD;
                &lt;a href="http://twitter.com/olsonjeffery" target="_blank"&gt;Jeff Olson&lt;/a&gt;&#xD;
              &lt;/td&gt;&#xD;
              &lt;td width="419"&gt;&#xD;
Introduction to TDD &amp;amp; Context/Specification Testing &#xD;
&lt;/td&gt;&#xD;
            &lt;/tr&gt;&#xD;
            &lt;tr&gt;&#xD;
              &lt;td&gt;&#xD;
November 12th&lt;/td&gt;&#xD;
              &lt;td width="153"&gt;&#xD;
                &lt;a href="http://blogs.msdn.com/elee/default.aspx" target="_blank"&gt;Eric Lee&lt;/a&gt;&#xD;
              &lt;/td&gt;&#xD;
              &lt;td width="419"&gt;&#xD;
Common Anti-Patterns in Legacy Code &amp;amp; How to Work Your Way Out of Them&lt;/td&gt;&#xD;
            &lt;/tr&gt;&#xD;
            &lt;tr&gt;&#xD;
              &lt;td&gt;&#xD;
December 10th&lt;/td&gt;&#xD;
              &lt;td width="153"&gt;&#xD;
                &lt;a href="http://www.jamesthigpen.com/blog/" target="_blank"&gt;James Thigpen&lt;/a&gt;&#xD;
              &lt;/td&gt;&#xD;
              &lt;td width="419"&gt;&#xD;
Introduction to MVP in WinForms Applications&lt;/td&gt;&#xD;
            &lt;/tr&gt;&#xD;
            &lt;tr&gt;&#xD;
              &lt;td&gt;&#xD;
January 14th&lt;/td&gt;&#xD;
              &lt;td width="153"&gt;&#xD;
 &lt;/td&gt;&#xD;
              &lt;td width="419"&gt;&#xD;
 &lt;/td&gt;&#xD;
            &lt;/tr&gt;&#xD;
            &lt;tr&gt;&#xD;
              &lt;td&gt;&#xD;
February 11th&lt;/td&gt;&#xD;
              &lt;td width="153"&gt;&#xD;
                &lt;a href="http://www.managed-world.com/" target="_blank"&gt;Jason Olson&lt;/a&gt;&#xD;
              &lt;/td&gt;&#xD;
              &lt;td width="419"&gt;&#xD;
Parallel Programming with Visual Studio 2010&lt;/td&gt;&#xD;
            &lt;/tr&gt;&#xD;
            &lt;tr&gt;&#xD;
              &lt;td&gt;&#xD;
March 11th&lt;/td&gt;&#xD;
              &lt;td width="153"&gt;&#xD;
 &lt;/td&gt;&#xD;
              &lt;td width="419"&gt;&#xD;
 &lt;/td&gt;&#xD;
            &lt;/tr&gt;&#xD;
            &lt;tr&gt;&#xD;
              &lt;td&gt;&#xD;
April 8th&lt;/td&gt;&#xD;
              &lt;td width="153"&gt;&#xD;
 &lt;/td&gt;&#xD;
              &lt;td width="419"&gt;&#xD;
 &lt;/td&gt;&#xD;
            &lt;/tr&gt;&#xD;
          &lt;/tbody&gt;&#xD;
        &lt;/table&gt;&#xD;
        &lt;p&gt;&#xD;
I have also heard from &lt;a href="http://www.tavaresstudios.com/Blog/" target="_blank"&gt;Chris&#xD;
Tavares&lt;/a&gt; (Enterprise Library 5), &lt;a href="http://twitter.com/cbilson" target="_blank"&gt;Chris&#xD;
Bilson&lt;/a&gt; (Introduction to PowerShell), &lt;a href="http://woan.org/" target="_blank"&gt;Ron&#xD;
Woan&lt;/a&gt; (Mr. Awesome) and &lt;a href="http://justinbozonier.posterous.com/" target="_blank"&gt;Justin&#xD;
Bozonier&lt;/a&gt; and am working out dates with them.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Once again, if you are interested in coming to beautiful downtown Olympia, WA (where&#xD;
Kurt Kobain began his musical journey into depression) and speaking feel free to email&#xD;
me at &lt;a href="mailto:bobby.johnson@gmail.com"&gt;bobby.johnson@gmail.com&lt;/a&gt;. &#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://www.iamnotmyself.com/aggbug.ashx?id=9e141d6c-ffb3-4209-a918-9f582e9ff37e"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/IAmNotMyself?a=_7wLqB-2z1k:FLoC_rxgEZc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IAmNotMyself?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/IAmNotMyself?a=_7wLqB-2z1k:FLoC_rxgEZc:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IAmNotMyself?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/IAmNotMyself?a=_7wLqB-2z1k:FLoC_rxgEZc:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IAmNotMyself?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IAmNotMyself/~4/_7wLqB-2z1k" height="1" width="1"/&gt;</description>
      <comments>http://www.iamnotmyself.com/CommentView,guid,9e141d6c-ffb3-4209-a918-9f582e9ff37e.aspx</comments>
      <category>Events</category>
      <category>Local</category>
    <feedburner:origLink>http://www.IAmNotMyself.com/2009/09/04/SouthSoundNETUsersGroupScheduleFillingUpWithPureAwesomeness.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://www.iamnotmyself.com/Trackback.aspx?guid=fd071f49-acec-4e03-be77-214a92951a22</trackback:ping>
      <pingback:server>http://www.iamnotmyself.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.iamnotmyself.com/PermaLink,guid,fd071f49-acec-4e03-be77-214a92951a22.aspx</pingback:target>
      <dc:creator>Bobby Johnson</dc:creator>
      <wfw:comment>http://www.iamnotmyself.com/CommentView,guid,fd071f49-acec-4e03-be77-214a92951a22.aspx</wfw:comment>
      <wfw:commentRss>http://www.iamnotmyself.com/SyndicationService.asmx/GetEntryCommentsRss?guid=fd071f49-acec-4e03-be77-214a92951a22</wfw:commentRss>
      <slash:comments>1</slash:comments>
      
      <title>South Sound .NET Users Group Call For Speakers</title>
      <guid isPermaLink="false">http://www.iamnotmyself.com/PermaLink,guid,fd071f49-acec-4e03-be77-214a92951a22.aspx</guid>
      <link>http://feedproxy.google.com/~r/IAmNotMyself/~3/wPCPkN6ii0A/SouthSoundNETUsersGroupCallForSpeakers.aspx</link>
      <pubDate>Wed, 26 Aug 2009 17:06:42 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
The amazing &lt;a href="http://www.amorsley.net/bugsplat/" target="_blank"&gt;Camey&lt;/a&gt; has&#xD;
been organizing speakers for the &lt;a href="http://ssdotnet.org/" target="_blank"&gt;South&#xD;
Sound .NET Users Group&lt;/a&gt; longer than I have been a participating member. She recently&#xD;
received the bouncing bundle of joy visit from the stork and needs some well deserved&#xD;
time off. She asked if I could take over the reigns and gather up some folks to come&#xD;
talk to us and I readily agreed.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
So, if you read my blog, are local to Olympia, WA (I’m looking at you Seattle and&#xD;
Portland…) and are interested in presenting to a .NET Users Group have I got a deal&#xD;
for you! I have one slightly cramped room and a projector with your name on it.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
We meet regularly each month on the second Thursday at the &lt;a href="http://www.ci.olympia.wa.us/?sc_itemid={8E1AE92A-301D-4D18-B03C-5851718374A4}" target="_blank"&gt;Olympia&#xD;
Center&lt;/a&gt; in downtown Olympia. Meetings start at 7:00 PM and run for two hours till&#xD;
9:00 PM. We usually retire to the &lt;a href="http://www.fishbrewing.com/" target="_blank"&gt;Fish&#xD;
Tail Brewing Company&lt;/a&gt;’s pub the &lt;a href="http://www.fishbrewing.com/brewpub/" target="_blank"&gt;Fish&#xD;
Bowl&lt;/a&gt; for a few pints and conversation afterward. Speakers always drink free.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
We currently have the following dates available (which are filling up fast!):&#xD;
&lt;/p&gt;&#xD;
        &lt;table border="1" cellspacing="0" cellpadding="0" width="725"&gt;&#xD;
          &lt;tbody&gt;&#xD;
            &lt;tr&gt;&#xD;
              &lt;td width="151"&gt;&#xD;
October 8th&lt;/td&gt;&#xD;
              &lt;td width="153"&gt;&#xD;
                &lt;a href="http://twitter.com/olsonjeffery" target="_blank"&gt;Jeff Olson&lt;/a&gt;&#xD;
              &lt;/td&gt;&#xD;
              &lt;td width="419"&gt;&#xD;
Introduction to TDD &amp;amp; Context/Specification Testing &#xD;
&lt;/td&gt;&#xD;
            &lt;/tr&gt;&#xD;
            &lt;tr&gt;&#xD;
              &lt;td&gt;&#xD;
November 12th&lt;/td&gt;&#xD;
              &lt;td width="153"&gt;&#xD;
                &lt;a href="http://blogs.msdn.com/elee/default.aspx" target="_blank"&gt;Eric Lee&lt;/a&gt;&#xD;
              &lt;/td&gt;&#xD;
              &lt;td width="419"&gt;&#xD;
Common Anti-Patterns in Legacy Code &amp;amp; How to Work Your Way Out of Them&lt;/td&gt;&#xD;
            &lt;/tr&gt;&#xD;
            &lt;tr&gt;&#xD;
              &lt;td&gt;&#xD;
December 10th&lt;/td&gt;&#xD;
              &lt;td width="153"&gt;&#xD;
                &lt;a href="http://www.jamesthigpen.com/blog/" target="_blank"&gt;James Thigpen&lt;/a&gt;&#xD;
              &lt;/td&gt;&#xD;
              &lt;td width="419"&gt;&#xD;
Introduction to MVP in ASP.NET&lt;/td&gt;&#xD;
            &lt;/tr&gt;&#xD;
            &lt;tr&gt;&#xD;
              &lt;td&gt;&#xD;
January 14th&lt;/td&gt;&#xD;
              &lt;td width="153"&gt;&#xD;
 &lt;/td&gt;&#xD;
              &lt;td width="419"&gt;&#xD;
 &lt;/td&gt;&#xD;
            &lt;/tr&gt;&#xD;
            &lt;tr&gt;&#xD;
              &lt;td&gt;&#xD;
February 11th&lt;/td&gt;&#xD;
              &lt;td width="153"&gt;&#xD;
                &lt;a href="http://www.managed-world.com/" target="_blank"&gt;Jason Olson&lt;/a&gt;&#xD;
              &lt;/td&gt;&#xD;
              &lt;td width="419"&gt;&#xD;
Parallel Programming with Visual Studio 2010&lt;/td&gt;&#xD;
            &lt;/tr&gt;&#xD;
            &lt;tr&gt;&#xD;
              &lt;td&gt;&#xD;
March 11th&lt;/td&gt;&#xD;
              &lt;td width="153"&gt;&#xD;
 &lt;/td&gt;&#xD;
              &lt;td width="419"&gt;&#xD;
 &lt;/td&gt;&#xD;
            &lt;/tr&gt;&#xD;
            &lt;tr&gt;&#xD;
              &lt;td&gt;&#xD;
April 8th&lt;/td&gt;&#xD;
              &lt;td width="153"&gt;&#xD;
 &lt;/td&gt;&#xD;
              &lt;td width="419"&gt;&#xD;
 &lt;/td&gt;&#xD;
            &lt;/tr&gt;&#xD;
          &lt;/tbody&gt;&#xD;
        &lt;/table&gt;&#xD;
        &lt;p&gt;&#xD;
If you are interested at all please feel free to contact me &lt;a href="mailto:bobby.johnson@gmail.com"&gt;bobby.johnson@gmail.com&lt;/a&gt;.&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://www.iamnotmyself.com/aggbug.ashx?id=fd071f49-acec-4e03-be77-214a92951a22"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/IAmNotMyself?a=wPCPkN6ii0A:wiCdSjJ7OwU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IAmNotMyself?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/IAmNotMyself?a=wPCPkN6ii0A:wiCdSjJ7OwU:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IAmNotMyself?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/IAmNotMyself?a=wPCPkN6ii0A:wiCdSjJ7OwU:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IAmNotMyself?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IAmNotMyself/~4/wPCPkN6ii0A" height="1" width="1"/&gt;</description>
      <comments>http://www.iamnotmyself.com/CommentView,guid,fd071f49-acec-4e03-be77-214a92951a22.aspx</comments>
      <category>Events</category>
      <category>Local</category>
    <feedburner:origLink>http://www.IAmNotMyself.com/2009/08/26/SouthSoundNETUsersGroupCallForSpeakers.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://www.iamnotmyself.com/Trackback.aspx?guid=2bfb3970-3763-4f9c-99fc-538f9a5e6e48</trackback:ping>
      <pingback:server>http://www.iamnotmyself.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.iamnotmyself.com/PermaLink,guid,2bfb3970-3763-4f9c-99fc-538f9a5e6e48.aspx</pingback:target>
      <dc:creator>Bobby Johnson</dc:creator>
      <wfw:comment>http://www.iamnotmyself.com/CommentView,guid,2bfb3970-3763-4f9c-99fc-538f9a5e6e48.aspx</wfw:comment>
      <wfw:commentRss>http://www.iamnotmyself.com/SyndicationService.asmx/GetEntryCommentsRss?guid=2bfb3970-3763-4f9c-99fc-538f9a5e6e48</wfw:commentRss>
      
      <title>Explain Phishing to Your Grandma</title>
      <guid isPermaLink="false">http://www.iamnotmyself.com/PermaLink,guid,2bfb3970-3763-4f9c-99fc-538f9a5e6e48.aspx</guid>
      <link>http://feedproxy.google.com/~r/IAmNotMyself/~3/48LOU-ooS3M/ExplainPhishingToYourGrandma.aspx</link>
      <pubDate>Tue, 11 Aug 2009 23:19:28 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:781e461e-d3dd-497c-a58c-30dbe53489fd" class="wlWriterEditableSmartContent"&gt;&#xD;
          &lt;div id="aeb93a62-38a3-4a1e-acbc-b73e0fb83846" style="margin: 0px; padding: 0px; display: inline;"&gt;&#xD;
            &lt;div&gt;&#xD;
              &lt;a href="http://www.youtube.com/watch?v=sqRZGhiHGxg&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;hl=en&amp;amp;feature=player_embedded&amp;amp;fs=1" target="_new"&gt;&#xD;
                &lt;img src="http://www.iamnotmyself.com/content/binary/WindowsLiveWriter/ExplainPhishingtoYourGrandma_E58D/video7dbcba3b2880.jpg" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('aeb93a62-38a3-4a1e-acbc-b73e0fb83846'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;object width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/sqRZGhiHGxg&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;hl=en&amp;amp;feature=player_embedded&amp;amp;fs=1&amp;amp;hl=en\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;embed src=\&amp;quot;http://www.youtube.com/v/sqRZGhiHGxg&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;hl=en&amp;amp;feature=player_embedded&amp;amp;fs=1&amp;amp;hl=en\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/object&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" alt=""&gt;&lt;/img&gt;&#xD;
              &lt;/a&gt;&#xD;
            &lt;/div&gt;&#xD;
          &lt;/div&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;p&gt;&#xD;
Excellent PSA that I found by way of &lt;a href="http://consumerist.com/5335267/explain-phishing-to-your-grandma" target="_blank"&gt;The&#xD;
Consumerist&lt;/a&gt;. &lt;a href="http://commoncraft.com/phishing" target="_blank"&gt;Original&#xD;
source&lt;/a&gt;.&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://www.iamnotmyself.com/aggbug.ashx?id=2bfb3970-3763-4f9c-99fc-538f9a5e6e48"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/IAmNotMyself?a=48LOU-ooS3M:rx3lf6ar1h4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IAmNotMyself?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/IAmNotMyself?a=48LOU-ooS3M:rx3lf6ar1h4:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IAmNotMyself?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/IAmNotMyself?a=48LOU-ooS3M:rx3lf6ar1h4:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IAmNotMyself?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IAmNotMyself/~4/48LOU-ooS3M" height="1" width="1"/&gt;</description>
      <comments>http://www.iamnotmyself.com/CommentView,guid,2bfb3970-3763-4f9c-99fc-538f9a5e6e48.aspx</comments>
      <category>Random</category>
    <feedburner:origLink>http://www.IAmNotMyself.com/2009/08/11/ExplainPhishingToYourGrandma.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://www.iamnotmyself.com/Trackback.aspx?guid=bb4ec28a-0501-48a7-8c2b-327a2a39cf8a</trackback:ping>
      <pingback:server>http://www.iamnotmyself.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.iamnotmyself.com/PermaLink,guid,bb4ec28a-0501-48a7-8c2b-327a2a39cf8a.aspx</pingback:target>
      <dc:creator>Bobby Johnson</dc:creator>
      <wfw:comment>http://www.iamnotmyself.com/CommentView,guid,bb4ec28a-0501-48a7-8c2b-327a2a39cf8a.aspx</wfw:comment>
      <wfw:commentRss>http://www.iamnotmyself.com/SyndicationService.asmx/GetEntryCommentsRss?guid=bb4ec28a-0501-48a7-8c2b-327a2a39cf8a</wfw:commentRss>
      
      <title>Ward Cunningham on the Origin of the Term &amp;ldquo;Technical Debt&amp;rdquo;</title>
      <guid isPermaLink="false">http://www.iamnotmyself.com/PermaLink,guid,bb4ec28a-0501-48a7-8c2b-327a2a39cf8a.aspx</guid>
      <link>http://feedproxy.google.com/~r/IAmNotMyself/~3/AN_6nRQzCJ8/WardCunninghamOnTheOriginOfTheTermLdquoTechnicalDebtrdquo.aspx</link>
      <pubDate>Tue, 11 Aug 2009 19:51:17 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:ff5e2f31-916f-42ff-87c0-053cb1a7bfe7" class="wlWriterEditableSmartContent"&gt;&#xD;
          &lt;div id="fa8b73a2-b61e-4a69-9014-ce5721ebf9d9" style="margin: 0px; padding: 0px; display: inline;"&gt;&#xD;
            &lt;div&gt;&#xD;
              &lt;a href="http://www.youtube.com/watch?v=pqeJFYwnkjE&amp;amp;hl=en&amp;amp;fs=1&amp;amp;" target="_new"&gt;&#xD;
                &lt;img src="http://www.iamnotmyself.com/content/binary/WindowsLiveWriter/WardCunninghamontheOriginoftheTermTechni_B4C4/videoc8c7987308e3.jpg" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('fa8b73a2-b61e-4a69-9014-ce5721ebf9d9'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;object width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/pqeJFYwnkjE&amp;amp;hl=en&amp;amp;fs=1&amp;amp;&amp;amp;hl=en\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;embed src=\&amp;quot;http://www.youtube.com/v/pqeJFYwnkjE&amp;amp;hl=en&amp;amp;fs=1&amp;amp;&amp;amp;hl=en\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/object&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" alt=""&gt;&lt;/img&gt;&#xD;
              &lt;/a&gt;&#xD;
            &lt;/div&gt;&#xD;
          &lt;/div&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;img width="0" height="0" src="http://www.iamnotmyself.com/aggbug.ashx?id=bb4ec28a-0501-48a7-8c2b-327a2a39cf8a"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/IAmNotMyself?a=AN_6nRQzCJ8:JfQuYvbVNWk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IAmNotMyself?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/IAmNotMyself?a=AN_6nRQzCJ8:JfQuYvbVNWk:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IAmNotMyself?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/IAmNotMyself?a=AN_6nRQzCJ8:JfQuYvbVNWk:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IAmNotMyself?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IAmNotMyself/~4/AN_6nRQzCJ8" height="1" width="1"/&gt;</description>
      <comments>http://www.iamnotmyself.com/CommentView,guid,bb4ec28a-0501-48a7-8c2b-327a2a39cf8a.aspx</comments>
      <category>Development</category>
      <category>Fundamentals</category>
    <feedburner:origLink>http://www.IAmNotMyself.com/2009/08/11/WardCunninghamOnTheOriginOfTheTermLdquoTechnicalDebtrdquo.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://www.iamnotmyself.com/Trackback.aspx?guid=ae3b2bae-8fd7-43e8-a304-3194beff76cd</trackback:ping>
      <pingback:server>http://www.iamnotmyself.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.iamnotmyself.com/PermaLink,guid,ae3b2bae-8fd7-43e8-a304-3194beff76cd.aspx</pingback:target>
      <dc:creator>Bobby Johnson</dc:creator>
      <wfw:comment>http://www.iamnotmyself.com/CommentView,guid,ae3b2bae-8fd7-43e8-a304-3194beff76cd.aspx</wfw:comment>
      <wfw:commentRss>http://www.iamnotmyself.com/SyndicationService.asmx/GetEntryCommentsRss?guid=ae3b2bae-8fd7-43e8-a304-3194beff76cd</wfw:commentRss>
      
      <title>Presentation Patterns Wiki Available to the Public</title>
      <guid isPermaLink="false">http://www.iamnotmyself.com/PermaLink,guid,ae3b2bae-8fd7-43e8-a304-3194beff76cd.aspx</guid>
      <link>http://feedproxy.google.com/~r/IAmNotMyself/~3/B8zqGUuvNwg/PresentationPatternsWikiAvailableToThePublic.aspx</link>
      <pubDate>Mon, 10 Aug 2009 14:57:31 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a href="http://codebetter.com/blogs/jeremy.miller/default.aspx"&gt;Jeremy Miller&lt;/a&gt; has&#xD;
been commissioned by &lt;a href="http://www.pearsonhighered.com/"&gt;Addison Wesley&lt;/a&gt; to&#xD;
write a book on Presentation Patterns. He has chosen to do this the &lt;a href="http://www.martinfowler.com/"&gt;Martin&#xD;
Fowler&lt;/a&gt; way by using a wiki engine and making it available to the public as he&#xD;
writes it. This book is targeted directly at the “How”s of writing  desktop applications&#xD;
and rich clients using WPF and Silverlight. Here is a brief description from the site:&#xD;
&lt;/p&gt;&#xD;
        &lt;blockquote&gt;&#xD;
          &lt;p&gt;&#xD;
Inside of an enterprise application, the user interface layer can be very complex&#xD;
in its own right and is a huge source of potential bugs because of the element of&#xD;
human interaction. This book will present the design patterns that can be used to&#xD;
manage the complexity of user interface code. The book will discuss patterns for organizing&#xD;
the responsibilities of a single screen, coordinating the activities of multiple screens&#xD;
within an application, and architecting a structure that allows a desktop application&#xD;
to be efficiently extended over a longer lifecycle.&#xD;
&lt;/p&gt;&#xD;
        &lt;/blockquote&gt;&#xD;
        &lt;img width="0" height="0" src="http://www.iamnotmyself.com/aggbug.ashx?id=ae3b2bae-8fd7-43e8-a304-3194beff76cd"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/IAmNotMyself?a=B8zqGUuvNwg:JdElyCDoG7c:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IAmNotMyself?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/IAmNotMyself?a=B8zqGUuvNwg:JdElyCDoG7c:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IAmNotMyself?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/IAmNotMyself?a=B8zqGUuvNwg:JdElyCDoG7c:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IAmNotMyself?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IAmNotMyself/~4/B8zqGUuvNwg" height="1" width="1"/&gt;</description>
      <comments>http://www.iamnotmyself.com/CommentView,guid,ae3b2bae-8fd7-43e8-a304-3194beff76cd.aspx</comments>
      <category>Development</category>
      <category>Fundamentals</category>
    <feedburner:origLink>http://www.IAmNotMyself.com/2009/08/10/PresentationPatternsWikiAvailableToThePublic.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://www.iamnotmyself.com/Trackback.aspx?guid=e483fbf8-62fa-40a7-8f57-3f97c247028b</trackback:ping>
      <pingback:server>http://www.iamnotmyself.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.iamnotmyself.com/PermaLink,guid,e483fbf8-62fa-40a7-8f57-3f97c247028b.aspx</pingback:target>
      <dc:creator>Bobby Johnson</dc:creator>
      <wfw:comment>http://www.iamnotmyself.com/CommentView,guid,e483fbf8-62fa-40a7-8f57-3f97c247028b.aspx</wfw:comment>
      <wfw:commentRss>http://www.iamnotmyself.com/SyndicationService.asmx/GetEntryCommentsRss?guid=e483fbf8-62fa-40a7-8f57-3f97c247028b</wfw:commentRss>
      
      <title>The Lounge&amp;rsquo;s James Avery on Bootstrapping Your Own Company</title>
      <guid isPermaLink="false">http://www.iamnotmyself.com/PermaLink,guid,e483fbf8-62fa-40a7-8f57-3f97c247028b.aspx</guid>
      <link>http://feedproxy.google.com/~r/IAmNotMyself/~3/W9He0J-6FmM/TheLoungersquosJamesAveryOnBootstrappingYourOwnCompany.aspx</link>
      <pubDate>Mon, 10 Aug 2009 14:40:43 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:b49f47ba-db32-4d73-9540-d53b3c6b6541" class="wlWriterEditableSmartContent"&gt;&#xD;
          &lt;div id="77a0e959-87bf-479f-a589-9eac905f970f" style="margin: 0px; padding: 0px; display: inline;"&gt;&#xD;
            &lt;div&gt;&#xD;
              &lt;a href="http://www.youtube.com/watch?v=gQawuzt7eLs&amp;amp;hl=en&amp;amp;fs=1&amp;amp;" target="_new"&gt;&#xD;
                &lt;img src="http://www.iamnotmyself.com/content/binary/WindowsLiveWriter/TheLoungesJamesAveryonBootstrappingYourO_6BF9/video1ee28d976f71.jpg" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('77a0e959-87bf-479f-a589-9eac905f970f'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;object width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/gQawuzt7eLs&amp;amp;hl=en&amp;amp;fs=1&amp;amp;&amp;amp;hl=en\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;embed src=\&amp;quot;http://www.youtube.com/v/gQawuzt7eLs&amp;amp;hl=en&amp;amp;fs=1&amp;amp;&amp;amp;hl=en\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/object&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" alt=""&gt;&lt;/img&gt;&#xD;
              &lt;/a&gt;&#xD;
            &lt;/div&gt;&#xD;
          &lt;/div&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;p&gt;&#xD;
James Avery is the owner operator of &lt;a href="http://theloungenet.com/" target="_blank"&gt;The&#xD;
Lounge Advertising Network&lt;/a&gt;, a small focused advertising network that targets Microsoft&#xD;
technologies. He has some great advice on how to breakout and get started working&#xD;
for yourself.&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://www.iamnotmyself.com/aggbug.ashx?id=e483fbf8-62fa-40a7-8f57-3f97c247028b"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/IAmNotMyself?a=W9He0J-6FmM:2E5yAUWsNzU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IAmNotMyself?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/IAmNotMyself?a=W9He0J-6FmM:2E5yAUWsNzU:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IAmNotMyself?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/IAmNotMyself?a=W9He0J-6FmM:2E5yAUWsNzU:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IAmNotMyself?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IAmNotMyself/~4/W9He0J-6FmM" height="1" width="1"/&gt;</description>
      <comments>http://www.iamnotmyself.com/CommentView,guid,e483fbf8-62fa-40a7-8f57-3f97c247028b.aspx</comments>
    <feedburner:origLink>http://www.IAmNotMyself.com/2009/08/10/TheLoungersquosJamesAveryOnBootstrappingYourOwnCompany.aspx</feedburner:origLink></item>
  </channel>
</rss>
