<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns: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>Eric Tobia's Blog</title>
    <link>http://www.erictobia.com/</link>
    <description>People, places, and things (via HTTP)</description>
    <language>en-us</language>
    <copyright>Eric Tobia</copyright>
    <lastBuildDate>Sat, 21 Feb 2009 14:51:41 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.0.7226.0</generator>
    <managingEditor>blog@erictobia.com</managingEditor>
    <webMaster>blog@erictobia.com</webMaster>
    <item>
      <trackback:ping>http://www.erictobia.com/Trackback.aspx?guid=6ab4742b-0a03-4cd0-8e40-906a85ae5a8b</trackback:ping>
      <pingback:server>http://www.erictobia.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.erictobia.com/PermaLink,guid,6ab4742b-0a03-4cd0-8e40-906a85ae5a8b.aspx</pingback:target>
      <dc:creator>Your DisplayName here!</dc:creator>
      <wfw:comment>http://www.erictobia.com/CommentView,guid,6ab4742b-0a03-4cd0-8e40-906a85ae5a8b.aspx</wfw:comment>
      <wfw:commentRss>http://www.erictobia.com/SyndicationService.asmx/GetEntryCommentsRss?guid=6ab4742b-0a03-4cd0-8e40-906a85ae5a8b</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">The other day a colleague of mine needed
to load a strongly typed ADO.NET DataTable from a LINQ to SQL query. We didn't find
any good solutions using "The Google", so after a bit of hacking we came up with something
similar to this:<br /><br /><pre><span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;"> PeopleDataSet
ds <span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;">=</span><span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">new</span> PeopleDataSet(); <span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">using</span> (PeopleDataContext
context <span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;">=</span><span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">new</span> PeopleDataContext())
{ (from p <span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">in</span> context.Persons
select <span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">new</span> {
Row <span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;">=</span> ds.Person.AddPersonRow(p.Id,
p.FirstName, p.LastName) }).ToList(); }</span></pre><br />
After <font face="Courier New">ToList()</font> executes we should have a DataTable
populated with the results of our query.<br /><br /><p></p><img width="0" height="0" src="http://www.erictobia.com/aggbug.ashx?id=6ab4742b-0a03-4cd0-8e40-906a85ae5a8b" /></body>
      <title>Load a DataTable with LINQ</title>
      <guid isPermaLink="false">http://www.erictobia.com/PermaLink,guid,6ab4742b-0a03-4cd0-8e40-906a85ae5a8b.aspx</guid>
      <link>http://www.erictobia.com/2009/02/21/LoadADataTableWithLINQ.aspx</link>
      <pubDate>Sat, 21 Feb 2009 14:51:41 GMT</pubDate>
      <description>The other day a colleague of mine needed to load a strongly typed ADO.NET DataTable from a LINQ to SQL query. We didn't find any good solutions using "The Google", so after a bit of hacking we came up with something similar to this:&lt;br&gt;
&lt;br&gt;
&lt;pre&gt;&lt;span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt; PeopleDataSet
ds &lt;span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; &lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;new&lt;/span&gt; PeopleDataSet(); &lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;using&lt;/span&gt; (PeopleDataContext
context &lt;span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; &lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;new&lt;/span&gt; PeopleDataContext())
{ (from p &lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;in&lt;/span&gt; context.Persons
select &lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;new&lt;/span&gt; {
Row &lt;span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; ds.Person.AddPersonRow(p.Id,
p.FirstName, p.LastName) }).ToList(); }&lt;/span&gt;&lt;/pre&gt;
&lt;br&gt;
After &lt;font face="Courier New"&gt;ToList()&lt;/font&gt; executes we should have a DataTable
populated with the results of our query.&lt;br&gt;
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.erictobia.com/aggbug.ashx?id=6ab4742b-0a03-4cd0-8e40-906a85ae5a8b" /&gt;</description>
      <comments>http://www.erictobia.com/CommentView,guid,6ab4742b-0a03-4cd0-8e40-906a85ae5a8b.aspx</comments>
      <category>.NET</category>
      <category>Programming</category>
    </item>
    <item>
      <trackback:ping>http://www.erictobia.com/Trackback.aspx?guid=33d87894-d5b5-4ec3-b405-9e99bf4f4be9</trackback:ping>
      <pingback:server>http://www.erictobia.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.erictobia.com/PermaLink,guid,33d87894-d5b5-4ec3-b405-9e99bf4f4be9.aspx</pingback:target>
      <dc:creator>Your DisplayName here!</dc:creator>
      <wfw:comment>http://www.erictobia.com/CommentView,guid,33d87894-d5b5-4ec3-b405-9e99bf4f4be9.aspx</wfw:comment>
      <wfw:commentRss>http://www.erictobia.com/SyndicationService.asmx/GetEntryCommentsRss?guid=33d87894-d5b5-4ec3-b405-9e99bf4f4be9</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">I saw something on the <a href="https://wiki.mozilla.org/Mozilla_2">Mozilla
2 Project Wiki</a> this morning that I thought was quite clever. It's the notion of
defining "anti-goals". How many more projects would be successful if we simply defined
what we <b>don't</b> want? Good stuff.<br /><br /><a href="https://wiki.mozilla.org/Mozilla_2#Anti-Goals">Mozilla 2 Anti Goals</a><br /><p></p><img width="0" height="0" src="http://www.erictobia.com/aggbug.ashx?id=33d87894-d5b5-4ec3-b405-9e99bf4f4be9" /></body>
      <title>"Anti-Goals" in Software Development</title>
      <guid isPermaLink="false">http://www.erictobia.com/PermaLink,guid,33d87894-d5b5-4ec3-b405-9e99bf4f4be9.aspx</guid>
      <link>http://www.erictobia.com/2009/01/14/AntiGoalsInSoftwareDevelopment.aspx</link>
      <pubDate>Wed, 14 Jan 2009 14:31:51 GMT</pubDate>
      <description>I saw something on the &lt;a href="https://wiki.mozilla.org/Mozilla_2"&gt;Mozilla 2 Project
Wiki&lt;/a&gt; this morning that I thought was quite clever. It's the notion of defining
"anti-goals". How many more projects would be successful if we simply defined what
we &lt;b&gt;don't&lt;/b&gt; want? Good stuff.&lt;br&gt;
&lt;br&gt;
&lt;a href="https://wiki.mozilla.org/Mozilla_2#Anti-Goals"&gt;Mozilla 2 Anti Goals&lt;/a&gt;
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.erictobia.com/aggbug.ashx?id=33d87894-d5b5-4ec3-b405-9e99bf4f4be9" /&gt;</description>
      <comments>http://www.erictobia.com/CommentView,guid,33d87894-d5b5-4ec3-b405-9e99bf4f4be9.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.erictobia.com/Trackback.aspx?guid=0f7c357a-8070-4f90-9d74-cb9f13312672</trackback:ping>
      <pingback:server>http://www.erictobia.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.erictobia.com/PermaLink,guid,0f7c357a-8070-4f90-9d74-cb9f13312672.aspx</pingback:target>
      <dc:creator>Your DisplayName here!</dc:creator>
      <wfw:comment>http://www.erictobia.com/CommentView,guid,0f7c357a-8070-4f90-9d74-cb9f13312672.aspx</wfw:comment>
      <wfw:commentRss>http://www.erictobia.com/SyndicationService.asmx/GetEntryCommentsRss?guid=0f7c357a-8070-4f90-9d74-cb9f13312672</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">The default model for ASP.NET MVC is the
'Web Application Project'. This makes sense especially when you consider the amount
of emphasis the ASP.NET MVC team is putting on TDD. 
<br /><br />
At the same time I <b>really</b> like the ASP.NET 'Web Site' model. I just find that
I'm more productive with it. I decided to hack together some templates for making
ASP.NET MVC development possible using the 'Web Site' model.<br /><br />
A few caveats. I couldn't figure out how to get template filtering to work in Visual
Studio so I pulled it out. This means that the item templates will probably show up
in the IDE more often than they should. If you have any tips on getting template filtering
to work properly please let me know.<br /><br /><b>The templates are for ASP.NET MVC Codeplex Preview 5. The templates only support
C#. TDD is not supported.</b><br /><br />
The project template is contained in this zip file:<br /><p></p><a href="http://www.erictobia.com/content/binary/MvcWebSite.cs.zip">MvcWebSite.cs.zip
(157 KB)</a><br /><br />
The item templates are contained in these zip files:<br /><br /><a href="http://www.erictobia.com/content/binary/ControllerItemTemplate.cs.zip">ControllerItemTemplate.cs.zip
(.97 KB)</a><br /><a href="http://www.erictobia.com/content/binary/MvcViewPageItemTemplate.cs.zip">MvcViewPageItemTemplate.cs.zip
(2.15 KB)</a><br /><a href="http://www.erictobia.com/content/binary/MvcViewUserControlItemTemplate.cs.zip">MvcViewUserControlItemTemplate.cs.zip
(1.4 KB)</a><br /><a href="http://www.erictobia.com/content/binary/MvcViewMasterPageItemTemplate.cs.zip">MvcViewMasterPageItemTemplate.cs.zip
(2.35 KB)</a><br /><br />
I find the 'My Templates' feature in VS to be kind of hokey so I installed these templates
directly into the Visual Studio 2008 directory.<br /><br />
Here are the steps to get the templates to show up in Visual Studio:<br /><br /><ol><li>
Copy 'MvcWebSite.cs.zip'<b></b> directly (don't unzip it) <b></b>into 'C:\Program
Files\Microsoft Visual Studio 9.0\Common7\IDE\ProjectTemplates<b>\Web\CSharp\</b>1033'</li><li>
Copy the remaining item templates into 'C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplates<b>\Web\CSharp\</b>1033'</li><li>
run the following from the command line: 'devenv.exe /installvstemplates'</li></ol>
The 'File -&gt; New Web Site' dialog should now display a project item called 'ASP.NET
MVC Web Site'.<br /><br /><b>In order for CSS styles to be applied correctly you will need to change the 'Virtual
path' property of the web site to '/' (root). Scott Guthrie outlines this process
below.</b><br /><br /><a href="http://weblogs.asp.net/scottgu/archive/2006/12/19/tip-trick-how-to-run-a-root-site-with-the-local-web-server-using-vs-2005-sp1.aspx">http://weblogs.asp.net/scottgu/archive/2006/12/19/tip-trick-how-to-run-a-root-site-with-the-local-web-server-using-vs-2005-sp1.aspx</a><br /><br />
NOTE TO MICROSOFT: I would be nice if '/' was the default when creating a new web
site. 
<br /><img width="0" height="0" src="http://www.erictobia.com/aggbug.ashx?id=0f7c357a-8070-4f90-9d74-cb9f13312672" /></body>
      <title>ASP.NET MVC Web Site Templates (Preview 5)</title>
      <guid isPermaLink="false">http://www.erictobia.com/PermaLink,guid,0f7c357a-8070-4f90-9d74-cb9f13312672.aspx</guid>
      <link>http://www.erictobia.com/2008/10/02/ASPNETMVCWebSiteTemplatesPreview5.aspx</link>
      <pubDate>Thu, 02 Oct 2008 19:16:43 GMT</pubDate>
      <description>The default model for ASP.NET MVC is the 'Web Application Project'. This makes sense especially when you consider the amount of emphasis the ASP.NET MVC team is putting on TDD. &lt;br&gt;
&lt;br&gt;
At the same time I &lt;b&gt;really&lt;/b&gt; like the ASP.NET 'Web Site' model. I just find that
I'm more productive with it. I decided to hack together some templates for making
ASP.NET MVC development possible using the 'Web Site' model.&lt;br&gt;
&lt;br&gt;
A few caveats. I couldn't figure out how to get template filtering to work in Visual
Studio so I pulled it out. This means that the item templates will probably show up
in the IDE more often than they should. If you have any tips on getting template filtering
to work properly please let me know.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;The templates are for ASP.NET MVC Codeplex Preview 5. The templates only support
C#. TDD is not supported.&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
The project template is contained in this zip file:&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;a href="http://www.erictobia.com/content/binary/MvcWebSite.cs.zip"&gt;MvcWebSite.cs.zip
(157 KB)&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
The item templates are contained in these zip files:&lt;br&gt;
&lt;br&gt;
&lt;a href="http://www.erictobia.com/content/binary/ControllerItemTemplate.cs.zip"&gt;ControllerItemTemplate.cs.zip
(.97 KB)&lt;/a&gt;
&lt;br&gt;
&lt;a href="http://www.erictobia.com/content/binary/MvcViewPageItemTemplate.cs.zip"&gt;MvcViewPageItemTemplate.cs.zip
(2.15 KB)&lt;/a&gt;
&lt;br&gt;
&lt;a href="http://www.erictobia.com/content/binary/MvcViewUserControlItemTemplate.cs.zip"&gt;MvcViewUserControlItemTemplate.cs.zip
(1.4 KB)&lt;/a&gt;
&lt;br&gt;
&lt;a href="http://www.erictobia.com/content/binary/MvcViewMasterPageItemTemplate.cs.zip"&gt;MvcViewMasterPageItemTemplate.cs.zip
(2.35 KB)&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
I find the 'My Templates' feature in VS to be kind of hokey so I installed these templates
directly into the Visual Studio 2008 directory.&lt;br&gt;
&lt;br&gt;
Here are the steps to get the templates to show up in Visual Studio:&lt;br&gt;
&lt;br&gt;
&lt;ol&gt;
&lt;li&gt;
Copy 'MvcWebSite.cs.zip'&lt;b&gt;&lt;/b&gt; directly (don't unzip it) &lt;b&gt;&lt;/b&gt;into 'C:\Program
Files\Microsoft Visual Studio 9.0\Common7\IDE\ProjectTemplates&lt;b&gt;\Web\CSharp\&lt;/b&gt;1033'&lt;/li&gt;
&lt;li&gt;
Copy the remaining item templates into 'C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplates&lt;b&gt;\Web\CSharp\&lt;/b&gt;1033'&lt;/li&gt;
&lt;li&gt;
run the following from the command line: 'devenv.exe /installvstemplates'&lt;/li&gt;
&lt;/ol&gt;
The 'File -&amp;gt; New Web Site' dialog should now display a project item called 'ASP.NET
MVC Web Site'.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;In order for CSS styles to be applied correctly you will need to change the 'Virtual
path' property of the web site to '/' (root). Scott Guthrie outlines this process
below.&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
&lt;a href="http://weblogs.asp.net/scottgu/archive/2006/12/19/tip-trick-how-to-run-a-root-site-with-the-local-web-server-using-vs-2005-sp1.aspx"&gt;http://weblogs.asp.net/scottgu/archive/2006/12/19/tip-trick-how-to-run-a-root-site-with-the-local-web-server-using-vs-2005-sp1.aspx&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
NOTE TO MICROSOFT: I would be nice if '/' was the default when creating a new web
site. 
&lt;br&gt;
&lt;img width="0" height="0" src="http://www.erictobia.com/aggbug.ashx?id=0f7c357a-8070-4f90-9d74-cb9f13312672" /&gt;</description>
      <comments>http://www.erictobia.com/CommentView,guid,0f7c357a-8070-4f90-9d74-cb9f13312672.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.erictobia.com/Trackback.aspx?guid=45928610-a826-4a09-985e-eef7bb007ac8</trackback:ping>
      <pingback:server>http://www.erictobia.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.erictobia.com/PermaLink,guid,45928610-a826-4a09-985e-eef7bb007ac8.aspx</pingback:target>
      <dc:creator>Your DisplayName here!</dc:creator>
      <wfw:comment>http://www.erictobia.com/CommentView,guid,45928610-a826-4a09-985e-eef7bb007ac8.aspx</wfw:comment>
      <wfw:commentRss>http://www.erictobia.com/SyndicationService.asmx/GetEntryCommentsRss?guid=45928610-a826-4a09-985e-eef7bb007ac8</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">I've only been playing with it for a few
days, but I *REALLY* like <a href="http://jquery.com/">this framework</a>. I also
whole-heatedly recommend <a href="http://www.amazon.com/jQuery-Action-Bear-Bibeault/dp/1933988355/">jQuery
in Action</a> to help you get up to speed.<br /><p></p><img width="0" height="0" src="http://www.erictobia.com/aggbug.ashx?id=45928610-a826-4a09-985e-eef7bb007ac8" /></body>
      <title>jQuery</title>
      <guid isPermaLink="false">http://www.erictobia.com/PermaLink,guid,45928610-a826-4a09-985e-eef7bb007ac8.aspx</guid>
      <link>http://www.erictobia.com/2008/09/17/jQuery.aspx</link>
      <pubDate>Wed, 17 Sep 2008 14:53:48 GMT</pubDate>
      <description>I've only been playing with it for a few days, but I *REALLY* like &lt;a href="http://jquery.com/"&gt;this
framework&lt;/a&gt;. I also whole-heatedly recommend &lt;a href="http://www.amazon.com/jQuery-Action-Bear-Bibeault/dp/1933988355/"&gt;jQuery
in Action&lt;/a&gt; to help you get up to speed.&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.erictobia.com/aggbug.ashx?id=45928610-a826-4a09-985e-eef7bb007ac8" /&gt;</description>
      <comments>http://www.erictobia.com/CommentView,guid,45928610-a826-4a09-985e-eef7bb007ac8.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.erictobia.com/Trackback.aspx?guid=d6a47782-dd89-45ee-af3e-bdf183e28778</trackback:ping>
      <pingback:server>http://www.erictobia.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.erictobia.com/PermaLink,guid,d6a47782-dd89-45ee-af3e-bdf183e28778.aspx</pingback:target>
      <dc:creator>Your DisplayName here!</dc:creator>
      <wfw:comment>http://www.erictobia.com/CommentView,guid,d6a47782-dd89-45ee-af3e-bdf183e28778.aspx</wfw:comment>
      <wfw:commentRss>http://www.erictobia.com/SyndicationService.asmx/GetEntryCommentsRss?guid=d6a47782-dd89-45ee-af3e-bdf183e28778</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <link rel="File-List" href="file:///C:%5CUsers%5CEric%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" />
        <link rel="themeData" href="file:///C:%5CUsers%5CEric%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" />
        <link rel="colorSchemeMapping" href="file:///C:%5CUsers%5CEric%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" />
        <!--[if gte mso 9]><xml>
 <w:WordDocument>
  <w:View>Normal</w:View>
  <w:Zoom>0</w:Zoom>
  <w:TrackMoves/>
  <w:TrackFormatting/>
  <w:PunctuationKerning/>
  <w:ValidateAgainstSchemas/>
  <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
  <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
  <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
  <w:DoNotPromoteQF/>
  <w:LidThemeOther>EN-US</w:LidThemeOther>
  <w:LidThemeAsian>X-NONE</w:LidThemeAsian>
  <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
  <w:Compatibility>
   <w:BreakWrappedTables/>
   <w:SnapToGridInCell/>
   <w:WrapTextWithPunct/>
   <w:UseAsianBreakRules/>
   <w:DontGrowAutofit/>
   <w:SplitPgBreakAndParaMark/>
   <w:DontVertAlignCellWithSp/>
   <w:DontBreakConstrainedForcedTables/>
   <w:DontVertAlignInTxbx/>
   <w:Word11KerningPairs/>
   <w:CachedColBalance/>
  </w:Compatibility>
  <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
  <m:mathPr>
   <m:mathFont m:val="Cambria Math"/>
   <m:brkBin m:val="before"/>
   <m:brkBinSub m:val="&#45;-"/>
   <m:smallFrac m:val="off"/>
   <m:dispDef/>
   <m:lMargin m:val="0"/>
   <m:rMargin m:val="0"/>
   <m:defJc m:val="centerGroup"/>
   <m:wrapIndent m:val="1440"/>
   <m:intLim m:val="subSup"/>
   <m:naryLim m:val="undOvr"/>
  </m:mathPr></w:WordDocument>
</xml><![endif]-->
        <!--[if gte mso 9]><xml>
 <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
  DefSemiHidden="true" DefQFormat="false" DefPriority="99"
  LatentStyleCount="267">
  <w:LsdException Locked="false" Priority="0" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
  <w:LsdException Locked="false" Priority="9" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 1"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 2"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 3"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 4"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 5"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 6"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 7"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 8"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 9"/>
  <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
  <w:LsdException Locked="false" Priority="10" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Title"/>
  <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
  <w:LsdException Locked="false" Priority="11" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
  <w:LsdException Locked="false" Priority="22" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
  <w:LsdException Locked="false" Priority="20" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
  <w:LsdException Locked="false" Priority="59" SemiHidden="false"
   UnhideWhenUsed="false" Name="Table Grid"/>
  <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
  <w:LsdException Locked="false" Priority="1" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 1"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
  <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
  <w:LsdException Locked="false" Priority="34" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
  <w:LsdException Locked="false" Priority="29" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
  <w:LsdException Locked="false" Priority="30" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 1"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 2"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 2"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 3"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 3"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 4"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 4"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 5"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 5"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 6"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 6"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
  <w:LsdException Locked="false" Priority="19" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
  <w:LsdException Locked="false" Priority="21" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
  <w:LsdException Locked="false" Priority="31" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
  <w:LsdException Locked="false" Priority="32" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
  <w:LsdException Locked="false" Priority="33" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
  <w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
  <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
 </w:LatentStyles>
</xml><![endif]-->
        <style>
          <!--
 /* 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 159 0;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:"Times New Roman";}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@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;}
-->
        </style>
        <!--[if gte mso 10]>
<style>
 /* 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:0in;
	mso-para-margin-bottom:.0001pt;
	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:"Times New Roman";
	mso-fareast-theme-font:minor-fareast;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;}
</style>
<![endif]-->Cool!
One of the things I love about the current tech environment is the amount of competition
between all of the big companies. Competition is the only true driver of innovation.
Both users and programmers are going to end up with better technology when all is
said and done. Those years of browser stagnation seem like a distant memory now.<br /><br />
Another thing I found interesting in the <a href="http://en.wikipedia.org/wiki/Google_chrome">Wikipedia
entry</a> on <a href="http://www.google.com/chrome">Google Chrome</a> was the following:<br /><br /><blockquote><i>The Gears team were considering a multithreaded browser (noting that
a problem with existing web browser implementations was that they are inherently single-threaded)
and Chrome implemented this concept with a multiprocessing architecture. A separate
process is allocated to each task (eg tabs, plugins), as is the case with modern operating
systems. This prevents tasks from interfering with each other which is good for both
security and stability; an attacker successfully gaining access to one application
does not give them access to all and failure in one application results in a Sad Tab
screen of death not unlike the well-known Sad Mac. This strategy exacts a fixed per-process
cost up front but results in less memory bloat overall as fragmentation is confined
to each process and no longer results in further memory allocations.<br /></i></blockquote><br />
Interesting. What this means (on Windows at least) is that when you start up Google
Chrome you get two processes:<br /><br /><img src="http://www.erictobia.com/content/binary/startup.jpg" border="0" /><br /><br />
I can only assume that one instance is for the Chrome host process and one instance
is for the initial tab. When you create a new tab and navigate to a web page you will
see at least one new instance of chrome.exe. There may be more than one process for
the tab depending on the number of plugins on the page.  <br /><br />
After creating a few additional Chrome tabs my 'Windows Task Manager' looks like this:<br /><br /><img src="http://www.erictobia.com/content/binary/more.jpg" border="0" /><br /><br />
For a "process hawk" like me this will take a some getting used to!<br /><br /><img width="0" height="0" src="http://www.erictobia.com/aggbug.ashx?id=d6a47782-dd89-45ee-af3e-bdf183e28778" /></body>
      <title>Initial Thoughts on Google Chrome</title>
      <guid isPermaLink="false">http://www.erictobia.com/PermaLink,guid,d6a47782-dd89-45ee-af3e-bdf183e28778.aspx</guid>
      <link>http://www.erictobia.com/2008/09/02/InitialThoughtsOnGoogleChrome.aspx</link>
      <pubDate>Tue, 02 Sep 2008 20:08:11 GMT</pubDate>
      <description>&lt;link rel="File-List" href="file:///C:%5CUsers%5CEric%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml"&gt;
&lt;link rel="themeData" href="file:///C:%5CUsers%5CEric%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx"&gt;
&lt;link rel="colorSchemeMapping" href="file:///C:%5CUsers%5CEric%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 159 0;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:"Times New Roman";}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@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:0in;
	mso-para-margin-bottom:.0001pt;
	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:"Times New Roman";
	mso-fareast-theme-font:minor-fareast;
	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;Cool!
One of the things I love about the current tech environment is the amount of competition
between all of the big companies. Competition is the only true driver of innovation.
Both users and programmers are going to end up with better technology when all is
said and done. Those years of browser stagnation seem like a distant memory now.&lt;br&gt;
&lt;br&gt;
Another thing I found interesting in the &lt;a href="http://en.wikipedia.org/wiki/Google_chrome"&gt;Wikipedia
entry&lt;/a&gt; on &lt;a href="http://www.google.com/chrome"&gt;Google Chrome&lt;/a&gt; was the following:&lt;br&gt;
&lt;br&gt;
&lt;blockquote&gt;&lt;i&gt;The Gears team were considering a multithreaded browser (noting that
a problem with existing web browser implementations was that they are inherently single-threaded)
and Chrome implemented this concept with a multiprocessing architecture. A separate
process is allocated to each task (eg tabs, plugins), as is the case with modern operating
systems. This prevents tasks from interfering with each other which is good for both
security and stability; an attacker successfully gaining access to one application
does not give them access to all and failure in one application results in a Sad Tab
screen of death not unlike the well-known Sad Mac. This strategy exacts a fixed per-process
cost up front but results in less memory bloat overall as fragmentation is confined
to each process and no longer results in further memory allocations.&lt;br&gt;
&lt;/i&gt;&lt;/blockquote&gt;
&lt;br&gt;
Interesting. What this means (on Windows at least) is that when you start up Google
Chrome you get two processes:&lt;br&gt;
&lt;br&gt;
&lt;img src="http://www.erictobia.com/content/binary/startup.jpg" border="0"&gt;
&lt;br&gt;
&lt;br&gt;
I can only assume that one instance is for the Chrome host process and one instance
is for the initial tab. When you create a new tab and navigate to a web page you will
see at least one new instance of chrome.exe. There may be more than one process for
the tab depending on the number of plugins on the page. &amp;nbsp;&lt;br&gt;
&lt;br&gt;
After creating a few additional Chrome tabs my 'Windows Task Manager' looks like this:&lt;br&gt;
&lt;br&gt;
&lt;img src="http://www.erictobia.com/content/binary/more.jpg" border="0"&gt;
&lt;br&gt;
&lt;br&gt;
For a "process hawk" like me this will take a some getting used to!&lt;br&gt;
&lt;br&gt;
&lt;img width="0" height="0" src="http://www.erictobia.com/aggbug.ashx?id=d6a47782-dd89-45ee-af3e-bdf183e28778" /&gt;</description>
      <comments>http://www.erictobia.com/CommentView,guid,d6a47782-dd89-45ee-af3e-bdf183e28778.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.erictobia.com/Trackback.aspx?guid=7bc0a1f2-3398-44c8-b41e-fac7b298df16</trackback:ping>
      <pingback:server>http://www.erictobia.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.erictobia.com/PermaLink,guid,7bc0a1f2-3398-44c8-b41e-fac7b298df16.aspx</pingback:target>
      <dc:creator>Your DisplayName here!</dc:creator>
      <wfw:comment>http://www.erictobia.com/CommentView,guid,7bc0a1f2-3398-44c8-b41e-fac7b298df16.aspx</wfw:comment>
      <wfw:commentRss>http://www.erictobia.com/SyndicationService.asmx/GetEntryCommentsRss?guid=7bc0a1f2-3398-44c8-b41e-fac7b298df16</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">So this is Microsoft's strategy to defeat
Google. Yikes!<br /><br />
UPDATE: 3/19/2008 - Joel Spolsky explains the "big picture" of what's going on here
in his <a href="http://joelonsoftware.com/items/2008/03/17.html">Martian Headsets</a> article.<br /><p></p><img src="http://www.erictobia.com/content/binary/maps1234.jpg" width="453" border="0" height="369" /><img width="0" height="0" src="http://www.erictobia.com/aggbug.ashx?id=7bc0a1f2-3398-44c8-b41e-fac7b298df16" /></body>
      <title>Google Maps in IE8 Beta1: BUSTED</title>
      <guid isPermaLink="false">http://www.erictobia.com/PermaLink,guid,7bc0a1f2-3398-44c8-b41e-fac7b298df16.aspx</guid>
      <link>http://www.erictobia.com/2008/03/06/GoogleMapsInIE8Beta1BUSTED.aspx</link>
      <pubDate>Thu, 06 Mar 2008 14:44:53 GMT</pubDate>
      <description>So this is Microsoft's strategy to defeat Google. Yikes!&lt;br&gt;
&lt;br&gt;
UPDATE: 3/19/2008 - Joel Spolsky explains the "big picture" of what's going on here
in his &lt;a href="http://joelonsoftware.com/items/2008/03/17.html"&gt;Martian Headsets&lt;/a&gt; article.&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img src="http://www.erictobia.com/content/binary/maps1234.jpg" width="453" border="0" height="369"&gt;&lt;img width="0" height="0" src="http://www.erictobia.com/aggbug.ashx?id=7bc0a1f2-3398-44c8-b41e-fac7b298df16" /&gt;</description>
      <comments>http://www.erictobia.com/CommentView,guid,7bc0a1f2-3398-44c8-b41e-fac7b298df16.aspx</comments>
      <category>IE8</category>
    </item>
    <item>
      <trackback:ping>http://www.erictobia.com/Trackback.aspx?guid=3242776f-8d11-4513-a800-767f6f0db3cc</trackback:ping>
      <pingback:server>http://www.erictobia.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.erictobia.com/PermaLink,guid,3242776f-8d11-4513-a800-767f6f0db3cc.aspx</pingback:target>
      <dc:creator>Your DisplayName here!</dc:creator>
      <wfw:comment>http://www.erictobia.com/CommentView,guid,3242776f-8d11-4513-a800-767f6f0db3cc.aspx</wfw:comment>
      <wfw:commentRss>http://www.erictobia.com/SyndicationService.asmx/GetEntryCommentsRss?guid=3242776f-8d11-4513-a800-767f6f0db3cc</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">While it’s unlikely that you would ever
want to invoke the Volta compiler directly, using it does provide some insight into
how Volta works.<br /><br />
Let’s say that you have an existing assembly named BoringObjects.dll.  BoringObjects.dll
contains one class named Person.<br /><br /><img src="http://www.erictobia.com/content/binary/person_reflector.gif" border="0" /><br /><br />
To do a Volta conversion of this assembly from MSIL to JavaScript execute the following
command from the console window. NOTE: you will need "C:\Program Files\Microsoft Live
Labs Volta" in your path.<br /><br /><font face="Courier New">&gt; volta BoringObjects.dll /out:JSOutput</font><br /><br />
The only argument of interest is <font face="Courier New">/out:JSOutput</font>. 
This is the directory that the Volta compiler will write the JavaScript files to.<br /><br />
If we look under our specified output directory we notice that Volta has created a
directory that corresponds to the assembly name.  Under that directory there
are three items:<br /><br />
[Types] (directory)<br />
assembly.js<br />
typeMapping.js<br /><br />
Under the Types directory there is one file "tA.js" which corresponds to the lone
Person class in our original assembly.  If you use /d (debug) option the file
will be named "type_0__Person.js" and the JavaScript code will be nicely formatted.<br /><br />
It’s interesting to note that this same structure is seen in "C:\Program Files\Microsoft
Live Labs Volta\Cache".  In that directory you will find that some core .NET
assemblies and the Volta libraries have been converted to JavaScript. This step is
apparently part of the installation process.<br /><br /><img src="http://www.erictobia.com/content/binary/volta_cache.gif" border="0" /><img width="0" height="0" src="http://www.erictobia.com/aggbug.ashx?id=3242776f-8d11-4513-a800-767f6f0db3cc" /></body>
      <title>Using Volta from the Command Line</title>
      <guid isPermaLink="false">http://www.erictobia.com/PermaLink,guid,3242776f-8d11-4513-a800-767f6f0db3cc.aspx</guid>
      <link>http://www.erictobia.com/2008/01/03/UsingVoltaFromTheCommandLine.aspx</link>
      <pubDate>Thu, 03 Jan 2008 16:03:09 GMT</pubDate>
      <description>While it’s unlikely that you would ever want to invoke the Volta compiler directly, using it does provide some insight into how Volta works.&lt;br&gt;
&lt;br&gt;
Let’s say that you have an existing assembly named BoringObjects.dll.&amp;nbsp; BoringObjects.dll
contains one class named Person.&lt;br&gt;
&lt;br&gt;
&lt;img src="http://www.erictobia.com/content/binary/person_reflector.gif" border="0"&gt;
&lt;br&gt;
&lt;br&gt;
To do a Volta conversion of this assembly from MSIL to JavaScript execute the following
command from the console window. NOTE: you will need "C:\Program Files\Microsoft Live
Labs Volta" in your path.&lt;br&gt;
&lt;br&gt;
&lt;font face="Courier New"&gt;&amp;gt; volta BoringObjects.dll /out:JSOutput&lt;/font&gt;
&lt;br&gt;
&lt;br&gt;
The only argument of interest is &lt;font face="Courier New"&gt;/out:JSOutput&lt;/font&gt;.&amp;nbsp;
This is the directory that the Volta compiler will write the JavaScript files to.&lt;br&gt;
&lt;br&gt;
If we look under our specified output directory we notice that Volta has created a
directory that corresponds to the assembly name.&amp;nbsp; Under that directory there
are three items:&lt;br&gt;
&lt;br&gt;
[Types] (directory)&lt;br&gt;
assembly.js&lt;br&gt;
typeMapping.js&lt;br&gt;
&lt;br&gt;
Under the Types directory there is one file "tA.js" which corresponds to the lone
Person class in our original assembly.&amp;nbsp; If you use /d (debug) option the file
will be named "type_0__Person.js" and the JavaScript code will be nicely formatted.&lt;br&gt;
&lt;br&gt;
It’s interesting to note that this same structure is seen in "C:\Program Files\Microsoft
Live Labs Volta\Cache".&amp;nbsp; In that directory you will find that some core .NET
assemblies and the Volta libraries have been converted to JavaScript. This step is
apparently part of the installation process.&lt;br&gt;
&lt;br&gt;
&lt;img src="http://www.erictobia.com/content/binary/volta_cache.gif" border="0"&gt;&lt;img width="0" height="0" src="http://www.erictobia.com/aggbug.ashx?id=3242776f-8d11-4513-a800-767f6f0db3cc" /&gt;</description>
      <comments>http://www.erictobia.com/CommentView,guid,3242776f-8d11-4513-a800-767f6f0db3cc.aspx</comments>
      <category>Volta</category>
    </item>
    <item>
      <trackback:ping>http://www.erictobia.com/Trackback.aspx?guid=2a7dd93a-b279-4362-bf5a-bac92217383b</trackback:ping>
      <pingback:server>http://www.erictobia.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.erictobia.com/PermaLink,guid,2a7dd93a-b279-4362-bf5a-bac92217383b.aspx</pingback:target>
      <dc:creator>Your DisplayName here!</dc:creator>
      <wfw:comment>http://www.erictobia.com/CommentView,guid,2a7dd93a-b279-4362-bf5a-bac92217383b.aspx</wfw:comment>
      <wfw:commentRss>http://www.erictobia.com/SyndicationService.asmx/GetEntryCommentsRss?guid=2a7dd93a-b279-4362-bf5a-bac92217383b</wfw:commentRss>
      <title>The Three “R”s of Volta</title>
      <guid isPermaLink="false">http://www.erictobia.com/PermaLink,guid,2a7dd93a-b279-4362-bf5a-bac92217383b.aspx</guid>
      <link>http://www.erictobia.com/2007/12/15/TheThreeRsOfVolta.aspx</link>
      <pubDate>Sat, 15 Dec 2007 02:13:11 GMT</pubDate>
      <description>&lt;span style="font-size: 10pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;A prevalent theme in the Volta &lt;a href="http://labs.live.com/volta/docs/"&gt;documentation&lt;/a&gt; is
the concept of the three “R”s. These three principles are at the heart of what Volta
attempts to provide for developers.&amp;nbsp; They are retargeting, remodulating, and
refactoring.&lt;br&gt;
&lt;br&gt;
&lt;font size="2"&gt;&lt;u&gt;&lt;b&gt;Retargeting&lt;/b&gt;&lt;/u&gt;&lt;/font&gt;
&lt;br&gt;
&lt;br&gt;
To me this is the coolest aspect of Volta and the feature that makes it a very interesting
technology. At its core Volta is a compiler or more accurately a recompiler.&amp;nbsp;
Instead of recompiling the source code Volta uses a technique called MSIL rewriting.
This is what enables the developer to write client-side browser code in C#. Since
all CLR languages compile to MSIL, Volta can use that as the common denominator. Volta
is capable of MSIL to MSIL, and MSIL to JavaScript conversion.&lt;br&gt;
&lt;br&gt;
&lt;font size="2"&gt;&lt;u&gt;&lt;b&gt;Remodulating&lt;/b&gt;&lt;/u&gt;&lt;/font&gt;
&lt;br&gt;
&lt;br&gt;
Another goal of the Volta toolset is seamless cross-browser support. As the documentation
states:&lt;br&gt;
&lt;br&gt;
&lt;blockquote&gt;&lt;i&gt;&amp;nbsp;Volta hides as many browser-specific differences as possible,
but still allows developers to leverage the unique capabilities of particular browsers.
Instead of targeting solely the intersection of browser capabilities, Volta targets
the entire union, but makes the intersection browser-agnostic. This is browser remodulating.&lt;/i&gt;
&lt;br&gt;
&lt;/blockquote&gt;
&lt;br&gt;
Remodulating also deals with the debugging experience. Regardless of the browser platform
developers will be stepping through their application code within Visual Studio. That's
assuming of course that your target is either IE or FireFox which are the only browsers
supported in the current release. 
&lt;br&gt;
&lt;font size="2"&gt;
&lt;br&gt;
&lt;/font&gt;&lt;font size="2"&gt;&lt;u&gt;&lt;b&gt;Refactoring&lt;/b&gt;&lt;/u&gt;&lt;/font&gt;
&lt;br&gt;
&lt;br&gt;
Volta refactoring is about enabling developers to create their applications while
deferring decisions about what tier a particular component will run in. In my opinion
this will be the most controversial feature of the toolset.&amp;nbsp; &lt;a href="http://www.knowing.net/PermaLink,guid,8c6ba500-a6b4-4598-8f2c-52d31cf3bf16.aspx"&gt;Larry
O’Brien has some reservations about it&lt;/a&gt;:&lt;br&gt;
&lt;br&gt;
&lt;blockquote&gt;&lt;i&gt;This sounds like a bad idea to me. You can't refactor away the difference
between an in-memory method call and an Internet message: one happens in nanoseconds
and the other in milliseconds&lt;/i&gt;
&lt;br&gt;
&lt;/blockquote&gt;
&lt;br&gt;
I have some questions of my own about this. The docs claim that:&lt;br&gt;
&lt;br&gt;
&lt;blockquote&gt;&lt;i&gt;During development, all code runs in the client for ease of testing
and debugging.&lt;/i&gt;
&lt;br&gt;
&lt;/blockquote&gt;
&lt;br&gt;
What are the implications of this? Not every .NET class is meant to run in a browser
context. Does Volta offer any automatic guidance with regard to this? The notion of
clicking a “Split Tiers” check box and decorating a class with a &lt;font face="Courier New"&gt;[RunAtOrigin]&lt;/font&gt; does
seem implicitly powerful, I’m just curious to know where the model breaks down. I
will try to answer these questions and others as I dig deeper into the framework.&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.erictobia.com/aggbug.ashx?id=2a7dd93a-b279-4362-bf5a-bac92217383b" /&gt;</description>
      <comments>http://www.erictobia.com/CommentView,guid,2a7dd93a-b279-4362-bf5a-bac92217383b.aspx</comments>
      <category>.NET</category>
      <category>Programming</category>
      <category>Volta</category>
    </item>
    <item>
      <trackback:ping>http://www.erictobia.com/Trackback.aspx?guid=bbf461d8-57d5-48d2-9d64-9dcf823277b4</trackback:ping>
      <pingback:server>http://www.erictobia.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.erictobia.com/PermaLink,guid,bbf461d8-57d5-48d2-9d64-9dcf823277b4.aspx</pingback:target>
      <dc:creator>Your DisplayName here!</dc:creator>
      <wfw:comment>http://www.erictobia.com/CommentView,guid,bbf461d8-57d5-48d2-9d64-9dcf823277b4.aspx</wfw:comment>
      <wfw:commentRss>http://www.erictobia.com/SyndicationService.asmx/GetEntryCommentsRss?guid=bbf461d8-57d5-48d2-9d64-9dcf823277b4</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
        </p>
        <img src="http://www.erictobia.com/content/binary/logo-volta.gif" border="0" />
        <br />
        <br />
It's kind of ironic.  This morning I was seriously considering taking a look
at the <a href="http://code.google.com/webtoolkit/">Google Web Toolkit</a>. 
This is despite the fact that GWT is targeted at Java developers, which I am not. 
It's just that GWT seems like such a useful idea - I wanted to play with it a bit.<br /><p>
Luckily Microsoft has, <span style=""></span>apparently, decided to put out a framework
that allows developers to build rich internet applications without having to do a
ton of JavaScript coding.<br /></p><p>
It's called <a href="http://labs.live.com/volta/">Volta</a> and at first glance it
seems pretty cool.<br /><br />
When I was doing a lot of work with <a href="http://www.asp.net/ajax/">ASP.NET AJAX</a> last
year, the idea of coding in a more productive language and environment than JavaScript
kept coming up again and again.<span style="">  </span>There was Script# at the
time, but I didn't get a chance to look into it as much as I would have liked.<br /><br />
This certainly seems like a great development.  Maybe this even brings .NET developers
one step closer to what <a href="http://joelonsoftware.com/items/2007/09/18.html">Joel
Spolsky described a few month ago</a>.
</p><p>
Now…on to the samples, tutorials, and docs!
</p><img width="0" height="0" src="http://www.erictobia.com/aggbug.ashx?id=bbf461d8-57d5-48d2-9d64-9dcf823277b4" /></body>
      <title>Volta</title>
      <guid isPermaLink="false">http://www.erictobia.com/PermaLink,guid,bbf461d8-57d5-48d2-9d64-9dcf823277b4.aspx</guid>
      <link>http://www.erictobia.com/2007/12/06/Volta.aspx</link>
      <pubDate>Thu, 06 Dec 2007 02:55:23 GMT</pubDate>
      <description>&lt;p&gt;
&lt;/p&gt;
&lt;img src="http://www.erictobia.com/content/binary/logo-volta.gif" border="0"&gt;
&lt;br&gt;
&lt;br&gt;
It's kind of ironic.&amp;nbsp; This morning I was seriously considering taking a look
at the &lt;a href="http://code.google.com/webtoolkit/"&gt;Google Web Toolkit&lt;/a&gt;.&amp;nbsp;
This is despite the fact that GWT is targeted at Java developers, which I am not.&amp;nbsp;
It's just that GWT seems like such a useful idea - I wanted to play with it a bit.&lt;br&gt;
&lt;p&gt;
Luckily Microsoft has, &lt;span style=""&gt;&lt;/span&gt;apparently, decided to put out a framework
that allows developers to build rich internet applications without having to do a
ton of JavaScript coding.&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
It's called &lt;a href="http://labs.live.com/volta/"&gt;Volta&lt;/a&gt; and at first glance it
seems pretty cool.&lt;br&gt;
&lt;br&gt;
When I was doing a lot of work with &lt;a href="http://www.asp.net/ajax/"&gt;ASP.NET AJAX&lt;/a&gt; last
year, the idea of coding in a more productive language and environment than JavaScript
kept coming up again and again.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;There was Script# at the
time, but I didn't get a chance to look into it as much as I would have liked.&lt;br&gt;
&lt;br&gt;
This certainly seems like a great development.&amp;nbsp; Maybe this even brings .NET developers
one step closer to what &lt;a href="http://joelonsoftware.com/items/2007/09/18.html"&gt;Joel
Spolsky described a few month ago&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Now…on to the samples, tutorials, and docs!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.erictobia.com/aggbug.ashx?id=bbf461d8-57d5-48d2-9d64-9dcf823277b4" /&gt;</description>
      <comments>http://www.erictobia.com/CommentView,guid,bbf461d8-57d5-48d2-9d64-9dcf823277b4.aspx</comments>
      <category>.NET</category>
      <category>AJAX</category>
      <category>Frameworks</category>
      <category>GWT</category>
      <category>Volta</category>
    </item>
    <item>
      <trackback:ping>http://www.erictobia.com/Trackback.aspx?guid=60c00cc8-b378-4b9b-a75a-ffb785cf39c9</trackback:ping>
      <pingback:server>http://www.erictobia.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.erictobia.com/PermaLink,guid,60c00cc8-b378-4b9b-a75a-ffb785cf39c9.aspx</pingback:target>
      <dc:creator>Your DisplayName here!</dc:creator>
      <wfw:comment>http://www.erictobia.com/CommentView,guid,60c00cc8-b378-4b9b-a75a-ffb785cf39c9.aspx</wfw:comment>
      <wfw:commentRss>http://www.erictobia.com/SyndicationService.asmx/GetEntryCommentsRss?guid=60c00cc8-b378-4b9b-a75a-ffb785cf39c9</wfw:commentRss>
      <title>SICP in C# 3.0 – Higher-Order Procedures</title>
      <guid isPermaLink="false">http://www.erictobia.com/PermaLink,guid,60c00cc8-b378-4b9b-a75a-ffb785cf39c9.aspx</guid>
      <link>http://www.erictobia.com/2007/12/03/SICPInC30HigherOrderProcedures.aspx</link>
      <pubDate>Mon, 03 Dec 2007 00:01:16 GMT</pubDate>
      <description>&lt;img src="http://www.erictobia.com/content/binary/lambda1.gif" border="0"&gt;
&lt;br&gt;
&lt;br&gt;
One of my favorite sections in &lt;a href="http://mitpress.mit.edu/sicp/full-text/book/book.html"&gt;SICP&lt;/a&gt; so
far has been section &lt;a href="ttp://mitpress.mit.edu/sicp/full-text/book/book-Z-H-12.html#%_sec_1.3"&gt;1.3&lt;span style=""&gt; &lt;/span&gt;Formulating
Abstractions with Higher-Order Procedures&lt;/a&gt;.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Higher-order_function"&gt;Higher-Order
Procedures&lt;/a&gt; are procedures that deal with other procedures.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;They
can take a procedure as an argument and/or return a procedure as a result. 
&lt;p&gt;
Though it is somewhat academic, I really like the example that &lt;a href="http://en.wikipedia.org/wiki/Hal_Abelson"&gt;Abelson&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Gerald_Jay_Sussman"&gt;Sussman&lt;/a&gt; use
in section 1.3.1 to explain the “procedures as arguments” scenario.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;To
illustrate this concept they implement summation &lt;img src="http://www.erictobia.com/content/binary/sigma.gif" border="0"&gt; using
Scheme.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;They implement a higher-order procedure called
“sum” that takes two procedures and a range of numbers as arguments.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;One
procedure is used for computing the value that is added to the sum and the other is
used to determine the next value to compute.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;The Scheme
code can be seen &lt;a href="http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-12.html#%_sec_1.3.1"&gt;here&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
&lt;o:p&gt;&lt;/o:p&gt;
It’s not as useful as &lt;a href="http://en.wikipedia.org/wiki/Map_%28higher-order_function%29"&gt;map&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Fold_%28higher-order_function%29"&gt;reduce&lt;/a&gt;,
but those are not discussed until Chapter 2. 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;o:p&gt;&lt;/o:p&gt;
As some of you may know C# 3.0 adds a whole slew of functional/dynamic features.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Whether
this is an effort to keep up with the &lt;a href="http://www.ruby-lang.org/en/"&gt;cool&lt;/a&gt; &lt;a href="http://www.python.org/"&gt;kids&lt;/a&gt; or
merely a necessity for making &lt;a href="http://en.wikipedia.org/wiki/LINQ"&gt;LINQ&lt;/a&gt; work
is not important to me.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;What I’m curious to know is if
the features make it easier to implement the concepts in SICP using C# 3.0.
&lt;/p&gt;
&lt;p&gt;
&lt;b style=""&gt;&lt;u&gt;Implementing “Sum” in C# 3.0&lt;/u&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/b&gt;
&lt;/p&gt;
&lt;p&gt;
Following along with the example from SICP - let’s say that you have defined the following
methods.
&lt;/p&gt;
&lt;span style=""&gt;&lt;/span&gt; 
&lt;p&gt;
&lt;/p&gt;
&lt;img src="http://www.erictobia.com/content/binary/sumcode1.gif" border="0"&gt;
&lt;br&gt;
&lt;br&gt;
I decided to break with the book here and use iteration instead of recursion to make
the code a little more digestible. 
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
Common to each method is the idea of iterating over a range of numbers and adding
the result of each computation to the total.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;If we create
a higher-order procedure called “Sum” to abstract out this behavior we can then redefine
each method.&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;pre&gt;&lt;img src="http://www.erictobia.com/content/binary/sumcode2.gif" border="0"&gt;&lt;/pre&gt;
The “=&amp;gt;” and “Func” constructs come from the new &lt;i style=""&gt;Lambda expressions&lt;/i&gt; feature
in C#.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Lambda expressions are a great new aspect of the
language and they make implementing higher-order procedures a lot easier.&amp;nbsp; In
this case the "term" and "next" arguments can be passed as Lambda expressions.&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
I had to cheat and do some casting &lt;a href="http://en.wikipedia.org/wiki/Shenanigans"&gt;shenanigans&lt;/a&gt; because
the division operation in "PiSum()" brings floating point numbers into the mix, but
I feel like this code does capture the essence of the original Scheme implementation.&lt;span style=""&gt;&amp;nbsp;
Implementing "Sum" as a &lt;a href="http://msdn2.microsoft.com/en-us/library/twcad0zb%28VS.80%29.aspx"&gt;generic
method&lt;/a&gt; might be a way to make the code more elegant.&lt;br&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;span style=""&gt;&lt;/span&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
If subverting the type system does not appeal to you, the following JavaScript implementation
might be of interest.
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.erictobia.com/content/binary/sumcode3.gif" border="0"&gt;
&lt;br&gt;
&lt;/p&gt;
JavaScript is more similar to Scheme (dynamic typing/first class functions) so it
makes sense that the translation is smoother.&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
It turns out that there are other people interested in implementing SICP in different
languages.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;a href="http://www.codepoetics.com/wiki/index.php?title=Topics:SICP_in_other_languages"&gt;Chris
Rathman&lt;/a&gt; has translated parts of SICP into 19 other languages.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;One
disturbing thing to note about Chris’s C# translation is that it doesn’t go beyond
chapter 1.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Does that mean that it is not possible to implement
the code from the rest of the book in C#?&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: Wingdings;"&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.erictobia.com/aggbug.ashx?id=60c00cc8-b378-4b9b-a75a-ffb785cf39c9" /&gt;</description>
      <comments>http://www.erictobia.com/CommentView,guid,60c00cc8-b378-4b9b-a75a-ffb785cf39c9.aspx</comments>
      <category>C# 3.0</category>
      <category>Programming</category>
      <category>SICP</category>
    </item>
  </channel>
</rss>