<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" 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:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Jonathan Starr's Blog</title>
        <link>http://geekswithblogs.net/starr/Default.aspx</link>
        <description>Thoughts on C#, Ajax, WCF, LINQ et al.</description>
        <language>en-US</language>
        <copyright>Jonathan Starr</copyright>
        <managingEditor>jon.starr@gmail.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <image>
            <title>Jonathan Starr's Blog</title>
            <url>http://geekswithblogs.net/images/RSS2Image.gif</url>
            <link>http://geekswithblogs.net/starr/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <item>
            <title>Scrum / Agile Development: A Renaissance of Culture Through the Eyes of Levi-Strauss</title>
            <category>Software Design</category>
            <category>Management</category>
            <category>Software Development</category>
            <category>Anthropology</category>
            <category>Agile Development</category>
            <category>Scrum</category>
            <category>Management</category>
            <link>http://geekswithblogs.net/starr/archive/2008/07/19/scrum--agile-developement-a-renaissance-of-culture-through-the.aspx</link>
            <description>On weekends, I tend to go off tangent, and this weekend is no exception.  I started to read some of the works of Levi-Strauss, the structural anthropologist, and it occurred to me that many of the positive changes from Agile Development are not merely the result of greater business focus.  Agile also develops culture in a field that is generally devoid of culture.&lt;br /&gt;
&lt;br /&gt;
This can be a stabilizing factor for companies by&lt;br /&gt;
&lt;br /&gt;
- Reducing turnover by empowering team members.&lt;br /&gt;
- Creating rituals, taboos, and totems that increase the significance of work.&lt;br /&gt;
- Increasing communication through these rituals to increase trust between team members.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Rituals of Agile Development&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-style: italic;"&gt;Stand Up Meetings (or Scrum Meeting)&lt;/span&gt;&lt;br style="font-style: italic;" /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;img width="263" height="245" src="/images/geekswithblogs_net/starr/football_huddle.jpg" alt="Picture Of Football Huddle" /&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
In order to make the initial meeting for the day a bit of fun, the meeting is time-boxed to fifteen (15) minutes.  And to emphasize the importance of keeping this meeting short, attendees stand for the meeting (like a football huddle?).  To show attendance is important, team members cannot allow another member attend the meetings by proxy for them.    Finally, to make the Stand Up as much of a ritual as possible, it is generally done at the same time and same place every day.&lt;br /&gt;
&lt;br /&gt;
There are many other rituals that are sometimes adopted during Stand Up meetings.  Some teams rotate the facilitator role for Stand Up.  Likewise, some teams have a special time keeper role to keep the meetings short.  I suspect the richer the traditions for stand up, the more effective they may be for team building and enculturation.&lt;br /&gt;
&lt;br /&gt;
A few other thoughts from an anthropology perspective:  Stand Up meetings are conducted around back log charts/ blockage charts that are highly visible charts with information about the project posted on 3 x 5 index cards prioritized.  It reminded of the Code of Hammurabi - the best way to may things important is by making them highly visible.&lt;br /&gt;
&lt;br /&gt;
For more information, you may want to consult Martin Fowler's take &lt;a href="http://martinfowler.com/articles/itsNotJustStandingUp.html"&gt;here.&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-style: italic;"&gt;Red Light - Green Light - Refactor&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;img width="200" height="300" src="/images/geekswithblogs_net/starr/Green-Traffic-Light.jpg" alt="" /&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
When pair programming is used in Agile, typically a game of "Red Light - Green Light - Refactor" is played.  That is, one member of the pair  fashions a test that specifies a requirement for the user story the pair is working on.  When a satisfactory test is fashioned and it fails, the Red Light part of the game is complete.  Then the other member of the pair will write the code to make the test pass.  This is the "Green Light" part of the game.  Finally, to make the code work with accepted architecture requirements, or to make the card more maintainable or more performant, the first member refactors the code so that it still passes unit tests.  This is the final phase of this round game, and the members switch roles for the next round.&lt;br /&gt;
&lt;br /&gt;
This game is not the zero sum game we Westerners normally engage in.  Instead, because the game has no losers, and only winners, it is ,according to Levi-Strauss, a &lt;span style="font-weight: bold;"&gt;ritual&lt;/span&gt;. &lt;br /&gt;
&lt;br /&gt;
Personally, I have paired with four different individuals over the past six months, and I developed special relationships with each one partly because of the ritual nature of this practice.  It has been very satisfying, and not just on an intellectual level to do so (and many times illuminating as I have had some 'perfectionist' coding partners).&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-style: italic;"&gt;Agile Planning Games&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
When it is difficult to estimate the scope of new requirements (or user stories) the Scrum team will sometimes play a game to perform the estimate.  Cards with Fibonacci numbers of hours (1, 2, 3, 5, 8 , 13, 21, etc.) are distributed to each team member.  Each member uses one of these cards to indicate the number of required hours to complete the requirement, and when there is disagreement, members justify their estimations with specific reasoning so that a general estimate can be made.&lt;br /&gt;
&lt;br /&gt;
This is another game that is, by its cooperative nature, another ritual of Agile Development.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Taboos of Agile Development&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
While many parts of agile development are flexible there are some parts that are absolutely fixed.&lt;br /&gt;
&lt;br /&gt;
The taboos of Agile Development are in my mind:&lt;br /&gt;
&lt;br /&gt;
1. &lt;span style="font-style: italic;"&gt;Thou shall not miss stand up and iteration planning.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
If these meetings are skipped, then work is not done in the proper order, and the team does not properly communicate progress to management.&lt;br /&gt;
&lt;br /&gt;
2. &lt;span style="font-style: italic;"&gt;Thou shall not write code without unit tests.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
While agile teams have some control over length of iteration and scope of requirements for iterations, quality requirements are fixed.  All code components require covering unit tests so that code changes are justified, and coding errors can be easily located and fixed.&lt;br /&gt;
&lt;br /&gt;
This taboo has many positive consequences for the business - the largest being the minimization of re-work, which is very expensive.&lt;br /&gt;
&lt;br /&gt;
A side benefit is when interdisciplinary teams work together, and they publish unit tests with their work, it makes integration easier.  Consumers of services know how to use services provided, as examples are given.  And they have ways to test the code, so they can easily communicate problems.&lt;br /&gt;
&lt;br /&gt;
Finally, when integration is made easier, diverse teams increase trust and harmony.&lt;br /&gt;
&lt;br /&gt;
3. &lt;span style="font-style: italic;"&gt;Thou shall not disrespect other team members.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Agile development is development based on a self-organizing team.  If team members are disrespected the whole team suffers.  Mutual respect is the cornerstone of Agile in my opinion as much as the failing test is the cornerstone of Test Driven Development.&lt;br /&gt;
&lt;br /&gt;
4. &lt;span style="font-style: italic;"&gt;YAGNI&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
While it's not a formal taboo in Agile Development, I hear it so often during my work, that I decided to give this concept some space.&lt;br /&gt;
&lt;br /&gt;
"YAGNI" stands for "You Ain't Gonna Need It", and Agile generally provides the simplest solution for requirements.  While the more complex solution may be more powerful and provide features developers imagine may be needed, the truth is that most of the time that is not the case.&lt;br /&gt;
&lt;br /&gt;
"YAGNI" is a controversial topic for most programmers.  But agile developers generally lean towards the &lt;span style="font-style: italic;"&gt;KISS&lt;/span&gt; (Keep It Simple Stupid) solutions whenever possible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Totemism in Agile Development&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
According to Levi-Strauss, "totemism is a code, a symbolic language whose purpose is to signify social differences.  It is an instrument used by primitive populations for classification of social groups."&lt;br /&gt;
&lt;br /&gt;
Agile development speaks generally of pigs and chickens.  &lt;br /&gt;
&lt;br /&gt;
&lt;p style="margin-left: 1.3268in;" class="western"&gt;   &lt;font size="2"&gt; &lt;em&gt;A chicken and a pig are together when the   chicken says, "Let's start a restaurant!".&lt;br /&gt;
The pig thinks it over and says, "What would we call this restaurant?".&lt;br /&gt;
The chicken says, "Ham n' Eggs!".&lt;br /&gt;
The pig says, "No thanks, I'd be committed, but you'd only be   involved!".&lt;/em&gt; &lt;/font&gt; &lt;/p&gt;
&lt;p style="margin-left: 1.3268in;" class="western"&gt;   &lt;font size="2"&gt; &lt;em&gt;[Schwaber and Beedle, 2001]&lt;/em&gt; &lt;/font&gt; &lt;/p&gt;
In agile development, most of the rituals are performed by pigs (the self organized team of developers and testers) without the chickens (that is without the product owner).  This totemism is not a formal as it is in primitive cultures, but the social consequences are enforced.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Agile vs. Traditional Development, and Hot vs. Cold Cultures&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
According to Levi-Strauss, "hot" cultures are based on writing.  They produce a great deal of work, but like hot steam engines, they produce a great deal of waste and entropy.  Furthermore, the 'writers' in hot cultures tend to be higher in the social hierarchy than the non-writers.&lt;br /&gt;
&lt;br /&gt;
Cold cultures are preliterate, and they tend to rely on rituals, taboo, and totemism to preserve order.&lt;br /&gt;
&lt;br /&gt;
I think that traditional development is like most typical hot cultures.  Decision making is made by a few individuals at the top of the social hierarchy.  They do most of the record keeping, so they can easily justify their decisions whether or not they are correct.&lt;br /&gt;
&lt;br /&gt;
Agile development, while it may be a hotter culture than traditional development in the sense that there may be more record keeping on the development process, spreads the management of the process to all of the team members.  And its greater use of rituals, taboo, and totemism may be homeostatic functions that makes these teams more stable.  I think it's more of a tepid culture (hot and cold) based on its mix of practices. &lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;The Future Of Agile Development&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Based on this analysis, I have the following questions...  And I would love hear responses from you, the reader!&lt;br /&gt;
&lt;br /&gt;
Question 1:  Agile requires a structured meeting for the beginning of the work day, and for the start/end of iterations.  Would providing an end of day work meeting serve any purpose?  Or would that just be overkill?&lt;br /&gt;
&lt;br /&gt;
Question 2:  Are the rituals for Agile generally burdensome to you (if you are practicing it right now), or do they make your work more meaningful / enjoyable?  Which rituals do you appreciate, and which ones serve little or no purpose to you?&lt;br /&gt;
&lt;br /&gt;
Question 3:  Do you think pair programming is a good idea?  If you pair program, how often do you switch partners?  What do you think is an ideal switch rate per year?  What do you do if you find your coding partner less than ideal?&lt;br /&gt;
&lt;br /&gt;
Question 4:  What rituals do you think enable teams to learn the most during iterations?  Are there more rituals you know about that may facilitate more learning?  Perhaps a lessons learned section should be added to tear downs for iteration planning?&lt;br /&gt;
&lt;br /&gt;
Question 5: Does your organization have a ritual to facilitate code reviews?  I am struggling with this question, as most team members I know are somewhat defensive when it comes to sharing their code, even when it is produced by pair programming.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Happy coding!  And thanks for reading,&lt;br /&gt;
&lt;br /&gt;
Jonathan Starr&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=123899"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=123899" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/starr/aggbug/123899.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jonathan Starr</dc:creator>
            <guid>http://geekswithblogs.net/starr/archive/2008/07/19/scrum--agile-developement-a-renaissance-of-culture-through-the.aspx</guid>
            <pubDate>Sat, 19 Jul 2008 23:47:38 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/starr/comments/123899.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/starr/archive/2008/07/19/scrum--agile-developement-a-renaissance-of-culture-through-the.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/starr/comments/commentRss/123899.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/starr/services/trackbacks/123899.aspx</trackback:ping>
        </item>
        <item>
            <title>Hint for today - Install SQL Server 2008</title>
            <category>Software Development</category>
            <category>SQL Server</category>
            <link>http://geekswithblogs.net/starr/archive/2008/06/25/hint-for-today---install-sql-server-2008.aspx</link>
            <description>&lt;p&gt;Even if your databases are from prior versions of SQL Server, you should download the new CTP for SQL Server 2008.&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;a href="https://connect.microsoft.com/SQLServer/content/content.aspx?ContentID=5395"&gt;https://connect.microsoft.com/SQLServer/content/content.aspx?ContentID=5395&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;The new version's SQL Server Management Studio will connect to older versions of SQL Server databases and give you intellisense (almost as good as Red Gate's Sql Prompt!).&lt;/p&gt;
&lt;p&gt;Hope this saves you some time,&lt;/p&gt;
&lt;p&gt;Jonathan&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=123166"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=123166" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/starr/aggbug/123166.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jonathan Starr</dc:creator>
            <guid>http://geekswithblogs.net/starr/archive/2008/06/25/hint-for-today---install-sql-server-2008.aspx</guid>
            <pubDate>Wed, 25 Jun 2008 17:07:33 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/starr/comments/123166.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/starr/archive/2008/06/25/hint-for-today---install-sql-server-2008.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/starr/comments/commentRss/123166.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/starr/services/trackbacks/123166.aspx</trackback:ping>
        </item>
        <item>
            <title>Code Redundancy is NOT Bad - Part 2</title>
            <category>Agile Development</category>
            <category>C#</category>
            <category>Software Design</category>
            <category>Software Development</category>
            <category>ASP.NET</category>
            <link>http://geekswithblogs.net/starr/archive/2008/06/23/code-redundancy-is-not-bad---part-2.aspx</link>
            <description>&lt;p&gt;I got some responses from &lt;a href="http://geekswithblogs.net/starr/archive/2008/06/21/code-redundancy-is-not-necessarily-bad.aspx"&gt;a post I made on Saturday&lt;/a&gt;, that troubled me.  I really think it is important to code to an interface whenever possible - not only to give your application to flexibilty, but to give it testability as well.  So I thought I might give you an example.&lt;/p&gt;
&lt;p&gt;Say I have a class that depends on two other classes I have.  In this example, Partitioner depends on SystemIOAdapter and MerchantRecordCounter.                                                                                                                                                                &lt;/p&gt;
&lt;p&gt;                                                                                                                                                                                                                    
&lt;/p&gt;&lt;meta http-equiv="Content-Type" content="text/html; charset=windows-1252" /&gt;
&lt;meta content="Word.Document" name="ProgId" /&gt;
&lt;meta content="Microsoft Word 11" name="Generator" /&gt;
&lt;meta content="Microsoft Word 11" name="Originator" /&gt;
&lt;link href="using%20Interfaces_files/filelist.xml" rel="File-List" /&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;o:DocumentProperties&gt;
  &lt;o:Author&gt;jstarr&lt;/o:Author&gt;
  &lt;o:LastAuthor&gt;jstarr&lt;/o:LastAuthor&gt;
  &lt;o:Revision&gt;2&lt;/o:Revision&gt;
  &lt;o:TotalTime&gt;0&lt;/o:TotalTime&gt;
  &lt;o:Created&gt;2008-06-23T23:16:00Z&lt;/o:Created&gt;
  &lt;o:LastSaved&gt;2008-06-23T23:16:00Z&lt;/o:LastSaved&gt;
  &lt;o:Pages&gt;1&lt;/o:Pages&gt;
  &lt;o:Words&gt;51&lt;/o:Words&gt;
  &lt;o:Characters&gt;296&lt;/o:Characters&gt;
  &lt;o:Company&gt;Clearent, LLC&lt;/o:Company&gt;
  &lt;o:Lines&gt;2&lt;/o:Lines&gt;
  &lt;o:Paragraphs&gt;1&lt;/o:Paragraphs&gt;
  &lt;o:CharactersWithSpaces&gt;346&lt;/o:CharactersWithSpaces&gt;
  &lt;o:Version&gt;11.9999&lt;/o:Version&gt;
 &lt;/o:DocumentProperties&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:WordDocument&gt;
  &lt;w:SpellingState&gt;Clean&lt;/w:SpellingState&gt;
  &lt;w:GrammarState&gt;Clean&lt;/w:GrammarState&gt;
  &lt;w:PunctuationKerning/&gt;
  &lt;w:ValidateAgainstSchemas/&gt;
  &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;
  &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;
  &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;
  &lt;w:Compatibility&gt;
   &lt;w:BreakWrappedTables/&gt;
   &lt;w:SnapToGridInCell/&gt;
   &lt;w:WrapTextWithPunct/&gt;
   &lt;w:UseAsianBreakRules/&gt;
   &lt;w:DontGrowAutofit/&gt;
  &lt;/w:Compatibility&gt;
  &lt;w:BrowserLevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;
 &lt;/w:WordDocument&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:LatentStyles DefLockedState="false" LatentStyleCount="156"&gt;
 &lt;/w:LatentStyles&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;style type="text/css"&gt;&lt;!--
 /* Font Definitions */
 @font-face
	{font-family:Consolas;
	panose-1:2 11 6 9 2 2 4 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:modern;
	mso-font-pitch:fixed;
	mso-font-signature:-1610611985 1073750091 0 0 159 0;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-parent:"";
	margin:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";}
@page Section1
	{size:8.5in 11.0in;
	margin:1.0in 1.25in 1.0in 1.25in;
	mso-header-margin:.5in;
	mso-footer-margin:.5in;
	mso-paper-source:0;}
div.Section1
	{page:Section1;}
--&gt;&lt;/style&gt;&lt;!--[if gte mso 10]&gt;
&lt;style&gt;
 /* Style Definitions */
 table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-parent:"";
	mso-padding-alt:0in 5.4pt 0in 5.4pt;
	mso-para-margin:0in;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman";
	mso-ansi-language:#0400;
	mso-fareast-language:#0400;
	mso-bidi-language:#0400;}
&lt;/style&gt;
&lt;![endif]--&gt;
&lt;div class="Section1"&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;using&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt; Interfaces;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;namespace&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt; Program&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;Partitioner&lt;/span&gt; : &lt;span style="COLOR: #2b91af"&gt;IPartitioner&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; PartitionMerchants(&lt;span style="COLOR: #2b91af"&gt;ISystemIOAdapter&lt;/span&gt; io, &lt;span style="COLOR: #2b91af"&gt;IMerchantRecordCounter&lt;/span&gt; counter, &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; mappedPath, &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; partitionPath, &lt;span style="COLOR: blue"&gt;int&lt;/span&gt; maximumCount)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;           &lt;/span&gt;&lt;span style="COLOR: green"&gt;// implementation details.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;If the method PartitionMerchants had been written using class declarations instead of interfaces, than any test I would write for this method would be an integration test, not a unit test...  Because the failure could be in one of the dependent classes, not in the class that is under test in my unit test!  &lt;/p&gt;
&lt;p&gt;Integration tests are useful as smoke tests to identify that a problem exists.  But they don't help me quickly identify the root cause of problems when they arise.&lt;/p&gt;
&lt;p&gt;The following shows a unit test for a Partitioner class that depends on a SystemIOAdapter (so dependencies on a specific IO is removed),  and a MerchantrecordCounter class.  You may notice that the only way to mock these out are by creating classes that implement the same interfaces used in the PartitionMerchants method.  (In this case I am using Rhono Mocks to do this quickly).&lt;/p&gt;
&lt;meta content="Word.Document" name="ProgId" /&gt;
&lt;meta content="Microsoft Word 11" name="Generator" /&gt;
&lt;meta content="Microsoft Word 11" name="Originator" /&gt;
&lt;link href="using%20Clearent_files/filelist.xml" rel="File-List" /&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;o:DocumentProperties&gt;
  &lt;o:Author&gt;jstarr&lt;/o:Author&gt;
  &lt;o:LastAuthor&gt;jstarr&lt;/o:LastAuthor&gt;
  &lt;o:Revision&gt;1&lt;/o:Revision&gt;
  &lt;o:TotalTime&gt;0&lt;/o:TotalTime&gt;
  &lt;o:Created&gt;2008-06-23T23:06:00Z&lt;/o:Created&gt;
  &lt;o:LastSaved&gt;2008-06-23T23:06:00Z&lt;/o:LastSaved&gt;
  &lt;o:Pages&gt;1&lt;/o:Pages&gt;
  &lt;o:Words&gt;161&lt;/o:Words&gt;
  &lt;o:Characters&gt;923&lt;/o:Characters&gt;
  &lt;o:Company&gt;Clearent, LLC&lt;/o:Company&gt;
  &lt;o:Lines&gt;7&lt;/o:Lines&gt;
  &lt;o:Paragraphs&gt;2&lt;/o:Paragraphs&gt;
  &lt;o:CharactersWithSpaces&gt;1082&lt;/o:CharactersWithSpaces&gt;
  &lt;o:Version&gt;11.9999&lt;/o:Version&gt;
 &lt;/o:DocumentProperties&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:WordDocument&gt;
  &lt;w:SpellingState&gt;Clean&lt;/w:SpellingState&gt;
  &lt;w:GrammarState&gt;Clean&lt;/w:GrammarState&gt;
  &lt;w:PunctuationKerning/&gt;
  &lt;w:ValidateAgainstSchemas/&gt;
  &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;
  &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;
  &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;
  &lt;w:Compatibility&gt;
   &lt;w:BreakWrappedTables/&gt;
   &lt;w:SnapToGridInCell/&gt;
   &lt;w:WrapTextWithPunct/&gt;
   &lt;w:UseAsianBreakRules/&gt;
   &lt;w:DontGrowAutofit/&gt;
  &lt;/w:Compatibility&gt;
  &lt;w:BrowserLevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;
 &lt;/w:WordDocument&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:LatentStyles DefLockedState="false" LatentStyleCount="156"&gt;
 &lt;/w:LatentStyles&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;style type="text/css"&gt;&lt;!--
 /* Font Definitions */
 @font-face
	{font-family:Consolas;
	panose-1:2 11 6 9 2 2 4 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:modern;
	mso-font-pitch:fixed;
	mso-font-signature:-1610611985 1073750091 0 0 159 0;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-parent:"";
	margin:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";}
span.SpellE
	{mso-style-name:"";
	mso-spl-e:yes;}
span.GramE
	{mso-style-name:"";
	mso-gram-e:yes;}
@page Section1
	{size:8.5in 11.0in;
	margin:1.0in 1.25in 1.0in 1.25in;
	mso-header-margin:.5in;
	mso-footer-margin:.5in;
	mso-paper-source:0;}
div.Section1
	{page:Section1;}
--&gt;&lt;/style&gt;&lt;!--[if gte mso 10]&gt;
&lt;style&gt;
 /* Style Definitions */
 table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-parent:"";
	mso-padding-alt:0in 5.4pt 0in 5.4pt;
	mso-para-margin:0in;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman";
	mso-ansi-language:#0400;
	mso-fareast-language:#0400;
	mso-bidi-language:#0400;}
&lt;/style&gt;
&lt;![endif]--&gt;
&lt;div class="Section1"&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span class="GramE"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: Consolas"&gt;using&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: Consolas"&gt; &lt;span class="SpellE"&gt;Project.Interfaces&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span class="GramE"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: Consolas"&gt;using&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: Consolas"&gt; &lt;span class="SpellE"&gt;NUnit.Framework&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span class="GramE"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: Consolas"&gt;using&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: Consolas"&gt; &lt;span class="SpellE"&gt;Rhino.Mocks&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span class="GramE"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: Consolas"&gt;namespace&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: Consolas"&gt; &lt;span class="SpellE"&gt;Tests&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: Consolas"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;[&lt;span class="SpellE"&gt;&lt;span style="COLOR: #2b91af"&gt;TestFixture&lt;/span&gt;&lt;/span&gt;]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span class="GramE"&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt;&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span class="SpellE"&gt;&lt;span style="COLOR: #2b91af"&gt;Partitioner_UT&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #2b91af"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span class="GramE"&gt;&lt;span style="COLOR: blue"&gt;private&lt;/span&gt;&lt;/span&gt; &lt;span class="SpellE"&gt;&lt;span style="COLOR: #2b91af"&gt;MockRepository&lt;/span&gt;&lt;/span&gt; mocks;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span class="GramE"&gt;&lt;span style="COLOR: blue"&gt;private&lt;/span&gt;&lt;/span&gt; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; &lt;span class="SpellE"&gt;mappedpath&lt;/span&gt; = &lt;span style="COLOR: #a31515"&gt;"&lt;span class="SpellE"&gt;mappedpath&lt;/span&gt;"&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span class="GramE"&gt;&lt;span style="COLOR: blue"&gt;private&lt;/span&gt;&lt;/span&gt; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; &lt;span class="SpellE"&gt;partitionedpath&lt;/span&gt; = &lt;span style="COLOR: #a31515"&gt;"&lt;span class="SpellE"&gt;partitionedPath&lt;/span&gt;"&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span class="GramE"&gt;&lt;span style="COLOR: blue"&gt;private&lt;/span&gt;&lt;/span&gt; &lt;span class="SpellE"&gt;&lt;span style="COLOR: #2b91af"&gt;ISystemIOAdapter&lt;/span&gt;&lt;/span&gt; &lt;span class="SpellE"&gt;io&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: Consolas"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;[&lt;span class="SpellE"&gt;&lt;span style="COLOR: #2b91af"&gt;SetUp&lt;/span&gt;&lt;/span&gt;]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span class="GramE"&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt;&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; &lt;span class="SpellE"&gt;SetUp&lt;/span&gt;()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span class="GramE"&gt;mocks&lt;/span&gt; = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span class="SpellE"&gt;&lt;span style="COLOR: #2b91af"&gt;MockRepository&lt;/span&gt;&lt;/span&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;io&lt;/span&gt;&lt;/span&gt; = &lt;span class="SpellE"&gt;mocks.CreateMock&lt;/span&gt;&amp;lt;&lt;span class="SpellE"&gt;&lt;span style="COLOR: #2b91af"&gt;ISystemIOAdapter&lt;/span&gt;&lt;/span&gt;&amp;gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: Consolas"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;[&lt;span style="COLOR: #2b91af"&gt;Test&lt;/span&gt;]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span class="GramE"&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt;&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; &lt;span class="SpellE"&gt;PartitionDirectory_OnlyOneMerchantFound&lt;/span&gt;()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span class="SpellE"&gt;&lt;span style="COLOR: #2b91af"&gt;IMerchantRecordCounter&lt;/span&gt;&lt;/span&gt; counter = &lt;span class="SpellE"&gt;mocks.CreateMock&lt;/span&gt;&amp;lt;&lt;span class="SpellE"&gt;&lt;span style="COLOR: #2b91af"&gt;IMerchantRecordCounter&lt;/span&gt;&lt;/span&gt;&lt;span class="GramE"&gt;&amp;gt;(&lt;/span&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: Consolas"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span class="GramE"&gt;&lt;span style="COLOR: blue"&gt;using&lt;/span&gt;&lt;/span&gt; (&lt;span class="SpellE"&gt;mocks.Record&lt;/span&gt;())&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;&lt;span style="COLOR: #2b91af"&gt;// set up call expectations here&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: Consolas"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span class="GramE"&gt;&lt;span style="COLOR: blue"&gt;using&lt;/span&gt;&lt;/span&gt; (&lt;span class="SpellE"&gt;mocks.Playback&lt;/span&gt;())&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;&lt;span class="SpellE"&gt;&lt;span style="COLOR: #2b91af"&gt;IPartitioner&lt;/span&gt;&lt;/span&gt; &lt;span class="SpellE"&gt;partitioner&lt;/span&gt; = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;&lt;span style="COLOR: #2b91af"&gt;Partitioner&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="GramE"&gt;(&lt;/span&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;&lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;partitioner.PartitionMerchants&lt;/span&gt;&lt;/span&gt;&lt;span class="GramE"&gt;(&lt;/span&gt;&lt;span class="SpellE"&gt;io&lt;/span&gt;, counter, &lt;span class="SpellE"&gt;mappedpath&lt;/span&gt;, &lt;span class="SpellE"&gt;partitionedpath&lt;/span&gt;, 0);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: Consolas"&gt;                &lt;span style="COLOR: #2b91af"&gt;//&lt;/span&gt; Add assertions here&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: Consolas"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: Consolas"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: Consolas"&gt;I hope this clears up why it is so important to write code using interfaces whenever possible!&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: Consolas"&gt;Jonathan Starr&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: Consolas"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: Consolas"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=123103"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=123103" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/starr/aggbug/123103.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jonathan Starr</dc:creator>
            <guid>http://geekswithblogs.net/starr/archive/2008/06/23/code-redundancy-is-not-bad---part-2.aspx</guid>
            <pubDate>Mon, 23 Jun 2008 23:26:22 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/starr/comments/123103.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/starr/archive/2008/06/23/code-redundancy-is-not-bad---part-2.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/starr/comments/commentRss/123103.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/starr/services/trackbacks/123103.aspx</trackback:ping>
        </item>
        <item>
            <title>Code Redundancy Is NOT Necessarily Bad</title>
            <category>C#</category>
            <category>Software Design</category>
            <category>Software Development</category>
            <category>Agile Development</category>
            <link>http://geekswithblogs.net/starr/archive/2008/06/21/code-redundancy-is-not-necessarily-bad.aspx</link>
            <description>I was just reading Jeff Atwood's recent blog article &lt;a href="http://www.codinghorror.com/blog/archives/001136.html"&gt;Department of Declaration Redundancy Department&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
He makes the case that writing code without static typing is easier to read, and "Anything that &lt;strong&gt;removes redundancy from our code&lt;/strong&gt; should be aggressively pursued -- up to and including switching languages."&lt;br /&gt;
&lt;br /&gt;
My take is "maybe".&lt;br /&gt;
&lt;br /&gt;
Say I have a class named Example that implements two interfaces, IFoo and IBar.  When I instantiate I have several options when dong so statically.&lt;br /&gt;
&lt;br /&gt;
Example example1 = new Example();&lt;br /&gt;
IFoo example2 = new Example();&lt;br /&gt;
IBar example3 = new Example();&lt;br /&gt;
&lt;br /&gt;
In the second case I am ensuring that example2 implements a certain interface, and I can swap this out with an instantiation of a different object that implements IFoo.  This strategy pattern is fundamental to object oriented programming, and 'getting in the habit of writing code using var' can provide inflexible suboptimal design.  Additionally, if you are coding using TDD (Test Driven Development) you won't be able to write unit tests that remove all dependencies for your class unless you write your dependencies as interfaces.&lt;br /&gt;
&lt;br /&gt;
The way the compiler in &lt;a title="" href="http://geekswithblogs.net/starr/default.aspx" rel=""&gt;C#&lt;/a&gt; 3.5 automatically converts &lt;a title="" href="http://geekswithblogs.net/starr/default.aspx" rel=""&gt;LINQ&lt;/a&gt; queries to IEnumerable objects is nice.  But the following statement&lt;br /&gt;
&lt;br /&gt;
var reader = new StreamReader(fileName);&lt;br /&gt;
&lt;br /&gt;
is cast to the child static type, not to the its abstract parent (as I think it should be).&lt;br /&gt;
&lt;br /&gt;
Interested in your thoughts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jonathan&lt;br /&gt;
&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=123054"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=123054" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/starr/aggbug/123054.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jonathan Starr</dc:creator>
            <guid>http://geekswithblogs.net/starr/archive/2008/06/21/code-redundancy-is-not-necessarily-bad.aspx</guid>
            <pubDate>Sat, 21 Jun 2008 22:43:37 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/starr/comments/123054.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/starr/archive/2008/06/21/code-redundancy-is-not-necessarily-bad.aspx#feedback</comments>
            <slash:comments>9</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/starr/comments/commentRss/123054.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/starr/services/trackbacks/123054.aspx</trackback:ping>
        </item>
        <item>
            <title>Hillary as Darth</title>
            <category>Links</category>
            <category>Politics</category>
            <category>Humor</category>
            <link>http://geekswithblogs.net/starr/archive/2008/05/04/hillary-as-darth.aspx</link>
            <description>I try not to get too political in this blog, but I could not resist the Star Wars references!&lt;br /&gt;
&lt;br /&gt;
&lt;object width="425" height="355"&gt;
&lt;param value="http://www.youtube.com/v/a8lvc-azCXY&amp;amp;hl=en" name="movie" /&gt;
&lt;param value="transparent" name="wmode" /&gt;&lt;embed width="425" height="355" wmode="transparent" type="application/x-shockwave-flash" src="http://www.youtube.com/v/a8lvc-azCXY&amp;amp;hl=en"&gt;&lt;/embed&gt;&lt;/object&gt; &lt;br /&gt;
&lt;br /&gt;
Enjoy,&lt;br /&gt;
&lt;br /&gt;
Jon&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121889"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121889" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/starr/aggbug/121889.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jonathan Starr</dc:creator>
            <guid>http://geekswithblogs.net/starr/archive/2008/05/04/hillary-as-darth.aspx</guid>
            <pubDate>Sun, 04 May 2008 18:14:55 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/starr/comments/121889.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/starr/archive/2008/05/04/hillary-as-darth.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/starr/comments/commentRss/121889.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/starr/services/trackbacks/121889.aspx</trackback:ping>
        </item>
        <item>
            <title>Who Is An Average Developer?</title>
            <category>C#</category>
            <category>Critique</category>
            <category>Software Design</category>
            <category>Statistics</category>
            <category>Software Development</category>
            <category>WCF</category>
            <category>ASP.NET</category>
            <link>http://geekswithblogs.net/starr/archive/2008/05/02/who-is-an-average-developer.aspx</link>
            <description>&lt;p&gt;Every blogger I read claims to have superior coding skills, and every place I have worked claims only to hire superior developers.  In my current position and in my prior one, my employers say they interviewed more than twenty candidates to fill each position.&lt;/p&gt;
&lt;p&gt;If that's so, where are the average coders?&lt;/p&gt;
&lt;p&gt;I heard one theory - they are all unemployed!  And they keep trying to get jobs but they can't.  So interviewers have a skewed sampling of coders.&lt;/p&gt;
&lt;p&gt;I will confirm that in my current and previous position i have worked with much better developers than I had previously.&lt;/p&gt;
&lt;p&gt;But I wonder.  I have learned so much in the last year (WCF, TDD, &lt;a title="" rel="" href="http://geekswithblogs.net/starr/default.aspx"&gt;LINQ&lt;/a&gt;, PLINQ, Ruby, statistical modeling techniques with third party tools, Dundas charting, advanced NAnt builds, Webparts development, Appistry fabric development, Map-Reduce algorithms, etc.) - perhaps if I were to meet my former self from a year ago I would consider myself an average programmer.  &lt;/p&gt;
&lt;p&gt;My sense is that all coders are improving by leaps and bounds each year.&lt;/p&gt;
&lt;p&gt;And that most of us have an inflated opinion of our own coding skills.&lt;/p&gt;
&lt;p&gt;What do you think?&lt;/p&gt;
&lt;p&gt;Interested in your thoughts,&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Jonathan&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121858"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121858" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/starr/aggbug/121858.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jonathan Starr</dc:creator>
            <guid>http://geekswithblogs.net/starr/archive/2008/05/02/who-is-an-average-developer.aspx</guid>
            <pubDate>Sat, 03 May 2008 00:24:12 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/starr/comments/121858.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/starr/archive/2008/05/02/who-is-an-average-developer.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/starr/comments/commentRss/121858.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/starr/services/trackbacks/121858.aspx</trackback:ping>
        </item>
        <item>
            <title>Cats - From An Engineer's Perspective</title>
            <category>Humor</category>
            <link>http://geekswithblogs.net/starr/archive/2008/04/12/cats---from-an-engineers-perspective.aspx</link>
            <description>Admittedly I don't own any cats - I personally favor parrots.  &lt;br /&gt;
&lt;br /&gt;
But this video tickled my fancy anyway (loved the corporal cuddling - as if there were more than one kind!)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;object width="425" height="355"&gt;
&lt;param name="movie" value="http://www.youtube.com/v/mHXBL6bzAR4&amp;amp;hl=en" /&gt;
&lt;param name="wmode" value="transparent" /&gt;&lt;embed width="425" height="355" src="http://www.youtube.com/v/mHXBL6bzAR4&amp;amp;hl=en" type="application/x-shockwave-flash" wmode="transparent"&gt;&lt;/embed&gt;&lt;/object&gt; &lt;br /&gt;
Enjoy&lt;br /&gt;
&lt;br /&gt;
Jonathan&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121207"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121207" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/starr/aggbug/121207.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jonathan Starr</dc:creator>
            <guid>http://geekswithblogs.net/starr/archive/2008/04/12/cats---from-an-engineers-perspective.aspx</guid>
            <pubDate>Sun, 13 Apr 2008 04:02:26 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/starr/comments/121207.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/starr/archive/2008/04/12/cats---from-an-engineers-perspective.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/starr/comments/commentRss/121207.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/starr/services/trackbacks/121207.aspx</trackback:ping>
        </item>
        <item>
            <title>See the music</title>
            <category>Music</category>
            <link>http://geekswithblogs.net/starr/archive/2008/04/11/see-the-music.aspx</link>
            <description>&lt;p&gt;From the Zurich Chamber Orchestra&lt;/p&gt;
&lt;p&gt; &lt;object type="application/x-shockwave-flash" height="350" width="425" data="http://zappinternet.com/v/SaBzXoyGiq"&gt;
&lt;param value="allowFullScreen=true" name="FlashVars" /&gt;
&lt;param value="http://zappinternet.com/v/SaBzXoyGiq" name="movie" /&gt;
&lt;param value="true" name="allowFullScreen" /&gt;&lt;/object&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121197"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121197" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/starr/aggbug/121197.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jonathan Starr</dc:creator>
            <guid>http://geekswithblogs.net/starr/archive/2008/04/11/see-the-music.aspx</guid>
            <pubDate>Sat, 12 Apr 2008 01:37:51 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/starr/comments/121197.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/starr/archive/2008/04/11/see-the-music.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/starr/comments/commentRss/121197.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/starr/services/trackbacks/121197.aspx</trackback:ping>
        </item>
        <item>
            <title>Quantum Mental Health Break</title>
            <category>Music</category>
            <category>Humor</category>
            <link>http://geekswithblogs.net/starr/archive/2008/04/11/quantum-mental-health-break.aspx</link>
            <description>&lt;p&gt;It's better than MC Rove (but not by much)&lt;/p&gt;
&lt;p&gt;&lt;embed src="http://www.youtube.com/v/89jt7zJzkNQ&amp;amp;hl=en" width="425" height="355" type="application/x-shockwave-flash" wmode="transparent"&gt;&lt;/embed&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121195"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121195" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/starr/aggbug/121195.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jonathan Starr</dc:creator>
            <guid>http://geekswithblogs.net/starr/archive/2008/04/11/quantum-mental-health-break.aspx</guid>
            <pubDate>Sat, 12 Apr 2008 00:59:49 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/starr/comments/121195.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/starr/archive/2008/04/11/quantum-mental-health-break.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/starr/comments/commentRss/121195.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/starr/services/trackbacks/121195.aspx</trackback:ping>
        </item>
        <item>
            <title>Beta Risk</title>
            <category>Finance</category>
            <category>Financial Engineering</category>
            <link>http://geekswithblogs.net/starr/archive/2008/03/28/beta-risk.aspx</link>
            <description>&lt;p&gt;A friend at work recently asked me to look at some of the equities he holds in his portfolio.  While I am a developer, I also have an MBA in Finance; I enjoy evaluating stocks and readily agreed.  &lt;/p&gt;
&lt;p&gt;One of my friend's holdings is  Wal-Mart (WMT), and I was a bit surprised to see that finance.yahoo.com listed WMT's Beta, which is a measure of a stock's risk relative to the market, as -0.14.  It is uncommon to find stocks with negative Betas.  Generally this means that the stock moves in the opposite direction as the market.  And the low Beta value, i.e. | Beta | &amp;lt; 1, indicates that the stock is less risky than the S&amp;amp;P500.&lt;/p&gt;
&lt;p&gt;So I performed a few calculations, and measured the Beta for WMT using closing month prices for WMT and the S&amp;amp;P500  for the last five years, and reproduced the number listed on Yahoo!  But I retried the calculation going all the way back to 1972, and got a Beta measurement of 1.23.  And then again i measured beta for WMT only using the last 24 months of data and got a measurement of -0.31.  (See graphs below for details).&lt;/p&gt;
&lt;p&gt;&lt;img style="WIDTH: 594px; HEIGHT: 460px" height="742" alt="" width="1115" src="/images/geekswithblogs_net/starr/WMT Beta Last 60 Months.PNG" /&gt;&lt;/p&gt;
&lt;p&gt;WMT Calculation Beta - Last 60 Months (through March 2008)&lt;/p&gt;
&lt;p&gt;&lt;img style="WIDTH: 600px; HEIGHT: 410px" height="752" alt="" width="1119" src="/images/geekswithblogs_net/starr/WMT Beta - Data Through 1972.PNG" /&gt;&lt;/p&gt;
&lt;p&gt;WMT Calculation Beta - Data 1972 through March, 2008&lt;/p&gt;
&lt;p&gt;&lt;img style="WIDTH: 606px; HEIGHT: 351px" height="732" alt="" width="1119" src="/images/geekswithblogs_net/starr/WMT Beta Last 2 Years.PNG" /&gt;&lt;/p&gt;
&lt;p&gt;WMT Calculation Beta - Last Two Years &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;So, given all of the variation in Beta measurements, what is a good way for estimating future Beta for a stock?  This really is an important question, as Beta dominates the function to determine the Weighted Cost of Capital for a stock.  (WACC = D/C ( Kd) + E/C ( Beta x Market Rate of Return).  And if  you are doing Beta arbitrage (buying baskets of low Beta stocks and short selling Beta stocks), this would be crucial.  (Here's an &lt;a href="http://www.arrowstreetcapital.com/pdf/beta_arbitrage.pdf"&gt;interesting article on the subject&lt;/a&gt;... ) &lt;/p&gt;
&lt;p&gt;I suspect that modelers should make adjustments for changing legal environments, capital structurres, dynamics between companies and their customers, suppliers, and competitors...  But which changes dominate Beta changes.  Can the past Beta measurements be used at all to forecast future Beta?&lt;/p&gt;
&lt;p&gt;Any ideas out there?&lt;/p&gt;
&lt;p&gt;Interested in your thoughts,&lt;/p&gt;
&lt;p&gt;Jonathan Starr&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=120839"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=120839" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/starr/aggbug/120839.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jonathan Starr</dc:creator>
            <guid>http://geekswithblogs.net/starr/archive/2008/03/28/beta-risk.aspx</guid>
            <pubDate>Sat, 29 Mar 2008 00:29:28 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/starr/comments/120839.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/starr/archive/2008/03/28/beta-risk.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/starr/comments/commentRss/120839.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/starr/services/trackbacks/120839.aspx</trackback:ping>
        </item>
        <item>
            <title>Flood</title>
            <category>Personal</category>
            <link>http://geekswithblogs.net/starr/archive/2008/03/24/flood.aspx</link>
            <description>&lt;p&gt;Some friends and relatives have been asking about the flood conditions in Fenton, MO (outside Saint Louis) so I thought I should post some pics of the affected areas.  My home has not been harmed (knock on wood!), but the area around me certainly has been.&lt;/p&gt;
&lt;p&gt;&lt;img height="360" width="480" alt="" src="/images/geekswithblogs_net/starr/FloodInFenton.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;I think this is a pic of a trailer park about three miles from my house.&lt;/p&gt;
&lt;p&gt;&lt;img height="360" width="480" alt="" src="/images/geekswithblogs_net/starr/FloodInFenton3.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;Another pic..&lt;/p&gt;
&lt;p&gt;There are a few bars, a public swimming pool and a soccer field affected by the rains as well.&lt;/p&gt;
&lt;p&gt;Tueday, Wednesday and Thursday we are expecting more rain as well (Today is Monday...)&lt;/p&gt;
&lt;p&gt;Local stations are saying the water levels should go down fast, however.&lt;/p&gt;
&lt;p&gt;Jonathan&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=120733"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=120733" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/starr/aggbug/120733.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jonathan Starr</dc:creator>
            <guid>http://geekswithblogs.net/starr/archive/2008/03/24/flood.aspx</guid>
            <pubDate>Mon, 24 Mar 2008 23:49:39 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/starr/comments/120733.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/starr/archive/2008/03/24/flood.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/starr/comments/commentRss/120733.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/starr/services/trackbacks/120733.aspx</trackback:ping>
        </item>
        <item>
            <title>HttpModule Question</title>
            <category>C#</category>
            <category>ASP.NET</category>
            <link>http://geekswithblogs.net/starr/archive/2008/03/04/httpmodule-question.aspx</link>
            <description>I recently implemented an HttpModule in a web project (.NET 2.0 Framework on Windows XP), and noticed some anomolous behavior... The Init method for the HttpModule does not always fire (sometimes it did however) after the web application started.  I used an obvious workaround, and took advantage of the event model exposed in global.asax.  But I am disturbed from what I saw.&lt;br /&gt;
&lt;br /&gt;
Has anyone else noticed this anomaly?  Is this something that can be fixed?&lt;br /&gt;
&lt;br /&gt;
Thanks for the help!&lt;br /&gt;
&lt;br /&gt;
Jonathan Starr&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=120210"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=120210" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/starr/aggbug/120210.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jonathan Starr</dc:creator>
            <guid>http://geekswithblogs.net/starr/archive/2008/03/04/httpmodule-question.aspx</guid>
            <pubDate>Wed, 05 Mar 2008 03:21:41 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/starr/comments/120210.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/starr/archive/2008/03/04/httpmodule-question.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/starr/comments/commentRss/120210.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/starr/services/trackbacks/120210.aspx</trackback:ping>
        </item>
        <item>
            <title>Saint Louis Microsoft Technology Calendar Updated...</title>
            <category>C#</category>
            <category>Sharepoint</category>
            <category>CRM</category>
            <link>http://geekswithblogs.net/starr/archive/2008/03/02/saint-louis-microsoft-technology-calendar-updated.aspx</link>
            <description>&lt;p&gt;&lt;span class="Class"&gt;&lt;font size="5" color="#ee5c2e"&gt;improve &lt;/font&gt;&lt;/span&gt;&lt;span class="Symbol"&gt;&lt;font size="5" color="#3387cc"&gt;my &lt;/font&gt;&lt;/span&gt;&lt;font size="5"&gt;=&amp;gt; &lt;/font&gt;&lt;span class="String"&gt;&lt;font size="5" color="#65b042"&gt;'code' &lt;/font&gt;&lt;/span&gt;&lt;a href="http://fusion.google.com/add?feedurl=http%3A//geekswithblogs.net/starr/Rss.aspx"&gt;&lt;img width="104" height="17" border="0" alt="Add to Google" src="http://buttons.googlesyndication.com/fusion/add.gif" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I have updated the unified Saint Louis Microsoft Technology calendar &lt;a href="http://www.google.com/calendar/embed?src=aGc2ZHR1c2lqOGdtbHM1aTNpNWQ2YjBlMG9AZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ"&gt;here&lt;/a&gt;.&lt;/p&gt;
Here is a quick summary:&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;St. Louis &lt;a title="" href="http://geekswithblogs.net/starr/default.aspx" rel=""&gt;C#&lt;/a&gt; User Group&lt;/span&gt;   3/10/2008 6:00pm&lt;br /&gt;
Our guest, live from France, will be Patrick Smacchia, creator of NDepend and author of Practical &lt;a title="" href="http://geekswithblogs.net/starr/default.aspx" rel=""&gt;C#&lt;/a&gt; 2 and .NET 2.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Sharepoint meeting&lt;/span&gt;  3/11/2008  8:30am&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;St Louis Sql Server User Group&lt;/span&gt; 3/11/2008  1:00pm&lt;br /&gt;
Writing better T-SQL Queries, Avoid Cursors and Dynamic SQL&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;CRM User Group Meeting&lt;/span&gt; 3/27/2008 8:30am&lt;br /&gt;
&lt;br style="font-weight: bold;" /&gt;
&lt;span style="font-weight: bold;"&gt;NET User Group Meeting &lt;/span&gt;3/31/2008 5:30pm&lt;br /&gt;
Denny Boynton “Software as a Service”&lt;br /&gt;
&lt;br /&gt;
All events take place at Three City Place Drive, Suite 1100, Creve Coeur, MO 63141&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Hope to see you there!&lt;/p&gt;
&lt;p&gt;Jonathan&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=120150"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=120150" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/starr/aggbug/120150.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jonathan Starr</dc:creator>
            <guid>http://geekswithblogs.net/starr/archive/2008/03/02/saint-louis-microsoft-technology-calendar-updated.aspx</guid>
            <pubDate>Mon, 03 Mar 2008 05:19:53 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/starr/comments/120150.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/starr/archive/2008/03/02/saint-louis-microsoft-technology-calendar-updated.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/starr/comments/commentRss/120150.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/starr/services/trackbacks/120150.aspx</trackback:ping>
        </item>
        <item>
            <title>Buddhabrot</title>
            <category>Religion</category>
            <category>Africa</category>
            <category>1CCN.COM</category>
            <link>http://geekswithblogs.net/starr/archive/2008/02/28/buddhabrot.aspx</link>
            <description>&lt;p&gt;I apologize for not writing into the blog for some time.&lt;/p&gt;
&lt;p&gt;A few weeks ago, I attended the wedding of my good friend, Michael Bittel.  His &lt;a href="http://mdbck.blogspot.com/"&gt;blog on Africa&lt;/a&gt;, while it is updated infrequently, certainly certainly helps me keep things in perspective.&lt;/p&gt;
&lt;p&gt;Also, I have continued to do some work for &lt;a href="http://www.1CCN.com"&gt;www.1CCN.com&lt;/a&gt; .  Please check out this web site/ phone application for project management if you, or someone you know, is in the construction industry.  We recently added the ability to add pictures to status updates.  Hopefully this will be useful to someone.&lt;/p&gt;
&lt;p&gt;I started a new job recently for a startup company here in Saint Louis, MO.  One of my new co-workers showed me &lt;a href="http://www.superliminal.com/fractals/bbrot/bbrot.htm"&gt;this interesting rendition of the Mandelbrot Set&lt;/a&gt; (yeah, I'm a big fan).  Basically, instead of using real numbers to create the set, the renderer used complex numbers...  And the results are pretty eerie... Looks like a buddha!&lt;/p&gt;
&lt;center&gt;&lt;embed src="http://www.youtube.com/v/5ej3dj4x64k" width="425" height="355" type="application/x-shockwave-flash" wmode="transparent"&gt;&lt;/embed&gt; &lt;/center&gt;
&lt;p&gt; &lt;img height="750" alt="" width="600" src="/images/geekswithblogs_net/starr/half_res_rgb.gif" /&gt;&lt;/p&gt;
&lt;p&gt;Hope everyone reading this entry is doing well,&lt;/p&gt;
&lt;p&gt;Jonathan&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;

&lt;a href="http://www.mybloglog.com/buzz/community/jonathanstarrsblog/" rel="2f3fece57ea96980b397685d86b7c38985d96400"&gt;Undergoing MyBlogLog Verification&lt;/a&gt; &lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=120069"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=120069" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/starr/aggbug/120069.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jonathan Starr</dc:creator>
            <guid>http://geekswithblogs.net/starr/archive/2008/02/28/buddhabrot.aspx</guid>
            <pubDate>Fri, 29 Feb 2008 02:14:36 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/starr/comments/120069.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/starr/archive/2008/02/28/buddhabrot.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/starr/comments/commentRss/120069.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/starr/services/trackbacks/120069.aspx</trackback:ping>
        </item>
        <item>
            <title>LINQ and Financial Simulation</title>
            <category>C#</category>
            <category>Software Design</category>
            <category>Statistics</category>
            <category>Software Development</category>
            <category>Financial Engineering</category>
            <link>http://geekswithblogs.net/starr/archive/2008/01/25/linq-and-financial-simulation.aspx</link>
            <description>&lt;p&gt;&lt;span class="Class"&gt;&lt;font color="#ee5c2e" size="5"&gt;improve &lt;/font&gt;&lt;/span&gt;&lt;span class="Symbol"&gt;&lt;font color="#3387cc" size="5"&gt;my &lt;/font&gt;&lt;/span&gt;&lt;font size="5"&gt;=&amp;gt; &lt;/font&gt;&lt;span class="String"&gt;&lt;font color="#65b042" size="5"&gt;'code' &lt;/font&gt;&lt;/span&gt;&lt;a href="http://fusion.google.com/add?feedurl=http%3A//geekswithblogs.net/starr/Rss.aspx"&gt;&lt;img height="17" alt="Add to Google" width="104" border="0" src="http://buttons.googlesyndication.com/fusion/add.gif" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I just started playing around with LINQ seriously, and I really love some of the features incorporated, like the Enumerable.Range() function and how it can be used for integer programming.&lt;/p&gt;
&lt;p&gt;Here's a simple function for generating lognormal distributions (could be useful for financial engineering).&lt;/p&gt;
&lt;p&gt;Hope you're enjoying the samples,&lt;/p&gt;
&lt;p&gt;Jonathan Starr&lt;/p&gt;
&lt;p&gt; &lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;public&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; &lt;span style="COLOR: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="COLOR: blue"&gt;double&lt;/span&gt;&amp;gt; GenerateLogNormalDistribution(&lt;span style="COLOR: blue"&gt;int&lt;/span&gt; numberOfTimes, &lt;span style="COLOR: blue"&gt;double&lt;/span&gt; mean, &lt;span style="COLOR: blue"&gt;double&lt;/span&gt; standardDeviation)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: #2b91af"&gt;Random&lt;/span&gt; randomGenerator = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;Random&lt;/span&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;var&lt;/span&gt; randomNumbers = &lt;span style="COLOR: blue"&gt;from&lt;/span&gt; theNumbers &lt;span style="COLOR: blue"&gt;in&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;Enumerable&lt;/span&gt;.Range(1, &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;     &lt;/span&gt;numberOfTimes).Select(x =&amp;gt; randomGenerator.Next(1,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.5in; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;1000)/1000.0)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;select&lt;/span&gt; theNumbers;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="COLOR: blue"&gt;double&lt;/span&gt;&amp;gt; results = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="COLOR: blue"&gt;double&lt;/span&gt;&amp;gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;randomNumbers.ToList().ForEach&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;(x =&amp;gt; results.Add(mean + (standardDeviation * (&lt;span style="COLOR: #2b91af"&gt;Math&lt;/span&gt;.Sqrt(-2 * &lt;span style="COLOR: #2b91af"&gt;Math&lt;/span&gt;.Log(x)) * &lt;span style="COLOR: #2b91af"&gt;Math&lt;/span&gt;.Cos(6.28 * x)))));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;return&lt;/span&gt; results;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=118934"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=118934" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/starr/aggbug/118934.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jonathan Starr</dc:creator>
            <guid>http://geekswithblogs.net/starr/archive/2008/01/25/linq-and-financial-simulation.aspx</guid>
            <pubDate>Sat, 26 Jan 2008 02:00:25 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/starr/comments/118934.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/starr/archive/2008/01/25/linq-and-financial-simulation.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/starr/comments/commentRss/118934.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/starr/services/trackbacks/118934.aspx</trackback:ping>
        </item>
        <item>
            <title>Surprising CLR Behavior</title>
            <category>C#</category>
            <category>Software Design</category>
            <category>Software Development</category>
            <link>http://geekswithblogs.net/starr/archive/2008/01/25/surprising-clr-behavior.aspx</link>
            <description>&lt;p&gt;&lt;span class="Class"&gt;&lt;font color="#ee5c2e" size="5"&gt;improve &lt;/font&gt;&lt;/span&gt;&lt;span class="Symbol"&gt;&lt;font color="#3387cc" size="5"&gt;my &lt;/font&gt;&lt;/span&gt;&lt;font size="5"&gt;=&amp;gt; &lt;/font&gt;&lt;span class="String"&gt;&lt;font color="#65b042" size="5"&gt;'code' &lt;/font&gt;&lt;/span&gt;&lt;a href="http://fusion.google.com/add?feedurl=http%3A//geekswithblogs.net/starr/Rss.aspx"&gt;&lt;img height="17" alt="Add to Google" width="104" border="0" src="http://buttons.googlesyndication.com/fusion/add.gif" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The following code (surprise, surprise) compiles.  But it does not work as intended  (you won't be able to "doSomethingElse()!&lt;/p&gt;
&lt;p&gt;Can any of you figure out why?  (I have my suspicions.)&lt;/p&gt;
&lt;p&gt;Jonathan Starr&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;using&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt; System;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;namespace&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt; test&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;internal&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;BaseTest&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;private&lt;/span&gt; &lt;span style="COLOR: blue"&gt;int&lt;/span&gt; _prop1;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;virtual&lt;/span&gt; &lt;span style="COLOR: blue"&gt;int&lt;/span&gt; prop1&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;get&lt;/span&gt; { &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; _prop1; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;set&lt;/span&gt; { _prop1 = &lt;span style="COLOR: blue"&gt;value&lt;/span&gt;; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;       &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;internal&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;DerivedTest&lt;/span&gt; : &lt;span style="COLOR: #2b91af"&gt;BaseTest&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;override&lt;/span&gt; &lt;span style="COLOR: blue"&gt;int&lt;/span&gt; prop1&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;set&lt;/span&gt; { &lt;span style="COLOR: blue"&gt;base&lt;/span&gt;.prop1 = &lt;span style="COLOR: blue"&gt;value&lt;/span&gt;; &lt;font size="2"&gt;doSomethingElse();&lt;/font&gt; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=118927"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=118927" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/starr/aggbug/118927.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jonathan Starr</dc:creator>
            <guid>http://geekswithblogs.net/starr/archive/2008/01/25/surprising-clr-behavior.aspx</guid>
            <pubDate>Fri, 25 Jan 2008 22:45:20 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/starr/comments/118927.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/starr/archive/2008/01/25/surprising-clr-behavior.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/starr/comments/commentRss/118927.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/starr/services/trackbacks/118927.aspx</trackback:ping>
        </item>
        <item>
            <title>Response to Brainteaser #11?</title>
            <category>C#</category>
            <category>Software Design</category>
            <category>Software Development</category>
            <link>http://geekswithblogs.net/starr/archive/2008/01/25/response-to-brainteaser-11.aspx</link>
            <description>&lt;font face="Arial"&gt;
&lt;p&gt;I have been pretty excited about LINQ, because it seems to do all of the optimization for me for free (kinda like T-SQL). &lt;/p&gt;
&lt;p&gt;Yow Han-Lee asks in his blog, &lt;a href="http://geekswithblogs.net/yowhann/archive/2008/01/25/118895.aspx"&gt;Brainteaser #11&lt;/a&gt;, Given any two large List&lt;int&gt;&lt;/int&gt;, what is the quickest way to find the mutual intersection of the two? Now take into consideration memory constraints? &lt;/p&gt;
&lt;p&gt; Well, the answer that only takes a minute or two for me is the following...&lt;/p&gt;
&lt;p&gt;Comments welcome!&lt;/p&gt;
&lt;p&gt;Jonathan Starr&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;/p&gt;
&lt;p&gt;namespace orderlisttest&lt;br /&gt;
{&lt;/p&gt;
&lt;p&gt;    internal class Number&lt;br /&gt;
    {&lt;br /&gt;
        private int _Num1;&lt;br /&gt;
        public int Num1&lt;br /&gt;
        {&lt;br /&gt;
            get { return _Num1; }&lt;br /&gt;
            set { _Num1 = value; }&lt;br /&gt;
        }&lt;/p&gt;
&lt;p&gt;        public Number(int theNumber)&lt;br /&gt;
        {&lt;br /&gt;
            this._Num1 = theNumber;&lt;br /&gt;
        }&lt;/p&gt;
&lt;p&gt;    }&lt;br /&gt;
    public class start&lt;br /&gt;
    {&lt;/p&gt;
&lt;p&gt;        public static void Main(string[] args)&lt;br /&gt;
        {&lt;br /&gt;
            var bigList1 = new List&amp;lt;Number&amp;gt;();&lt;br /&gt;
            var bigList2 = new List&amp;lt;Number&amp;gt;();&lt;/p&gt;
&lt;p&gt;            for (int counter = 0; counter &amp;lt; 100000; counter++)&lt;br /&gt;
            {&lt;br /&gt;
                Random randomGenerator = new Random();&lt;br /&gt;
                int number = randomGenerator.Next(10000000);&lt;br /&gt;
                bigList1.Add(new Number(number));&lt;/p&gt;
&lt;p&gt;                int number2 = randomGenerator.Next(10000000);&lt;br /&gt;
                bigList2.Add(new Number(number2));&lt;br /&gt;
            }&lt;/p&gt;
&lt;p&gt;            var Found = from o1 in bigList1&lt;br /&gt;
                        join o2 in bigList2 on o1.Num1 equals o2.Num1&lt;br /&gt;
                        select new { o1.Num1 };&lt;/p&gt;
&lt;p&gt;            Console.WriteLine(Found.Count().ToString() + " items were found in common.");&lt;br /&gt;
        }&lt;/p&gt;
&lt;p&gt;     }&lt;br /&gt;
    &lt;br /&gt;
}&lt;br /&gt;
&lt;/p&gt;
&lt;/font&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=118922"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=118922" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/starr/aggbug/118922.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jonathan Starr</dc:creator>
            <guid>http://geekswithblogs.net/starr/archive/2008/01/25/response-to-brainteaser-11.aspx</guid>
            <pubDate>Fri, 25 Jan 2008 21:23:24 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/starr/comments/118922.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/starr/archive/2008/01/25/response-to-brainteaser-11.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/starr/comments/commentRss/118922.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/starr/services/trackbacks/118922.aspx</trackback:ping>
        </item>
        <item>
            <title>Beauty.Equals(Truth) ?</title>
            <category>C#</category>
            <category>Personal</category>
            <category>Language</category>
            <category>Software Development</category>
            <link>http://geekswithblogs.net/starr/archive/2008/01/22/118795.aspx</link>
            <description>&lt;p&gt;&lt;span class="Class"&gt;&lt;font color="#ee5c2e" size="5"&gt;improve &lt;/font&gt;&lt;/span&gt;&lt;span class="Symbol"&gt;&lt;font color="#3387cc" size="5"&gt;my &lt;/font&gt;&lt;/span&gt;&lt;font size="5"&gt;=&amp;gt; &lt;/font&gt;&lt;span class="String"&gt;&lt;font color="#65b042" size="5"&gt;'code' &lt;/font&gt;&lt;/span&gt;&lt;a href="http://fusion.google.com/add?feedurl=http%3A//geekswithblogs.net/starr/Rss.aspx"&gt;&lt;img height="17" alt="Add to Google" width="104" border="0" src="http://buttons.googlesyndication.com/fusion/add.gif" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I noticed an entry on Wikipedia that made me smile.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Shakespeare_(programming_language)"&gt;SPL or the Shakespeare Programming Language&lt;/a&gt; is, in the words of Wikipedia, "designed to make programs appear to be something other than programs; in this case, Shakespearean plays. "&lt;/p&gt;
&lt;p align="center"&gt;&lt;img height="148" alt="" width="130" src="/images/geekswithblogs_net/starr/william-shakespeare.gif" /&gt;&lt;/p&gt;
&lt;p&gt;Variables in code are treated like characters in a Shakespearean play.  Variables must "enter" to be useable (allocated?) and "exit" to be declare out of scope...   And variables speak their mind to output to the console.  For instance,&lt;/p&gt;
&lt;font face="Courier New"&gt;[Enter Juliet] &lt;/font&gt;&lt;br /&gt;
&lt;font face="Courier New"&gt;[Enter Romeo and Juliet] &lt;/font&gt;&lt;br /&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;Hamlet:&lt;br /&gt;
Thou art as sweet as the sum of the sum of Romeo and his horse and his black cat! Speak thy mind!&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;[Exit Romeo] &lt;/font&gt;&lt;br /&gt;
&lt;font face="Courier New"&gt;[Exeunt Romeo and Juliet] [Exeunt]&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;My only point is - Do you write your code pleasing to the eye?  Or is it a jumble of symbols barely comprehensible?  &lt;/p&gt;
&lt;p&gt;I am all for bringing a sense of beauty to our coding, and am open to suggestions.&lt;/p&gt;
&lt;p&gt;Interested in your comments,&lt;/p&gt;
&lt;p&gt;Jonathan Starr&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=118795"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=118795" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/starr/aggbug/118795.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jonathan Starr</dc:creator>
            <guid>http://geekswithblogs.net/starr/archive/2008/01/22/118795.aspx</guid>
            <pubDate>Tue, 22 Jan 2008 19:58:11 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/starr/comments/118795.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/starr/archive/2008/01/22/118795.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/starr/comments/commentRss/118795.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/starr/services/trackbacks/118795.aspx</trackback:ping>
        </item>
        <item>
            <title>The Sesame Street Presentation Rule - Not #1</title>
            <category>Critique</category>
            <category>Personal</category>
            <category>Humor</category>
            <link>http://geekswithblogs.net/starr/archive/2008/01/21/118746.aspx</link>
            <description>&lt;p&gt;I just read through Jeff Atwood's recent post - &lt;a href="http://www.codinghorror.com/blog/archives/001040.html"&gt;The Sesame Street Presentation Rule&lt;/a&gt; - and it warrants a reaction.&lt;/p&gt;
&lt;p&gt;The most important feature of a presentation is that it communicates how you can benefit your audience.  People are not actively trying to fund cartoons or quips as much as they are looking out for their own very personal needs (whatever that is).  So, it is vital that we analyze our audience for their needs - as needs differ.&lt;/p&gt;
&lt;p&gt;Employees are generally interested in security, and possibilities for advancement.  Investors generally look for quick and sizable returns on investment. If you focus on the particular interests of your audience, there is very little need to be funny.  &lt;/p&gt;
&lt;p&gt;Humor can help - I will concede.  But it is so difficult to be funny.&lt;/p&gt;
&lt;p&gt;Hey, Jeff Atwoods' blog is a case in point.  Really not very funny, but he satisfies the needs of his readers to explore quirky topics.&lt;/p&gt;
&lt;p&gt;Interested in your thoughts,&lt;/p&gt;
&lt;p&gt;Jonathan&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=118746"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=118746" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/starr/aggbug/118746.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jonathan Starr</dc:creator>
            <guid>http://geekswithblogs.net/starr/archive/2008/01/21/118746.aspx</guid>
            <pubDate>Mon, 21 Jan 2008 20:53:25 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/starr/comments/118746.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/starr/archive/2008/01/21/118746.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/starr/comments/commentRss/118746.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/starr/services/trackbacks/118746.aspx</trackback:ping>
        </item>
        <item>
            <title>Thought Experiment: Reforming Meetings</title>
            <category>Personal</category>
            <category>Thought Experiments</category>
            <category>Management</category>
            <link>http://geekswithblogs.net/starr/archive/2008/01/16/118618.aspx</link>
            <description>&lt;p&gt;I just read an &lt;a href="http://blag.xkcd.com/2008/01/14/robot9000-and-xkcd-signal-attacking-noise-in-chat/"&gt;excellent article&lt;/a&gt; posted on XKCD on how to create a better IRC chat. &lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://www.bc.edu/bc_org/avp/cas/his/CoreArt/art/resourcesb/dav_soc.jpg"&gt;&lt;img width="300" height="195" border="0" align="bottom" src="http://www.bc.edu/bc_org/avp/cas/his/CoreArt/art/resourcesb/dav_soc_2.jpg" naturalsizeflag="3" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Basically, to keep chats interesting, the server boots out users who enter things already entered before.&lt;/p&gt;
&lt;p&gt;Wouldn't that be good for corporate meetings? The rule could be amended: If someone says anything said before (even using different words), the person cannot speak again for the duration of the meeting.  &lt;/p&gt;
&lt;p&gt;Imagine how much shorter meetings would be with this rule.  No more endless repetitions.  No more wasted time.&lt;/p&gt;
&lt;p&gt;Another nice side effect is that meeting attendees might pay more attention to what is said - because they are enforcing the rule!&lt;/p&gt;
&lt;p&gt;Interested in you thoughts,&lt;/p&gt;
&lt;p&gt;Jonathan Starr&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=118618"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=118618" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/starr/aggbug/118618.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jonathan Starr</dc:creator>
            <guid>http://geekswithblogs.net/starr/archive/2008/01/16/118618.aspx</guid>
            <pubDate>Wed, 16 Jan 2008 23:31:18 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/starr/comments/118618.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/starr/archive/2008/01/16/118618.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/starr/comments/commentRss/118618.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/starr/services/trackbacks/118618.aspx</trackback:ping>
        </item>
        <item>
            <title>Automatic Properties in C# - A Critique</title>
            <category>C#</category>
            <category>Critique</category>
            <category>Software Design</category>
            <link>http://geekswithblogs.net/starr/archive/2008/01/15/118592.aspx</link>
            <description>&lt;p&gt;&lt;span class="Class"&gt;&lt;font color="#ee5c2e" size="5"&gt;improve &lt;/font&gt;&lt;/span&gt;&lt;span class="Symbol"&gt;&lt;font color="#3387cc" size="5"&gt;my &lt;/font&gt;&lt;/span&gt;&lt;font size="5"&gt;=&amp;gt; &lt;/font&gt;&lt;span class="String"&gt;&lt;font color="#65b042" size="5"&gt;'code' &lt;/font&gt;&lt;/span&gt;&lt;a href="http://fusion.google.com/add?feedurl=http%3A//geekswithblogs.net/starr/Rss.aspx"&gt;&lt;img height="17" alt="Add to Google" width="104" border="0" src="http://buttons.googlesyndication.com/fusion/add.gif" /&gt;&lt;/a&gt;&lt;/p&gt;
In the latest release of Orcas, one of the new features provided is "Automatic Properties" which allows developers to use a shorthand like the following:&lt;br /&gt;
&lt;br /&gt;
&lt;font face="arial" size="2"&gt;    &lt;font color="#0000ff"&gt;public class &lt;/font&gt;&lt;font color="#000000"&gt;Person {&lt;br /&gt;
    &lt;br /&gt;
        &lt;/font&gt;&lt;font color="#0000ff"&gt;public string &lt;/font&gt;&lt;font color="#000000"&gt;FirstName {&lt;br /&gt;
            &lt;/font&gt;&lt;font color="#0000ff"&gt;get; set;&lt;br /&gt;
        &lt;/font&gt;&lt;font color="#000000"&gt;}&lt;br /&gt;
&lt;br /&gt;
        &lt;/font&gt;&lt;font color="#0000ff"&gt;public string &lt;/font&gt;&lt;font color="#000000"&gt;LastName {&lt;br /&gt;
            &lt;/font&gt;&lt;font color="#0000ff"&gt;get; set;&lt;br /&gt;
        &lt;/font&gt;&lt;font color="#000000"&gt;}        &lt;br /&gt;
        &lt;br /&gt;
        &lt;/font&gt;&lt;font color="#0000ff"&gt;public int &lt;/font&gt;&lt;font color="#000000"&gt;Age {&lt;br /&gt;
            &lt;/font&gt;&lt;font color="#0000ff"&gt;get; set;&lt;br /&gt;
        &lt;/font&gt;&lt;font color="#000000"&gt;}&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
and the compiler knows to interpret this as &lt;br /&gt;
&lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font face="arial" size="2"&gt;    &lt;font color="#0000ff"&gt;public class &lt;/font&gt;&lt;font color="#000000"&gt;Person {&lt;br /&gt;
&lt;br /&gt;
        &lt;/font&gt;&lt;font color="#0000ff"&gt;private string &lt;/font&gt;&lt;font color="#000000"&gt;_firstName&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;br /&gt;
        private string &lt;/font&gt;&lt;font color="#000000"&gt;_lastName&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;br /&gt;
        private int &lt;/font&gt;&lt;font color="#000000"&gt;_age&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;br /&gt;
        &lt;br /&gt;
        public string &lt;/font&gt;&lt;font color="#000000"&gt;FirstName {&lt;br /&gt;
&lt;br /&gt;
            &lt;/font&gt;&lt;font color="#0000ff"&gt;get &lt;/font&gt;&lt;font color="#000000"&gt;{&lt;br /&gt;
                &lt;/font&gt;&lt;font color="#0000ff"&gt;return &lt;/font&gt;&lt;font color="#000000"&gt;_firstName&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;br /&gt;
            &lt;/font&gt;&lt;font color="#000000"&gt;}&lt;br /&gt;
            &lt;/font&gt;&lt;font color="#0000ff"&gt;set &lt;/font&gt;&lt;font color="#000000"&gt;{&lt;br /&gt;
                _firstName &lt;/font&gt;&lt;font color="#0000ff"&gt;= value;&lt;br /&gt;
            &lt;/font&gt;&lt;font color="#000000"&gt;}&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        &lt;/font&gt;&lt;font color="#0000ff"&gt;public string &lt;/font&gt;&lt;font color="#000000"&gt;LastName {&lt;br /&gt;
&lt;br /&gt;
            &lt;/font&gt;&lt;font color="#0000ff"&gt;get &lt;/font&gt;&lt;font color="#000000"&gt;{&lt;br /&gt;
                &lt;/font&gt;&lt;font color="#0000ff"&gt;return &lt;/font&gt;&lt;font color="#000000"&gt;_lastName&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;br /&gt;
            &lt;/font&gt;&lt;font color="#000000"&gt;}&lt;br /&gt;
            &lt;/font&gt;&lt;font color="#0000ff"&gt;set &lt;/font&gt;&lt;font color="#000000"&gt;{&lt;br /&gt;
                _lastName &lt;/font&gt;&lt;font color="#0000ff"&gt;= value;&lt;br /&gt;
            &lt;/font&gt;&lt;font color="#000000"&gt;}&lt;br /&gt;
        }        &lt;br /&gt;
        &lt;br /&gt;
        &lt;/font&gt;&lt;font color="#0000ff"&gt;public int &lt;/font&gt;&lt;font color="#000000"&gt;Age {&lt;br /&gt;
&lt;br /&gt;
            &lt;/font&gt;&lt;font color="#0000ff"&gt;get &lt;/font&gt;&lt;font color="#000000"&gt;{&lt;br /&gt;
                &lt;/font&gt;&lt;font color="#0000ff"&gt;return &lt;/font&gt;&lt;font color="#000000"&gt;_age&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;br /&gt;
            &lt;/font&gt;&lt;font color="#000000"&gt;}&lt;br /&gt;
            &lt;/font&gt;&lt;font color="#0000ff"&gt;set &lt;/font&gt;&lt;font color="#000000"&gt;{&lt;br /&gt;
                _age &lt;/font&gt;&lt;font color="#0000ff"&gt;= value;&lt;br /&gt;
            &lt;/font&gt;&lt;font color="#000000"&gt;}&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Prima facie, this looks like a good thing.  The developer is typing less code, and still has hooks in property accessors to perform validation, or needed side effects from value changes.&lt;br /&gt;
&lt;br /&gt;
But I have a few problems with this shorthand.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Criticism 1&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Why is this shorthand needed when there is a snippet (prop) that provides full property accessors, with better hooks for inserting custom actions like validation?&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Criticism 2&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
I think that the shorthand looks too much like the signature of a method normally found in an interface, not a class.  The only difference appears to be an access modifier. So I find the shorthand syntax is confusing...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
What do you think?&lt;br /&gt;
&lt;br /&gt;
Jonathan Starr&lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;span style="FONT-STYLE: italic"&gt;&lt;/span&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=118592"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=118592" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/starr/aggbug/118592.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jonathan Starr</dc:creator>
            <guid>http://geekswithblogs.net/starr/archive/2008/01/15/118592.aspx</guid>
            <pubDate>Wed, 16 Jan 2008 02:00:47 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/starr/comments/118592.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/starr/archive/2008/01/15/118592.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/starr/comments/commentRss/118592.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/starr/services/trackbacks/118592.aspx</trackback:ping>
        </item>
        <item>
            <title>