<?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:dc="http://purl.org/dc/elements/1.1/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>benjaminm's blog</title>
    <link>http://benjaminm.net/</link>
    <description>reserving the right to get smarter</description>
    <language>en-us</language>
    <copyright>Benjamin Mitchell</copyright>
    <lastBuildDate>Wed, 14 Jun 2006 13:47:32 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.2.8279.16125</generator>
    <managingEditor>benjaminm@benjaminm.net</managingEditor>
    <webMaster>benjaminm@benjaminm.net</webMaster>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/benjaminm" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
      <trackback:ping>http://benjaminm.net/Trackback.aspx?guid=bd28be75-29a5-4520-9e4f-bef9d34bd3bc</trackback:ping>
      <pingback:server>http://benjaminm.net/pingback.aspx</pingback:server>
      <pingback:target>http://benjaminm.net/PermaLink,guid,bd28be75-29a5-4520-9e4f-bef9d34bd3bc.aspx</pingback:target>
      <dc:creator />
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p lang="EN-GB" style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
Recently I've been doing a "tour of the trenches", helping a major client with their
web-based applications for the Insurance industry. It's taught me that there's a lot
of development work that goes on in companies that doesn't relate to the overall aim
of delivering business value through software, specifically around the building of
"platforms".<span style="mso-spacerun: yes">  </span><a href="http://blogs.msdn.com/brada/archive/2005/03/06/386328.aspx">Brad
Abrams noted something similar</a> when he went on his road trip, there are a lot
of companies building custom platforms. 
</p>
        <p lang="EN-GB" style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
 
</p>
        <p lang="EN-GB" style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
From my experience a lot of these platforms turn out badly since most companies can't
afford the time or money to build and create successful platforms.<span style="mso-spacerun: yes">  </span>Rather
than writing platforms, I'm looking for ways to use Other Peoples' Code to build solutions
that deliver better business value.<span style="mso-spacerun: yes">  </span>At
TechEd this week I'm interested in evaluating Office 2007, and particularly the server
platform, as a platform to build on.
</p>
        <p lang="EN-GB" style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
 
</p>
        <p lang="EN-GB" style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
Looking at the domain of Insurance applications it's easy to see why lots of developers
want to write a platform.<span style="mso-spacerun: yes">  </span>The basic flow
is similar in structure to many other types of financial trading:
</p>
        <p lang="EN-GB" style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
 
</p>
        <ul style="MARGIN-TOP: 0in; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.5in; DIRECTION: ltr; unicode-bidi: embed" type="disc">
          <li lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; mso-outline-level: 1">
            <span style="FONT-FAMILY: Verdana">An application form, with one or more wizard-like
pages, containing controls with single- and cross-field validation.</span>
          </li>
          <li lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; mso-outline-level: 1">
            <span style="FONT-FAMILY: Verdana">The application form is sent to a rating engine
(usually authored by Underwriters) which determines whether the business will generate
a quote and if so, what the value of that quote is.</span>
          </li>
          <li lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; mso-outline-level: 1">
            <span style="FONT-FAMILY: Verdana">After a quote is generated there are various sequential
and state-based workflows around that can occur (e.g. accepting the quote, revising
the quote, "binding" the quote to make it a policy).</span>
          </li>
        </ul>
        <p lang="EN-GB" style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
 
</p>
        <p lang="EN-GB" style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
With that in mind I'm currently looking at Office Server 2007 as a possible platform
to build on.<span style="mso-spacerun: yes">  </span>Here's a sketch of what
I'm looking:
</p>
        <p lang="EN-GB" style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
 
</p>
        <ul style="MARGIN-TOP: 0in; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.5in; DIRECTION: ltr; unicode-bidi: embed" type="disc">
          <li lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; mso-outline-level: 1">
            <span style="FONT-FAMILY: Verdana">Create the application form in InfoPath (giving
me the single- and cross-field validation), then publish it as a HTML form using <a href="http://blogs.msdn.com/andrew_may/archive/2006/06/08/SharePointBeta2InfoPathFormsinOfficeSharePoint.aspx">Office
Forms Server</a> (there was <a href="http://microsoft.sitestream.com/PDC05/OFF/OFF306_files/Default.htm">a
session at PDC</a> as well).</span>
          </li>
          <li lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; mso-outline-level: 1">
            <span style="FONT-FAMILY: Verdana">Use Excel Services to host the spreadsheet that
contains all of the logic for calculating the Quote.<span style="mso-spacerun: yes">  </span>Once
we agree on a set of named cells/ranges in the spreadsheet, the underwriters can keep
control of it.</span>
          </li>
          <li lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; mso-outline-level: 1">
            <span style="FONT-FAMILY: Verdana">Use SharePoint's support for Workflow to implement
the Workflow.</span>
          </li>
        </ul>
        <p lang="EN-GB" style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
 
</p>
        <p lang="EN-GB" style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
Obviously I'm just sketching at this stage (I still have questions about licensing,
performance and flexibility are key) and I need to do some prototyping, but overall
I'm interested in the possibility of being able to build basic Insurance trading applications
on top of Office 2007 as a platform, dramatically reducing the amount of code I will
need to write.
</p>
        <img width="0" height="0" src="http://benjaminm.net/aggbug.ashx?id=bd28be75-29a5-4520-9e4f-bef9d34bd3bc" />
      <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/benjaminm/~4/ygZjJD1dg4Q" height="1" width="1" /></body>
      <title>Office Server 2007: Can it help me write less code?</title>
      <guid isPermaLink="false">http://benjaminm.net/PermaLink,guid,bd28be75-29a5-4520-9e4f-bef9d34bd3bc.aspx</guid>
      <link>http://feedproxy.google.com/~r/benjaminm/~3/ygZjJD1dg4Q/OfficeServer2007CanItHelpMeWriteLessCode.aspx</link>
      <pubDate>Wed, 14 Jun 2006 13:47:32 GMT</pubDate>
      <description>&lt;p lang=EN-GB style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
Recently I've been doing a "tour of the trenches", helping a major client with their
web-based applications for the Insurance industry. It's taught me that there's a lot
of development work that goes on in companies that doesn't relate to the overall aim
of delivering business value through software, specifically around the building of
"platforms".&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;a href="http://blogs.msdn.com/brada/archive/2005/03/06/386328.aspx"&gt;Brad
Abrams noted something similar&lt;/a&gt; when he went on his road trip, there are a lot
of companies building custom platforms. 
&lt;/p&gt;
&lt;p lang=EN-GB style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p lang=EN-GB style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
From my experience a lot of these platforms turn out badly since most companies can't
afford the time or money to build and create successful platforms.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Rather
than writing platforms, I'm looking for ways to use Other Peoples' Code to build solutions
that deliver better business value.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;At
TechEd this week I'm interested in evaluating Office 2007, and particularly the server
platform, as a platform to build on.
&lt;/p&gt;
&lt;p lang=EN-GB style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p lang=EN-GB style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
Looking at the domain of Insurance applications it's easy to see why lots of developers
want to write a platform.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;The basic flow
is similar in structure to many other types of financial trading:
&lt;/p&gt;
&lt;p lang=EN-GB style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;ul style="MARGIN-TOP: 0in; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.5in; DIRECTION: ltr; unicode-bidi: embed" type=disc&gt;
&lt;li lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; mso-outline-level: 1"&gt;
&lt;span style="FONT-FAMILY: Verdana"&gt;An application form, with one or more wizard-like
pages, containing controls with single- and cross-field validation.&lt;/span&gt;
&lt;/li&gt;
&lt;li lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; mso-outline-level: 1"&gt;
&lt;span style="FONT-FAMILY: Verdana"&gt;The application form is sent to a rating engine
(usually authored by Underwriters) which determines whether the business will generate
a quote and if so, what the value of that quote is.&lt;/span&gt;
&lt;/li&gt;
&lt;li lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; mso-outline-level: 1"&gt;
&lt;span style="FONT-FAMILY: Verdana"&gt;After a quote is generated there are various sequential
and state-based workflows around that can occur (e.g. accepting the quote, revising
the quote, "binding" the quote to make it a policy).&lt;/span&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p lang=EN-GB style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p lang=EN-GB style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
With that in mind I'm currently looking at Office Server 2007 as a possible platform
to build on.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Here's a sketch of what
I'm looking:
&lt;/p&gt;
&lt;p lang=EN-GB style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;ul style="MARGIN-TOP: 0in; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.5in; DIRECTION: ltr; unicode-bidi: embed" type=disc&gt;
&lt;li lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; mso-outline-level: 1"&gt;
&lt;span style="FONT-FAMILY: Verdana"&gt;Create the application form in InfoPath (giving
me the single- and cross-field validation), then publish it as a HTML form using &lt;a href="http://blogs.msdn.com/andrew_may/archive/2006/06/08/SharePointBeta2InfoPathFormsinOfficeSharePoint.aspx"&gt;Office
Forms Server&lt;/a&gt;&amp;nbsp;(there was &lt;a href="http://microsoft.sitestream.com/PDC05/OFF/OFF306_files/Default.htm"&gt;a
session at PDC&lt;/a&gt; as well).&lt;/span&gt;
&lt;/li&gt;
&lt;li lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; mso-outline-level: 1"&gt;
&lt;span style="FONT-FAMILY: Verdana"&gt;Use Excel Services to host the spreadsheet that
contains all of the logic for calculating the Quote.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Once
we agree on a set of named cells/ranges in the spreadsheet, the underwriters can keep
control of it.&lt;/span&gt;
&lt;/li&gt;
&lt;li lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; mso-outline-level: 1"&gt;
&lt;span style="FONT-FAMILY: Verdana"&gt;Use SharePoint's support for Workflow to implement
the Workflow.&lt;/span&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p lang=EN-GB style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p lang=EN-GB style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
Obviously I'm just sketching at this stage (I still have questions about licensing,
performance and flexibility are key) and I need to do some prototyping, but overall
I'm interested in the possibility of being able to build basic Insurance trading applications
on top of Office 2007 as a platform, dramatically reducing the amount of code I will
need to write.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://benjaminm.net/aggbug.ashx?id=bd28be75-29a5-4520-9e4f-bef9d34bd3bc" /&gt;</description>
      <category>.NET</category>
      <category>TechEd</category>
    <feedburner:origLink>http://benjaminm.net/2006/06/14/OfficeServer2007CanItHelpMeWriteLessCode.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://benjaminm.net/Trackback.aspx?guid=34d7ad5f-35da-479b-83cc-b9f22557a39e</trackback:ping>
      <pingback:server>http://benjaminm.net/pingback.aspx</pingback:server>
      <pingback:target>http://benjaminm.net/PermaLink,guid,34d7ad5f-35da-479b-83cc-b9f22557a39e.aspx</pingback:target>
      <dc:creator />
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I'm currently pondering whether the new server-side capability of Excel 2007 could
radically change the face of many financial application.  Excel is so widely
used in finance that many companies could describe it as their platform.  I'm
currently involved in writing a web application for a group who use Excel extensively
and I frequently think if we could work more harminously with this spreadsheet we
could build the application for much lower cost but equal or higher business value.
</p>
        <p>
In the keynote last night they demonstrated the <a href="http://www.microsoft.com/presspass/press/2006/jun06/06-09ComputeClusterServer2003PR.mspx">Windows
Compute Cluster Server 2003</a> running Excel Services to perform Monte Carlo simulations
using Microsoft Excel.  Initially I thought this was implausible, imagining the
response if someone asked, "Can we set up a cluster server in order to run my
Excel spreadsheets?", but on reflection I think this could make a great deal of sense. 
Even though I'm suspicious about the efficiency of this kind of solution, viewed from
a different perspective I think it could represent great business value.  
</p>
        <p>
It's amazing to think that Windows and Office could lead to a scenario where a front-office
trader could write software that can be executed in a cluster - an arena that
previously seemed the domain of C++ and hard-core developers.  On the one hand
it scares me, since there will be less custom C# development for me to do, but on
the other hand I like it a lot since re-writing functionality that Excel already implements
takes a long time and doesn't give as big a "bang for the buck".
</p>
        <p>
Obviously I need to do a lot more research on Excel Services.  There's <a href="http://blogs.msdn.com/excel/archive/2005/11/08/490502.aspx">a
good introduction</a> here and some more technical details on how you can <a href="http://blogs.msdn.com/cumgranosalis/archive/2006/03/24/ExcelServicesHelloWorld.aspx">call
Excel through web services</a>.
</p>
        <img width="0" height="0" src="http://benjaminm.net/aggbug.ashx?id=34d7ad5f-35da-479b-83cc-b9f22557a39e" />
      <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/benjaminm/~4/CMzqmmEpBR4" height="1" width="1" /></body>
      <title>Server-side Excel: changing the face of financial apps?</title>
      <guid isPermaLink="false">http://benjaminm.net/PermaLink,guid,34d7ad5f-35da-479b-83cc-b9f22557a39e.aspx</guid>
      <link>http://feedproxy.google.com/~r/benjaminm/~3/CMzqmmEpBR4/ServersideExcelChangingTheFaceOfFinancialApps.aspx</link>
      <pubDate>Mon, 12 Jun 2006 16:47:15 GMT</pubDate>
      <description>&lt;p&gt;
I'm currently pondering whether the new server-side capability of Excel 2007 could
radically change the face of many financial application.&amp;nbsp; Excel is so widely
used in finance that many companies could describe it as their platform.&amp;nbsp; I'm
currently involved in writing a web application for a group who use Excel extensively
and I frequently think if we could work more harminously with this spreadsheet we
could build the application for much lower cost but equal or higher business value.
&lt;/p&gt;
&lt;p&gt;
In the keynote last night they demonstrated the &lt;a href="http://www.microsoft.com/presspass/press/2006/jun06/06-09ComputeClusterServer2003PR.mspx"&gt;Windows
Compute Cluster Server 2003&lt;/a&gt; running Excel Services to perform Monte Carlo simulations
using Microsoft Excel.&amp;nbsp; Initially I thought this was implausible, imagining the
response if someone asked,&amp;nbsp;"Can we set up a cluster server in order to run my
Excel spreadsheets?", but on reflection I think this could make a great deal of sense.&amp;nbsp;
Even though I'm suspicious about the efficiency of this kind of solution, viewed from
a different perspective I think it could represent great business value.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
It's amazing to think that Windows and Office could lead to a scenario where a front-office
trader could write software that can be executed in a cluster -&amp;nbsp;an arena that
previously seemed the domain of C++ and hard-core developers.&amp;nbsp; On the one hand
it scares me, since there will be less custom C# development for me to do, but on
the other hand I like it a lot since re-writing functionality that Excel already implements
takes a long time and doesn't give as big a "bang for the buck".
&lt;/p&gt;
&lt;p&gt;
Obviously I need to do a lot more research on Excel Services.&amp;nbsp; There's &lt;a href="http://blogs.msdn.com/excel/archive/2005/11/08/490502.aspx"&gt;a
good introduction&lt;/a&gt; here and some more technical details on how you can &lt;a href="http://blogs.msdn.com/cumgranosalis/archive/2006/03/24/ExcelServicesHelloWorld.aspx"&gt;call
Excel through web services&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://benjaminm.net/aggbug.ashx?id=34d7ad5f-35da-479b-83cc-b9f22557a39e" /&gt;</description>
      <category>.NET</category>
      <category>Web Services</category>
    <feedburner:origLink>http://benjaminm.net/2006/06/12/ServersideExcelChangingTheFaceOfFinancialApps.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://benjaminm.net/Trackback.aspx?guid=c349f60f-8921-4d14-b4ff-61d40f7ca9a6</trackback:ping>
      <pingback:server>http://benjaminm.net/pingback.aspx</pingback:server>
      <pingback:target>http://benjaminm.net/PermaLink,guid,c349f60f-8921-4d14-b4ff-61d40f7ca9a6.aspx</pingback:target>
      <dc:creator />
      <title>Ray Ozzie: Services Disruption and the need for 'Client Server Service Synergy'</title>
      <guid isPermaLink="false">http://benjaminm.net/PermaLink,guid,c349f60f-8921-4d14-b4ff-61d40f7ca9a6.aspx</guid>
      <link>http://feedproxy.google.com/~r/benjaminm/~3/en3Dlskyp48/RayOzzieServicesDisruptionAndTheNeedForClientServerServiceSynergy.aspx</link>
      <pubDate>Mon, 12 Jun 2006 16:13:41 GMT</pubDate>
      <description>&lt;p&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: #003300; FONT-FAMILY: Verdana"&gt;&lt;?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /&gt;TechEd 
&lt;st1:City w:st="on"&gt;
&lt;st1:place w:st="on"&gt;Boston&lt;/st1:place&gt;
&lt;/st1:City&gt;
started Sunday night with Ray Ozzie admonishing us that there's a &lt;a href="http://www.scripting.com/disruption/ozzie/TheInternetServicesDisruptio.htm"&gt;'Services
Disruption'&lt;/a&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt; coming
and proposing the slightly tongue-twisting 'Client Server Service Synergy' (and the
lesser-used&amp;nbsp;companion phrase 'Client Server Service Symmetry') as the way forward,
with Microsoft offering more services&amp;nbsp;in future.&amp;nbsp; 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: #003300; FONT-FAMILY: Verdana"&gt;Ray with the usual
dramatic structure of a presentation (much like what is recommended in the &lt;a href="http://www.beyondbullets.com/"&gt;"beyond
bullets" book&lt;/a&gt;), setting up that we're heading for a new disruption in the way
that we work.&amp;nbsp; He did the standard mainframe -&amp;gt; mini computers -&amp;gt; micro
computers -&amp;gt; client/server -&amp;gt; the internet ("the mother of all disruptions")
-&amp;gt; peer-peer set of disruptions, personalised through his own life experiences
with Lotus Notes and Groove. There was the standard argument that we need to be on
the lookout for new disruptions.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: #003300; FONT-FAMILY: Verdana"&gt;The drivers that
are changing things for today are the promise of multiprocessors (32 to 1000 CPUs
inside a single machine - up to "oodles" in Ray's words) the reduction in storage
space and the growing ubiquity of bandwidth.&amp;nbsp; The interesting point that Ray
highlighted was the fact that in the past it was research and corporate environments
that drove datacentres, whereas today these were being&amp;nbsp;driven by experience with
consumer&amp;nbsp;market through search, advertising and consumer shopping sites.&amp;nbsp;
Ray's point was that the benefits of investments in these environments will be felt
more widely.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: #003300; FONT-FAMILY: Verdana"&gt;He wasn't terribly
specific about how this would happen, though he was trying to position Microsoft's
approach as a mix between the client services approach and external services in a
"client server service synergy".&amp;nbsp; He showed windows desktop search searching
over the internet, SharePoint sites and the local machine as example of this.&amp;nbsp;
He also showed Microsoft Dynamics using 'business mashups' with Windows Live virtual
earth.&amp;nbsp; He also mentioned the online/offline architecture of Groove.&amp;nbsp; There
was much mention of&amp;nbsp;the Windows Live set of products.&amp;nbsp; There was a Windows
Live Identity that I hadn't heard of before - I'm assuming it's a rename of Passport?
It might have been the jetlag but it felt like another moment of marketing fatigue
(apparently MOM will become System Server Operations Manager as well).&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: #003300; FONT-FAMILY: Verdana"&gt;The presentation
hall felt very much like an aircraft hangar and the regular sound of planes overhead
reinforced this.&amp;nbsp; Ray was the first keynote speaker I've seen wearing a suit
jacket on one of these talks.&amp;nbsp; Obviously the chip-implant wasn't powerful enough
to convert him to the standard casual 'uniform' of a blue shirt and a pair of chinos.&lt;/span&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://benjaminm.net/aggbug.ashx?id=c349f60f-8921-4d14-b4ff-61d40f7ca9a6" /&gt;&lt;img src="http://feeds.feedburner.com/~r/benjaminm/~4/en3Dlskyp48" height="1" width="1"/&gt;</description>
      <category>.NET</category>
      <category>TechEd</category>
    <feedburner:origLink>http://benjaminm.net/2006/06/12/RayOzzieServicesDisruptionAndTheNeedForClientServerServiceSynergy.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://benjaminm.net/Trackback.aspx?guid=741e9606-48f6-46d8-acc7-071f34707628</trackback:ping>
      <pingback:server>http://benjaminm.net/pingback.aspx</pingback:server>
      <pingback:target>http://benjaminm.net/PermaLink,guid,741e9606-48f6-46d8-acc7-071f34707628.aspx</pingback:target>
      <dc:creator />
      <body xmlns="http://www.w3.org/1999/xhtml">We've extended the deadline for speaker
submissions until this Monday 20th March to allow final submissions to be put forward. 
We have <a href="http://www.developerday.co.uk/ddd/agendaddd3.asp">an excellent list
of submissions</a> so far, but we'd like to allow everyone enough time to <a href="http://www.developerday.co.uk/ddd/editsession.asp">submit
a session</a>.  Attendee voting will start on Tuesday.<img width="0" height="0" src="http://benjaminm.net/aggbug.ashx?id=741e9606-48f6-46d8-acc7-071f34707628" /><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/benjaminm/~4/2OfqyuvGeqw" height="1" width="1" /></body>
      <title>DDD3: Deadline for speaker submissions extended until Monday</title>
      <guid isPermaLink="false">http://benjaminm.net/PermaLink,guid,741e9606-48f6-46d8-acc7-071f34707628.aspx</guid>
      <link>http://feedproxy.google.com/~r/benjaminm/~3/2OfqyuvGeqw/DDD3DeadlineForSpeakerSubmissionsExtendedUntilMonday.aspx</link>
      <pubDate>Thu, 16 Mar 2006 12:14:59 GMT</pubDate>
      <description>We've extended the deadline for speaker submissions until this Monday 20th March to allow final submissions to be put forward.&amp;nbsp; We have &lt;a href="http://www.developerday.co.uk/ddd/agendaddd3.asp"&gt;an
excellent list of submissions&lt;/a&gt; so far, but we'd like to allow everyone enough time
to &lt;a href="http://www.developerday.co.uk/ddd/editsession.asp"&gt;submit a session&lt;/a&gt;.&amp;nbsp;
Attendee voting will&amp;nbsp;start on Tuesday.&lt;img width="0" height="0" src="http://benjaminm.net/aggbug.ashx?id=741e9606-48f6-46d8-acc7-071f34707628" /&gt;</description>
      <category>.NET</category>
      <category>UK .NET Community</category>
    <feedburner:origLink>http://benjaminm.net/2006/03/16/DDD3DeadlineForSpeakerSubmissionsExtendedUntilMonday.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://benjaminm.net/Trackback.aspx?guid=8b530650-cf92-475c-b56a-18e60be54e21</trackback:ping>
      <pingback:server>http://benjaminm.net/pingback.aspx</pingback:server>
      <pingback:target>http://benjaminm.net/PermaLink,guid,8b530650-cf92-475c-b56a-18e60be54e21.aspx</pingback:target>
      <dc:creator />
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.developerday.co.uk/ddd/default.asp">Developer Developer Developer</a>,
the free day-long conference for developers, by developers is back for a
third time on Saturday 3 June.  The <a href="http://www.developerday.co.uk/ddd/agendaddd3.asp">call
for speakers is open</a>.  If you've got a topic that you'd love to share with
other developers in the community, please <a href="http://www.developerday.co.uk/ddd/agendaddd3.asp">submit
a session.</a></p>
        <p>
Attendee registration will open later, but you can always <a href="http://www.developerday.co.uk/ddd/slides.asp">view
some of the videos from DDD II last October</a>.
</p>
        <img width="0" height="0" src="http://benjaminm.net/aggbug.ashx?id=8b530650-cf92-475c-b56a-18e60be54e21" />
      <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/benjaminm/~4/PqvTkL6IbkM" height="1" width="1" /></body>
      <title>DDD III on Sat 3 June: Call for Speakers!</title>
      <guid isPermaLink="false">http://benjaminm.net/PermaLink,guid,8b530650-cf92-475c-b56a-18e60be54e21.aspx</guid>
      <link>http://feedproxy.google.com/~r/benjaminm/~3/PqvTkL6IbkM/DDDIIIOnSat3JuneCallForSpeakers.aspx</link>
      <pubDate>Wed, 15 Feb 2006 23:05:44 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.developerday.co.uk/ddd/default.asp"&gt;Developer Developer Developer&lt;/a&gt;,
the free&amp;nbsp;day-long conference for developers, by developers&amp;nbsp;is back for a
third time on Saturday 3 June.&amp;nbsp; The &lt;a href="http://www.developerday.co.uk/ddd/agendaddd3.asp"&gt;call
for speakers is open&lt;/a&gt;.&amp;nbsp; If you've got a topic that you'd love to share with
other developers in the community, please &lt;a href="http://www.developerday.co.uk/ddd/agendaddd3.asp"&gt;submit
a session.&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Attendee registration will open later, but you can always &lt;a href="http://www.developerday.co.uk/ddd/slides.asp"&gt;view
some of the videos from DDD II last October&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://benjaminm.net/aggbug.ashx?id=8b530650-cf92-475c-b56a-18e60be54e21" /&gt;</description>
      <category>.NET</category>
      <category>UK .NET Community</category>
    <feedburner:origLink>http://benjaminm.net/2006/02/15/DDDIIIOnSat3JuneCallForSpeakers.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://benjaminm.net/Trackback.aspx?guid=ba82d3fa-88b1-4be2-b0b1-b4d838879d51</trackback:ping>
      <pingback:server>http://benjaminm.net/pingback.aspx</pingback:server>
      <pingback:target>http://benjaminm.net/PermaLink,guid,ba82d3fa-88b1-4be2-b0b1-b4d838879d51.aspx</pingback:target>
      <dc:creator />
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://weblogs.asp.net/nunitaddin/archive/2006/02/01/437082.aspx">Jamie Cansdale's
done it again</a>- he's added Test With -&gt; Coverage to the TestDriven.NET Visual
Studio add-in.  A picture's worth 1,000 words:
</p>
        <p>
          <img height="165" alt="TestDriven's new Test With Coverage option" src="http://benjaminm.net/content/binary/TestDrivenTestWithCoverage.JPG" width="454" border="0" />
        </p>
        <p>
Once the tests are run it launches <a href="http://www.kiwidude.com/blog/2006/02/testdrivennet-now-supports-ncover-133.html">Grant
Drake's (aka KiwiDude) re-write</a> of Jeff Key's NCoverExplorer.  The NCoverExplorer
then displays full coverage stats as well as illustrating the coverage of code blocks.  
Here's the output from a run over the NUnit code:
</p>
        <p>
          <img height="396" alt="Coverage results for the NUnitCore solution after running the NUnitCore tests" src="http://benjaminm.net/content/binary/NunitCoreCoverage.JPG" width="687" border="0" />
        </p>
        <p>
This is awesome work that will make it easier to understand and work with code.
</p>
        <img width="0" height="0" src="http://benjaminm.net/aggbug.ashx?id=ba82d3fa-88b1-4be2-b0b1-b4d838879d51" />
      <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/benjaminm/~4/DMaL5vcTvHk" height="1" width="1" /></body>
      <title>I can see clearly now: NUnitAddin and NCoverBrowser</title>
      <guid isPermaLink="false">http://benjaminm.net/PermaLink,guid,ba82d3fa-88b1-4be2-b0b1-b4d838879d51.aspx</guid>
      <link>http://feedproxy.google.com/~r/benjaminm/~3/DMaL5vcTvHk/ICanSeeClearlyNowNUnitAddinAndNCoverBrowser.aspx</link>
      <pubDate>Fri, 03 Feb 2006 13:03:11 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://weblogs.asp.net/nunitaddin/archive/2006/02/01/437082.aspx"&gt;Jamie Cansdale's
done it again&lt;/a&gt;- he's added Test With -&amp;gt; Coverage to the TestDriven.NET Visual
Studio add-in.&amp;nbsp; A picture's worth 1,000 words:
&lt;/p&gt;
&lt;p&gt;
&lt;img height=165 alt="TestDriven's new Test With Coverage option" src="http://benjaminm.net/content/binary/TestDrivenTestWithCoverage.JPG" width=454 border=0&gt;
&lt;/p&gt;
&lt;p&gt;
Once the tests are run it launches &lt;a href="http://www.kiwidude.com/blog/2006/02/testdrivennet-now-supports-ncover-133.html"&gt;Grant
Drake's (aka KiwiDude) re-write&lt;/a&gt; of Jeff Key's NCoverExplorer.&amp;nbsp; The NCoverExplorer
then displays full coverage stats as well as illustrating the coverage of code blocks.&amp;nbsp;&amp;nbsp;
Here's the output from a run over the NUnit code:
&lt;/p&gt;
&lt;p&gt;
&lt;img height=396 alt="Coverage results for the NUnitCore solution after running the NUnitCore tests" src="http://benjaminm.net/content/binary/NunitCoreCoverage.JPG" width=687 border=0&gt;
&lt;/p&gt;
&lt;p&gt;
This is awesome work that will make it easier to understand and work with code.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://benjaminm.net/aggbug.ashx?id=ba82d3fa-88b1-4be2-b0b1-b4d838879d51" /&gt;</description>
      <category>.NET</category>
      <category>Extreme Programming</category>
    <feedburner:origLink>http://benjaminm.net/2006/02/03/ICanSeeClearlyNowNUnitAddinAndNCoverBrowser.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://benjaminm.net/Trackback.aspx?guid=acf16e71-68ee-4ce1-a1a2-423ca9dcb155</trackback:ping>
      <pingback:server>http://benjaminm.net/pingback.aspx</pingback:server>
      <pingback:target>http://benjaminm.net/PermaLink,guid,acf16e71-68ee-4ce1-a1a2-423ca9dcb155.aspx</pingback:target>
      <dc:creator />
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I came across this interesting <a href="http://online.wsj.com/article/0,,SB112743680328349448,00.html?mod=todays_us_page_one">article
on how Jim Allchin has championed developing Windows Vista in a more agile way</a>. 
He mentioned several times in <a href="http://www.microsoft.com/presspass/exec/Jim/09-13PDC2005.mspx">his
PDC keynote</a> that Microsoft had changed the way they were developing software,
but didn't provide many details.  Here's an example:
</p>
        <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
          <p>
We feel very confident about broad availability [of Windows Vista] by the end of 2006.
Now, why do we feel that confidence? We feel the confidence because we re-did the
way we were building Windows. During the last two years, we completely re-engineered
engineering 
</p>
        </blockquote>
        <p>
Microsoft have always prided itself that it understood how to ship software,
so it's interesting to see them reflecting on the problems with their current
approaches and how they can be improved.
</p>
        <p>
Here are some interesting points:
</p>
        <ul>
          <li>
They have reduced the amount of time spent integrating components together by
sorting out the dependency between components.  Knowing these dependencies, and
working on minimising them (sounds like architecture to me), is enabling Microsoft
to leave up components that don't pass 'quality gates'</li>
          <li>
They are reducing the idea that 'pulling an all nighter' and being a heroic developer
is something to admire:</li>
        </ul>
        <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
          <p>
In 2001 Microsoft made a documentary film celebrating the creation of Windows XP,
which remains the latest full update of Windows. When Mr. Allchin previewed the film,
it confirmed some of his misgivings about the Windows culture. He saw the eleventh-hour
heroics needed to finish the product and get it to customers. Mr. Allchin ordered
the film to be burned.
</p>
        </blockquote>
        <ul dir="ltr">
          <li>
Bill Gates being was worried about upsetting the status-quo, 'taxing' the developers
with process and was concerned about backlash from the developer teams.</li>
          <li>
They are finding a lot of value in automated testing tools.  One thought
that has been bouncing around my head since the PDC is the comment that Jeffrey Richter
made about the problem where a method was added to a class as an instance method,
when all other methods were static and the constructor was private, which meant that
the instance method could never been used.  As Jeffrey Richter said, it's clear
that the developer had not written a single test to check his (I know it was as a
he - the guy owns up to the mistake in Brad Abrams' excellent new book '<a href="http://www.amazon.com/exec/obidos/redirect?link_code=ur2&amp;camp=1789&amp;tag=bradabramsblo-20&amp;creative=9325&amp;path=tg/detail/-/0321246756/qid=1123679961/sr=8-1/ref=sr_8_xs_ap_i1_xgl14?v=glance%26s=books%26n=507846">Framework
Design Guidelines</a>') work!  Clearly Microsoft have a way to go in getting
test infected.</li>
          <li>
Reducing the build time of the product has meant they are getting greater feedback
more quickly.</li>
        </ul>
        <p dir="ltr">
Recently I've been in the position of working with an ex-IBM Architect and an ex-Microsoft
Dev Lead. It's been interesting to see the differences in backgrounds and perspectives,
which broadly fall into the differences between Architecture and low-level system
Development.  An example was a discussion about finding the distance between
a point and a rectangle.  The Developer had come up with a patented approach
to solving the problem in an extremely efficient way, but the Architect wanted to
know why the problem only considered rectangles, and whether it couldn't have been
abstracted further to consider many different types of shapes.
</p>
        <p>
The discussions have helped me see the value of both approaches, but overall, the
need to architect a solution well, since it is easier to find faster algorithms, but
if things haven't been architected well it's a great burden to refactor the structure
of the code.
</p>
        <img width="0" height="0" src="http://benjaminm.net/aggbug.ashx?id=acf16e71-68ee-4ce1-a1a2-423ca9dcb155" />
      <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/benjaminm/~4/hCdjFBX8xVA" height="1" width="1" /></body>
      <title>Microsoft getting Agile with Windows</title>
      <guid isPermaLink="false">http://benjaminm.net/PermaLink,guid,acf16e71-68ee-4ce1-a1a2-423ca9dcb155.aspx</guid>
      <link>http://feedproxy.google.com/~r/benjaminm/~3/hCdjFBX8xVA/MicrosoftGettingAgileWithWindows.aspx</link>
      <pubDate>Mon, 26 Sep 2005 21:35:00 GMT</pubDate>
      <description>&lt;p&gt;
I came across this&amp;nbsp;interesting &lt;a href="http://online.wsj.com/article/0,,SB112743680328349448,00.html?mod=todays_us_page_one"&gt;article
on how Jim Allchin has championed&amp;nbsp;developing Windows Vista in a more agile way&lt;/a&gt;.&amp;nbsp;
He mentioned several times in &lt;a href="http://www.microsoft.com/presspass/exec/Jim/09-13PDC2005.mspx"&gt;his
PDC keynote&lt;/a&gt; that Microsoft had changed the way they were developing software,
but didn't provide many details.&amp;nbsp; Here's an example:
&lt;/p&gt;
&lt;blockquote dir=ltr style="MARGIN-RIGHT: 0px"&gt; 
&lt;p&gt;
We feel very confident about broad availability [of Windows Vista] by the end of 2006.
Now, why do we feel that confidence? We feel the confidence because we re-did the
way we were building Windows. During the last two years, we completely re-engineered
engineering 
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Microsoft&amp;nbsp;have always prided itself that it understood how to ship software,
so&amp;nbsp;it's interesting to see them reflecting on the problems with their current
approaches and how they can be improved.
&lt;/p&gt;
&lt;p&gt;
Here are some interesting points:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
They have reduced&amp;nbsp;the amount of time spent integrating components together by
sorting out the dependency between components.&amp;nbsp; Knowing these dependencies, and
working on minimising them (sounds like architecture to me), is enabling Microsoft
to leave up components that don't pass 'quality gates'&lt;/li&gt;
&lt;li&gt;
They are reducing the idea that 'pulling an all nighter' and being a heroic developer
is something to admire:&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote dir=ltr style="MARGIN-RIGHT: 0px"&gt; 
&lt;p&gt;
In 2001 Microsoft made a documentary film celebrating the creation of Windows XP,
which remains the latest full update of Windows. When Mr. Allchin previewed the film,
it confirmed some of his misgivings about the Windows culture. He saw the eleventh-hour
heroics needed to finish the product and get it to customers. Mr. Allchin ordered
the film to be burned.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;ul dir=ltr&gt;
&lt;li&gt;
Bill Gates being was worried about upsetting the status-quo, 'taxing' the developers
with process and was concerned about backlash from the developer teams.&lt;/li&gt;
&lt;li&gt;
They are finding a lot of value in&amp;nbsp;automated testing tools.&amp;nbsp; One thought
that has been bouncing around my head since the PDC is the comment that Jeffrey Richter
made about the problem where a method was added to a class as an instance method,
when all other methods were static and the constructor was private, which meant that
the instance method could never been used.&amp;nbsp; As Jeffrey Richter said, it's clear
that the developer had not written a single test to check his (I know it was as a
he - the guy owns up to the mistake in Brad Abrams' excellent new book '&lt;a href="http://www.amazon.com/exec/obidos/redirect?link_code=ur2&amp;amp;camp=1789&amp;amp;tag=bradabramsblo-20&amp;amp;creative=9325&amp;amp;path=tg/detail/-/0321246756/qid=1123679961/sr=8-1/ref=sr_8_xs_ap_i1_xgl14?v=glance%26s=books%26n=507846"&gt;Framework
Design Guidelines&lt;/a&gt;') work!&amp;nbsp; Clearly Microsoft have a way to go in getting
test infected.&lt;/li&gt;
&lt;li&gt;
Reducing the build time of the product has meant they are getting greater feedback
more quickly.&lt;/li&gt;
&lt;/ul&gt;
&lt;p dir=ltr&gt;
Recently I've been in the position of working with an ex-IBM Architect and an ex-Microsoft
Dev Lead.&amp;nbsp;It's been interesting to see the differences in backgrounds and perspectives,
which broadly fall into the differences between Architecture and low-level system
Development.&amp;nbsp; An example was a discussion about finding the distance between
a point and a rectangle.&amp;nbsp; The Developer had come up with a patented approach
to solving the problem in an extremely efficient way, but the Architect wanted to
know why the problem only considered rectangles, and whether it couldn't have been
abstracted further to consider many different types of shapes.
&lt;/p&gt;
&lt;p&gt;
The discussions have helped me see the value of both approaches, but overall, the
need to architect a solution well, since it is easier to find faster algorithms, but
if things haven't been architected well it's a great burden to refactor the structure
of the code.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://benjaminm.net/aggbug.ashx?id=acf16e71-68ee-4ce1-a1a2-423ca9dcb155" /&gt;</description>
      <category>PDC</category>
    <feedburner:origLink>http://benjaminm.net/2005/09/26/MicrosoftGettingAgileWithWindows.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://benjaminm.net/Trackback.aspx?guid=1f87bbab-b4da-4837-9f60-6c9f9747681a</trackback:ping>
      <pingback:server>http://benjaminm.net/pingback.aspx</pingback:server>
      <pingback:target>http://benjaminm.net/PermaLink,guid,1f87bbab-b4da-4837-9f60-6c9f9747681a.aspx</pingback:target>
      <dc:creator />
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p lang="EN-GB" style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">
In the keynote yesterday, Don Box and Chris Anderson showed how Indigo can be used
in a REST style by sending Plain Old XML (POX) over HTTP.  It’s a great testament
to the quality of the Indigo extensibility architecture that they could do this. 
By supporting both the REST and SOAP styles it takes the heat out of the debate that
one is better than the other.
</p>
        <p lang="EN-GB" style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">
One of the Hands On Labs goes through the code they used in detail.  The example
uses a HTTP GET request to return a plain XML payload, in this case a RSS feed. 
An extra level of detail was the fact that the RSS added a custom element indicating
an 'adult content rating' system, which was signed.  There were several interesting
points from the Hands On Lab.
</p>
        <p lang="EN-GB" style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">
One complexity around supporting a REST style with Indigo comes from the fact that
the HTTP GET request does not have any WS-Address-style action.  To get around
this you can use the mapAddresssHeadersToHttpHeaders attribute of the HttpBindingElelement
to make the URI of the HTTP GET request the To value on the Indigo Message object.
</p>
        <p lang="EN-GB" style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">
Since no action is specified on the HTTP GET request the ServiceContract needs to
trap any unmatched action using the OperationContract's Action named parameter:
</p>
        <p>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
            <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span>
            <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">interface</span> IRestStyleRequestResponse<br />
{<br /></span>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">  
[OperationContract(Action=<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"*"</span>)]<br />
   Message GetRequest(Message request);<br />
}</span>
        </p>
        <p lang="EN-GB" style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">
Since the HTTP GET request on the HTTP transport in Indigo usually returns a description
of the service, this needs to be turned off using the Description property of an instance
of the ServiceHost type:
</p>
        <p>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
            <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">//
service is an instance of ServiceHost</span>
            <br />
            <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">//
stop the HTTP GET returning the site description.</span>
            <br />
service.Description.Behaviors.Remove(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">typeof</span>(ServiceMetadataBehavior));</span>
        </p>
        <p lang="EN-GB" style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">
To hook in this binding a custom BindingElement extension was written.  The lab
walked through creating a IChannelFactory and IListenerFactory and the rest of the
necessary objects as part of the WCF stack.   Just before the transport
binding element in the Binding stack there's a custom encoder which does the job of
writing out the Message to the wire as plain XML, rather than a SOAP message (as Don
Box said yesterday, 'it lathers the SOAP off the message on the way out and SOAPs
up the message on the way back in').
</p>
        <img width="0" height="0" src="http://benjaminm.net/aggbug.ashx?id=1f87bbab-b4da-4837-9f60-6c9f9747681a" />
      <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/benjaminm/~4/kKbFmVBJ6eA" height="1" width="1" /></body>
      <title>Indigo helps end the POX/REST debate</title>
      <guid isPermaLink="false">http://benjaminm.net/PermaLink,guid,1f87bbab-b4da-4837-9f60-6c9f9747681a.aspx</guid>
      <link>http://feedproxy.google.com/~r/benjaminm/~3/kKbFmVBJ6eA/IndigoHelpsEndThePOXRESTDebate.aspx</link>
      <pubDate>Wed, 14 Sep 2005 19:52:58 GMT</pubDate>
      <description>&lt;p lang=EN-GB style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;
In the keynote yesterday, Don Box and Chris Anderson showed how Indigo can be used
in a REST style by sending Plain Old XML (POX) over HTTP.&amp;nbsp; It’s a great testament
to the quality of the Indigo extensibility architecture that they could do this.&amp;nbsp;
By supporting both the REST and SOAP styles it takes the heat out of the debate that
one is better than the other.
&lt;/p&gt;
&lt;p lang=EN-GB style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;
One of the Hands On Labs goes through the code they used in detail.&amp;nbsp; The example
uses a HTTP GET request to return a plain XML payload, in this case a RSS feed.&amp;nbsp;
An extra level of detail was the fact that the RSS added a custom element indicating
an 'adult content rating' system, which was signed.&amp;nbsp; There were several interesting
points from the Hands On Lab.
&lt;/p&gt;
&lt;p lang=EN-GB style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;
One complexity around supporting a REST style with Indigo comes from the fact that
the HTTP GET request does not have any WS-Address-style action.&amp;nbsp; To get around
this you can use the mapAddresssHeadersToHttpHeaders attribute of the HttpBindingElelement
to make the URI of the HTTP GET request the To value on the Indigo Message object.
&lt;/p&gt;
&lt;p lang=EN-GB style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;
Since no action is specified on the HTTP GET request the ServiceContract needs to
trap any unmatched action using the OperationContract's Action named parameter:
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;interface&lt;/span&gt; IRestStyleRequestResponse&lt;br&gt;
{&lt;br&gt;
&lt;/span&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;
[OperationContract(Action=&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"*"&lt;/span&gt;)]&lt;br&gt;
&amp;nbsp;&amp;nbsp; Message GetRequest(Message request);&lt;br&gt;
}&lt;/span&gt;
&lt;/p&gt;
&lt;p lang=EN-GB style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;
Since the HTTP GET request on the HTTP transport in Indigo usually returns a description
of the service, this needs to be turned off using the Description property of an instance
of the ServiceHost type:
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;//
service is an instance of ServiceHost&lt;/span&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;//
stop the HTTP GET returning the site description.&lt;/span&gt;
&lt;br&gt;
service.Description.Behaviors.Remove(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;typeof&lt;/span&gt;(ServiceMetadataBehavior));&lt;/span&gt;
&lt;/p&gt;
&lt;p lang=EN-GB style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;
To hook in this binding a custom BindingElement extension was written.&amp;nbsp; The lab
walked through creating a IChannelFactory and IListenerFactory and the rest of the
necessary objects as part of the WCF stack.&amp;nbsp;&amp;nbsp; Just before the transport
binding element in the Binding stack there's a custom encoder which does the job of
writing out the Message to the wire as plain XML, rather than a SOAP message (as Don
Box said yesterday, 'it lathers the SOAP off the message on the way out and SOAPs
up the message on the way back in').
&lt;/p&gt;
&lt;img width="0" height="0" src="http://benjaminm.net/aggbug.ashx?id=1f87bbab-b4da-4837-9f60-6c9f9747681a" /&gt;</description>
      <category>.NET</category>
      <category>Indigo</category>
      <category>PDC</category>
    <feedburner:origLink>http://benjaminm.net/2005/09/14/IndigoHelpsEndThePOXRESTDebate.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://benjaminm.net/Trackback.aspx?guid=6a6fce42-76e3-4a16-944b-720b77fd3af4</trackback:ping>
      <pingback:server>http://benjaminm.net/pingback.aspx</pingback:server>
      <pingback:target>http://benjaminm.net/PermaLink,guid,6a6fce42-76e3-4a16-944b-720b77fd3af4.aspx</pingback:target>
      <dc:creator />
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p lang="EN-GB" style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">
Office 12 was unvieled for the first time during the Bill Gates' PDC keynote. 
The main thing of note was a simplified user interface devoid of menus and toolbars
and replaced with task-focussed tabs and the 'ribbon' bar.  The big question:
does this represent a great leap forward in goal-focussed usability or will this be
the 'New Coke' moment for Office?
</p>
        <p lang="EN-GB" style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">
Bill's initial comments:
</p>
        <ul style="MARGIN-TOP: 0in; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.5in; DIRECTION: ltr; unicode-bidi: embed" type="disc">
          <li lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle">
Promise of previous PDCs has been realised.  2000 was about .NET and XML Web
Service, 2003 was Avalon (Windows Presentation Foundation) and Indigo (Windows Communication
Framework) and Longhorn (Vista).  A shame that Hailstorm and ObjectSpaces have
been so quickly forgotten, but software is a cut throat game. 
</li>
          <li lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle">
.NET is the most popular development platform in the word 
</li>
          <li lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle">
XML has been core and has gone through three phases: surface support in terms of tools
that worked with it, then platform level support in terms of .NET and XML web services,
then core in terms of integration with SQL Server and Office. 
</li>
          <li lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle">
XML has become persuasive.  RSS has given us notifications, XML Schemas are being
used to create industry schemas and now with WS-* the enabling of protocols to handle
security and other requirements. 
</li>
          <li lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle">
Standard comments about 'an exciting time', 'still not halfway through the PC revolution'. 
"Best industry in the world", "exciting times" 
</li>
          <li lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle">
PC shipments are up 15% on last year to 200 million units a year.</li>
        </ul>
        <p lang="EN-GB" style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">
Funny things that came up on the closed captions on the video screen as Bill spoke:
</p>
        <ul style="MARGIN-TOP: 0in; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.5in; DIRECTION: ltr; unicode-bidi: embed" type="disc">
          <li lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle">
'Intel a mir a cash mode' -  'IntelliMirror cache mode' 
</li>
          <li lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle">
'Things like our asses are driving up to do this' (RSS) 
</li>
          <li lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle">
Sin yer jistic (synergistic)</li>
        </ul>
        <p lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle">
Overall I was incredible impressed that the subtitles kept pace and did such
an accurate job.
</p>
        <p lang="EN-GB" style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">
          <strong>Windows Vista Demo</strong>
        </p>
        <p lang="EN-GB" style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">
"Clarity" Demos:
</p>
        <ul style="MARGIN-TOP: 0in; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.5in; DIRECTION: ltr; unicode-bidi: embed" type="disc">
          <li lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle">
Task bar now shows preview of documents when you mouse over them. 
</li>
          <li lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle">
Alt+Tab now shows a 'flip view' that shows a strip with the same document previews. 
</li>
          <li lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle">
Windows Key and Space Bar shows a 'stacked' window view with the windows stacked three
deep. 
</li>
          <li lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle">
Quick search shows in all explorer views, plus the desktop sidebar.  Interestingly
it now appears at the bottom of the start bar.  It will show search results in
place and search the desktop and the internet. 
</li>
          <li lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle">
The thumbnail of files shows up in explorer view. 
</li>
          <li lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle">
The search on the explorer will search document metadata (e.g. author) and text -
although unfortunately there was no visual highlighting of where the search appeared. 
</li>
          <li lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle">
Virtual folders are supported.  They are defined with XML files (simple elements
like cope and tags) and allow you to see all documents on the PC.  These can
be organised by metadata in a couple of new ways (stack, keywords, author). 
</li>
          <li lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle">
Documents can be 'painted' with metadata by dragging and dropping. 
</li>
          <li lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle">
The side bar (think side bar, same clock as PDC 2003) hosts gadgets, written in DHTML,
script or WCF). 
</li>
          <li lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle">
Gadgets are a new feature that allows information to be displayed on a laptop lid
(such as flight information, or ability to control music).  Some need the laptop
to be powered, some don’t.</li>
        </ul>
        <p lang="EN-GB" style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">
"Confidence" Demos:
</p>
        <ul style="MARGIN-TOP: 0in; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.5in; DIRECTION: ltr; unicode-bidi: embed" type="disc">
          <li lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle">
Phishing sites have increased 500%.  IE 7 has some new features to show phishing
sites.  For example, if the site uses an IP address the address bar turns yellow
and there is a security icon that warns this may be a phishing site. 
</li>
          <li lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle">
Clicking on the security warning allows you to report this site as a potential phishing
site. 
</li>
          <li lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle">
Microsoft is going to host a phishing site review group that will investigate the
possible phishing site votes (and similar, 'this is not a phishing site' link) 
</li>
          <li lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle">
The dynamic protection service which powers this feature is opt-in.  If a site
has been reported and judged to be a phishing site then the address bar goes red and
comes up with a warning. 
</li>
          <li lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle">
IE7 also has tab, as well as an 'all tabs view' where you have the ability to view
all open tabs in a thumbnail view.  They can be saved as a common set - so you
could save your favourite 5 sites as a set and open them up each morning. 
</li>
          <li lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle">
RSS is built into the browser.  This works with the platform RSS store so the
sidebar can display the RSS feeds as well.  Viewing the xml feed behind the RSS
shows up with a nicely formatted page. 
</li>
          <li lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle">
Microsoft CRM is using RSS to send notifications via RSS.</li>
        </ul>
        <p lang="EN-GB" style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">
          <strong>Office 12 Demos<br /></strong>Word
</p>
        <ul style="MARGIN-TOP: 0in; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.5in; DIRECTION: ltr; unicode-bidi: embed" type="disc">
          <li lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle">
Word used to have 1500 commands and 35 toolbars.  9 out of 10 request for features
in Office were features already in the product. 
</li>
          <li lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle">
No more toolbars or menus!  There's now a 'ribbon' area that is task based -
so you might be 'insert'ing in word or using tables. 
</li>
          <li lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle">
The keyboard shortcuts are still available, they just don't seem visible on any of
the screens. 
</li>
          <li lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle">
The team think that 60 - 80% of the features are available in the new tabs. 
</li>
          <li lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle">
The tabs do make some tasks, like adding a header or footer much easier to use. 
</li>
          <li lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle">
There are improved tool tips with more text to explain the features. 
</li>
          <li lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle">
Using the Tables tab in Excel allows you to format tables in Excel.  Selecting
the table formatting example shows the formatting in place (I didn't see how to undo
this command) 
</li>
          <li lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle">
Apparently they are finding people don't need much training to use the product. 
They 'don't need training wheels'.  It will be interesting to see how this flies
with large company's IT directors. 
</li>
          <li lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle">
Word has a nice feature to insert drop-downs, showing the formatting in place. 
</li>
          <li lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle">
There is still a File menu.  It has useful features like Finalize that let you
clear up hidden text, comments and other features.</li>
        </ul>
        <p lang="EN-GB" style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">
PowerPoint
</p>
        <ul style="MARGIN-TOP: 0in; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.5in; DIRECTION: ltr; unicode-bidi: embed" type="disc">
          <li lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle">
Improved shape support - automatically converts bullet points into different graphics
(cycle of boxes, graph with points on them).</li>
        </ul>
        <p lang="EN-GB" style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">
Outlook
</p>
        <ul style="MARGIN-TOP: 0in; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.5in; DIRECTION: ltr; unicode-bidi: embed" type="disc">
          <li lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle">
Still has the command bars! 
</li>
          <li lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle">
Is now focused around a to-do list.  Now easier to create tasks off email. 
Ability to flag email with a time to follow up so that they appear in the tasks. 
Should improve some of the Getting Things Done style work. 
</li>
          <li lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle">
RSS feeds are built in. 
</li>
          <li lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle">
Support for different office documents and SharePoint emails. 
</li>
          <li lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle">
Attachments can be viewed in place.</li>
        </ul>
        <p lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle">
 
</p>
        <p lang="EN-GB" style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle">
          <strong>Thoughts on the new interface<br /></strong>It will be interesting to see the responses since it is quite a change from
the current Office user interface, though I think it is a positive change - ever time
I visit my dad he always has 17 toolbars in word, with one button on each of them
because the toolbars terrify him so much.  The new user interface will protect
him from that kind of advanced customisation.
</p>
        <p lang="EN-GB" style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">
The user interface definitely seems to work much better than it would appear when
initially viewed.  It will be interesting to see how corporate customers react
and whether they think the new interface will be as intuitive as it is claimed, or
whether the possible re-training costs might be an inhibitor to adoption.
</p>
        <img width="0" height="0" src="http://benjaminm.net/aggbug.ashx?id=6a6fce42-76e3-4a16-944b-720b77fd3af4" />
      <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/benjaminm/~4/0TSs1nHzL5E" height="1" width="1" /></body>
      <title>Bill Gates' PDC Keynote: Office 12 and the end of menus</title>
      <guid isPermaLink="false">http://benjaminm.net/PermaLink,guid,6a6fce42-76e3-4a16-944b-720b77fd3af4.aspx</guid>
      <link>http://feedproxy.google.com/~r/benjaminm/~3/0TSs1nHzL5E/BillGatesPDCKeynoteOffice12AndTheEndOfMenus.aspx</link>
      <pubDate>Tue, 13 Sep 2005 19:46:42 GMT</pubDate>
      <description>&lt;p lang=EN-GB style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;
Office 12 was unvieled for the first time during the Bill Gates' PDC keynote.&amp;nbsp;
The main thing of note was&amp;nbsp;a simplified user interface devoid of menus and toolbars
and replaced with task-focussed tabs and the 'ribbon' bar.&amp;nbsp; The big question:
does this represent a great leap forward in goal-focussed usability or will this be
the 'New Coke' moment for Office?
&lt;/p&gt;
&lt;p lang=EN-GB style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;
Bill's initial comments:
&lt;/p&gt;
&lt;ul style="MARGIN-TOP: 0in; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.5in; DIRECTION: ltr; unicode-bidi: embed" type=disc&gt;
&lt;li lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;
Promise of previous PDCs has been realised.&amp;nbsp; 2000 was about .NET and XML Web
Service, 2003 was Avalon (Windows Presentation Foundation) and Indigo (Windows Communication
Framework) and Longhorn (Vista).&amp;nbsp; A shame that Hailstorm and ObjectSpaces have
been so quickly forgotten, but software is&amp;nbsp;a cut throat game. 
&lt;li lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;
.NET is the most popular development platform in the word 
&lt;li lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;
XML has been core and has gone through three phases: surface support in terms of tools
that worked with it, then platform level support in terms of .NET and XML web services,
then core in terms of integration with SQL Server and Office. 
&lt;li lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;
XML has become persuasive.&amp;nbsp; RSS has given us notifications, XML Schemas are being
used to create industry schemas and now with WS-* the enabling of protocols to handle
security and other requirements. 
&lt;li lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;
Standard comments about 'an exciting time', 'still not halfway through the PC revolution'.&amp;nbsp;
"Best industry in the world", "exciting times" 
&lt;li lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;
PC shipments are up 15% on last year to 200 million units a year.&lt;/li&gt;
&lt;/ul&gt;
&lt;p lang=EN-GB style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;
Funny things that came up on the closed captions on the video screen as Bill spoke:
&lt;/p&gt;
&lt;ul style="MARGIN-TOP: 0in; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.5in; DIRECTION: ltr; unicode-bidi: embed" type=disc&gt;
&lt;li lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;
'Intel a mir a cash mode' - &amp;nbsp;'IntelliMirror cache mode' 
&lt;li lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;
'Things like our asses&amp;nbsp;are driving up to do this' (RSS) 
&lt;li lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;
Sin yer jistic (synergistic)&lt;/li&gt;
&lt;/ul&gt;
&lt;p lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;
Overall I was&amp;nbsp;incredible impressed that the subtitles kept pace and did such
an accurate job.
&lt;/p&gt;
&lt;p lang=EN-GB style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;
&lt;strong&gt;Windows Vista Demo&lt;/strong&gt;
&lt;/p&gt;
&lt;p lang=EN-GB style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;
"Clarity" Demos:
&lt;/p&gt;
&lt;ul style="MARGIN-TOP: 0in; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.5in; DIRECTION: ltr; unicode-bidi: embed" type=disc&gt;
&lt;li lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;
Task bar now shows preview of documents when you mouse over them. 
&lt;li lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;
Alt+Tab now shows a 'flip view' that shows a strip with the same document previews. 
&lt;li lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;
Windows Key and Space Bar shows a 'stacked' window view with the windows stacked three
deep. 
&lt;li lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;
Quick search shows in all explorer views, plus the desktop sidebar.&amp;nbsp; Interestingly
it now appears at the bottom of the start bar.&amp;nbsp; It will show search results in
place and search the desktop and the internet. 
&lt;li lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;
The thumbnail of files shows up in explorer view. 
&lt;li lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;
The search on the explorer will search document metadata (e.g. author) and text -
although unfortunately there was no visual highlighting of where the search appeared. 
&lt;li lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;
Virtual folders are supported.&amp;nbsp; They are defined with XML files (simple elements
like cope and tags) and allow you to see all documents on the PC.&amp;nbsp; These can
be organised by metadata in a couple of new ways (stack, keywords, author). 
&lt;li lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;
Documents can be 'painted' with metadata by dragging and dropping. 
&lt;li lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;
The side bar (think side bar, same clock as PDC 2003) hosts gadgets, written in DHTML,
script or WCF). 
&lt;li lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;
Gadgets are a new feature that allows information to be displayed on a laptop lid
(such as flight information, or ability to control music).&amp;nbsp; Some need the laptop
to be powered, some don’t.&lt;/li&gt;
&lt;/ul&gt;
&lt;p lang=EN-GB style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;
"Confidence" Demos:
&lt;/p&gt;
&lt;ul style="MARGIN-TOP: 0in; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.5in; DIRECTION: ltr; unicode-bidi: embed" type=disc&gt;
&lt;li lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;
Phishing sites have increased 500%.&amp;nbsp; IE 7 has some new features to show phishing
sites.&amp;nbsp; For example, if the site uses an IP address the address bar turns yellow
and there is a security icon that warns this may be a phishing site. 
&lt;li lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;
Clicking on the security warning allows you to report this site as a potential phishing
site. 
&lt;li lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;
Microsoft is going to host a phishing site review group that will investigate the
possible phishing site votes (and similar, 'this is not a phishing site' link) 
&lt;li lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;
The dynamic protection service which powers this feature is opt-in.&amp;nbsp; If a site
has been reported and judged to be a phishing site then the address bar goes red and
comes up with a warning. 
&lt;li lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;
IE7 also has tab, as well as an 'all tabs view' where you have the ability to view
all open tabs in a thumbnail view.&amp;nbsp; They can be saved as a common set - so you
could save your favourite 5 sites as a set and open them up each morning. 
&lt;li lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;
RSS is built into the browser.&amp;nbsp; This works with the platform RSS store so the
sidebar can display the RSS feeds as well.&amp;nbsp; Viewing the xml feed behind the RSS
shows up with a nicely formatted page. 
&lt;li lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;
Microsoft CRM is using RSS to send notifications via RSS.&lt;/li&gt;
&lt;/ul&gt;
&lt;p lang=EN-GB style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;
&lt;strong&gt;Office 12 Demos&lt;br&gt;
&lt;/strong&gt;Word
&lt;/p&gt;
&lt;ul style="MARGIN-TOP: 0in; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.5in; DIRECTION: ltr; unicode-bidi: embed" type=disc&gt;
&lt;li lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;
Word used to have 1500 commands and 35 toolbars.&amp;nbsp; 9 out of 10 request for features
in Office were features already in the product. 
&lt;li lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;
No more toolbars or menus!&amp;nbsp; There's now a 'ribbon' area that is task based -
so you might be 'insert'ing in word or using tables. 
&lt;li lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;
The keyboard shortcuts are still available, they just don't seem visible on any of
the screens. 
&lt;li lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;
The team think that 60 - 80% of the features are available in the new tabs. 
&lt;li lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;
The tabs do make some tasks, like adding a header or footer much easier to use. 
&lt;li lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;
There are improved tool tips with more text to explain the features. 
&lt;li lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;
Using the Tables tab in Excel allows you to format tables in Excel.&amp;nbsp; Selecting
the table formatting example shows the formatting in place (I didn't see how to undo
this command) 
&lt;li lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;
Apparently they are finding people don't need much training to use the product.&amp;nbsp;
They 'don't need training wheels'.&amp;nbsp; It will be interesting to see how this flies
with large company's IT directors. 
&lt;li lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;
Word has a nice feature to insert drop-downs, showing the formatting in place. 
&lt;li lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;
There is still a File menu.&amp;nbsp; It has useful features like Finalize that let you
clear up hidden text, comments and other features.&lt;/li&gt;
&lt;/ul&gt;
&lt;p lang=EN-GB style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;
PowerPoint
&lt;/p&gt;
&lt;ul style="MARGIN-TOP: 0in; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.5in; DIRECTION: ltr; unicode-bidi: embed" type=disc&gt;
&lt;li lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;
Improved shape support - automatically converts bullet points into different graphics
(cycle of boxes, graph with points on them).&lt;/li&gt;
&lt;/ul&gt;
&lt;p lang=EN-GB style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;
Outlook
&lt;/p&gt;
&lt;ul style="MARGIN-TOP: 0in; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.5in; DIRECTION: ltr; unicode-bidi: embed" type=disc&gt;
&lt;li lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;
Still has the command bars! 
&lt;li lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;
Is now focused around a to-do list.&amp;nbsp; Now easier to create tasks off email.&amp;nbsp;
Ability to flag email with a time to follow up so that they appear in the tasks.&amp;nbsp;
Should improve some of the Getting Things Done style work. 
&lt;li lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;
RSS feeds are built in. 
&lt;li lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;
Support for different office documents and SharePoint emails. 
&lt;li lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;
Attachments can be viewed in place.&lt;/li&gt;
&lt;/ul&gt;
&lt;p lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p lang=EN-GB style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;
&lt;strong&gt;Thoughts on the new interface&lt;br&gt;
&lt;/strong&gt;It will be interesting to see the responses since it is quite a change from
the current Office user interface, though I think it is a positive change - ever time
I visit my dad he always has 17 toolbars in word, with one button on each of them
because the toolbars terrify him so much.&amp;nbsp; The new user interface will protect
him from that kind of advanced customisation.
&lt;/p&gt;
&lt;p lang=EN-GB style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;
The user interface definitely seems to work much better than it would appear when
initially viewed.&amp;nbsp; It will be interesting to see how corporate customers react
and whether they think the new interface will be as intuitive as it is claimed, or
whether the possible re-training costs might be an inhibitor to adoption.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://benjaminm.net/aggbug.ashx?id=6a6fce42-76e3-4a16-944b-720b77fd3af4" /&gt;</description>
      <category>.NET</category>
      <category>PDC</category>
    <feedburner:origLink>http://benjaminm.net/2005/09/13/BillGatesPDCKeynoteOffice12AndTheEndOfMenus.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://benjaminm.net/Trackback.aspx?guid=0290312e-3153-4198-9497-21c6412d5475</trackback:ping>
      <pingback:server>http://benjaminm.net/pingback.aspx</pingback:server>
      <pingback:target>http://benjaminm.net/PermaLink,guid,0290312e-3153-4198-9497-21c6412d5475.aspx</pingback:target>
      <dc:creator />
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
At the end of Jeffrey Richter's talk yesterday he showed the depth to which Microsoft
has gone to ensure that Windows runs all applications well.  He an exe
file called armymen.exe (here's <a href="http://tempurisnacks.blogspot.com/2004_12_01_tempurisnacks_archive.html">another
mention of it</a>) that was actually just a renamed copy of Notepad.exe.  It
had three subfolders, each with a zero byte file in it.  When he clicked on it,
Windows XP resized the screen to 640 x 480 at 16 colours and disabled that ALT + Tab
task switching.  Closing the task returned the screen to normal.  
</p>
        <p>
Under the covers, Windows has some hard-coded logic that checks for the name 'armymen'
and the related directories and files and adjusts the screen accordingly.
</p>
        <p>
This highlights the lengths that Microsoft have gone to in order that all applications
continue to run.  It also makes me glad that I'm not writing operating systems.
</p>
        <img width="0" height="0" src="http://benjaminm.net/aggbug.ashx?id=0290312e-3153-4198-9497-21c6412d5475" />
      <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/benjaminm/~4/v9aVaDfbFyw" height="1" width="1" /></body>
      <title>Why writing an Operating System is Hard</title>
      <guid isPermaLink="false">http://benjaminm.net/PermaLink,guid,0290312e-3153-4198-9497-21c6412d5475.aspx</guid>
      <link>http://feedproxy.google.com/~r/benjaminm/~3/v9aVaDfbFyw/WhyWritingAnOperatingSystemIsHard.aspx</link>
      <pubDate>Mon, 12 Sep 2005 18:16:59 GMT</pubDate>
      <description>&lt;p&gt;
At the end of Jeffrey Richter's talk yesterday he showed the depth to which Microsoft
has gone to ensure that Windows runs all applications well.&amp;nbsp; He&amp;nbsp;an&amp;nbsp;exe
file&amp;nbsp;called armymen.exe (here's &lt;a href="http://tempurisnacks.blogspot.com/2004_12_01_tempurisnacks_archive.html"&gt;another
mention of it&lt;/a&gt;) that was actually just a renamed copy of Notepad.exe.&amp;nbsp; It
had three subfolders, each with a zero byte file in it.&amp;nbsp; When he clicked on it,
Windows XP resized the screen to 640 x 480 at 16 colours and disabled that ALT + Tab
task switching.&amp;nbsp; Closing the task returned the screen to normal.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
Under the covers, Windows has some hard-coded logic that checks for the name 'armymen'
and the related directories and files and adjusts the screen accordingly.
&lt;/p&gt;
&lt;p&gt;
This highlights the lengths that Microsoft have gone to in order that all applications
continue to run.&amp;nbsp; It also makes me glad that I'm not writing operating systems.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://benjaminm.net/aggbug.ashx?id=0290312e-3153-4198-9497-21c6412d5475" /&gt;</description>
      <category>PDC</category>
    <feedburner:origLink>http://benjaminm.net/2005/09/12/WhyWritingAnOperatingSystemIsHard.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://benjaminm.net/Trackback.aspx?guid=932bc473-f6b7-4736-86ba-2232b955deb4</trackback:ping>
      <pingback:server>http://benjaminm.net/pingback.aspx</pingback:server>
      <pingback:target>http://benjaminm.net/PermaLink,guid,932bc473-f6b7-4736-86ba-2232b955deb4.aspx</pingback:target>
      <dc:creator />
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Jim Johnson showed how System.Transacations will allow developers to use Transactions
to write more reliable software in simple way that will work across different
transaction coordinators while ensuring that performance cost of distributed
transactions is only paid if the code uses them.  I had <a href="http://benjaminm.net/PermaLink.aspx?guid=38da4e16-d18f-40c2-8ac0-4257dbbbb3c3">a
great time talking with Jim at the last PDC</a> and it was exciting to see him
demonstrating this technology that will ship with .NET 2.0, as well as a demo of the
transactional file system that's coming with Longhorn Server.
</p>
        <p>
          <strong>Transactions: Ensuring reliability and resilience 
<br /></strong>Jim spoke about the philosophy behind the System.Transactions work. 
He views transactions as a reliability aid that helps developer write resilient applications
that can recover from errors and return to a consistent state, even in the face of
scalability and concurrency challenges. 
<br />
  
<br />
Jim showed two methods that were both written to correctly handle multithreading and
concurrency, but that they may not work correctly if one depends on the other, since
it would require code to trap errors and handle rollbacks.  He argued that
transactions provide a simple way of ensuring that the two could work together in
an atomic way, behaving correctly even in the case of errors, without a lot of complex
code, which is the major use case for System.Transactions. 
<br />
  
<br /><strong>System.Transactions: an efficient, unified managed code object model 
<br /></strong>The goals behind System.Transaction are to make transactions ubiquitous. 
In order to do that they had to make using transactions simpler for developers and
overcome the perception that they were too slow.  They have answered the complexity
problem by designing a managed code object model in System.Transactions that uses
the same code to work with both local in-memory transactions and distributed transactions. 
They have reduced the performance issues by ensuring that transactions only enlist
the necessary resource managers. 
<br />
  
<br />
Using a transaction involves some fairly simple code: 
</p>
        <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
          <p>
            <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
              <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">using</span> (TransactionScope
scope <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">new</span> TransactionScope()) 
<br />
{ <br /><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">   //
Do something </span><br /><br /><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">   //
Ensure that the transaction doesn't roll back </span><br />
   Scope.Complete() 
<br />
} </span>
          </p>
          <p>
          </p>
        </span>The using statement provides a convenient language wrapper around the use
of the TransactionScope object.  The developer only has to explicitly signal
the success of the transaction, otherwise the transaction will automatically be rolled
back once the using statement block exits.  The benefit to developers is that
the code can be dramatically simplified since the developer doesn't have to write
special-case clean up code in the catch block to recover from a problem. 
<br />
  
<br />
The same code can be used to work with in-memory transactions and database or MSMQ
transactions.  With .NET 2.0 it is possible to use transactions without having
to use the MSDTC, which makes transactions incredibly fast.  If the code uses
resources that involve distributed transaction coordinators these will automatically
be brought in.  So in the above code, if there was a call to a database then
it would automatically pick up the existing transaction. 
<span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"><font face="Verdana" color="#003300" size="2"><p><span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">//
This transaction scope is similar to the COM+ Transaction.Required - it will inherit
an existing transaction or create a new one if necessary </span><br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">using</span> (TransactionScope
scope <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">new</span> TransactionScope())<br />
{<br />
    <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">//
The SqlConnection will pick up the existing ambient transaction </span><br />
    <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">using</span> (SqlConnection
conn <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">new</span> SqlConnection())<br />
    { 
<br />
        <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">//
...</span><br />
    }<br />
    scope.Complete();<br />
}<br /><br /></span></p><p /></font></span><strong>Longhorn: transactional registry and file system 
<br /></strong>Jim showed a demo of the transactional file system in Longhorn that used
the same code as above but ensured that a file was only written to the file system
if the transaction was successful.  This will be a great development benefit,
since doing this today requires that developers have to write their own compensating
resource transaction.  Currently it still has  dependency on the DTC with
a Kernel Ambient object, but this will be factored out by launch. 
<br />
  
<br />
Overall I think that System.Transactions is an excellent addition to the .NET developers
toolkit, since it makes it easy to guarantee that components will behave correctly
even when faced with an error.
<img width="0" height="0" src="http://benjaminm.net/aggbug.ashx?id=932bc473-f6b7-4736-86ba-2232b955deb4" /><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/benjaminm/~4/rBbsmJdASwQ" height="1" width="1" /></body>
      <title>Jim Johnson on System.Transactions</title>
      <guid isPermaLink="false">http://benjaminm.net/PermaLink,guid,932bc473-f6b7-4736-86ba-2232b955deb4.aspx</guid>
      <link>http://feedproxy.google.com/~r/benjaminm/~3/rBbsmJdASwQ/JimJohnsonOnSystemTransactions.aspx</link>
      <pubDate>Mon, 12 Sep 2005 15:49:44 GMT</pubDate>
      <description>&lt;p&gt;
Jim Johnson showed how System.Transacations will allow developers to use Transactions
to write more reliable software in simple way that will work across&amp;nbsp;different
transaction coordinators while ensuring that&amp;nbsp;performance cost of distributed
transactions is only paid if the code uses&amp;nbsp;them.&amp;nbsp; I had &lt;a href="http://benjaminm.net/PermaLink.aspx?guid=38da4e16-d18f-40c2-8ac0-4257dbbbb3c3"&gt;a
great&amp;nbsp;time talking with Jim at the last PDC&lt;/a&gt; and it was exciting to see him
demonstrating this technology that will ship with .NET 2.0, as well as a demo of the
transactional file system that's coming with Longhorn Server.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Transactions: Ensuring reliability and resilience 
&lt;br&gt;
&lt;/strong&gt;Jim spoke about the philosophy behind the System.Transactions work.&amp;nbsp;
He views transactions as a reliability aid that helps developer write resilient applications
that can recover from errors and return to a consistent state, even in the face of
scalability and concurrency challenges. 
&lt;br&gt;
&amp;nbsp; 
&lt;br&gt;
Jim showed two methods that were both written to correctly handle multithreading and
concurrency, but that they may not work correctly if one depends on the other, since
it would require code&amp;nbsp;to trap errors and handle rollbacks.&amp;nbsp; He argued that
transactions provide a simple way of ensuring that the two could work together in
an atomic way, behaving correctly even in the case of errors, without a lot of complex
code, which is the major use case for System.Transactions. 
&lt;br&gt;
&amp;nbsp; 
&lt;br&gt;
&lt;strong&gt;System.Transactions: an efficient, unified managed code object model 
&lt;br&gt;
&lt;/strong&gt;The goals behind System.Transaction are to make transactions ubiquitous.&amp;nbsp;
In order to do that they had to make using transactions simpler for developers and
overcome the perception that they were too slow.&amp;nbsp; They have answered the complexity
problem by designing a managed code object model in System.Transactions that uses
the same code to work with both local in-memory transactions and distributed transactions.&amp;nbsp;
They have reduced the performance issues by ensuring that transactions only enlist
the necessary resource managers. 
&lt;br&gt;
&amp;nbsp; 
&lt;br&gt;
Using a transaction involves some fairly simple code:&amp;nbsp;
&lt;/p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt; 
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;using&lt;/span&gt; (TransactionScope
scope &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; TransactionScope()) 
&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;//
Do something&amp;nbsp;&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;//
Ensure that the transaction doesn't roll back&amp;nbsp;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;Scope.Complete() 
&lt;br&gt;
} &lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/span&gt;The using statement provides a convenient language wrapper around the use of
the TransactionScope object.&amp;nbsp; The developer only has to explicitly signal the
success of the transaction, otherwise the transaction will automatically be rolled
back once the using statement block exits.&amp;nbsp; The benefit to developers is that
the code can be dramatically simplified since the developer doesn't have to write
special-case clean up code in the catch block to recover from a problem. 
&lt;br&gt;
&amp;nbsp; 
&lt;br&gt;
The same code can be used to work with in-memory transactions and database or MSMQ
transactions.&amp;nbsp; With .NET 2.0 it is possible to use transactions without having
to use the MSDTC, which makes transactions incredibly fast.&amp;nbsp; If the code uses
resources that involve distributed transaction coordinators these will automatically
be brought in.&amp;nbsp; So in the above code, if there was a call to a database then
it would automatically pick up the existing transaction.&amp;nbsp;&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;font face=Verdana color=#003300 size=2&gt; 
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;//
This transaction scope is similar to the COM+ Transaction.Required - it will inherit
an existing transaction or create a new one if necessary &lt;/span&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;using&lt;/span&gt; (TransactionScope
scope &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; TransactionScope())&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;//
The SqlConnection will pick up the existing ambient transaction &lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;using&lt;/span&gt; (SqlConnection
conn &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; SqlConnection())&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;//
...&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;scope.Complete();&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/font&gt;&lt;/span&gt;&lt;strong&gt;Longhorn: transactional registry and file system 
&lt;br&gt;
&lt;/strong&gt;Jim showed a demo of the transactional file system in Longhorn that used
the same code as above but ensured that a file was only written to the file system
if the transaction was successful.&amp;nbsp; This will be a great development benefit,
since doing this today requires that developers have to write their own compensating
resource transaction.&amp;nbsp; Currently it still has&amp;nbsp; dependency on the DTC with
a Kernel Ambient object, but this will be factored out by launch. 
&lt;br&gt;
&amp;nbsp; 
&lt;br&gt;
Overall I think that System.Transactions is an excellent addition to the .NET developers
toolkit, since it makes it easy to guarantee that components will behave correctly
even when faced with an error.&gt;
&lt;img width="0" height="0" src="http://benjaminm.net/aggbug.ashx?id=932bc473-f6b7-4736-86ba-2232b955deb4" /&gt;</description>
      <category>.NET</category>
      <category>PDC</category>
      <category>Whidbey</category>
    <feedburner:origLink>http://benjaminm.net/2005/09/12/JimJohnsonOnSystemTransactions.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://benjaminm.net/Trackback.aspx?guid=78af47aa-b054-4c05-a6c3-9bde417fcfde</trackback:ping>
      <pingback:server>http://benjaminm.net/pingback.aspx</pingback:server>
      <pingback:target>http://benjaminm.net/PermaLink,guid,78af47aa-b054-4c05-a6c3-9bde417fcfde.aspx</pingback:target>
      <dc:creator />
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Jeffrey Richter combines a deep technical knowledge of .NET with a great sense of
humour and honesty about where things went bad, to provide a useful overview of what's
new in C# 2.0 and .NET 2.0.  I find sessions like this useful in learning the
story or intention behind features in the new technology, in a way that helps me understand
them better.
</p>
        <p>
The morning session covered an introduction to the new features in .NET 2.0 mostly
around generics and anonymous methods.  Seeing some demos on the new yield statement
helped me understand more about how it works.  He showed how you could use the
yield statement to recursively walk all of the files and directories in the file system. 
The demo was simply writing out the paths to the console window and as it was running
there were obvious pauses in its performance.  Jeffrey said that these pauses
were likely to be due to garbage collections, which highlighted that the ease of use
of the yield statement came at the cost of performance (a class was created per directory/file
which put a lot of pressure on the working set and garbage collection).  Jeffrey
mentioned the C# team have a solution which reduces the performance costs of iterators
but it wont ship until after C# 2.0.
</p>
        <p>
He mentioned that another approach to getting the flexibility provided by the yield
statement without the poor performance, was to use generics and anonymous methods
instead.  For example, many of the generic collection types in .NET such as Array
and List have useful generic delegate types, such as ForEach(Action&lt;T&gt;), FindAll(Predicate&lt;T&gt;)
as Sort(Comparison&lt;T&gt;).  
</p>
        <p>
As an example, I can sort a list of string types and print them to the screen in just
two lines of code using this techniques:
</p>
        <p>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">List&lt;<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span>&gt;
names <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">new</span> List&lt;<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span>&gt;(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">new</span> String[]{ <span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"Timothy"</span>, <span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"Benjamin"</span>, <span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"Samuel"</span> });<br /><br />
names.Sort(String.Compare);<br /><br />
names.ForEach(Console.WriteLine);</span>
        </p>
        <p>
Whilst I've enjoyed these methods before I did enjoy hearing Jeffrey's positioning
of these techniques as a pattern to use instead of the yield statement.  Jeffrey
also mentioned that Microsoft had received many requests to add richer generic functionality
to the generic collection classes.  His company, Wintellect, have been engaged
by Microsoft to write these collections and make them <a href="http://www.wintellect.com/powercollections/download.aspx">available
for free download</a>, and they are currently available as <a href="http://www.wintellect.com/powercollections/documentation/Wintellect.PowerCollections.html">the PowerCollection
library.</a>  Jeffrey believes that this functionality might eventually be made
part of the Framework Class Library in future versions of .NET.
</p>
        <p>
The great thing about Jeffrey's presentation is that draws on his experience as a
consultant to the CLR team.  For instance, he mentioned that having different
security levels on properties, a 'new' feature for C# 2.0, was originally part of
.NET 1.0 Beta 1 but that it was removed since the C# team viewed properties as just
a special kind of field.  From this perspective, having a different accessor
made no sense.  But as Jeffrey said, after a large amount of customer features,
the C# team has put this feature back. it just took them five years.
</p>
        <p>
Jeffrey is also not afraid to mention the things that the CLR team have done badly. 
He spoke about the justification for the static class feature of .NET 2.0.  Apparently
in .NET 1.0 the Environment class that only had static methods, but late in the
beta cycle a developer added a HasShutDownStarted method but forgot to make it
static.  On top of this the Environment class had a private constructor
so it was impossible for anyone to create a new instance of the Environment class
and call this method.  The worst part of this is that it showed that the developer
had not written a single test to check the method that he added!  If they had
written a single test they would have seen that they could not have compiled the code
that tried to write this method.
</p>
        <p>
The session helped me see the benefits in understanding how a particular language
feature works, particularly understanding whether it involves the language compiler
or involves the CLR.  This knowledge provides the background behind some of the
constraints on the features (such as why you can have a catch block inside an
iterator).  The tension between the language compilers and the CLR was highlighted
in the recent post-beta 2 changes to more fully support Nullable types in the CLR. 
Don Box's idea last year was that many of the changes going forward are going to be
driven by 'syntactic sugar' using the language compilers, while Jeffrey was more upbeat
that there's still innovation happening inside .NET and the CLR.
</p>
        <p>
Jeffrey is razor-sharp technically and very funny.  My favourite comments so
was "Indigo loves using attributes.  They use attributes so much that you no
longer have to write code"
</p>
        <p>
The afternoon session started with a coverage of partial types, before spending a
long time on CLR hosting and how the SQL team helped ensure that the CLR could be
hosted in a secure and reliable way.  While Jeffrey is able to explain this stuff
really well, it was a hard slog to keep up with the section on Constrained Execution
Regions ... so I've nipped off to watch David Solomon and Mark Russinovich's Windows
Internals section (or Sysinternals tools seminar as it seems to be).
</p>
        <img width="0" height="0" src="http://benjaminm.net/aggbug.ashx?id=78af47aa-b054-4c05-a6c3-9bde417fcfde" />
      <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/benjaminm/~4/k5tiTcxxkZk" height="1" width="1" /></body>
      <title>Jeffrey Richter: The Good, The Bad, The Ugly of C# 2.0 and .NET 2.0</title>
      <guid isPermaLink="false">http://benjaminm.net/PermaLink,guid,78af47aa-b054-4c05-a6c3-9bde417fcfde.aspx</guid>
      <link>http://feedproxy.google.com/~r/benjaminm/~3/k5tiTcxxkZk/JeffreyRichterTheGoodTheBadTheUglyOfC20AndNET20.aspx</link>
      <pubDate>Sun, 11 Sep 2005 22:41:51 GMT</pubDate>
      <description>&lt;p&gt;
Jeffrey Richter combines a deep technical knowledge of .NET with a great sense of
humour and honesty about where things went bad, to provide a useful overview of what's
new in C# 2.0 and .NET 2.0.&amp;nbsp; I find sessions like this useful in learning the
story or intention behind features in the new technology, in a way that helps me understand
them better.
&lt;/p&gt;
&lt;p&gt;
The morning session covered an introduction to the new features in .NET 2.0 mostly
around generics and anonymous methods.&amp;nbsp; Seeing some demos on the new yield statement
helped me understand more about how it works.&amp;nbsp; He showed how you could use the
yield statement to recursively walk all of the files and directories in the file system.&amp;nbsp;
The demo was simply writing out the paths to the console window and as it was running
there were obvious pauses in its performance.&amp;nbsp; Jeffrey said that these pauses
were likely to be due to garbage collections, which highlighted that the ease of use
of the yield statement came at the cost of performance (a class was created per directory/file
which put a lot of pressure on the working set and garbage collection).&amp;nbsp; Jeffrey
mentioned the C# team have a solution which reduces the performance costs of iterators
but it wont ship until after C# 2.0.
&lt;/p&gt;
&lt;p&gt;
He mentioned that another approach to getting the flexibility provided by the yield
statement without the poor performance, was to use generics and anonymous methods
instead.&amp;nbsp; For example, many of the generic collection types in .NET such as Array
and List have useful generic delegate types, such as ForEach(Action&amp;lt;T&amp;gt;), FindAll(Predicate&amp;lt;T&amp;gt;)
as&amp;nbsp;Sort(Comparison&amp;lt;T&amp;gt;).&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
As an example, I can sort a list of string types and print them to the screen in just
two lines of code using this techniques:
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;List&amp;lt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt;&amp;gt;
names &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; List&amp;lt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt;&amp;gt;(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; String[]{ &lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"Timothy"&lt;/span&gt;, &lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"Benjamin"&lt;/span&gt;, &lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"Samuel"&lt;/span&gt; });&lt;br&gt;
&lt;br&gt;
names.Sort(String.Compare);&lt;br&gt;
&lt;br&gt;
names.ForEach(Console.WriteLine);&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Whilst I've enjoyed these methods before I did enjoy hearing Jeffrey's positioning
of these techniques as a pattern to use instead of the yield statement.&amp;nbsp; Jeffrey
also mentioned that Microsoft had received many requests to add richer generic functionality
to the generic collection classes.&amp;nbsp; His company, Wintellect, have been engaged
by Microsoft to write these collections and make them &lt;a href="http://www.wintellect.com/powercollections/download.aspx"&gt;available
for free download&lt;/a&gt;, and they are currently available&amp;nbsp;as &lt;a href="http://www.wintellect.com/powercollections/documentation/Wintellect.PowerCollections.html"&gt;the&amp;nbsp;PowerCollection
library.&lt;/a&gt;&amp;nbsp; Jeffrey believes that this functionality might eventually be made
part of the Framework Class Library in future versions of .NET.
&lt;/p&gt;
&lt;p&gt;
The great thing about Jeffrey's presentation is that draws on his experience as a
consultant to the CLR team.&amp;nbsp; For instance, he mentioned that&amp;nbsp;having different
security levels on properties, a 'new' feature for C# 2.0, was originally part of
.NET 1.0 Beta 1 but that it was removed since the C# team viewed properties as just
a special kind of field.&amp;nbsp; From this perspective, having a different accessor
made no sense.&amp;nbsp; But as Jeffrey said, after a large amount of customer features,
the C# team has put this feature back. it just took them five years.
&lt;/p&gt;
&lt;p&gt;
Jeffrey is also not afraid to mention the things that the CLR team have done badly.&amp;nbsp;
He spoke about the justification for the static class feature of .NET 2.0.&amp;nbsp; Apparently
in .NET 1.0 the Environment&amp;nbsp;class that only had static methods, but late in the
beta cycle a developer added a&amp;nbsp;HasShutDownStarted method but forgot to make it
static.&amp;nbsp; On top of this the Environment class had&amp;nbsp;a private constructor
so it was impossible for anyone to create a new instance of the Environment class
and call this method.&amp;nbsp; The worst part of this is that it showed that the developer
had not written a single test to check the method that he added!&amp;nbsp; If they had
written a single test they would have seen that they could not have compiled the code
that tried to write this method.
&lt;/p&gt;
&lt;p&gt;
The session helped me see the benefits in understanding how a particular language
feature works, particularly understanding whether it involves the language compiler
or involves the CLR.&amp;nbsp; This knowledge provides the background behind some of the
constraints on the features (such as&amp;nbsp;why you can have a catch block inside an
iterator).&amp;nbsp; The tension between the language compilers and the CLR was highlighted
in the recent post-beta 2 changes to more fully support Nullable types in the CLR.&amp;nbsp;
Don Box's idea last year was that many of the changes going forward are going to be
driven by 'syntactic sugar' using the language compilers, while Jeffrey was more upbeat
that there's still innovation happening inside .NET and the CLR.
&lt;/p&gt;
&lt;p&gt;
Jeffrey is razor-sharp technically and very funny.&amp;nbsp; My favourite comments so
was "Indigo loves using attributes.&amp;nbsp; They use attributes so much that you no
longer have to write code"
&lt;/p&gt;
&lt;p&gt;
The afternoon session started with a coverage of partial types, before spending a
long time on CLR hosting and how the SQL team helped ensure that the CLR could be
hosted in a secure and reliable way.&amp;nbsp; While Jeffrey is able to explain this stuff
really well, it was a hard slog to keep up with the section on Constrained Execution
Regions ... so I've nipped off to watch David Solomon and Mark Russinovich's Windows
Internals section (or Sysinternals tools seminar as it seems to be).
&lt;/p&gt;
&lt;img width="0" height="0" src="http://benjaminm.net/aggbug.ashx?id=78af47aa-b054-4c05-a6c3-9bde417fcfde" /&gt;</description>
      <category>.NET</category>
      <category>PDC</category>
      <category>Whidbey</category>
    <feedburner:origLink>http://benjaminm.net/2005/09/11/JeffreyRichterTheGoodTheBadTheUglyOfC20AndNET20.aspx</feedburner:origLink></item>
  </channel>
</rss>
