<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Sneal</title>
    <link>http://www.sneal.net/blog/</link>
    <description>The development of Shawn Neal</description>
    <language>en-us</language>
    <copyright>Shawn Neal</copyright>
    <lastBuildDate>Thu, 13 May 2010 00:58:38 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.1.8102.813</generator>
    <managingEditor>sneal@sneal.net</managingEditor>
    <webMaster>sneal@sneal.net</webMaster>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Sneal" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="sneal" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
      <trackback:ping>http://www.sneal.net/blog/Trackback.aspx?guid=bd19bfaf-95b9-4503-a116-818dbdef4dee</trackback:ping>
      <pingback:server>http://www.sneal.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.sneal.net/blog/PermaLink,guid,bd19bfaf-95b9-4503-a116-818dbdef4dee.aspx</pingback:target>
      <dc:creator>Sneal</dc:creator>
      <wfw:comment>http://www.sneal.net/blog/CommentView,guid,bd19bfaf-95b9-4503-a116-818dbdef4dee.aspx</wfw:comment>
      <wfw:commentRss>http://www.sneal.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=bd19bfaf-95b9-4503-a116-818dbdef4dee</wfw:commentRss>
      <title>Thinking in Ruby, Scala. and Clojure</title>
      <guid isPermaLink="false">http://www.sneal.net/blog/PermaLink,guid,bd19bfaf-95b9-4503-a116-818dbdef4dee.aspx</guid>
      <link>http://www.sneal.net/blog/2010/05/13/ThinkingInRubyScalaAndClojure.aspx</link>
      <pubDate>Thu, 13 May 2010 00:58:38 GMT</pubDate>
      <description>&lt;div&gt;&lt;link rel="File-List" href="file:///C:%5CUsers%5Csneal%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml"&gt;&lt;link rel="themeData" href="file:///C:%5CUsers%5Csneal%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx"&gt;&lt;link rel="colorSchemeMapping" href="file:///C:%5CUsers%5Csneal%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:WordDocument&gt;
  &lt;w:View&gt;Normal&lt;/w:View&gt;
  &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;
  &lt;w:TrackMoves/&gt;
  &lt;w:TrackFormatting/&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:DoNotPromoteQF/&gt;
  &lt;w:LidThemeOther&gt;EN-US&lt;/w:LidThemeOther&gt;
  &lt;w:LidThemeAsian&gt;X-NONE&lt;/w:LidThemeAsian&gt;
  &lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&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:SplitPgBreakAndParaMark/&gt;
   &lt;w:DontVertAlignCellWithSp/&gt;
   &lt;w:DontBreakConstrainedForcedTables/&gt;
   &lt;w:DontVertAlignInTxbx/&gt;
   &lt;w:Word11KerningPairs/&gt;
   &lt;w:CachedColBalance/&gt;
  &lt;/w:Compatibility&gt;
  &lt;w:BrowserLevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;
  &lt;m:mathPr&gt;
   &lt;m:mathFont m:val="Cambria Math"/&gt;
   &lt;m:brkBin m:val="before"/&gt;
   &lt;m:brkBinSub m:val="&amp;#45;-"/&gt;
   &lt;m:smallFrac m:val="off"/&gt;
   &lt;m:dispDef/&gt;
   &lt;m:lMargin m:val="0"/&gt;
   &lt;m:rMargin m:val="0"/&gt;
   &lt;m:defJc m:val="centerGroup"/&gt;
   &lt;m:wrapIndent m:val="1440"/&gt;
   &lt;m:intLim m:val="subSup"/&gt;
   &lt;m:naryLim m:val="undOvr"/&gt;
  &lt;/m:mathPr&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" DefUnhideWhenUsed="true"
  DefSemiHidden="true" DefQFormat="false" DefPriority="99"
  LatentStyleCount="267"&gt;
  &lt;w:LsdException Locked="false" Priority="0" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Normal"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 7"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 8"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 9"/&gt;
  &lt;w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/&gt;
  &lt;w:LsdException Locked="false" Priority="10" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Title"/&gt;
  &lt;w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/&gt;
  &lt;w:LsdException Locked="false" Priority="11" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/&gt;
  &lt;w:LsdException Locked="false" Priority="22" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Strong"/&gt;
  &lt;w:LsdException Locked="false" Priority="20" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="59" SemiHidden="false"
   UnhideWhenUsed="false" Name="Table Grid"/&gt;
  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/&gt;
  &lt;w:LsdException Locked="false" Priority="1" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/&gt;
  &lt;w:LsdException Locked="false" Priority="34" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/&gt;
  &lt;w:LsdException Locked="false" Priority="29" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Quote"/&gt;
  &lt;w:LsdException Locked="false" Priority="30" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="19" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="21" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="31" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/&gt;
  &lt;w:LsdException Locked="false" Priority="32" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/&gt;
  &lt;w:LsdException Locked="false" Priority="33" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/&gt;
  &lt;w:LsdException Locked="false" Priority="37" Name="Bibliography"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/&gt;
 &lt;/w:LatentStyles&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt;
&lt;!--
 /* Font Definitions */
 @font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-pitch:variable;
	mso-font-signature:-1610611985 1107304683 0 0 415 0;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-520092929 1073786111 9 0 415 0;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin-top:0in;
	margin-right:0in;
	margin-bottom:10.0pt;
	margin-left:0in;
	line-height:115%;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;}
.MsoPapDefault
	{mso-style-type:export-only;
	margin-bottom:10.0pt;
	line-height:115%;}
@page Section1
	{size:8.5in 11.0in;
	margin:1.0in 1.0in 1.0in 1.0in;
	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-priority:99;
	mso-style-qformat:yes;
	mso-style-parent:"";
	mso-padding-alt:0in 5.4pt 0in 5.4pt;
	mso-para-margin-top:0in;
	mso-para-margin-right:0in;
	mso-para-margin-bottom:10.0pt;
	mso-para-margin-left:0in;
	line-height:115%;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;}
&lt;/style&gt;
&lt;![endif]--&gt;

&lt;p class="MsoNormal"&gt;&lt;font face="Verdana" size="2"&gt;I have written much lately, I guess I haven’t felt that I
have had anything relevant to post or perhaps micro blogging is just too
convenient.&lt;/font&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;font face="Verdana" size="2"&gt;I’ve been learning different programming languages over the
past few weeks rather than working on writing C# in my spare time.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;I’ve spent a couple of weeks with Ruby, then
a week with Scala, and now a few days with Clojure.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;The interactive nature and quick feedback
that REPL gives you is just awesome for learning a new programming language.&lt;/font&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;font face="Verdana" size="2"&gt;Each language definitely has it’s niche, but I feel like
there’s something I’m missing that allows me to fully grasp the underlying
niche that each language provides.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;I
have no trouble picking each language up, but I want to get into the guts of
the language and try to understand it from the perspective of the person who
wrote it.&lt;/font&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;font face="Verdana" size="2"&gt;For instance, I spent several hours pouring over the Clojure
source code and found that it was nothing like I had expected. A programming
language written in Java!&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;The nerve.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;That was laughable only a few years ago (unless
you’re a DBA, then you probably find the entire JVM laughable).&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;When did we graduate from writing languages
in C to Java?&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;I find it absolutely fascinating.&lt;/font&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;font face="Verdana" size="2"&gt;Not to pick on people smarter than myself, but the source
code for Clojure is far messier than I expected.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;I’m sure at a high level its very well
designed, but the low level source code wasn’t as well abstracted as I expected
and with commented out code all over the place.&lt;span style=""&gt;&amp;nbsp;
&lt;/span&gt;It made me wonder how it actually worked without bugs seeping out from
every corner of the code base.&lt;/font&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;font face="Verdana" size="2"&gt;But the more I learn about these languages, and how they’re
written, the lower down in the stack I want to go.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Dragon book lower.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Although understanding BNF and other compiler
lingo isn’t required for understanding the Clojure compiler, I think it would
answer the question of how it works so well without bugs seeping out from every
corner.&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;&lt;img width="0" height="0" src="http://www.sneal.net/blog/aggbug.ashx?id=bd19bfaf-95b9-4503-a116-818dbdef4dee"/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sneal?a=PBV-4MUJsD4:sbiZSN6whYg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sneal?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sneal/~4/PBV-4MUJsD4" height="1" width="1"/&gt;</description>
      <comments>http://www.sneal.net/blog/CommentView,guid,bd19bfaf-95b9-4503-a116-818dbdef4dee.aspx</comments>
      <category>Other</category>
    </item>
    <item>
      <trackback:ping>http://www.sneal.net/blog/Trackback.aspx?guid=858f6ac8-b802-49ed-8bf0-0c7d0b321292</trackback:ping>
      <pingback:server>http://www.sneal.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.sneal.net/blog/PermaLink,guid,858f6ac8-b802-49ed-8bf0-0c7d0b321292.aspx</pingback:target>
      <dc:creator>Sneal</dc:creator>
      <wfw:comment>http://www.sneal.net/blog/CommentView,guid,858f6ac8-b802-49ed-8bf0-0c7d0b321292.aspx</wfw:comment>
      <wfw:commentRss>http://www.sneal.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=858f6ac8-b802-49ed-8bf0-0c7d0b321292</wfw:commentRss>
      <slash:comments>6</slash:comments>
      <title>MonoDevelop is getting there</title>
      <guid isPermaLink="false">http://www.sneal.net/blog/PermaLink,guid,858f6ac8-b802-49ed-8bf0-0c7d0b321292.aspx</guid>
      <link>http://www.sneal.net/blog/2010/01/04/MonoDevelopIsGettingThere.aspx</link>
      <pubDate>Mon, 04 Jan 2010 07:15:41 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;I've been using MonoDevelop on Ubuntu this weekend, because it just doesn't feel right to use it on Windows.  If you have Windows and need to write C# code, I'm sorry you're going to use Visual Studio, period.&lt;/p&gt;
&lt;p&gt;
Sun VirtualBox (VBox) has been instrumental in getting a Mono environment setup. VBox just rocks, but I did have one hickup.  Initially I started with Suse Linux 11.2 because that's officially supported by MonoDevelop, but it kept throwing segmentation faults on bootup when trying to load the NIC driver.  I tried several reinstalls, 32 bit, 64 bit, KDE, Gnome, different NICs inside VBox; nothing worked, so I gave up and went back to my tried and true friend Ubuntu. I never did figure out the root cause.
&lt;/p&gt;
&lt;p&gt;
Instead of compiling MonoDevelop from SVN or from the latest release tarballs (like I did last time) I just grabbed the latest and gratest version of MonoDevelop (v 2.0) out of the multiverse, which to my surprise is pretty new. This took a LOT less effort and was much more stable.
&lt;/p&gt;
&lt;p&gt;
I was actually able to make some changes to my command line library and for the most part get the tests to pass in Linux/Mono. The SVN integration worked perfectly. The MonoDevelop usability was pretty good.  No hard crashes.  No super strange compilation errors, everything pretty much worked right out of the gates.
&lt;/p&gt;
&lt;p&gt;
I did have a few issues:
&lt;ul&gt;
&lt;li&gt;Rename method or property fails and shows an exception dialog.&lt;/li&gt;
&lt;li&gt;Adding a NUnit test class automatically references the NUnit.Core and NUnit.Framework Mono package - which causes a compilation error: Duplicate TestFixture attributes.  Removing the auto added NUnit package references fixes this, but this was less than obvious.&lt;/li&gt;
&lt;li&gt;Find Usages works most of the time, but also displays the declaration in the results.&lt;/li&gt;
&lt;li&gt;Go to declaration doesn't always appear on a method.&lt;/li&gt;
&lt;li&gt;No (obvious) way to interactively debug an NUnit test. Maybe there's a way to do this, but the only way I could find was to create a console app which runs an NUnit suite.&lt;/li&gt;
&lt;li&gt;The syntax highlighting is pretty monotone (at least the default scheme)&lt;/li&gt;
&lt;li&gt;The ability to automatically add a using statement when a used type isn't imported would be super handy. I've been using Re# far too long to NOT have this.&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;
I will continue to use MonoDevelop, because its good enough and runs on Linux. Clearly it has a ways to go to compete with Visual Studio on Windows or many other Java or Ruby IDEs, but if you need to write C# code on Linux it'll certainly do. I'm hopeful the development experience with MonoDevelop will only get better in 2010.
&lt;/p&gt;&lt;img width="0" height="0" src="http://www.sneal.net/blog/aggbug.ashx?id=858f6ac8-b802-49ed-8bf0-0c7d0b321292"/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sneal?a=A_j0WB_j_WM:u1RYyeoc5vA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sneal?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sneal/~4/A_j0WB_j_WM" height="1" width="1"/&gt;</description>
      <comments>http://www.sneal.net/blog/CommentView,guid,858f6ac8-b802-49ed-8bf0-0c7d0b321292.aspx</comments>
      <category>Linux</category>
      <category>Mono</category>
    </item>
    <item>
      <trackback:ping>http://www.sneal.net/blog/Trackback.aspx?guid=e2a52c99-b516-4046-aeaf-9b3c5b21def5</trackback:ping>
      <pingback:server>http://www.sneal.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.sneal.net/blog/PermaLink,guid,e2a52c99-b516-4046-aeaf-9b3c5b21def5.aspx</pingback:target>
      <dc:creator>Sneal</dc:creator>
      <wfw:comment>http://www.sneal.net/blog/CommentView,guid,e2a52c99-b516-4046-aeaf-9b3c5b21def5.aspx</wfw:comment>
      <wfw:commentRss>http://www.sneal.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=e2a52c99-b516-4046-aeaf-9b3c5b21def5</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <title>Model mismatch</title>
      <guid isPermaLink="false">http://www.sneal.net/blog/PermaLink,guid,e2a52c99-b516-4046-aeaf-9b3c5b21def5.aspx</guid>
      <link>http://www.sneal.net/blog/2009/12/19/ModelMismatch.aspx</link>
      <pubDate>Sat, 19 Dec 2009 16:43:04 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;A single model cannot be appropriate for reporting, searching, and transactional behaviors.&lt;/p&gt;&lt;img width="0" height="0" src="http://www.sneal.net/blog/aggbug.ashx?id=e2a52c99-b516-4046-aeaf-9b3c5b21def5"/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sneal?a=SOBc_4stN7o:ERu3KFF7l8A:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sneal?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sneal/~4/SOBc_4stN7o" height="1" width="1"/&gt;</description>
      <comments>http://www.sneal.net/blog/CommentView,guid,e2a52c99-b516-4046-aeaf-9b3c5b21def5.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.sneal.net/blog/Trackback.aspx?guid=55a96b2a-d368-498b-824b-0fcb003ec387</trackback:ping>
      <pingback:server>http://www.sneal.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.sneal.net/blog/PermaLink,guid,55a96b2a-d368-498b-824b-0fcb003ec387.aspx</pingback:target>
      <dc:creator>Sneal</dc:creator>
      <wfw:comment>http://www.sneal.net/blog/CommentView,guid,55a96b2a-d368-498b-824b-0fcb003ec387.aspx</wfw:comment>
      <wfw:commentRss>http://www.sneal.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=55a96b2a-d368-498b-824b-0fcb003ec387</wfw:commentRss>
      <title>Using Expressions in Guard clauses</title>
      <guid isPermaLink="false">http://www.sneal.net/blog/PermaLink,guid,55a96b2a-d368-498b-824b-0fcb003ec387.aspx</guid>
      <link>http://www.sneal.net/blog/2009/12/01/UsingExpressionsInGuardClauses.aspx</link>
      <pubDate>Tue, 01 Dec 2009 02:14:31 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;Ruby was the impetus for me to write a Guard clause that automatically get a parameter name from code. What do I mean by that? This passes:&lt;/p&gt;  &lt;pre&gt;[Test]
&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Expression_guard_can_get_parameter_name_from_expression()
{
	&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; address = &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;
	Assert.Throws&amp;lt;ArgumentException&amp;gt;(() =&amp;gt; Guard.AgainstNull(() =&amp;gt; address),
		&amp;quot;&lt;span style="color: #8b0000"&gt;The parameter address must not be null&lt;/span&gt;&amp;quot;);
}&lt;/pre&gt;

&lt;p&gt;Notice how I didn’t specify the string “address” anywhere, the Guard.AgainstNull method got it from the expression () =&amp;gt; address. I’m sure I’ve &lt;em&gt;used&lt;/em&gt; constructs like this in C# before, but I haven’t &lt;em&gt;written&lt;/em&gt; any yet. I wonder in what other ways I can abuse Expressions?&lt;/p&gt;

&lt;p&gt;The implementation, that is not well tested by any means:&lt;/p&gt;

&lt;pre&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; AgainstNull&amp;lt;T&amp;gt;(Expression&amp;lt;Func&amp;lt;T&amp;gt;&amp;gt; expression)
{
	AgainstNull(expression, &amp;quot;&lt;span style="color: #8b0000"&gt;expression&lt;/span&gt;&amp;quot;);

	&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; paramName = &amp;quot;&lt;span style="color: #8b0000"&gt;&lt;/span&gt;&amp;quot;;
	var memberExpression = expression.Body &lt;span style="color: #0000ff"&gt;as&lt;/span&gt; MemberExpression;
	&lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (memberExpression != &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)
	{
		paramName = memberExpression.Member.Name;
	}
	T instance = expression.Compile().Invoke();
	AgainstNull(instance, paramName);
}&lt;/pre&gt;&lt;img width="0" height="0" src="http://www.sneal.net/blog/aggbug.ashx?id=55a96b2a-d368-498b-824b-0fcb003ec387"/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sneal?a=Xs98IYV6qmk:LA6rzVvRPKk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sneal?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sneal/~4/Xs98IYV6qmk" height="1" width="1"/&gt;</description>
      <comments>http://www.sneal.net/blog/CommentView,guid,55a96b2a-d368-498b-824b-0fcb003ec387.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.sneal.net/blog/Trackback.aspx?guid=50c478ae-ccd3-4260-98a8-4a46e165cf8a</trackback:ping>
      <pingback:server>http://www.sneal.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.sneal.net/blog/PermaLink,guid,50c478ae-ccd3-4260-98a8-4a46e165cf8a.aspx</pingback:target>
      <dc:creator>Sneal</dc:creator>
      <wfw:comment>http://www.sneal.net/blog/CommentView,guid,50c478ae-ccd3-4260-98a8-4a46e165cf8a.aspx</wfw:comment>
      <wfw:commentRss>http://www.sneal.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=50c478ae-ccd3-4260-98a8-4a46e165cf8a</wfw:commentRss>
      <title>ReSharper 5 won't run unit tests in Visual Studio 2010</title>
      <guid isPermaLink="false">http://www.sneal.net/blog/PermaLink,guid,50c478ae-ccd3-4260-98a8-4a46e165cf8a.aspx</guid>
      <link>http://www.sneal.net/blog/2009/11/07/ReSharper5WontRunUnitTestsInVisualStudio2010.aspx</link>
      <pubDate>Sat, 07 Nov 2009 19:59:07 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;I've been playing around with Visual Studio 2010, and of course the latest ReSharper, version 5.  Unfortunately my NUnit tests wouldn't run inside the ReSharper runner.  Instead they would spin for a second then turn grey, like nothing happened.&lt;/p&gt;
&lt;p&gt;
Running the tests under the debugger turned up an interesting exception in the VS output window: BadImageFormatException.  I also noticed a bunch of DLLs being loaded out of the v2.0 framework GAC, and not .NET 4.  Shouldn't my .NET 4 app be using the .NET 4.0 GAC?
&lt;/p&gt;
Of course it should. There's an easy fix to this. ReSharper shells out to another exe that actuall runs the unit tests JetBrains.ReSharper.TaskRunner.exe.  If we modify the JetBrains.ReSharper.TaskRunner.exe.config in the ReSharper installation directory we can force the test runner to run under the .NET 4.0 framework. At the bottom of the file you'll find the associated startup element already there, just commented out and with the .NET 4.0 beta 1 framework version.  To fix it, just incomment it and change the version to the .NET beta 2 framework version.
&lt;/p&gt;
&lt;p&gt;

  &amp;lt;!-- Needed in dev10, not needed in dev9/8 --&amp;gt;

  &amp;lt;startup&amp;gt;
    &amp;lt;requiredRuntime version="v4.0.21006"/&amp;gt;
  &amp;lt;/startup&amp;gt;
&lt;/p&gt;
&lt;p&gt;
Now you can run unit tests via ReSharper in VS 2010 beta 2.
&lt;/p&gt;&lt;img width="0" height="0" src="http://www.sneal.net/blog/aggbug.ashx?id=50c478ae-ccd3-4260-98a8-4a46e165cf8a"/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sneal?a=7J6LYKPhpwQ:O6_WrMCIvjs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sneal?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sneal/~4/7J6LYKPhpwQ" height="1" width="1"/&gt;</description>
      <comments>http://www.sneal.net/blog/CommentView,guid,50c478ae-ccd3-4260-98a8-4a46e165cf8a.aspx</comments>
      <category>Visual Studio</category>
    </item>
    <item>
      <trackback:ping>http://www.sneal.net/blog/Trackback.aspx?guid=52622b21-310d-4117-b601-498416f98ac1</trackback:ping>
      <pingback:server>http://www.sneal.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.sneal.net/blog/PermaLink,guid,52622b21-310d-4117-b601-498416f98ac1.aspx</pingback:target>
      <dc:creator>Sneal</dc:creator>
      <wfw:comment>http://www.sneal.net/blog/CommentView,guid,52622b21-310d-4117-b601-498416f98ac1.aspx</wfw:comment>
      <wfw:commentRss>http://www.sneal.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=52622b21-310d-4117-b601-498416f98ac1</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <title>Erlang’s sweet spot</title>
      <guid isPermaLink="false">http://www.sneal.net/blog/PermaLink,guid,52622b21-310d-4117-b601-498416f98ac1.aspx</guid>
      <link>http://www.sneal.net/blog/2009/10/19/ErlangsSweetSpot.aspx</link>
      <pubDate>Mon, 19 Oct 2009 15:52:56 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;Most every language has a sweet spot, something it does better than any other language around it.&lt;/p&gt;  &lt;p&gt;C and C++ are really good for writing console video games because of its speed, portability, and deterministic finalization.&amp;#160; Perl is really good at string manipulation. Java has a gazillion OSS frameworks and application servers. Ruby is damn pretty and has a couple of really super productive web frameworks.&lt;/p&gt;  &lt;p&gt;Erlang has a very succinct and elegant syntax, a syntax that is highly optimized for writing recursive functions. One could argue that’s just a property of being a functional language, but I think there’s more too it than just being functional.&lt;/p&gt;  &lt;p&gt;C# 3 has a decent functional syntax that is clearly more succinct than Java or C# 2, but it just doesn’t stack up to Erlang.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ffff00"&gt;&lt;font color="#ff8040"&gt;Warning&lt;/font&gt;: &lt;/font&gt;&lt;font color="#000000"&gt;don’t use these code samples in production code! They use Ω(n) extra storage space and are toy functions.&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;For example, take this Erlang quick sort function:&lt;/p&gt;  &lt;pre&gt;qsort([]) -&amp;gt; [];
qsort([Pivot|T]) -&amp;gt;
	qsort([X || X &amp;lt;- T, X &amp;lt; Pivot])
	++ [Pivot] ++
	qsort([X || X &amp;lt;- T, X &amp;gt;= Pivot]).&lt;/pre&gt;

&lt;p&gt;That is, IMO, beautiful code.&amp;#160; Small, compact, succinct, powerful, readable. On the other hand, what does a comparable implementation look like in C# 3?&amp;#160; &lt;/p&gt;

&lt;pre&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt; IEnumerable&amp;lt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&amp;gt; Qsort(IEnumerable&amp;lt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&amp;gt; list)
{
    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (list.Count() &amp;lt;= 1)
        &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; list;

    &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; pivot = list.First();
    var tail = list.Skip(1).Take(list.Count() - 1);

    var result = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; List&amp;lt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&amp;gt;();
    result.AddRange(Qsort(tail.Where(o =&amp;gt; o &amp;lt; pivot)));
    result.Add(pivot);
    result.AddRange(Qsort(tail.Where(o =&amp;gt; o &amp;gt;= pivot)));
    &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; result;
}&lt;/pre&gt;

&lt;p&gt;It works, it doesn’t contain any loops and only one if statement (the initial C# 2 version was even longer and uglier), but its still very much lacking in the beautiful code department.&amp;#160; Did you also notice it was more than twice as long as the Erlang function? Perhaps you can improve the syntax?&lt;/p&gt;

&lt;p&gt;I don’t have numbers to prove this, but the Erlang implementation can also be made faster with a lot less effort since each recursive call can be run in parallel.&amp;#160; Try that in C# without writing extra threading code. Even if you did, your threads are probably going to be a lot slower than the light weight threads in Erlang.&lt;/p&gt;

&lt;p&gt;Recursive functions in Erlang are definitely a sweet spot.&lt;/p&gt;&lt;img width="0" height="0" src="http://www.sneal.net/blog/aggbug.ashx?id=52622b21-310d-4117-b601-498416f98ac1"/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sneal?a=CuyfZWoalwM:Eph2A0A1O2k:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sneal?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sneal/~4/CuyfZWoalwM" height="1" width="1"/&gt;</description>
      <comments>http://www.sneal.net/blog/CommentView,guid,52622b21-310d-4117-b601-498416f98ac1.aspx</comments>
      <category>Erlang</category>
    </item>
    <item>
      <trackback:ping>http://www.sneal.net/blog/Trackback.aspx?guid=3cd93898-78c8-45dd-b7ff-68ba4f38a3c1</trackback:ping>
      <pingback:server>http://www.sneal.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.sneal.net/blog/PermaLink,guid,3cd93898-78c8-45dd-b7ff-68ba4f38a3c1.aspx</pingback:target>
      <dc:creator>Sneal</dc:creator>
      <wfw:comment>http://www.sneal.net/blog/CommentView,guid,3cd93898-78c8-45dd-b7ff-68ba4f38a3c1.aspx</wfw:comment>
      <wfw:commentRss>http://www.sneal.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=3cd93898-78c8-45dd-b7ff-68ba4f38a3c1</wfw:commentRss>
      <title>I’m enjoying learning Erlang</title>
      <guid isPermaLink="false">http://www.sneal.net/blog/PermaLink,guid,3cd93898-78c8-45dd-b7ff-68ba4f38a3c1.aspx</guid>
      <link>http://www.sneal.net/blog/2009/10/09/ImEnjoyingLearningErlang.aspx</link>
      <pubDate>Fri, 09 Oct 2009 01:09:12 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;Sometimes you need a paradigm shift, a different way to look at the same set of problems. Erlang I hope will give me that paradigm shift. Hopefully I can add another a screwdriver to my toolbox, if not, hopefully something besides a hammer.&lt;/p&gt;  &lt;p&gt;I just bought a copy (on PDF) of &lt;em&gt;Programming Erlang Software for a Concurrent World&lt;/em&gt;. I’ve only gotten through the first few pages of chapter 1, and so far I’m impressed. I guess its no surprise as the book is published by Pragmatic Programmers.&lt;/p&gt;  &lt;p&gt;I &lt;em&gt;finally&lt;/em&gt; understand why mathematicians like functional languages.&amp;#160; Its so obvious now, and it has a lot to do with immutability. From the book:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;When I went to school, my math teacher said, “If there’s an X in several different parts in the same equation, then all the Xs mean the same thing.” That’s how we can solve equations: if we know that X+Y=10 and X-Y=2, then X will be 6 and Y will be 4 in both equations. But when I learned my first programming language, we were shown stuff like this:     &lt;br /&gt;X = X + 1      &lt;br /&gt;Everyone protested, saying “you can’t do that!” But the teacher said we were wrong, and we had to unlearn what we learned in math class. X isn’t a math variable: it’s like a pigeon hole/little box.... In Erlang, variables are just like they are inmath.When you associate a value with a variable, you’re making an assertion—a statement of fact. This variable has that value. And that’s that.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I guess mutability is a strange beast for most people when learning to program, forcing a lot of them to quit while in their first year of CS.&amp;#160; Well, that and pointers. Its an odd way to think of things for people living in a concrete world. I wonder if first year CS students wouldn’t have an easier time learning a functional language?&lt;/p&gt;&lt;img width="0" height="0" src="http://www.sneal.net/blog/aggbug.ashx?id=3cd93898-78c8-45dd-b7ff-68ba4f38a3c1"/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sneal?a=Duk3BIYFQn8:9C9saX58JN8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sneal?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sneal/~4/Duk3BIYFQn8" height="1" width="1"/&gt;</description>
      <comments>http://www.sneal.net/blog/CommentView,guid,3cd93898-78c8-45dd-b7ff-68ba4f38a3c1.aspx</comments>
      <category>Erlang</category>
    </item>
    <item>
      <trackback:ping>http://www.sneal.net/blog/Trackback.aspx?guid=59f75922-c05d-4447-8f90-748406fc6cc2</trackback:ping>
      <pingback:server>http://www.sneal.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.sneal.net/blog/PermaLink,guid,59f75922-c05d-4447-8f90-748406fc6cc2.aspx</pingback:target>
      <dc:creator>Sneal</dc:creator>
      <wfw:comment>http://www.sneal.net/blog/CommentView,guid,59f75922-c05d-4447-8f90-748406fc6cc2.aspx</wfw:comment>
      <wfw:commentRss>http://www.sneal.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=59f75922-c05d-4447-8f90-748406fc6cc2</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <title>Fluent NUnit Assertions</title>
      <guid isPermaLink="false">http://www.sneal.net/blog/PermaLink,guid,59f75922-c05d-4447-8f90-748406fc6cc2.aspx</guid>
      <link>http://www.sneal.net/blog/2009/10/01/FluentNUnitAssertions.aspx</link>
      <pubDate>Thu, 01 Oct 2009 01:19:34 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;I found another reason to love open source NUnit over MSTest, &lt;a href="http://code.google.com/p/nunitex/wiki/SyntaxOverview"&gt;NUnitEx&lt;/a&gt;. NUnitEx provides a fluent DSL to write NUnit assertions where Visual Studio intellisense is your guiding friend. I’m sure you’re thinking, “Yeah whatever, show me some code.”&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;pre&gt;[Test]
&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; AdjacencyGraph_is_directed_by_default()
{
    var graph = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; AdjacencyGraph&amp;lt;Task, TaskDependency&amp;gt;(DoNotAllowParallelEdges);
    graph.IsDirected.Should().Be.True();
}&lt;/pre&gt;

&lt;p&gt;Nice eh? graph.IsDirected is the property I want to test.&amp;#160; Everything after that is the NUnitEx extension methods. I know I find it much more readable than this:&lt;/p&gt;

&lt;pre&gt;[Test]
&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; AdjacencyGraph_is_directed_by_default()
{
    var graph = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; AdjacencyGraph&amp;lt;Task, TaskDependency&amp;gt;(DoNotAllowParallelEdges);
    Assert.IsTrue(graph.IsDirected);
}&lt;/pre&gt;

&lt;p&gt;I would also like to add that this syntax is likely to be included in NUnit 3, which would be excellent!&lt;/p&gt;&lt;img width="0" height="0" src="http://www.sneal.net/blog/aggbug.ashx?id=59f75922-c05d-4447-8f90-748406fc6cc2"/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sneal?a=sKoIAl3DbMg:OTbIvVdYLy8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sneal?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sneal/~4/sKoIAl3DbMg" height="1" width="1"/&gt;</description>
      <comments>http://www.sneal.net/blog/CommentView,guid,59f75922-c05d-4447-8f90-748406fc6cc2.aspx</comments>
      <category>Testing</category>
    </item>
    <item>
      <trackback:ping>http://www.sneal.net/blog/Trackback.aspx?guid=68a0ce6d-6f97-4cf1-b399-79f63ba2ae23</trackback:ping>
      <pingback:server>http://www.sneal.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.sneal.net/blog/PermaLink,guid,68a0ce6d-6f97-4cf1-b399-79f63ba2ae23.aspx</pingback:target>
      <dc:creator>Sneal</dc:creator>
      <wfw:comment>http://www.sneal.net/blog/CommentView,guid,68a0ce6d-6f97-4cf1-b399-79f63ba2ae23.aspx</wfw:comment>
      <wfw:commentRss>http://www.sneal.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=68a0ce6d-6f97-4cf1-b399-79f63ba2ae23</wfw:commentRss>
      <title>Visual Studio webtests hurt my eyes</title>
      <guid isPermaLink="false">http://www.sneal.net/blog/PermaLink,guid,68a0ce6d-6f97-4cf1-b399-79f63ba2ae23.aspx</guid>
      <link>http://www.sneal.net/blog/2009/09/23/VisualStudioWebtestsHurtMyEyes.aspx</link>
      <pubDate>Wed, 23 Sep 2009 00:47:31 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;Ive spent the last couple of days writing visual studio web tests to create a load test scenario for a critical section of application. Unfortunately i find it repetitive and boring.&lt;/p&gt;
&lt;p&gt;The web tests recorder in VS doesn't capture everything and additionally it hurts to look at the produced code. I did find fiddler much better at recording tests but they still needed serious cleaning up.&lt;/p&gt;
&lt;p&gt;I wish there was a more polished tool for this kind of test. I doubt other tools like JMeter are much better, and for .NET their probably worse because of viewstate and other platform specifics.&lt;/p&gt;&lt;img width="0" height="0" src="http://www.sneal.net/blog/aggbug.ashx?id=68a0ce6d-6f97-4cf1-b399-79f63ba2ae23"/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sneal?a=fLx2TmOZZKY:unS3BDt0E7g:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sneal?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sneal/~4/fLx2TmOZZKY" height="1" width="1"/&gt;</description>
      <comments>http://www.sneal.net/blog/CommentView,guid,68a0ce6d-6f97-4cf1-b399-79f63ba2ae23.aspx</comments>
      <category>Visual Studio</category>
    </item>
    <item>
      <trackback:ping>http://www.sneal.net/blog/Trackback.aspx?guid=fd1e03ad-007e-4682-a853-56b68719bea0</trackback:ping>
      <pingback:server>http://www.sneal.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.sneal.net/blog/PermaLink,guid,fd1e03ad-007e-4682-a853-56b68719bea0.aspx</pingback:target>
      <dc:creator>Sneal</dc:creator>
      <wfw:comment>http://www.sneal.net/blog/CommentView,guid,fd1e03ad-007e-4682-a853-56b68719bea0.aspx</wfw:comment>
      <wfw:commentRss>http://www.sneal.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=fd1e03ad-007e-4682-a853-56b68719bea0</wfw:commentRss>
      <title>Check for parameter null, more ReSharper goodness</title>
      <guid isPermaLink="false">http://www.sneal.net/blog/PermaLink,guid,fd1e03ad-007e-4682-a853-56b68719bea0.aspx</guid>
      <link>http://www.sneal.net/blog/2009/09/17/CheckForParameterNullMoreReSharperGoodness.aspx</link>
      <pubDate>Thu, 17 Sep 2009 15:46:55 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;I just found another useful thing that resharper does for you, it can generate code to check for null method parameters.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.sneal.net/blog/content/binary/CheckforparameternullmoreReSharpergoodne_79E3/image.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="141" alt="image" src="http://www.sneal.net/blog/content/binary/CheckforparameternullmoreReSharpergoodne_79E3/image_thumb.png" width="428" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Just put the cursor on the parameter….&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.sneal.net/blog/content/binary/CheckforparameternullmoreReSharpergoodne_79E3/image_3.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="96" alt="image" src="http://www.sneal.net/blog/content/binary/CheckforparameternullmoreReSharpergoodne_79E3/image_thumb_3.png" width="576" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Nice huh!?&lt;/p&gt;&lt;img width="0" height="0" src="http://www.sneal.net/blog/aggbug.ashx?id=fd1e03ad-007e-4682-a853-56b68719bea0"/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sneal?a=1Mxxhto1gnU:k404ZPmRVts:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sneal?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sneal/~4/1Mxxhto1gnU" height="1" width="1"/&gt;</description>
      <comments>http://www.sneal.net/blog/CommentView,guid,fd1e03ad-007e-4682-a853-56b68719bea0.aspx</comments>
      <category>Visual Studio</category>
    </item>
  </channel>
</rss>

